前言¶
DSH 支持以插件方式扩展工具调用行为。下面介绍一个社区插件:dsh-gpt-perm-strip。
在 DSH 中,工具调用参数可能包含 sandbox_permissions 或 justification。DSH 对 sandbox escalation 的要求是:这些权限字段必须严格宽于当前会话。相同或更窄的字段会直接失败,例如:
sandbox escalation to "danger-full-access" is not strictly wider than this call's current "danger-full-access" mode
GPT 系列模型有时会在当前会话已有相应权限时,仍发送这些字段。dsh-gpt-perm-strip 是一个仅针对 GPT 系列模型运行的 DeepSeek Harness 插件,它在工具执行前移除不严格宽于当前会话的 sandbox_permissions / justification。
这是什么¶
dsh-gpt-perm-strip 由 FengLingYaaa 维护,包名为 dsh-gpt-perm-strip,许可证为 MIT,仓库版本为 0.1.0。
它解决的是 GPT 系列模型在工具调用中携带“非升级型”sandbox 权限字段时,触发 DSH sandbox escalation 检查失败的问题。插件只处理 GPT 系列模型,不改变非 GPT 模型的权限参数。
核心功能¶
下面是该插件已核实的行为边界。
- 按
model id而不是 provider 匹配 GPT 系列模型。README 中给出的匹配示例包括gpt-4o、gpt-5.6-sol、chatgpt-4o-latest、openai/gpt-4.1、ft:gpt-4o:…。 - 在 DSH sandbox escalation check 前,移除不严格宽于当前会话的
sandbox_permissions/justification。 - 保留真实权限升级,例如从
workspace-write到danger-full-access,以及从read-only到workspace-write。 - 通过
includeOpenAiReasoning将o1/o3/o4视为 GPT 系列;该配置默认开启。 - 除非配置
extraModelPatterns,否则忽略 Grok 和 DeepSeek。 - 由于
tools/pre-execute不能重写冻结参数,插件包装每个工具的execute,并传入移除多余字段后的克隆参数对象。 permission/permissions只有在值为已知 sandbox mode 时,才被视为 sandbox 字段。- 持久
tool/call记录仍会显示模型最初输出的内容;插件只影响执行前进入 DSH 检查的参数对象。
安装与启用¶
插件运行环境要求 Node >=22,可选 peer dependency 为 @deepseek-ai/cordis >=4.0.0。
如果从 GitHub 安装,先执行下面命令。该命令会把指定 GitHub 仓库作为 DSH 插件添加到 web profile:
dsh plugin --profile web add github:FengLingYaaa/dsh-gpt-perm-strip
如果本地查看源码或做改动,可以按下面步骤安装:
git clone https://github.com/FengLingYaaa/dsh-gpt-perm-strip.git
cd dsh-gpt-perm-strip
pnpm install
pnpm test
pnpm build
dsh plugin --profile web add .
注意:该插件会在当前 dsh 进程内包装工具执行逻辑。安装前应检查源码、依赖和许可证。本文给出的信息以仓库资料为准。
配置¶
下面是 README 中给出的默认配置。
| 字段 | 默认值 | 含义 |
|---|---|---|
includeOpenAiReasoning |
true |
将 o1 / o3 / o4 视为 GPT 系列 |
extraModelPatterns |
[] |
对 provider、model 或 provider/model 追加正则匹配 |
injectPrompt |
true |
为 GPT 系列相关运行上下文注入提醒 |
logStrips |
true |
将每次移除记录为 [gpt-perm-strip] stripped … |
默认情况下,Grok 和 DeepSeek 会被忽略;只有添加 extraModelPatterns 后,才可能纳入额外模型。
典型行为¶
下面是同一插件在不同会话权限下的结果。
| 当前会话权限 | GPT 工具参数 | 结果 |
|---|---|---|
danger-full-access |
sandbox_permissions: danger-full-access |
移除,调用继续 |
workspace-write |
sandbox_permissions: workspace-write |
移除 |
workspace-write |
sandbox_permissions: danger-full-access |
保留,属于真实升级 |
read-only |
sandbox_permissions: workspace-write |
保留,属于真实升级 |
| 非 GPT 模型 | 任意权限字段 | 保持不变 |
也就是说,插件只移除“相同或更窄”的 sandbox 权限字段;如果字段代表从当前会话到更高权限的升级,则保留给 DSH 的 escalation 检查处理。
适用场景与注意¶
适合以下场景:使用 GPT 系列模型,当前 DSH 会话已经具备某些 sandbox 权限,且模型仍会发送 sandbox_permissions / justification。它可以帮助避免相同权限字段触发 escalation 失败,同时保留真实升级。
需要注意:
- 它只针对 GPT 系列模型,不处理 Grok、DeepSeek,除非通过
extraModelPatterns显式扩展。 - 它不会改写模型输出本身;持久
tool/call记录仍会显示模型最初输出的内容。 - 它是社区插件,不是 DeepSeek 或幻方官方应用商店中的官方应用;安装前建议自行审查源码。
- DSH 的插件机制允许扩展工具调用行为,但权限清理仍应放在可审计的配置与源码范围内。
结尾¶
dsh-gpt-perm-strip 的作用范围较小:它只在 GPT 系列模型执行工具调用前,移除不严格宽于当前会话的 sandbox_permissions / justification,从而减少因相同或更窄权限字段导致的 escalation 失败,同时保留真实权限升级。
GitHub 仓库:https://github.com/FengLingYaaa/dsh-gpt-perm-strip
社区目录页:本次已核实资料未提供可直接列出的目录页 URL;可按插件名 dsh-gpt-perm-strip 在 DSH 社区目录中检索。