DeepSeek Harness 插件:yukari316/dsh-toolcall-compat

在 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 中進行工具調用時的常見阻礙,提升了對話的穩定性與可用性。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜