dsh-gpt-perm-strip:移除 GPT 系列模型多余 sandbox 权限字段的 DSH 插件

前言

DSH 支持以插件方式扩展工具调用行为。下面介绍一个社区插件:dsh-gpt-perm-strip

在 DSH 中,工具调用参数可能包含 sandbox_permissionsjustification。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-stripFengLingYaaa 维护,包名为 dsh-gpt-perm-strip,许可证为 MIT,仓库版本为 0.1.0

它解决的是 GPT 系列模型在工具调用中携带“非升级型”sandbox 权限字段时,触发 DSH sandbox escalation 检查失败的问题。插件只处理 GPT 系列模型,不改变非 GPT 模型的权限参数。

核心功能

下面是该插件已核实的行为边界。

  • model id 而不是 provider 匹配 GPT 系列模型。README 中给出的匹配示例包括 gpt-4ogpt-5.6-solchatgpt-4o-latestopenai/gpt-4.1ft:gpt-4o:…
  • 在 DSH sandbox escalation check 前,移除不严格宽于当前会话的 sandbox_permissions / justification
  • 保留真实权限升级,例如从 workspace-writedanger-full-access,以及从 read-onlyworkspace-write
  • 通过 includeOpenAiReasoningo1 / 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 [] providermodelprovider/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 社区目录中检索。

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

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

Xiaoye