[Bug] 无参数工具调用报 "binding arguments must be lossless JSON"(get_goal / job_list / MCP list_pages 必现) #5851
Replies: 4 comments 2 replies
|
源级核实完成(master 两个报错面(关键区分):
根因:原生路径有 empty→ 立即可用 workaround:显式传 一个确认问题:这些调用是从 run_code/代码执行 里发出的,还是模型 原生直接调用?(从 chrome-devtools MCP 的使用场景看像是代码执行路径。)如果原生直接调用也报同文本,请贴版本与 provider——原生路径空→ |
|
补充一个相关但独立的发现(同一次排查确认,如需单独跟踪可另开讨论): MCP 工具的 inputSchema 未透出到模型侧的工具声明。
修复形状建议:把 |
|
Good find — and your framing is right: this is a distinct gap from the zero-arg binding bug (declaration rendering vs binding layer), so a separate thread is the clean way to track it. One anchor to speed up whoever picks it up: the client already holds the full schemas — Agreed the schema semantics are also load-bearing, not just types: your |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
环境
@deepseek-ai/dsh-web-app0.1.2-rc.1(Windows,DeepSeek Harness Web GUI;内部构建目录 @deepseek-ai+dsh-web-app@0._6edb3601)现象
所有 schema 无参数的工具(内置 + MCP)直接调用时,在参数绑定层报错:
受影响工具(实测):内置
get_goal、job_list;MCP chrome-devtools 的list_pages(以无参形式注册)。复现
带参数的工具(如 pwsh、chrome-devtools 的 navigate_page {url})完全正常。
补充观察
Unknown argument for tool "list_pages": "probe" —— 说明参数校验器本身工作正常,
问题出在「无参调用时 args 以 undefined 参与 JSON 序列化」这一步。
影响
所有零参数工具无法直接调用。例如 get_goal 是 goal 流程的必经入口(需先读 goal_id/revision 才能 update),
读取失败导致 goal 无法程序化标记完成;MCP 侧无参工具同样不可用。
建议
无参工具绑定时以空对象兜底(args 缺省为 {} 而非 undefined)。
Workaround
调用方对可选参数工具传一个无害的非空对象即可(实测 get_goal({probe:1}) 正常)。
All reactions