前言¶
某些模型调用方(例如通过第三方提供方路由的 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