dsh-workflow-kit:在多个接收方之间分活、留证与定时唤醒

前言

在 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 的场景。

  1. 复制目录并生成配置:
cp -r dsh-workflow-kit ~/dsh-workflow-kit && cd ~/dsh-workflow-kit
cp config.example.json config.json
  1. 按需编辑 config.json(示例字段见 README):
{
  "workspace": "~/dsh-workspace",
  "receivers": ["alice", "bob"],
  "channelFile": "data/channel.jsonl",
  "qqNotify": false,
  "checkMinutes": 20,
  "maxDoingPerReceiver": 3,
  "redlines": ["不花钱", "不删除", "不对外提交", "不改生产", "不承诺"]
}
  1. 初始化并自检:
node bin/init.mjs
node bin/selfcheck.mjs

init 会幂等创建目录与接收方信箱,并把解析后的绝对频道路径写回 config.json。

  1. 在每个接活会话挂巡检提醒:把 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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜