前言¶
用 DeepSeek Harness(DSH)做统筹时,对话、计划和上下文通常都留在主会话里;一旦遇到跨很多文件的 refactor、长时间跑测试修失败,或者希望换一个模型独立审一遍产出,常见做法是自己在 DSH 和另一个 CLI 窗口之间复制粘贴。这样既打断专注,也容易把真实报错变成转述。DSH 生态里也有内置 subagent 和官方可选的产品 provider,但按设计它们偏「一次性」:新进程、新 thread、跑一轮,没有同一 worker 的续接与持久作业账本。
下面介绍社区插件 dsh-external-workers(维护者 piecuzwhynot),它把长任务通过各产品官方 CLI 和你的订阅登录,交给 Claude Code、Codex CLI、Antigravity CLI(agy)执行;每条泳道保留独立持久会话,作业状态落在磁盘,对话压缩或 harness 重启后仍可查、可续。
这是什么¶
dsh-external-workers 是原生 DSH 插件(npm 包名 dsh-external-workers,当前仓库 package.json 版本 0.3.1,许可证 MIT)。定位可以概括为:DSH 仍是对话与统筹的主脑,外部 worker 是「一次一件自包含任务」的专家泳道;交接靠任务包(packet)和落盘作业记录,而不是靠人当搬运工或靠单窗口记忆。
插件在 SkillHub 目录分类为工作流;GitHub 仓库见 piecuzwhynot/dsh-external-workers。DSH 社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装与使用前请自行阅读源码与许可证——插件以当前 dsh 进程权限运行。
核心功能¶
六个工具与按产品扩展¶
插件向会话注册 6 个工具;每在配置里声明一个自定义产品,还会多一个 delegate_<产品>:
| 工具 | 作用 |
|---|---|
delegate_claude |
把任务交给 Claude Code worker |
delegate_gpt |
把任务交给 Codex CLI worker |
delegate_google |
把任务交给 Antigravity CLI(agy)worker |
check_external_job |
从磁盘读取作业状态、结果、产物、错误 |
resume_external_job |
在同一 worker 会话里继续 blocked 或失败的作业 |
worker_config |
列出各产品真实可用模型,管理泳道(分工、模型、档位、速度) |
泳道与持久状态¶
- 每条泳道(lane)对应一个产品 + 模型(及 effort / speed 等)+ 分工说明,拥有独立持久会话与工作目录(默认
~/.dsh/workers/<泳道 id>)。 - 作业与泳道元数据写入 DSH storage domain(
external_workers→$DSH_HOME/storages/external_workers.json),不在对话上下文里;委派时生成jobs/<id>/packet.md(内联文件、日志、验收标准等),产物约定在jobs/<id>/out/。 - 失败状态区分
blocked(CLI 缺失 / 未登录)与retryable(额度、超时、进程退出等),避免 worker 挂掉被静默吞掉。 - Web 侧在输入框上方提供作业状态条与抽屉(泳道 / 作业页签);无作业时不渲染,未委派的会话不受影响。
与内置 subagent 的差异(设计取向)¶
官方可选 subagent provider 文档明确:无 continuation、resume、pooling、progress stream 或 product-session persistence。本插件面向「同一 worker 反复用」:默认在同一会话上续接,并配合磁盘账本在重启或压缩后恢复可读状态。worker 自身的长线程仍可能内部压缩;插件保证的是交接与作业记录持久,不是 worker 内部记忆永不丢失。
Codex 额度与 credits¶
delegate_gpt 派活前会读取 Codex 本地 rollout 用量(不走网络)。在 5 小时或每周窗口达到 quota.warnAtPercent(默认 90)时可拦截并需确认;套餐用尽后若会扣 credits,需单独 allow_credits: true。Claude / Antigravity 侧插件不编造额度数字,硬上限仍可能以 retryable + failureKind: quota 体现。
其它能力(摘要)¶
- 按会话挂载(scope):可排除 preset、工作区或 session id;被排除会话工具目录与系统提示不变,且不回落到全局注册。
- 自定义产品:除三个手写适配外,可在
config.json的products里描述任意 agent CLI;也可通过examples/api-lane.mjs接 OpenAI 兼容 HTTP API(无文件工具,适合文字类交付)。 - 会话范围:需 web profile(依赖
dsh-web-app提供的 storage domain)。
安装与启用¶
前置:DeepSeek Harness web profile、Node ≥ 22.19,并至少安装并登录一种 worker CLI(如 claude auth login、codex login,或按 README 安装 agy)。插件不创建 API key、不做浏览器自动化。
从 Release 安装(README 给出的命令,URL 不含版本号):
dsh plugin --profile web add --force \
https://github.com/piecuzwhynot/dsh-external-workers/releases/latest/download/dsh-external-workers.tgz
固定版本示例(README 以 v0.3.0 为例):
dsh plugin --profile web add --force \
https://github.com/piecuzwhynot/dsh-external-workers/releases/download/v0.3.0/dsh-external-workers-0.3.0.tgz
本地目录或 tarball:
dsh plugin --profile web add link:C:/path/to/dsh-external-workers
dsh plugin --profile web add file:/path/to/dsh-external-workers-0.3.0.tgz
安装后重启 harness(dsh web),新开会话可让 agent「列出你的外部 worker 工具」,应能看到全部 6 个。核对与卸载:
dsh plugin --profile web list
dsh plugin --profile web remove dsh-external-workers
典型用法¶
配置可在 设置 → 外部 worker、包旁 config.json,或通过 worker_config 工具修改;二者指向同一套泳道逻辑。
快速开始(README 对话示例,可在 DSH 中直接说):
- 先查模型并建泳道,例如:「把三个外部 worker 的可用模型列出来」;「gpt 开两条泳道:quick 用 gpt-6-luna/medium + speed priority,deep 用 gpt-6.1-sol/xhigh + speed priority;claude 留在 opus/high 做 UI」。
- 派活时点名泳道,例如:「让 gpt 在 deep 泳道里把这段代码改成异步的,产出放它自己文件夹,然后你读出来应用到我的项目里」。
- 之后在任意会话:「看看外部作业」。
泳道配置片段(来自 README,lanes 示例):
"lanes": [
{ "id": "main", "worker": "claude", "role": "example lane: planning and code review", "model": "opus", "effort": "high", "speed": null },
{ "id": "quick", "worker": "gpt", "role": "example lane: fast edits and scripted chores", "model": "gpt-6-luna", "effort": "medium", "speed": "priority" },
{ "id": "deep", "worker": "gpt", "role": "example lane: the heavy model work", "model": "gpt-6.1-sol", "effort": "xhigh", "speed": "priority" },
{ "id": "research", "worker": "google", "role": "example lane: research and data gathering", "model": "gemini-3.1-pro-high", "effort": "high", "speed": null }
]
更完整的用法与排错见仓库 docs/USAGE.zh.md。
适用场景与注意¶
适合:已在付 Claude Code / ChatGPT(Codex)/ Antigravity 订阅,希望 DSH 统筹对话而把「长、自包含、需第二意见」的活交给对应 CLI agent;需要同一泳道跨多次委派续接;需要 harness 重启或主会话压缩后仍能 check_external_job / resume_external_job。
注意:
- Worker 从零上下文启动,任务包质量决定效果;含糊讨论应留在 DSH。Worker 不能反问你。
- 泳道默认在
~/.dsh/workers/<id>工作,不在你的项目目录;把产物合入项目是有意的第二步(或通过cwd权衡会话连续性)。 - 发现某 worker 会话被压缩后自动 re-brief 尚未自动化,需手动
resume_external_job或新 packet;插件保证状态可恢复,不保证自动盯梢。 - 多泳道并行时,应用共享交接目录或同一 checkout,或按领域单写者,避免各泳道各持一份冲突的「真相」。
- 安装前请审查源码与 MIT 许可;插件能力受各 CLI 权限、沙箱与订阅额度约束,Codex credits 消耗需留意闸门参数。
结尾¶
dsh-external-workers 在 DSH「一切皆插件」的生态里,补的是持久外部泳道 + 磁盘作业账本:主脑继续 cheap conversation,贵的订阅只花在确实需要 CLI agent 自主工具链的长活上,并减少人工当「线」和「记忆」的成本。