DeepSeek Harness 插件

dsh-gpt-compat

Fail-closed DSH compatibility guard for redundant GPT/Codex sandbox escalation arguments(英文原文)

跳到安装方式

来源信息

GitHub 仓库
YaoaY/dsh-gpt-compat
最近更新
2026年8月21日
分类
工具与能力
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/YaoaY/dsh-gpt-compat
插件名:dsh-gpt-compat
作者:YaoaY

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.md来源说明 · 只读预览
README 语言

dsh-gpt-compat

English | 中文

![CI](https://github.com/YaoaY/dsh-gpt-compat/actions/workflows/ci.yml) ![npm](https://www.npmjs.com/package/dsh-gpt-compat) ![License: MIT](LICENSE)

面向 DeepSeek Harness 的 GPT/Codex 沙箱提权参数兼容插件。

部分模型会在普通写操作中习惯性附带:

{
  "sandbox_permissions": "workspace-write",
  "justification": "not used"
}

DSH 将这两个字段定义为沙箱拒绝后的单次提权重试。同级或更窄的请求会在工具执行前被拒绝。本插件只在能够证明请求冗余时删除这两个字段,让工具按当前会话策略执行。

使用效果

<table> <thead> <tr> <th>使用前:冗余参数导致工具调用反复失败</th> <th>使用后:工具按当前沙箱策略正常执行</th> </tr> </thead> <tbody> <tr> <td><img src="./A3.png" alt="使用插件前,工具调用因冗余沙箱提权参数反复失败" /></td> <td><img src="./B3.png" alt="使用插件后,工具调用按当前沙箱策略正常执行" /></td> </tr> </tbody> </table>

安全边界

插件采用 fail-closed 规则:

  • 只处理 providerstools 同时允许的调用。
  • 注册工具的 schema 必须同时声明 DSH 的 sandbox_permissions 枚举和 justification 字段。
  • 只删除完整或可证明冗余的请求:已知目标模式且不严格扩权时,即使理由为空、缺失或格式异常,也只会删除这两个提权字段;
  • 真正扩权的请求必须带非空理由并保持不变,继续进入 DSH 原生审批流程。
  • 孤立字段、空理由的扩权请求、未知模式、策略解析失败保持不变,由 DSH 核心验证或拒绝。
  • 当前请求 provider 取自 session request header,无法取得时才回退到 agent 初始 provider。

该边界避免插件仅凭参数名修改 MCP 或第三方工具。配置 tools 时仍应只列出实现 DSH 原生提权契约的工具。

兼容性

  • Node.js 20 或更高版本
  • @deepseek-ai/cordis 4.x
  • @deepseek-ai/dsh-tools 0.1.0-rc.7 或兼容版本
  • @deepseek-ai/dsh-sandbox-policy 0.1.0-rc.7 或兼容版本

安装

将插件安装到目标 DSH profile:

dsh plugin --profile web add dsh-gpt-compat

这个包声明了 dsh.bundle.patch,DSH 会在安装后把它加入 profile 的 bundle 列表。本地开发可从插件目录执行:

dsh plugin --profile web add .

配置

默认 bundle 配置:

providers: ["*"]
tools: ["bash", "pwsh", "write", "edit"]
字段类型默认值含义
providersstring[][]允许处理的 provider id。空数组停用插件;显式 '*' 表示所有 provider。
toolsstring[]['bash', 'pwsh', 'write', 'edit']允许处理的 DSH 原生提权工具名。空数组停用插件。

通过 profile 或 home 级 cordis.patch.yml 覆盖时,需要重述完整配置:

- id: gpt-compat
  config:
    providers: ["your-gpt-provider"]
    tools: ["bash", "write", "edit"]

API

主入口导出 Cordis 插件的 nameinjectConfigapply,以及以下纯函数和类型:

  • resolveConfig():标准化直接调用者提供的部分配置。
  • classifyEscalation():返回 nonestrip 或带原因的 preserve 决策。
  • SANDBOX_MODESESCALATION_TARGETS:只读模式词汇。
  • ConfigSandboxModeEscalationTarget:TypeScript 类型。

纯决策层也可从 dsh-gpt-compat/escalation-guard 导入。

开发

pnpm install --frozen-lockfile
pnpm run check
pnpm pack:check

pnpm run check 依次检查格式、lint、类型、覆盖率、发布结构、声明文件,并在空白临时项目中安装和导入真实 tarball。CI 在 Node.js 20 与 22 上运行同一套门禁。

故障排查

  • 日志显示 inactiveproviderstools 为空。
  • 参数没有被删除:检查当前 session route 的 provider、工具名以及注册 schema 是否声明完整提权字段。
  • 畸形扩权请求仍然失败:这是预期行为;插件不会将缺少非空理由的扩权请求降级为普通调用。
  • 普通调用仍失败:检查当前请求的 sandbox_permissions 是否是已知模式且不严格宽于当前会话策略;这类冗余字段会被插件删除。

安全问题请按 [SECURITY.md](SECURITY.md) 私下报告。贡献流程见 [CONTRIBUTING.md](CONTRIBUTING.md),版本变化见 [CHANGELOG.md](CHANGELOG.md)。