Blog · 指南
DeepSeek Harness 沙箱与安全:给 Agent 套上缰绳
2026 年 8 月 14 日 · dshbase
一个能跑工具的 Agent,就是一个可能闯祸的 Agent。DeepSeek Harness 给了一个真答案——不是一个「沙箱」万能开关,而是一套分层模型:事前的权限预设、事后审计用的只追加日志,以及中间一撮社区插件把缝隙补上。下面是完整的缰绳,全部对照 dsh 0.1.0-rc.6 验证过。
内置第一层:权限预设
dsh 的第一道防线是它的模式系统。你不是启动一个全能的 Agent,而是选一个预设——极简模式把 Agent 削到最基础的工具集,用于基准测试和受限任务;完整的标准模式才打开整套编码工具链。选预设本身就是一次权限决策:上下文里的工具越少,爆炸半径越小。再配上 dsh 的只追加会话日志,每一次权限变更、每一次工具调用都成为可回放的事件,于是「它到底干了啥」在事后永远可查。
dsh-tool-approval:把人类放进回路
在风险最高的时刻,社区补上了 dsh-tool-approval——「DeepSeek Harness 手动审批(又称 Manual Mode / Ask Mode)」。这是经典的先问再执行门禁:模型一调用工具就暂停,等人类点一下同意 / 拒绝。就这一个开关,能在任务需要时把 dsh 从「自主」变成「受监督」——部署、写到工作区之外、任何不可逆的操作。注意目录目前在 dsh 0.1.0-rc.6 上把它标为 install-fail,生产环境依赖前务必先验证能否装上。
dsh-custom-tool:沙箱化的 JavaScript 工具
最有趣的跟安全沾边的插件是 dsh-custom-tool,它让你「通过 Monaco 编辑器创建和管理沙箱化的 JavaScript 工具」,配模型驱动的工具生命周期。关键词是沙箱化:当模型(或你)写一个小 JS 工具时,它跑在一个受限环境里,而不是带着宿主进程的全部权限。这是个干净的模式——既让 Agent 能自我扩展,又不把钥匙交出去——而且是这个分类里打磨得比较好的插件之一,在 dsh 0.1.0-rc.6 上验证为 ok。
dsh-security-audit:看清你的暴露面
光防不行,还得有眼睛。dsh-security-audit 是个本地审计插件,「上报配置、插件来源、会话与网络暴露面,且是只读、脱敏的风险报告」。让它可信的两个设计选择:只读(审计时不改动任何东西)、并且秘密在进报告之前就做了脱敏。它在 dsh 0.1.0-rc.6 上从源码构建(git-build),也是在把 Agent 连到任何真实东西之前,最快搞清「这次安装到底暴露了什么」的办法。
供应链安全:dsh-plugin-check
dsh 的一大块攻击面是第三方插件,而每个插件都是跑在你机器上的代码。dsh-plugin-check 正面处理这件事:它「扫描插件仓库的 manifest 协议、patch 格式、构建陷阱与 hub 上架状态,零依赖、只读」。在你 dsh plugin add 某个从论坛帖子里翻到的东西之前,它能先给仓库做个结构性体检——manifest 是否合规、patch 格式是否正常、有没有明显的构建期陷阱。它不是完整安全审计,但胜在便宜、是第一道过滤,也是 Development & Runtime 分类里星数靠前的插件。
上下文卫生:dsh-context-doctor
还有一层常被忽略:dsh-context-doctor 审计的是被注入的内容,而非被执行的内容——它「测算 AGENTS.md 指令链、技能目录、工具 schema 的 token 成本,检测重复与冲突」。这也是安全问题,因为相互冲突或重复的指令,恰恰是让模型犯糊涂、干错事的元凶。一套紧凑、无冲突的指令集,是沙箱故事里更安静、却真实的一环。
安全栈一气呵成
- 从受限开始:选极简预设,别一上来全开。
- 给危险调用加门禁:
dsh-tool-approval做 Manual / Ask 模式。 - 沙箱化自定义代码:
dsh-custom-tool跑模型写的工具。 - 审计暴露面:连真东西之前先跑
dsh-security-audit。 - 过滤供应链:装第三方插件前先跑
dsh-plugin-check。 - 保持上下文干净:
dsh-context-doctor抓指令冲突。
没有魔法——就是纵深防御,由 dsh 自带的预设加上一撮认真的插件拼成。要看当前、实测过的阵容(含安装命令),从插件目录开始。