dsh-team-autopilot:原生 Agent Teams 的確定性自動派發

前言

DeepSeek Harness(DSH)在實驗性 Agent Teams 組合裏已經提供 roster、任務板和 mailbox,但任務變成可執行之後不會自動指定持有者,成員停擺後 in_progress 任務也不會被系統收回,寫域重疊在原生側只是提示。若 Lead 只靠手動發消息推進度,多成員並行時容易出現任務掛着沒人接、寫域被佔滿卻仍在派發的局面。下面介紹社區插件 dsh-team-autopilot:它掛在原生 ctx.agentTeams 接縫上,用代碼做調度決策,不另建第二層團隊存儲,也不向主 agent 注入策略文本來花 token 做判斷。

這是什麼

dsh-team-autopilot 由維護者 wooden-tan 發佈,npm 包名同爲 dsh-team-autopilot,在 SkillHub 社區目錄中歸類爲「工作流」。一句話定位:對原生 Agent Teams 做確定性自動派發——任務 ready 時按規則喚醒空閒成員,持有者僵死或失敗時回收任務,派發時刻把 writeScopes 重疊當作軟鎖攔截第二次派發。

官方 README 註明:項目已於 2026-11-02 停止維護,代碼停在 0.6.7;停項原因、能力邊界與卸載方式見倉庫 docs/stopped.md。本文仍按 README 說明安裝與配置,使用前請自行評估是否接受停維狀態。

它補的三個空檔

原生 Agent Teams 模型策略裏寫死的三件事,與本插件的對應關係如下(摘自 README 表格):

空檔 本插件的做法
任務可執行後無人自動叫醒,需 Lead 手動推 後臺 tick 掃板,按規則挑人並 sendMessage 喚醒;一輪一個團隊只 tick 一次
成員停擺後認領任務永久 in_progress,佔寫域與併發槽 用 agent/status 回合邊界(可關)或計時判定僵死,按上限回收;超限停派
寫域重疊僅 advisory,不攔截 派發時按 writeScopes 判衝突,重疊則軟鎖,不派第二個

插件不自建任務存儲、成員註冊表或消息通道;卸載即失效、不留插件側持久狀態。決策由代碼完成,不向主 agent 注入調度策略文本。

安裝與前置條件

先做 npm 安裝,或交給 CLI 插件管理器(命令須與 README 一致):

npm i dsh-team-autopilot
dsh plugin --profile web add dsh-team-autopilot

已發佈包自帶預構建 dist/,安裝後無需再構建。@deepseek-ai/* 爲 optional peer,由宿主 profile 提供;在宿主外單獨 import 會在運行時拋 Cannot find package '@deepseek-ai/schemastery',屬預期行爲。

必須先有提供 ctx.agentTeams 的組合,再把本插件疊在其後。README 給出的順序示例:

dsh plugin --profile web add @deepseek-ai/dsh-experimental-agent-team-profile
dsh plugin --profile web add dsh-team-autopilot

cordis.patch.yml 會插入 team-autopilot 一行。若環境中不存在 agentTeams,插件因 inject 無法解析而不會加載——README 明確這是預期行爲,不是 bug。

運行環境:package.json 要求 Node ^22.19.0 || >=24,DSH 版本 >=0.2.1-rc.2 <0.3.0 || >=0.2.2-alpha.2 <0.3.0-0。許可證爲 MIT。

配置要點

在 profile 裏按插件 id team-autopilot 覆蓋配置;cordis.patch.yml 默認只設 enabled: true,其餘走 schema 默認值。常用鍵如下(默認值以 README 配置表爲準):

鍵 默認 說明
enabled true 關閉後只保留狀態工具,不跑循環
tickTimeoutMs 30000 每次等待窗口(原生硬限制 10000–3600000)
maxConcurrent 2 團隊併發預算默認值
wakeCooldownMs 60000 同一任務窗口內不重複喚醒
dryRun false 只記錄決策,不發消息
teamBudgets {} 按 TeamId 覆蓋併發預算
reclaimAfterMs 300000 持有者 inactive 多久後收回任務
reclaimOnFailed true 持有者 failed 時是否立即回收
livenessEnabled true 是否訂閱 agent/status 用回合邊界判定應答
wakeBudgetPerHour 0 每隊滾動一小時內最多喚醒次數,0 爲不限

另有熔斷相關項(errorThreshold、openCooldownMs、halfOpenProbe)、回收次數上限 reclaimRetryLimit、零 token 觀測用的 statusFile / statusHeartbeatMs 等,完整表見 GitHub README。

README 提醒:maxConcurrent: 0 或 halfOpenProbe: 0 會被收斂到「永久不派發」且不一定報錯,外觀像「今天沒活」。改配置時勿把默認值整表抄進 patch,以免上游默認值變更時覆蓋用戶意圖。

典型用法與驗證

聯調前:在已掛載 Agent Teams profile 的宿主上安裝本插件;需要觀察決策時可先設 dryRun: true,只記日誌不發消息。真機端到端需真實 DSH 宿主與可用 LLM provider;README 將逐場景步驟、可粘貼提示詞放在 docs/verify.md,並把成員改成被動等待的任務模板放在 docs/team-collab-task-v2.md,以便 autopilot 成爲唯一派發源。

倉庫內自檢(無需 LLM)示例:

node node_modules/typescript/bin/tsc --noEmit
node tests/verify.ts
node tests/integration.ts
node scripts/acceptance.mjs

npm test 聚合 verify、integration、acceptance 與 verify:status(用真實 dsh-tools schema 編譯器校驗 team_autopilot_status 輸出)。掛載自檢:

node scripts/verify-mount.mjs

運行中觀測:狀態工具或 statusFile 會輸出類似一行摘要:

autopilot active health=ok version=0.6.7 up=17m rounds=42 dispatched=3 reclaimed=0 ...

health=ok|off|error;dispatched / reclaimed / skipped 爲累計值。字段詳解見 docs/design.md。

適用場景與注意

適合:已在 DSH 上使用原生 Agent Teams(實驗 profile),希望任務板在無人手動 @ 成員時仍能按規則推進,並需要在成員無響應或寫域衝突時做確定性回收與攔截的團隊編排場景。

務必注意:

  1. 停維:2026-11-02 起不再維護,末版 0.6.7;官方 Agent Teams 行爲若變更,插件不會跟進。
  2. 權限:插件以當前 DSH 進程權限運行;安裝前應閱讀源碼與 MIT 許可證,確認 sendMessage、任務回收等行爲符合你的安全預期。
  3. 生態:DSH 社區目錄(如 SkillHub 插件頁)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;星標與目錄信息以各站點爲準(當前 GitHub 星標爲 0)。
  4. 卸載:dsh plugin --profile web remove dsh-team-autopilot 後完全退出宿主並重啓;插件不持有持久狀態。若配置過 statusFile,該文件爲普通日誌,可自行刪除。

結尾

dsh-team-autopilot 的價值在於:在不複製一套團隊中間層的前提下,用確定性 tick 與配置化規則補上「ready 不派、停擺不收、寫域不鎖」三處原生縫隙,並支持 dryRun、熔斷與 status 觀測便於聯調。需要設計理由、真機記錄與停項說明時,請直接讀倉庫文檔鏈:docs/design.md、docs/stopped.md、docs/verify.md。

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

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

小夜