前言¶
用 DSH 寫智能體,單個 Agent 循環能覆蓋大部分線性任務。但任務一旦多起來——先調研、再審查、最後彙總——你就得自己處理任務依賴、並行調度和失敗恢復。這些邏輯寫散在各處,既難測試也難複用。
下面介紹 Li3NGa 的 DHS-multi-agent-plugin,它把這部分編排基礎設施做成了一個獨立插件。
這是什麼¶
DHS-multi-agent-plugin 是一個 DeepSeek Harness 插件,README 裏的一句話定位是「將 DeepSeek Harness 變成強大的多智能體編排引擎」。倉庫由 Li3NGa 維護,採用 MIT 許可證,npm 包名爲 dhs-multi-agent,當前版本 0.2.0。
它解決的問題是:讓多個智能體按聲明的依賴關係協作,獨立任務自動並行,失敗時在預算內恢復,全程可觀測。
倉庫包含兩套運行時:TypeScript Native 運行時(生產源代碼位於 packages/dsh-multi-agent)和 Python 運行時(src/deepseek_multi_agent_plugin,帶 CLI/HTTP/MCP 適配器)。docs/ 目錄提供使用指南、API 參考、策略說明、部署指南、HTTP API、MCP 集成等文檔。
核心功能¶
規劃與路由¶
- Planner:從自然語言意圖生成結構化任務圖;
- Validator:嚴格的計劃驗證,拒絕不安全或格式錯誤的計劃;
- AgentRouter:基於能力的智能體路由,支持顯式分配和自動匹配。
從 README 的架構圖看,執行鏈路是 Planner → Validator → Router,之後分流到 Supervisor(按策略協作)或直接走 DAG 調度,最終由 AgentRunner 調用真實 DSH,Recovery 與 Diagnostics 模塊貫穿其中。
DAG 並行調度¶
調度器按有向無環圖執行任務:獨立任務自動併發,依賴關係被保留,並行度在依賴約束下最大化,支持任意複雜的任務依賴拓撲。
有界容錯恢復¶
恢復機制是「有界」的,四種手段各有邊界:
- Retry:超時失敗在預算內自動重試;
- Repair:不可用的智能體自動從路由池移除;
- Replan:依賴失敗觸發確定性重規劃;
- Abort:取消操作永不觸發恢復。
運行時可觀測性¶
RuntimeDiagnostics:運行時診斷指標;RunRegistry:運行註冊與狀態追蹤;- Metrics 收集 + Observer 模式;
- 診斷在內存內完成,不需要數據庫。
安全¶
- RBAC 角色層次訪問控制;
- HMAC 時序安全令牌認證;
- CSRF 防護與輸入驗證;
- 敏感信息自動脫敏。
協作策略¶
內置四種協作策略,均可直接調用:
- Sequential:順序串行執行;
- Broadcast:廣播並行執行;
- Relay:接力式傳遞;
- DAG:任意依賴圖直接執行。
安裝與啓用¶
先裝包:
npm install dhs-multi-agent
運行要求:Node.js >=22.14.0,且宿主環境需提供 DeepSeek Harness / Cordis 運行時。插件的依賴包括 @deepseek-ai/cordis ^4.0.1,以及 @deepseek-ai/dsh-agent、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-session(均爲 0.1.1-rc.2)。
再在宿主裏註冊插件:
import { apply } from 'dhs-multi-agent'
apply(ctx, {
concurrency: 4,
defaultTimeoutMs: 60_000,
})
apply 是插件入口,這裏的配置把併發數設爲 4,任務默認超時 60 秒。註冊後即可通過 ctx.multiAgent 調用編排接口。
典型用法¶
運行一個 DAG 任務¶
用 runDag 傳入任務數組,靠 dependsOn 聲明依賴:
const result = await ctx.multiAgent.runDag([
{
id: 'research',
agentId: 'researcher',
prompt: '收集相關事實。',
},
{
id: 'review',
agentId: 'critic',
prompt: '審查研究結果。',
dependsOn: ['research'],
},
])
這段代碼裏 review 依賴 research,會按依賴順序執行;如果再加一個無依賴的任務,它會和 research 併發跑。
帶恢復的編排¶
需要容錯時改用 runWithRecovery,顯式傳入智能體能力表和恢復預算:
const result = await ctx.multiAgent.runWithRecovery(plan, {
runId: 'run-1',
input: '用戶意圖',
agents: [
{ id: 'researcher', capabilities: ['research'] },
{ id: 'writer', capabilities: ['writing'] },
],
recovery: { maxAttempts: 3, maxReplans: 2 },
})
maxAttempts: 3 限定重試上限,maxReplans: 2 限定重規劃次數。
Python 示例¶
倉庫 examples/ 目錄提供可直接運行的腳本:
# 演示協作策略(無需 API Key)
python examples/demo_strategies.py
# 真實 DeepSeek 三人辯論
DEEPSEEK_API_KEY=sk-xxx python examples/demo_deepseek_team.py
# 啓動 HTTP 服務
python examples/run_http_server.py
demo_strategies.py 不需要 API Key,可以先跑通策略邏輯;demo_deepseek_team.py 演示真實 DeepSeek 三智能體辯論;想通過 HTTP 調用時,用 run_http_server.py 起服務,接口文檔在 docs/http_api.md。
公共 API¶
除 apply 外,包還導出核心運行時(AgentRunner、Scheduler、Task、TaskGraph)、四個策略函數(runSequential、runBroadcast、runRelay、runDag)、Supervisor(Supervisor、createSupervisor)、恢復(createRecoveryManager)和診斷(RuntimeDiagnostics、RunRegistry、createRuntimeDiagnostics)。需要更細的控制時,可以繞過高層封裝直接組合這些模塊。
適用場景與注意¶
適合的場景:
- 任務間存在依賴關係,需要 DAG 調度而非簡單串行;
- 多個智能體按角色協作(調研、寫作、審查等);
- 長流程需要失敗恢復和運行時指標。
注意以下幾點:
- 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。倉庫採用 MIT 協議,源碼公開在 GitHub,可以自行審閱;
- 宿主環境需提供 DeepSeek Harness / Cordis 運行時,Node.js 版本不得低於 22.14.0;
- 當前版本爲 0.2.0,具體配置項與接口以倉庫
docs/下的文檔爲準。
測試方面,倉庫包含 TypeScript 164+ 單元測試和 Python 386+ 測試用例,覆蓋集成、Smoke 與安全測試,可用 pnpm --dir packages/dsh-multi-agent test 和 pytest tests/ -q 本地跑一遍。
結尾¶
回顧一下:DHS-multi-agent-plugin 把規劃、路由、DAG 調度、有界恢復和運行時診斷打包成一套 DSH 插件,讓你不必自己拼裝多智能體編排的基礎設施。經過上面的步驟,從一個 runDag 最小示例到帶恢復的完整編排都能跑起來。
- 社區目錄頁:https://www.skillhub.cn/plugins/Li3NGa/DHS-multi-agent-plugin
- GitHub 倉庫:https://github.com/Li3NGa/DHS-multi-agent-plugin