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 工具。
  • 每次调用可选传 providermodelmax_tokens,用于指定子代理模型路由。
  • 可选传 fresh_context,控制干净上下文,或按调用时刻最新完成轮次 fork 当前对话。
  • 支持 run_in_background,并区分 continuableone-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:同内置 subagentrun_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

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

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

Xiaoye