前言¶
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