[Bug] 二级分派插件(cindy-github/cindy-gitlab)的 call_tool 参数透传丢失,报「需要 name(list_tools 可查)」
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**客户端版本**: 0.1.27
**反馈类型**: bug
---
## 现象 / Symptom
Cindy 桌面端(0.1.26 系)中,对二级分派插件(顶层只有 list_tools / call_tool 两个工具的插件,如 cindy-github、cindy-gitlab)调用 `ghost_call({ghost_id, tool: "call_tool", args: {name: "xxx", args: {...}}})` 时,插件的 call_tool 收到空参数,返回 `INTERNAL: 需要 name(list_tools 可查)`。
已观察到的细节:
- `list_tools`(带/不带 category)始终正常;只有 `call_tool` 的 `name` 字段丢失
- 嵌套形态 `{name, args:{...}}` 与扁平形态(把 name/owner/repo 平铺进 args)都试过,同样丢失
- 两个不同插件(cindy-github / cindy-gitlab)同时报同样错误,排除单插件问题
- 完整重启应用、插件开关重开均无法恢复
- 间歇性:此前有一段时间 call_tool 正常(可成功调用 get_current_user / get_repo / create_issue,并拿到 403 权限错误),说明参数曾正常送达;故障发生后就持续丢参
## 复现步骤 / Repro
1. 安装并启用 cindy-github(或 cindy-gitlab)插件
2. 调用 ghost_call:ghost_id="cindy-github", tool="call_tool", args={name:"get_current_user", args:{}}
3. 观察返回:INTERNAL 「需要 name(list_tools 可查)」——name 未送达插件
## 期望行为 / Expected
`ghost_call` 的 `args` 应原样透传给插件 `call_tool` 的 `name` 与 `args`,`name` 不应丢失。
## 影响 / Impact
所有依赖二级分派的操作类插件在故障期完全不可用,用户无法通过插件操作 GitHub/GitLab 等平台。
---
**OS**: win32 x64 (10.0.26200)
**界面语言**: zh-CN
Contributor guide
Research direction
Start at the ghost_call entry point and trace how arguments are forwarded to the plugin's call_tool handler. Reproduce with cindy-github or cindy-gitlab using name and args, then verify that both fields arrive unchanged and add regression coverage for the nested form.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- electron, typescript
- Domain
- api, backend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100