前言¶
在 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。