在 DeepSeek Harness (DSH) 的生态中,当接入第三方模型(如 GPT 等)使用 ToolCall 功能时,开发者常面临两个具体问题:一是模型错误解析 ToolCall Schema,导致参数校验失败;二是工具调用长时间无响应,导致会话卡死。yukari316/dsh-toolcall-compat 插件针对这两个痛点提供了解决方案。
插件简介¶
yukari316/dsh-toolcall-compat 是由 Yukari316 维护的一个 DSH 插件。它修复了第三方模型在 DSH ToolCall 中的 schema 解析错误,并提供卡住工具调用的跳过功能。该插件采用 MIT 许可证。
核心功能¶
兼容模式 (schema-fix)¶
DSH 对 ToolCall 的升级参数校验严格,要求 sandbox_permissions 和 justification 成对出现,且 justification 必须为非空句子。第三方模型(如 GPT)常错误地将这两个字段塞入每一次调用,导致重试时参数校验持续失败。
该插件默认开启兼容模式。它在 llm/stream 流的 block-end chunk 中修改 tool-call 块的 arguments,自动剥离 sandbox_permissions 和 justification 参数。卡片上会显示黄色的 compat bypass 徽标,便于识别被修改的调用。
跳过卡住的调用 (stuck-skip)¶
对于长时间无响应的工具调用,DSH 目前无法直接中断或设置超时,导致会话只能等待。该插件在工具调用运行超过设定时间(默认 15s)后,在工具调用上方提示疑似执行时间过长,并允许跳过。
点击跳过后,无响应的工具调用会被终止。LLM 会在下一步收到 skipped because unresponsive ... do not retry 的提示,从而能够继续执行后续任务。
安装与启用¶
安装该插件需要 pnpm 或 npm 环境。使用以下命令安装到 web profile:
dsh plugin --profile web add @yukari316/dsh-toolcall-compat
如果环境中没有 pnpm,可以使用 npm 方式:
npx -y @yukari316/dsh-toolcall-compat
安装完成后,需要重启 dsh web。
配置项¶
在 $DSH_HOME\settings.yaml 中添加配置项,可以调整插件行为:
toolcall-compat:
enabled: true
renderEscapes: true
stuckAfterMs: 15000
配置项说明:
* enabled: 兼容模式总开关。
* renderEscapes: 展开卡片时把转义序列显示成字符。
* stuckAfterMs: 调用运行超过多久才提示可跳过(单位:毫秒,范围 1–600s)。
验证与注意事项¶
验证插件生效的方法是让模型执行一次触发沙箱权限的工具调用。此时应不再报错(如 invalid justification 或 sandbox escalation ... not strictly wider),且日志中相关参数的调用数量应明显减少。
需要注意,该插件以当前 dsh 进程的权限运行,依赖项包括 @deepseek-ai/cordis、@deepseek-ai/dsh-llm 等。
总结¶
yukari316/dsh-toolcall-compat 通过修复 schema 解析错误和提供超时跳过机制,解决了第三方模型在 DSH 中进行工具调用时的常见阻碍,提升了对话的稳定性与可用性。