前言¶
在 DeepSeek Harness(DSH)里同时盯几个「接活方」——不同项目、不同角色、不同会话——时,单仓库自主 agent 能解决「在一个仓库里从 Ticket 到 PR」的闭环,但很难覆盖「这条活该谁领、做完了谁看见、卡住了有没有记录、会话睡着谁来叫醒」这类跨接收方问题。官方原型 dsh-superagent 的架构假设是一个仓库 + 一个 agent;多接收方之间的投递、工单状态、失败台账和巡检提醒,需要另外的本地机制来补。
社区插件 dsh-workflow-kit(维护者 stayw1thme999,分类:工作流)定位是 superagent 的补足件:不重写、不替代官方能力,只在它未覆盖处用脚本 + 文件状态做多接收方流转。简介写明:在接收方之间派工、记录失败、唤醒沉睡会话;零外部依赖(qqNotify 为 false 时不做外部调用)。
这是什么¶
dsh-workflow-kit 给 DSH 加一层「多接收方任务治理」:信箱投递、工单状态机(含依赖门)、自动接单、本地频道汇报、失败强制留证、成本与资源相关文档约定,以及可通过 DSH schedule 挂载的巡检间隔(默认 20 分钟,见配置项 checkMinutes)。接收方名称完全自定义(如 alice、bob、finance-bot),包内不含特定团队分工模板。
与 superagent 的关系可理解为分工互补:superagent 管单仓库 Source 驱动与 Ticket/Assignment;本套件管跨接收方谁领活、如何汇报完成、失败如何入账、定时唤醒。两者可同时安装,只要数据目录不混用即可(README FAQ 已说明)。
运行要求:Node 18+;许可证 MIT(package.json 版本 0.2.0)。
核心功能¶
以下能力均来自仓库 README 与 FEATURES.md 对照说明,本套件不重做 superagent 的 Ticket/Assignment 状态机、Web 面板、模型门禁与 Outbox 可靠性。
| 机制 | 作用 |
|---|---|
| 信箱 + 工单 | 小活走信箱(tasks/mailbox/<接收方>/*.md);要验收、有依赖的走工单池(tasks/workorders/pool.json) |
| 派单与路由 | assign / take;routing-guard 在派错接收方时提示 |
| 依赖门 | 依赖未完成时 wo.mjs take 会拒绝领取 |
| 失败留证 | 报错写入 tasks/failures.jsonl,须贴原文;fail-hook、wo.mjs block 相关 |
| 开工前查重 | 对照最近完成记录,避免重复劳动 |
| 自动接单 | autotake.mjs;单接收方并发上限由 maxDoingPerReceiver 约束(默认 3) |
| 本地频道 | data/channel.jsonl,一行一条 {at,who,kind,text},不依赖外部服务 |
| 优先级配额 | P1 每日上限,超出自动降 P2(wo.mjs list) |
| 安装自检 | selfcheck.mjs 共 15 项(配置、目录、权限、脱敏扫描、命令在位) |
| 定时唤醒 | 将 docs/02-巡检prompt.md 中的内容挂为 DSH 提醒;间隔与 checkMinutes 一致 |
插件形态下,宿主加载 cordis.patch.yml,注册 6 个工具:workflow_list、workflow_take、workflow_report、workflow_submit、workflow_accept、workflow_block;实现转发到 bin/wo.mjs,与 CLI 行为一致。需宿主提供 @deepseek-ai/dsh-tools(peer dependency,DSH 自带)。
安装与启用¶
DSH 生态理念是「一切皆插件」;SkillHub 目录页是社区收录站点,与 DeepSeek / 幻方无官方从属关系。安装前建议自行查看 GitHub 源码与 MIT 许可证;插件在当前 dsh 进程权限下运行,配置中的 workspace 会决定活数据落盘位置。
方式 A:DSH 插件(推荐)¶
目录 README 给出的安装命令如下:
dsh plugin add github:stayw1thme999/dsh-workflow-kit
装完后工具会进入模型工具列表,与下文 CLI 共用同一套状态机。
方式 B:仅脚本(不装插件)¶
适合只想在本机跑命令、不接 Cordis 的场景。
- 复制目录并生成配置:
cp -r dsh-workflow-kit ~/dsh-workflow-kit && cd ~/dsh-workflow-kit
cp config.example.json config.json
- 按需编辑
config.json(示例字段见 README):
{
"workspace": "~/dsh-workspace",
"receivers": ["alice", "bob"],
"channelFile": "data/channel.jsonl",
"qqNotify": false,
"checkMinutes": 20,
"maxDoingPerReceiver": 3,
"redlines": ["不花钱", "不删除", "不对外提交", "不改生产", "不承诺"]
}
- 初始化并自检:
node bin/init.mjs
node bin/selfcheck.mjs
init 会幂等创建目录与接收方信箱,并把解析后的绝对频道路径写回 config.json。
- 在每个接活会话挂巡检提醒:把
docs/02-巡检prompt.md中的段落设为 DSH schedule,间隔 20 分钟。提醒跟会话走,换会话需重新挂载。
数据目录默认为 ./data,可用环境变量 DSH_WORKFLOW_DATA 覆盖。
典型用法¶
README 提供了一轮可复制工单流:建单、校验、指派、自取、进度、提交证据、验收。
node bin/wo.mjs new -f spec.json
node bin/wo.mjs check WO-20261104-0001
node bin/wo.mjs assign WO-20261104-0001 alice
node bin/wo.mjs take alice
node bin/wo.mjs report WO-20261104-0001 "进度"
node bin/wo.mjs submit WO-20261104-0001 "证据:路径 + 输出原文"
node bin/wo.mjs accept WO-20261104-0001 "验收通过"
工单 spec 字段说明见 templates/工单-spec.md。并行场景下还可使用:
node bin/dispatch.mjs list <接收方>/done <id>— 队列与结单node bin/take.mjs --receiver r— 收信箱node bin/say.mjs "..." --receiver r --kind done— 写本地频道node bin/autotake.mjs [--dry]— 无人盯时自动领活
发布或共享配置前,README 建议执行脱敏扫描:
node scripts/scan-secrets.mjs .
适用场景与注意¶
更适合谁:已经在用或计划用 dsh-superagent 做单仓库自主交付,同时有 3~5 个逻辑「接收方」(可映射为多个 DSH 会话标签);需要文件化状态、失败可追溯、定时巡检,且希望不绑定第三方通知服务(默认本地频道即可)。
使用上需注意:
- 不必多台机器;单机多会话即可。多人多机时将
workspace指向共享目录(README Q1)。 - 工单与信箱分工不同:信箱偏一次性投递;工单带
queued → doing → review → done与验收、依赖。 - 失败禁止静默绕过;未捕获异常可由
fail-hook写入failures.jsonl,卡点应用wo.mjs block并贴原文。 - 与 superagent 不冲突,但避免共用同一活数据目录。
结尾¶
dsh-workflow-kit 用本地文件和 Node CLI(及可选的 6 个 DSH 工具)把多接收方协作里的分派、汇报、留证和唤醒收成可重复的命令流,与官方 superagent 单仓闭环并列使用。进一步了解可打开 SkillHub 目录页 与 GitHub 仓库;完整与 superagent 的功能勾选对见仓库内 FEATURES.md。