前言¶
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會在啓動子代理前快速失敗。
環境要求¶
先做以下檢查:
- DeepSeek Harness 版本
>= 0.1.0-rc.6;已驗證至0.1.1-rc.2(Windows)。 - Host 組合已加載
subagents服務。 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。
典型驗證¶
經過上面的步驟後,可以做一組對照委派:
- 先在本對話約定一個暗號。
- 用
subagent_model不傳fresh_context,委派一次“本對話前面的暗號是什麼”。 - 再傳
fresh_context: false,委派一次同樣的問題。
默認乾淨上下文的子代理不應知道暗號;fresh_context: false 的子代理應能答出暗號。換一輪新對話內容後再 fork,子代理能看到新增內容,說明種子取的是調用時刻最新狀態。
適用場景與注意¶
適合需要按次選擇子代理路由,或需要臨時繼承當前對話上下文的 DSH 開發場景。它把路由和上下文控制放在調用參數裏,便於在一次委派中指定不同模型或不同上下文來源。
插件以當前 DSH 進程權限運行。安裝前應檢查源碼、配置項與許可證。本文已覈實許可證爲 MIT。
結尾¶
dsh-subagent-model 的價值在於把子代理的模型路由和上下文繼承變成調用參數,適合需要細粒度委派控制的 DSH 工作流。
GitHub:https://github.com/Momojie-S/dsh-subagent-model