前言¶
DSH 里有些兼容问题不一定需要改主程序,可以先用一个可移除的插件绕开。dsh-same-mode-sandbox-noop 是面向 DeepSeek Harness / DSH 0.1.0-rc.6 的兼容插件,由 zhangzujian 维护,用来处理 bash、pwsh、write、edit 等工具调用中出现的冗余 sandbox_permissions 和 justification 字段。
这是什么¶
这是一个可移除的 DSH 0.1.0-rc.6 兼容插件。它不替代 DSH,也不新增一套沙箱策略;它只在 DSH 快照并冻结工具参数之前,把已知非升级请求中的冗余字段移除,然后让原运行时按现有策略继续执行。
许可证为 MIT,要求 Node.js >=22。
核心功能¶
插件会包装两个入口:
ctx.tools.execute()- DSH
0.1.0-rc.6Agent Loop scheduler 的准备入口
这些处理发生在 DSH 快照并冻结工具参数之前。对 bash、pwsh、write、edit,当请求的沙箱模式等于或窄于调用会话的有效模式时,插件会移除配对的 sandbox_permissions 和 justification 字段。
以下情况保持原样传给 DSH:
- 真正更宽的模式请求
- 未知模式
- 参数配对格式不正确
- 无关工具
- 没有升级字段的调用
对于已知非升级请求,如果 justification 为空,插件会在 DSH 校验之前把它和冗余权限字段一起移除。对于真正更宽请求,空的 justification 仍留给 DSH 按原规则校验。插件移除或 disposal 时会恢复原运行时方法。
安装与启用¶
先确认本地 Node.js 版本满足 >=22。下面以 web profile 为例安装本地目录:
git clone https://github.com/zhangzujian/dsh-same-mode-sandbox-noop.git
cd dsh-same-mode-sandbox-noop
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web add "$PWD"
安装完成后,重启 dsh web 让插件生效。
如果要移除:
npx @deepseek-ai/dsh@0.1.0-rc.6 plugin --profile web remove @zhangzujian/dsh-same-mode-sandbox-noop
典型用法¶
一次性的本地 overlay¶
不安装到 profile 时,可以在 base bundle 之后加载的 patch 里按文件 URL 插入插件:
- insert:
- id: same-mode-sandbox-noop
name: file:///absolute/path/to/dsh-same-mode-sandbox-noop/index.mjs
这里需要把 file:///absolute/path/... 替换为实际本地路径。
运行测试¶
单元测试只需要 Node.js:
npm test
集成测试需要指向一个已安装的 DSH 目录:
DSH_INSTALL_DIR=/path/to/npx/cache/package npm run test:integration
DSH_INSTALL_DIR 是指向包含 node_modules/@deepseek-ai 的目录。
适用场景与注意¶
适合在 DSH 0.1.0-rc.6 环境中临时规避已知非升级请求中的冗余沙箱字段。它是一个 out-of-tree compatibility workaround;如果 DSH 后续版本在共享沙箱升级层中处理非升级请求,应优先使用 DSH 原生实现。
因为插件会接入 DSH 的工具执行与调度准备路径,并以当前 dsh 进程权限运行,安装前应检查仓库源码、许可证和依赖。许可证为 MIT,维护者为 zhangzujian。
GitHub 仓库:
https://github.com/zhangzujian/dsh-same-mode-sandbox-noop
结尾¶
这个插件的作用面比较窄:只在 DSH 0.1.0-rc.6 的特定路径中移除已知非升级请求里的冗余字段,并保留真正需要升级的请求给 DSH 继续校验。如果你正在排查 bash、pwsh、write、edit 调用中的沙箱字段兼容问题,可以先用这个方案做隔离测试。