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 自主使用工具,优先使用派发台。