dsh-external-workers:在 DSH 裏把長任務派給 Claude Code、Codex 與 Antigravity

前言

用 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 中直接說):

  1. 先查模型並建泳道,例如:「把三個外部 worker 的可用模型列出來」;「gpt 開兩條泳道:quick 用 gpt-6-luna/medium + speed priority,deep 用 gpt-6.1-sol/xhigh + speed priority;claude 留在 opus/high 做 UI」。
  2. 派活時點名泳道,例如:「讓 gpt 在 deep 泳道里把這段代碼改成異步的,產出放它自己文件夾,然後你讀出來應用到我的項目裏」。
  3. 之後在任意會話:「看看外部作業」。

泳道配置片段(來自 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 自主工具鏈的長活上,並減少人工當「線」和「記憶」的成本。

羽毛球分组比赛记分
小程序二维码

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

小夜