SeverusZh/dsh-plugin-subagent-director:爲 DSH 子代理指定模型與角色分工

前言

在 DeepSeek Harness 中,主代理可以把任務委派給 subagent。如果不同任務適合不同的 LLM 供應商或模型,逐次手工指定會比較重複;如果只繼承主代理的設置,又缺少按“翻譯”“代碼審查”等角色規劃分工的手段。

SeverusZh/dsh-plugin-subagent-director 用於爲 DSH 的 subagent 指定 LLM 供應商與模型,並用「角色模板」規劃主代理與子代理的分工。下面介紹它的定位、安裝、配置和常用調用方式。

這是什麼

這是由 SeverusZh 維護的 DeepSeek Harness 插件,許可證爲 MIT。package.json 中顯示的版本爲 0.2.1

插件的核心目標有兩個:

  1. 讓不同 subagent 可以使用不同的 LLM 供應商(route)與模型。
  2. 用角色模板描述子代理的職責、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.yamlsubagent-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 時,所有未顯式指定模型的子代理(含內置工具發起的)都會使用該默認模型。
  • subagentProviderprovider 分屬不同命名空間,配置時需要區分。
  • 可觀測性相關展示能力在資料中標註爲暫不可用、正在開發中。
  • 插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。

小結

SeverusZh/dsh-plugin-subagent-director 把“哪個子代理用哪個模型”和“主代理把任務交給哪類角色”整理成可配置項:默認模型、角色模板、設置面板和 subagent_role 調用都圍繞這條鏈路展開。

倉庫地址:https://github.com/SeverusZh/dsh-plugin-subagent-director

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

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

小夜