前言¶
DeepSeek Harness (DSH) 的核心設計理念是“一切皆插件”。在構建智能體時,如何精細控制模型的委派行爲以及底層模型的選擇,是開發者常遇到的挑戰。傳統的直接工具調用方式在處理複雜路由規則和故障轉移時往往不夠靈活。
下面介紹 @snnh/dsh-role-config 插件,它通過角色預設和模型池,爲 DSH 提供了基於能力的委派路由和優先級故障轉移機制。
是什麼¶
snnh/dsh-role-config 是一個 DSH 插件包,由用戶 snnh 維護,採用 MIT 許可證。它不改變 DSH 的核心架構,而是通過提供角色預設和模型池,解決智能體如何根據任務特性路由到不同模型,以及當模型調用失敗時如何自動切換的問題。
核心功能¶
該插件提供了以下主要能力:
-
Role Presets(角色預設)
模型可以將任務委派給一個角色(例如role: "premium"),而無需知曉具體由哪個模型提供服務。每個角色攜帶描述、優先級鏈以及操作員的規則。 -
Model Pool(模型池)
定義模型列表,模型可以直接命名調用。每個模型都由操作員編寫了描述。直接命名的路由使用給定的配置,且不會發生故障轉移。 -
Routing Rules(路由規則)
在角色鏈的頭部提供服務之前,會按順序運行條件判斷,包括提示詞子串、正則表達式、必需的輸入模態、最小上下文窗口或操作員的自定義能力標籤。 -
Priority Failover(優先級故障轉移)
當一個被委派的孩子請求發生終止性失敗時,它會嘗試在同一個角色的鏈中的下一個成員上重試該請求。只有當整個鏈耗盡後,原始失敗纔會生效。 -
Function Bindings(函數綁定)
上下文壓縮和會話標題可以跟隨角色,而不是跟隨會話的路由,或者保持 Harness 的默認行爲。
安裝與啓用¶
安裝該插件需要使用 npm 包名,無需額外的構建步驟。
dsh plugin --profile <profile> add @snnh/dsh-role-config
通過 Git 安裝(github:snnh/dsh-role-config)也是可行的,因爲構建產物已提交,不需要構建腳本和 allowBuilds 權限。
安裝後,插件默認不註冊工具或修改智能體。必須手動開啓委託功能。
- id: role-config
config:
exposure:
delegateTool: true
listTool: true
pool:
- provider: deepseek-official
model: deepseek-chat
配置注意事項¶
官方工具兼容¶
當開啓 exposure.delegateTool 後,插件會將路由工具註冊在官方 subagent 名稱下。爲了防止命名衝突,官方工具(或 tool-subagent)所在的配置行必須設置 modelSelectionSettings: false。
- id: tool-subagent
config:
provider: spawn
toolName: subagent
modelSelectionSettings: false
局域網訪問配置¶
默認情況下,設置文檔限制在迴環地址。若要通過局域網地址(如 http://<lan-ip>:<port>)配置此插件,需要在連接配置中重寫 client-connection 行,將 operatorSurface 設置爲 trusted。
- id: connection
config:
trustedHosts: !!js ctx.webRuntime.trustedHosts
operatorSurface: trusted
適用場景與注意¶
該插件適合需要在智能體內部實現複雜路由邏輯、多模型協作或容錯機制的 DSH 用戶。
使用時需注意以下限制:
1. 直接命名路由:在模型池中直接命名的路由不進行故障轉移。
2. Agent-team 繼承:Agent-team 的成員繼承領導的路線;此插件只能對繼承的路線進行故障轉移,不能直接選擇其模型。
3. 函數綁定:函數綁定只寫入目標行的配置,沒有自身的故障轉移機制。
4. 運行權限:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
結語¶
通過角色預設和模型池,開發者可以構建更穩定的智能體路由策略。更多配置細節與目錄信息,可參考 GitHub 倉庫或插件目錄頁。