前言¶
某些模型調用方(例如通過第三方提供方路由的 gpt-5.6-terra)會給每一個工具調用都附上提權參數。這會導致調用在參數校驗階段失敗。DSH 插件 dsh-gpt-tool-compat 解決了這個問題。
插件簡介¶
這是一個非破壞性的 DSH 工具調用兼容層,由 YoungUsing 維護。它在 tools/pre-execute 階段攔截並剝離必然校驗失敗的提權參數,把調用還原成模型本意要執行的普通調用。
核心功能¶
- 攔截與剝離:在
tools/pre-execute階段攔截提權參數。 - 容錯處理:剝離空 justification 或不成對字段。
- 保留有效提權:允許真正更寬的提權(如 read-only -> workspace-write)通過。
- 異常保護:意外異常會被捕獲並放行原調用。
安裝與啓用¶
方式 A:作爲 bundle(推薦)¶
- 將本包裝進 web profile 的 node_modules:
cd $env:USERPROFILE\.dsh\profiles\web
npm install <本包路徑,如 D:\Users\yq\Documents\code-and-repos\dsh-workspace\dsh-gpt-tool-compat>
- 在
~\.dsh\profiles\web\package.json的dsh.profile.bundles數組裏加入"dsh-gpt-tool-compat":
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-gpt-tool-compat"
]
}
}
- 重啓
dsh web服務並刷新頁面。
方式 B:直接插行¶
- 同上安裝包到 profile 的 node_modules。
- 在
~\.dsh\profiles\web\cordis.patch.yml裏插入:
- insert:
- id: gpt-tool-compat
name: 'dsh-gpt-tool-compat'
- 重啓
dsh web服務。
驗證與用法¶
重啓服務後,使用帶空 justification 的工具調用測試,或觀察之前失敗的會話重試。調用應正常執行,不再報 invalid justification / not strictly wider 錯誤。
原理與安全邊界¶
- 剝離規則:僅作用於四種在任何沙箱模式下都必然被拒的情況:空/非字符串
justification、sandbox_permissions與justification不成對、以及請求的模式不是當前有效模式嚴格更寬的提權。 - 真實審批:真正的更寬提權(如
read-only→workspace-write+ 有效理由)原樣放行,照常走真實用戶審批。 - 異常處理:任何意外異常都會被捕獲並放行原調用,本層永遠不會讓一個調用變得更糟。
注意事項¶
- 僅剝離在任何沙箱模式下都必然被拒的參數。
- 不改動原本能成功的調用。
- 不繞過真實提權審批。
- 不阻塞無法處理的調用。
- 依賴
@deepseek-ai/cordis,@deepseek-ai/dsh-sandbox-policy,@deepseek-ai/dsh-tools。 - 需要 Node >= 22。
結語¶
該插件提供了一個兼容層,在不破壞安全邊界的的前提下,解決了特定模型調用方帶來的參數校驗問題。源碼與許可證信息可參考目錄頁或 GitHub。
目錄頁:https://www.skillhub.cn/plugins/YoungUsing/dsh-gpt-tool-compat
GitHub:https://github.com/YoungUsing/dsh-gpt-tool-compat