前言¶
在 DeepSeek Harness 中,主代理可以把任務委派給 subagent。如果不同任務適合不同的 LLM 供應商或模型,逐次手工指定會比較重複;如果只繼承主代理的設置,又缺少按“翻譯”“代碼審查”等角色規劃分工的手段。
SeverusZh/dsh-plugin-subagent-director 用於爲 DSH 的 subagent 指定 LLM 供應商與模型,並用「角色模板」規劃主代理與子代理的分工。下面介紹它的定位、安裝、配置和常用調用方式。
這是什麼¶
這是由 SeverusZh 維護的 DeepSeek Harness 插件,許可證爲 MIT。package.json 中顯示的版本爲 0.2.1。
插件的核心目標有兩個:
- 讓不同 subagent 可以使用不同的 LLM 供應商(route)與模型。
- 用角色模板描述子代理的職責、persona 與可選模型綁定,讓主代理更容易判斷把任務委派給誰。
核心功能¶
- 供應商與模型選擇:爲 subagent 配置默認 LLM 供應商(route)與模型;單次委派也可以由模型顯式指定。
- 默認模型兜底:配置
defaultProvider/defaultModel後,未顯式指定模型的子代理會使用該默認模型;applyDefaultRoute默認開啓,未配置默認模型時爲零侵入空操作。 - 配置熱更新:
settings.yaml或設置面板的改動即時生效,無需重啓。 - 角色模板:定義角色,包括
displayName、職責描述、persona,以及可選的模型綁定。 - 角色按顯示名引用:
role參數未命中 id 時,會按displayName精確匹配;多個同名角色取定義順序第一個並提示。 - 四級回退鏈:單次調用參數 > 角色綁定 > 插件默認 > 繼承主代理;未配置時零侵入。
- 主代理指引:系統提示會自動注入角色清單,主代理可以看到可用的委派角色。
- 設置界面:可在 DSH 設置面板內配置默認模型,並對角色卡片進行增刪改。
- continuable 後臺:返回可續聊子代理 id,可配合
send_message持續委派。 - 可觀測性:打開子代理會話時,composer 下方顯示其實際運行的供應商/模型;資料中標註該功能暫不可用,正在開發中。
安裝與啓用¶
安裝¶
使用插件命令安裝:
dsh plugin --profile <name> add dsh-plugin-subagent-director
本地開發時也可以掛載本地 checkout:
dsh plugin --profile <name> add link:<絕對路徑>
注意:不要再用 - insert: 手動添加 subagent-director / subagent-director-bridge 條目,否則啓動時可能報 duplicate loader entry id。
可選配置¶
如需覆蓋插件默認配置,可以在 cordis.patch.yml 中按 id 覆蓋 subagent-director 的 config。示例如下:
- id: subagent-director
name: dsh-plugin-subagent-director
config:
subagentProvider: spawn
toolName: subagent_role
enableRunInBackground: true
backgroundMode: one-shot
maxDepth: 3
applyDefaultRoute: true
這裏主要涉及三類配置:
subagentProvider:傳輸相關配置。provider:LLM route 相關配置。toolName:模型可見的工具名,例如subagent_role。
subagentProvider(傳輸)與 provider(LLM route)是兩套命名空間,配置時不要混淆。
本地開發注意事項¶
本地以 link: 方式掛載前,需要先安裝依賴並構建:
npm install
npm run build
本地 checkout 需要位於 $DSH_HOME/profiles/ 下,或者倉庫自帶 node_modules。否則 @deepseek-ai/* peer 依賴可能報 ERR_MODULE_NOT_FOUND。
設置頁會訂閱供應商與設置變更事件。在 Models 頁新增供應商或 API key 後,相關下拉列表會自動刷新,無需重啓。
典型用法¶
配置角色模板¶
角色模板配置在 settings.yaml 的 subagent-director 命名空間下。示例:
subagent-director:
defaultProvider: opencode-go
defaultModel: minimax-m2.7
defaultReasoningEffort: low
roles:
translator:
displayName: 翻譯員
description: 中英互譯技術文檔、代碼註釋與溝通內容,保留術語準確性與語氣
persona: 你是專業翻譯。術語統一、句式自然、保留原文意圖;專有名詞與技術縮寫保持原文,拿不準的術語標註出來。
角色可以不綁定 provider/model,繼承全局默認模型;也可以按角色單獨綁定模型。
委派調用¶
在對話或模型工具調用中,可以使用 subagent_role 委派任務:
subagent_role({ role: "translator", prompt: "把 README.md 翻譯成英文" })
subagent_role({ role: "code-reviewer", model: "deepseek-chat", prompt: "..." })
第二個示例中的 model 字段用於臨時覆蓋當前調用的模型。
role 參數支持使用角色 id 或 displayName。未命中 id 時,會按 displayName 精確匹配;多個同名角色取定義順序第一個並提示。建議始終使用 id。
適用場景與注意¶
- 適合需要讓不同 subagent 使用不同 LLM 供應商或模型的 DSH 使用者。
- 適合希望把“翻譯”“代碼審查”“架構設計”等職責拆成角色模板,讓主代理按角色委派的任務。
- 未配置任何角色且未配置默認模型時,行爲與未安裝本插件一致。
- 配置了
defaultProvider/defaultModel,且未關閉applyDefaultRoute時,所有未顯式指定模型的子代理(含內置工具發起的)都會使用該默認模型。 subagentProvider與provider分屬不同命名空間,配置時需要區分。- 可觀測性相關展示能力在資料中標註爲暫不可用、正在開發中。
- 插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。
小結¶
SeverusZh/dsh-plugin-subagent-director 把“哪個子代理用哪個模型”和“主代理把任務交給哪類角色”整理成可配置項:默認模型、角色模板、設置面板和 subagent_role 調用都圍繞這條鏈路展開。
倉庫地址:https://github.com/SeverusZh/dsh-plugin-subagent-director