dsh-orchestrator-canvas:圖即真相的五道編排閘門與只讀畫布

前言

在 DeepSeek Harness(DSH)裏用主智能體統籌、子代理並行幹活,常見難點不在「能不能派活」,而在「任務邊界是否被改寫擴權、拆解是否合理、每步有沒有可覈對證據、能不能驗收」。會話裏文字來回說,很難一眼看出當前 run 卡在哪一步。社區插件 dsh-orchestrator-canvas(維護者 MrXiongBear)把「Brief → Decompose → Dispatch → Verify → Accept」做成宿主側工具鏈 + 磁盤上的 run.json 證據鏈,並在客戶端提供只讀編排畫布;它不另寫調度引擎,而是組合宿主已有的 ctx.subagents 與可選的 dsh-flowglass 流視圖。

這是什麼

dsh-orchestrator-canvas 歸類爲 DSH 社區目錄中的「工作流」插件。一句話定位:工作畫布流——圖即真相的編排閘門(Brief→Decompose→Dispatch→Verify→Accept)+ 只讀編排畫布。

數據落在 <dsh-home>\orchestrator\runs\<runId>\ 下的 run.json 與 events.jsonl;畫布、抽屜與 /_dsh/orchestrator-canvas/api/* 均爲只讀,圖只能經 orch_plan 等工具寫入。倉庫 README 標明:實驗性、自用性質、100% 由 AI 生成並經人驗收,未發佈到 npm,且僅在編寫時的 DSH 版本上驗證過;宿主升級後可能失效。當前 package.json 版本爲 0.1.6,聲明兼容 DSH >=0.2.1-rc.2 <0.3.0、desktop profile,Node >=22.19。

與現有能力如何組合

下面是對 README 中對照表的歸納,便於判斷要不要和別的插件一起裝。

能力 現有件 本插件取向
並行派子代理 宿主 ctx.subagents / subagent 工具 / Agent Teams 直接使用,不自寫調度引擎
會話流程圖投影 dsh-flowglass 可並裝,與編排圖正交
圖數據模型 @xiaoso/dsh-workflow-lite 不對齊整包 schema,僅借鑑 nodes/edges/status 等命名
閘門 + 證據鏈 + 接受摘要 無現成直替 本插件增量

核心功能

宿主側五工具

主智能體可見五個模型工具:orch_plan、orch_dispatch、orch_verify、orch_accept、orch_state。主智能體統籌,子代理執行 step;每一步完成與否以落到 run.json 的內容爲準。

五道閘門

1. Brief(改寫,不擴權)
orch_plan 的 brief 是對用戶原話的改寫,寫入 run.json.brief,畫布頂部只顯示它。brief 只能收斂範圍,不能新增需求;後續 orch_verify 也要對着 brief 判定。

2. Decompose(DAG)
節點類型:step(子代理執行)、check(掛在 step 之後,產出證據)、merge(可多父,匯合驗收)。落盤前校驗 id 唯一、邊合法、無環、類型合法、每個 step 至少被一個合法 check 覆蓋。返回 runId、拓撲序 order、layers、dispatchable。

3. Dispatch(真派活)
orch_dispatch 調用 ctx.subagents.startActivation 派發子代理,把 prompt、childId、原始輸出、stopReason 寫入 run.json.nodes[].attempts[]。默認並行上限 maxParallel: 3;依賴未完成、check/merge 節點會被拒。失敗重跑產生新 attempt,不覆蓋歷史。派發異步,下一輪用 orch_state 看結果。

4. Verify(證據非空)
orch_verify 要求 evidence 每項含 kind(command|test|artifact|review)、value、author、at;空或缺字段直接拒絕。verdict: fail 會標記 check 失敗並將下游標爲 blocked。

5. Accept(人工顯式確認)
前置條件:所有 step 爲 done、所有 check verdict=pass、用戶顯式確認。不滿足則拒絕並列出缺口;滿足時寫「交付物 → 節點 → 證據」摘要到 run.json.acceptance。確認經 ctx.userQuestions,且僅在 root agent 工具調用裏彈出。

狀態機與審計

節點狀態:pending → running → done,失敗則 failed 並阻塞下游;另有 blocked。events.jsonl 逐行記錄 plan / dispatch / verify / accept / prune 等事件;run.json 採用寫臨時文件再 rename 的原子寫。

只讀編排畫布

入口在輸入框工具欄左側「◈ 編排畫布」(conversation.input.left),點開爲 shell.overlay 全幀面板,Esc 或點遮罩關閉。頂部可按 本會話 / 本工作區 / 全部 過濾 run(範圍僅內存,客戶端不寫 localStorage)。佈局爲依賴深度分列,卡片展示狀態、類型、目標、子代理、證據數等;點卡片打開右側抽屜查看 attempt 與證據。v0 不支持拖節點改圖。

安裝與啓用

DSH profile 加載爲全有或全無:任一插件 import 失敗可能連坐整個 profile。安裝前請備份 profile 裏的 package.json 與 cordis.patch.yml。

本插件沒有 npm 發佈;官方 README 給出的路徑是讓插件管理器執行 install_bundle,target 指向本倉庫目錄,或等價手工方式:

  1. 將本目錄放入 profile 的 node_modules,或在 dependencies 中使用 "dsh-orchestrator-canvas": "link:<本目錄絕對路徑>"(必須是 link:,不能用 file:,否則 pnpm 會複製目錄,客戶端 bundle 修改後不生效)。
  2. 在 profile 的 package.json 的 dsh.profile.bundles 中登記 dsh-orchestrator-canvas。
  3. 在 profile 目錄執行 pnpm install,使 node_modules 指向源碼 junction。
  4. 裝完後在 workspace 跑審計再重啓 DSH:
node <workspace>\tools\audit-dsh-plugins.mjs        # 期望 PROBLEMS: none

卸載:從 dsh.profile.bundles / dependencies 移除後重啓。注意:remove_bundle 對 link: / file: 依賴可能刪除本地源碼目錄,卸載前請歸檔倉庫副本。可選刪除歷史:Remove-Item -Recurse -Force <dsh-home>\orchestrator。

cordis.patch.yml 中可選配置示例:

- id: orchestrator-canvas
  name: dsh-orchestrator-canvas
  config:
    runsDir: '<dsh-home>\orchestrator\runs'
    maxParallel: 3
    subagentProvider: spawn
    subagentCwd: ''
    autoPrune: true
    retentionDays: 30
    retentionBytes: 209715200
    outputLimit: 12000

典型用法(流程)

下面是可復現的主線,具體 prompt 由會話決定,順序以 README 接縫測試爲準:

  1. 主智能體用 orch_plan 提交 brief 與 DAG(step / check / merge),得到 runId 與可派發列表。
  2. 對 dispatchable 中的 step 節點調用 orch_dispatch;並行不超過配置的 maxParallel。
  3. 子代理完成後,主智能體用 orch_state 查看節點與 attempt,再對 check 節點調用 orch_verify 提交 evidence 與 verdict。
  4. 全部 step 完成且 check 通過後,調用 orch_accept 觸發用戶確認;確認後 run 狀態爲 accepted。
  5. 隨時點 ◈ 編排畫布 只讀查看當前 run 的圖與抽屜詳情。

證據 JSON 形態示例(字段缺一不可):

{ "kind": "command|test|artifact|review", "value": "npm test → 26/26 pass", "author": "model", "at": "2026-10-29T13:20:00+08:00" }

適用場景與注意

適合:需要在 DSH desktop profile 下,用固定閘門約束「拆解 → 派子代理 → 驗證據 → 人工驗收」,並希望會話旁有一張只讀 DAG 投影的開發者。

務必注意:

  • 插件以當前 DSH 進程權限運行;安裝前應自行閱讀 GitHub 源碼 與倉庫聲明(實驗性、非商業、AI 生成)。
  • 社區目錄 skillhub.cn 插件頁 與 DeepSeek / 幻方無官方從屬關係,屬於 DSH「一切皆插件」生態中的獨立收錄。
  • README 未在已抓取片段中給出 SPDX 許可證字段;以倉庫根目錄實際 LICENSE 文件爲準。
  • 修改客戶端源碼後需執行 node tools/build-client.mjs 重建 client.js(link: 安裝下才會反映到運行實例)。

結尾

dsh-orchestrator-canvas 把多智能體編排裏最容易扯皮的部分——範圍 brief、DAG 拆解、派發記錄、非空證據、顯式 accept——釘在 run.json 與五道工具閘門上,畫布只做真相投影。若要進一步瞭解說明與自測命令,見社區目錄頁與 GitHub 倉庫:

  • 目錄頁:https://www.skillhub.cn/plugins/MrXiongBear/dsh-orchestrator-canvas
  • GitHub:https://github.com/MrXiongBear/dsh-orchestrator-canvas
羽毛球分组比赛记分
小程序二维码

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

小夜