前言¶
DeepSeek Harness (DSH) 在處理模型工具調用時,有時會遇到模型輸出的畸形參數(如嵌套的 {"arguments":{…}} 包裝)。如果這些參數被原樣持久化,下一輪歷史回放時模型會模仿錯誤,導致調用鏈路越來越畸形。dsh-tool-args-unwrap 插件在 llm/stream 水位線上攔截並修正這些參數,從源頭阻斷壞示範的生成與傳播。
插件簡介¶
插件名稱:dsh-tool-args-unwrap
維護者:shy19805
核心價值:在 DSH 的 llm/stream 流水線上修復模型產出的畸形工具參數,防止壞示範進入歷史記錄。
核心功能¶
- 修復畸形參數:處理嵌套 arguments 包裝、鍵別名(如
args、parameters)、參數鍵名別名(如skill_name、name)等情況。 - 全鏈路修復:在參數持久化之前攔截,同時解決執行、持久化、歷史回放三個環節中的畸形參數問題。
- 歷史會話修正:v0.3.1 版本增加了對老會話輸入側的修正能力。在請求發往模型之前,對歷史記錄中的存量畸形參數進行就地修正,防止模型繼續模仿錯誤。
- 宿主校驗:基於宿主的
validateJsonSchemaValue校驗器進行判定,確保修復後的參數符合 schema 要求。 - 靜默處理:對於沒有必填參數的工具,插件會靜默吞掉多餘的包裝層,避免因包裝導致的報錯。
安裝與啓用¶
通過在 profile 的 package.json 中配置依賴和 bundles 來安裝。
// <profile>/package.json
{
"dependencies": { "@dsh-external/dsh-tool-args-unwrap": "link:/abs/path/to/dsh-tool-args-unwrap" },
"dsh": { "profile": { "bundles": ["@dsh-external/dsh-tool-args-unwrap"] } }
}
配置完成後重啓 DSH 即可生效。
驗證與調試¶
- 確認生效:檢查插件目錄下的
state.json文件,確認listenerRegistered: true。 - 臨時停用:在配置中設置
enabled: false即可完全停用流改寫,無需卸載插件。
注意事項與限制¶
- 修復範圍:插件只修復參數的“形狀畸形”(如多了一層包裝),不修復語義缺失(例如模型真的漏寫了必填字段)。
- 跨 Provider:跨 provider 的實機復現工作尚未全部完成。
- 根本修復:插件是一個可插拔的實現參考,根本的修復方案應在宿主側(持久化前對 tool-call 參數做 schema 校驗 + 規範化)。