dsh-subagent-model:按次指定模型路由與上下文繼承的 DSH 插件

前言

DSH 的插件機制可以把工具能力掛到智能體會話裏。內置 subagent 工具已經能委派子代理,但在具體開發中,常需要在某一次調用裏臨時指定 provider、model、max_tokens,或者讓子代理基於當前對話的最新狀態繼續工作。

下面介紹 dsh-subagent-model。它是 Momojie-S 維護的 DSH 插件,基於 @deepseek-ai/dsh-tool-subagent,把子代理的模型路由和上下文繼承暴露爲每次調用可選的參數。

插件定位

dsh-subagent-model 註冊 subagent_model 工具。不傳可選參數時,子代理默認使用乾淨上下文,與內置 subagent 語義一致;需要基於當前對話續寫時,傳 fresh_context: false,種子爲調用那一刻父會話最新完成輪次。

package.json 聲明版本 0.3.1,許可證爲 MIT。

核心能力

  • 註冊 subagent_model 工具。
  • 每次調用可選傳 provider、model、max_tokens,用於指定子代理模型路由。
  • 可選傳 fresh_context,控制乾淨上下文,或按調用時刻最新完成輪次 fork 當前對話。
  • 支持 run_in_background,並區分 continuable 與 one-shot 後臺策略。
  • 路由優先級爲調用參數 > 插件 config 的 agentOptions > 父會話路由。
  • 未知 provider / model 會在啓動子代理前快速失敗。

環境要求

先做以下檢查:

  1. DeepSeek Harness 版本 >= 0.1.0-rc.6;已驗證至 0.1.1-rc.2(Windows)。
  2. Host 組合已加載 subagents 服務。
  3. fresh 模式需要 spawn 類 provider;默認繼承模式需要 fork 類 provider。

配置中的 provider 用於 fresh 模式,必須是 spawn 類 provider;配成 fork 會在掛載時報錯。繼承通道使用 inheritProvider。

安裝與啓用

已覈實資料給出的組合包安裝命令如下,它會把插件加到 web profile:

dsh plugin --profile web add github:Momojie-S/dsh-subagent-model

也可以用源碼直連開發機形態:

git clone https://github.com/Momojie-S/dsh-subagent-model.git
cd dsh-subagent-model
npm install

源碼形態下,在 cordis.patch.yml 中配置插件入口。配置項至少需要明確 provider 和後臺策略,示例如下:

- insert:
  - id: subagent-model
    name: 'file:///D:/code/workspace/deepseek-harness-101/plugins/dsh-subagent-model/lib/index.js'
    config:
      provider: spawn
      backgroundMode: continuable
      # inheritProvider: fork
      # defaultContext: fresh

重啓 DSH 後,subagent_model 工具註冊生效。

調用參數

常用參數如下:

  • description / prompt / run_in_background:同內置 subagent;run_in_background 的默認行爲隨上下文模式與 backgroundMode 不同。
  • fresh_context:省略時爲乾淨上下文;傳 false 時基於當前對話續寫,種子爲調用那一刻父會話最新完成輪次;顯式傳 true 時強制乾淨上下文。
  • provider:provider 路由 id。省略時繼承父會話;此時 model 必須是該繼承路由下的模型。
  • model:模型 id,由有效路由解釋;跨路由的模型需要同時傳 provider。
  • max_tokens:子代理每次模型請求的輸出 token 上限,需爲正整數。

後臺默認

backgroundMode: continuable 掛載時:

  • fresh 模式默認後臺 continuable,返回可持續會話的子代理 id,可以用 send_message 續聊。
  • 繼承模式默認前臺等待,直接拿結果;傳 run_in_background: true 可得到可持續分叉會話。

backgroundMode: one-shot 掛載時:

  • 兩種模式都默認前臺。
  • 傳 run_in_background: true 時走後臺 job,並用 job_output 收取結果。

版本默認值

版本間默認值有變更:

  • 0.1.x:省略參數表示乾淨上下文。
  • 0.2.0:改爲默認繼承。
  • 0.3.0:改回默認乾淨。

如果需要繼承當前對話,可傳 fresh_context: false,或在部署配置中設置 defaultContext: inherit。

典型驗證

經過上面的步驟後,可以做一組對照委派:

  1. 先在本對話約定一個暗號。
  2. 用 subagent_model 不傳 fresh_context,委派一次“本對話前面的暗號是什麼”。
  3. 再傳 fresh_context: false,委派一次同樣的問題。

默認乾淨上下文的子代理不應知道暗號;fresh_context: false 的子代理應能答出暗號。換一輪新對話內容後再 fork,子代理能看到新增內容,說明種子取的是調用時刻最新狀態。

適用場景與注意

適合需要按次選擇子代理路由,或需要臨時繼承當前對話上下文的 DSH 開發場景。它把路由和上下文控制放在調用參數裏,便於在一次委派中指定不同模型或不同上下文來源。

插件以當前 DSH 進程權限運行。安裝前應檢查源碼、配置項與許可證。本文已覈實許可證爲 MIT。

結尾

dsh-subagent-model 的價值在於把子代理的模型路由和上下文繼承變成調用參數,適合需要細粒度委派控制的 DSH 工作流。

GitHub:https://github.com/Momojie-S/dsh-subagent-model

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

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

小夜