DeepSeek Harness (DSH) 採用插件化架構。本插件(dsh-dispatch)允許將任務派發給本機 ZCode CLI 的無頭進程,並在 DSH 頁面右下角的懸浮面板中監視這些進程。它提供單寫者互斥、用量聚合和通道管理等功能。
安裝¶
本項目不發佈 npm 包,必須從 GitHub 倉庫安裝並指定子目錄。
dsh plugin --profile web add "github:Shuffle-1992/dsh-dispatch#path:dispatch"
說明:#path:dispatch 不能省略。本倉庫是 monorepo,插件本體位於 dispatch/ 子目錄中。DSH 實際執行 pnpm add 時,pnpm 默認取倉庫根目錄,根目錄沒有插件 package.json,裝出來只會得到佔位符。
核心功能¶
本插件主要提供以下能力:
- 派發:支持將
prompt、任務文件或目標描述交給 ZCode 運行,支持build / edit / plan / yolo四種模式。 - 單寫者互斥:通過
repo/memory文件鎖及進程內 FIFO 隊列,確保同鎖任務串行執行,衝突任務排隊不報錯,避免多會話併發互相干擾。 - 實時監視:顯示每個 job 的狀態、耗時、上下文佔用、退出碼及鎖持有者,支持拉取最近輸出(tail)。
- 續跑 / 重跑:支持同會話內
--resume重發原提示詞,或在同一會話裏發送新指令。 - 通道與降級鏈:支持切換套餐通道 / 模型;額度耗盡或未開通時按降級鏈自動交接重跑。
- 免費額度通道:支持 ZCode Start Plan(活動贈送額度),通道 ID 爲
account:<family>-start-plan(如account:bigmodel-start-plan),面板顯示爲“免費額度(Start Plan)”。 - 用量聚合:本地臺賬支持 5 小時滾動、本週、今日統計,並顯示套餐剩餘額度(數據源不可用時如實標註
available:false)。 - 派發總開關:一個跨會話的真值文件,設爲
false時任何會話都不得派發。 - Agent 工具:註冊
dispatch命令,與面板操作一一對應。
配置¶
插件字段在 dispatch/ 目錄下的 cordis.patch.yml 中配置。
| 字段 | 默認值 | 說明 |
|---|---|---|
demo |
false |
UI 演示模式,使用內置假數據渲染,不觸達 dispatcher。 |
maxConcurrent |
3 |
同時運行的 run 上限。 |
runnerPath |
'' |
runner 腳本絕對路徑。 |
ledgerPath |
'' |
臺賬 dispatch-runs.jsonl 絕對路徑;留空則跳過用量聚合。 |
workRoot |
'' |
派發器工作根目錄(存放 locks/、state/、logs/);留空則落到插件目錄 .data/。 |
switchPath |
'' |
派發總開關真值文件路徑;留空則開關不可寫。 |
注意:runnerPath 與 workRoot 任一爲空則不創建 dispatcher。面板會走 demo 降級,agent 工具返回可讀錯誤。這是刻意設計,不靜默跑錯。
Agent 工具¶
插件註冊了 dispatch 工具,支持以下子命令:
dispatch | list | kill | dismiss | tail | quota | status | switch | channels | channel | retry | fallback
- dispatch:派發任務,參數包括
kind(prompt/task/target)、provider、mode、lock、cwd等。 - list / tail(id,n):查看任務列表及輸出。
- kill(id) / dismiss(id):終止任務並從列表移除。
- quota:查看用量。
- status / switch(enabled):讀取或切換派發總開關。
- channels / channel / retry / fallback:管理通道、重試、降級鏈。
注意事項¶
- 依賴 ZCode CLI:插件不自己存儲憑據,而是讀取 ZCode CLI 的
~/.zcode/v2/config。若 ZCode 更新憑據後未同步回config,可能導致 401 錯誤。 - 免費額度限制:免費額度通道是時間窗口型,不支持
--resume/--target/--memory-bench;官方 MCP 在託管進程內不可用。 - 與姊妹項目區別:本項目提供獨立的 ZCode 進程和工具支持;姊妹項目
dsh-connect-zcode將免費額度接成 DSH 的模型對話通道,但 DSH 工具層不參與(如browser_*、Agent Teams 等)。若需 agent 自主使用工具,優先使用派發臺。