前言¶
DeepSeek Harness (DSH) 强调插件化与自动化,但在实际使用中,智能体若拥有对文件系统的直接操作权限,极易因误操作或脚本错误导致配置丢失、项目文件被误删,甚至破坏运行环境。dsh-safety 插件作为 DSH 的配套安全 Harness,在工具执行边界强制执行三层文件策略,核心价值在于拦截破坏性调用并强制要求人工介入批准,确保每一次关键操作都处于可审计、可撤销的状态。
是什么¶
这是一个针对 DeepSeek Harness (DSH) 的文件系统安全 Harness。它提供了执行时守护、基于回收站的 safe_delete(支持撤销)、组合快照与回滚、重启前校验等功能。插件以标准 DSH profile bundle 形式提供,同时也包含一个独立 CLI,具备零运行时依赖的特性。
核心功能¶
执行时守护¶
插件在破坏性调用运行前进行拦截,核心规则包括:
* 递归删除拦截:默认拒绝 rm -r/-rf、Remove-Item -Recurse 等递归删除命令,强制通过 safe_delete 通道。
* 受保护路径拦截:对 package.json、cordis.patch.yml、lockfiles、node_modules、部署目录等关键路径的 write/edit 操作进行阻断。
* 代码扫描:不仅拦截文件系统 API,还会扫描 run_code 代码体,防止通过代码执行隐藏 fs.rmSync 等破坏性操作。
* 变量引用拦截:拦截如 Remove-Item "$env:USERPROFILE..." 这类变量展开后的路径删除。
用户门控批准系统¶
模型无法自行批准破坏性操作,必须经过人工确认。
* safety_ask:模型调用此工具,传入结构化参数(path, kind, what, why, consequence, alternative),创建一个带有系统计算后果的批准请求,返回 ID。
* 人工介入:模型需提示用户运行 dsh-safety allow <id>。
* 机制限制:批准是一次性的、有时限的,通过原子锁在进程间同步。模型自身无法设置 force:true 来通过验证。
安全删除与撤销¶
safe_delete:唯一的批准删除通道。支持preview:true预览删除内容,拒绝删除根目录或插件自身状态目录。- 撤销:删除操作将文件移至回收站,可通过
safety_undo恢复。 - 审计:每次删除都会被记录在日志中。
组合快照与回滚¶
safety_snapshot:保存整个插件组合(manifests、patches、lockfiles、package.json 等),计算 SHA-256 哈希。safety_restore:将环境回滚至上一个已知良好状态。回滚前会备份当前文件,确保回滚失败不会导致环境处于半损坏状态。- 安全过滤:默认排除包含凭证的文件。
重启前校验¶
safety_check:在 DSH 重启前执行,检查 UTF-8 编码、检测乱码(导致无法打开的错误)、JSON 解析错误以及重复的插件 ID。
审计日志¶
通过 safety_journal 或 safety_status,可以查询所有被拦截、批准、删除、快照和回滚的操作记录。
安装与启用¶
该插件以标准 DSH profile bundle 形式提供,同时也作为 npm 包 @suagr_xl/dsh-safety 发布。安装后,它会在 DSH 启动时自动作为插件加载,接管文件系统操作。
典型用法¶
用户批准流程¶
- 模型检测到需要删除文件,调用
safety_ask并返回 ID。 - 模型提示用户:”请批准删除:dsh-safety allow
“。 - 用户在终端执行
dsh-safety allow <id>。 - 插件记录批准并放行。
撤销删除¶
# 恢复最近一次安全删除的文件
dsh-safety undo
快照与回滚¶
# 创建当前配置快照
dsh-safety snapshot
# 恢复到上一次快照
dsh-safety restore
检查环境¶
# 检查配置完整性及潜在错误
dsh-safety check
适用场景与注意¶
- 环境要求:需要 Node.js 版本 >= 22。
- 依赖:零运行时依赖,仅依赖 Node.js 环境。
- 权限风险:插件以当前 DSH 进程的权限运行,请确保 DSH 进程权限合理。
- 安全原则:插件默认排除包含凭证的文件,但建议在部署前检查源码与许可证。
- 独立 CLI:即使 DSH 无法启动,
dsh-safetyCLI 依然可用,可用于紧急恢复或审计。
总结¶
dsh-safety 通过在执行时拦截、强制人工批准和提供快照回滚能力,为 DSH 插件开发和使用提供了坚实的安全基座。它将生产环境中的事故教训转化为强制性的机制,而非文档说明。