DeepSeek Harness Hub
← 返回列表

安全审批工作流cnwutianhao/dsh-safe-workflow

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

用任务契约与审批门禁约束 Agent 改代码

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/16 · 已提供中文文档

Safety-first workflow plugin for DeepSeek Harness with task contracts, approval gates, checkpoints, verification evidence, and best-effort rollback. 为 DeepSeek Harness 提供任务契约、审批门禁、检查点和验证能力,让 Agent 工作流更安全。

综合分
27.6
GitHub 分
27.6
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add cnwutianhao/dsh-safe-workflow
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-safe-workflow

一个独立的 DeepSeek Harness 插件,用于构建更安全、可验证、可恢复的 Agent 编码工作流。

它提供一个面向模型的工具 safe_workflow,支持以下操作:

- start:创建任务契约;
- status:查看当前任务契约;
- checkpoint:保存当前工作区快照;
- restore:恢复指定快照;
- verify:执行验证命令并记录输出;
- close:关闭任务契约。

同时,它注册两个原生策略监听器:

- tools/pre-execute:检查路径规则,并在执行可变更工作区的工具前请求审批;
- tools/execute:在副作用工具真正执行前创建最佳努力 checkpoint。

安装到 DSH 源码工程

先构建本插件:

npm install
npm run check

然后从 DSH 工程中,把这个独立目录安装到 Web profile:

DSH_DIR=/path/to/deepseek-harness
PLUGIN_DIR=/path/to/dsh-safe-workflow

cd "$DSH_DIR"
pnpm dsh plugin --profile web add "$PLUGIN_DIR"

pnpm dsh --profile web --dump-config | grep dsh-safe-workflow
pnpm dsh web

安装完成后,可以在 DSH 的插件列表中看到并启用本插件:

dsh-safe-workflow 已安装并启用

本插件不会修改 DSH 主工程源码,只会作为 profile dependency 安装到 DSH 的 profile 目录中。

一个基本工作流

启动 DSH 后,可以让 Agent 先创建任务契约:

请启动一个安全工作流,标题是“修复解析器回归问题”。

目标:修复解析器回归问题,但不要修改公共 API。

验收标准:
1. npm test 通过;
2. npm run typecheck 通过。

只允许修改 src/ 和 test/ 目录。
修改前需要对 bash、write、edit 和 str_replace_editor 请求人工审批。

之后要求 Agent 在完成修改后执行:

使用 safe_workflow verify 执行 npm test 和 npm run typecheck。
只有验收标准全部通过后,才能关闭安全工作流。

当 Agent 即将执行文件修改等可变更操作时,审批门禁会展示操作内容,并允许批准或保持当前契约不变:

修改文件前的审批门禁

也可以直接要求 Agent 手动创建 checkpoint:

请先使用 safe_workflow checkpoint 创建一个名为“修复前”的检查点。

工作区状态文件

插件会在当前 session workspace 下创建 .dsh-safe-workflow/:

contract.json       当前任务契约和验证记录
audit.jsonl         session、工具、checkpoint 和验证证据
checkpoints/        checkpoint 清单与复制的文件快照

如果不希望这些文件进入 Git,可以将 .dsh-safe-workflow/ 加入项目的 .gitignore。

配置

默认的 cordis.patch.yml 配置如下:

- id: dsh-safe-workflow
name: dsh-safe-workflow
config:
stateDirName: .dsh-safe-workflow
approvalMode: ask
autoCheckpoint: true

配置项说明:

- stateDirName:工作流状态目录名称,默认是 .dsh-safe-workflow;
- approvalMode:审批模式,可选 ask、allow、deny;
- autoCheckpoint:是否在可变更工具执行前自动创建 checkpoint;
- mutatingTools:额外声明为可变更工具的工具名列表。

通常建议保留 approvalMode: ask 和 autoCheckpoint: true。如果设置为 allow,插件不会主动请求审批,但 DSH 其他安全策略仍可能继续生效。

默认路径策略

默认禁止访问或修改:

.env
.env.*
.git/**
node_modules/**

任务契约还可以通过 allowedPaths 设置允许修改的目录。例如:

只允许修改 src/、test/ 和 package.json。

路径规则只约束插件能够识别到的文件参数。对于任意 shell 命令,插件无法完美推断命令内部会修改哪些文件,因此 shell 工具默认需要审批。

Checkpoint 与恢复

自动 checkpoint 会在识别到以下类型的工具执行前触发:

bash、pwsh、shell、write、edit、delete、move、copy、rename、mkdir、
fs_write、fs_edit、str_replace_editor

对于 write、edit 等带明确文件路径的工具,插件会保存对应文件的快照。对于 shell 工具或手动对整个工作区创建 checkpoint,插件会递归保存工作区文件,同时跳过:

- .git/;
- node_modules/;
- .dsh-safe-workflow/。

恢复时,插件会把快照中的文件复制回原位置,并删除快照中记录为“不存在”的文件。

重要限制

这是一个工作流门禁插件,不是进程级沙箱。

插件代码运行在 DSH 宿主进程中,并继承宿主进程的权限。第一版提供的是:

- 任务策略;
- 工具审批;
- 文件路径限制;
- 操作证据;
- 最佳努力文件快照和恢复。

它不能保证原子回滚以下副作用:

- 任意 shell 命令;
- 网络请求;
- 数据库写入;
- 外部服务调用;
- 未被 checkpoint 包含的文件;
- 工具内部产生的进程状态。

因此,生产环境使用时仍然应该:

1. 阅读并审查插件源码;
2. 锁定插件版本或 Git commit;
3. 同时启用 DSH 自带的 sandbox 和 approval 层;
4. 在不包含生产凭据的测试 workspace 中验证;
5. 对重要项目使用 Git 分支或 worktree。

开发与测试

npm install
npm run build
npm test
npm run check

当前测试覆盖了:

- 默认 .env、.git 路径拦截;
- allowedPaths 和工作区外路径拦截;
- 可变更工具识别与文件路径提取。

设计目标

dsh-safe-workflow 不修改 DSH Agent loop,而是使用 DSH 官方扩展点实现安全工作流:

任务契约
↓
工具审批
↓
副作用前 checkpoint
↓
执行与验证
↓
证据记录
↓
关闭、恢复或继续任务

后续可以继续扩展:

- Git worktree 级 checkpoint;
- 多 Agent 共享任务契约;
- 验收标准自动判定;
- Web UI 任务状态卡片;
- diff review 和人工批准;
- 更严格的插件权限审计。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群