dsh-subagent-model-switch:为子代理会话补上头部模型切换

前言

在 DeepSeek Harness(DSH)里用队友或子代理并行干活时,模型往往只能在子代理启动那一刻定下来。DSH 原生的头部模型切换器对 origin === "subagent" 的会话是硬禁用的:子代理会话拿不到模型目录,按下也没有反应。想换模型只能重开子代理,上下文和进行中的 turn 都会被打断。

社区插件 dsh-subagent-model-switch(维护者 YuMo-233)针对这一格空白:在子代理会话头部渲染与原生同款的下拉菜单,选完后当场生效——不重开会话、不丢上文,切换在下一 turn 的请求上生效,并且跨重启记住选择。

这是什么

dsh-subagent-model-switch 是 DSH 社区目录中分类为「模型推理」的插件,仓库地址为 YuMo-233/dsh-subagent-model-switch,当前 package 版本为 0.1.0,许可证 MIT。

一句话定位:给 DSH 的队友 / 子代理会话装一个只长在它们头上的模型切换器;主会话仍使用 DSH 原生切换器,本插件不介入。

生效范围

会话 头部模型切换器
主会话(你亲手开的) 原生切换器(本插件不介入)
队友 / subagent / subagent_fork 等子代理会话 本插件的切换器

核心功能

三级菜单

点会话头部按钮,依次可选:

  1. 模型 —— 按 provider 分组的全部可用模型(免费模型会带 · x0.00 之类的价格标记);
  2. 推理强度 —— 该 provider 支持的 reasoning effort,含「提供商默认」;
  3. 继承父会话 —— 清除覆写,回到继承父会话的模型。

切换在下一次模型请求时生效:已经发出去的请求不打断,当前 turn 之后的调用即用新模型。

持久化

选择写入 DSH_HOME/storages/dsh-subagent-model-switch/overrides.json,DSH 重启后自动恢复。覆写按会话 id 记账,会话结束后条目不会自动清理;要彻底清干净可删掉该文件,或在头部选「继承父会话」。

能力边界(README 明确说明)

  • 只覆盖 provider / model / reasoningEffort;上下文、工具、权限都不动。
  • 只对子代理会话显示 UI。
  • 不改会话日志(避免自定义事件类型导致日志读取失败),也不依赖原生 model selection。

工作原理(简述)

插件监听 agent/created,仅对 header.origin === "subagent" 的 agent 挂两个钩子,并用 prepend 注册,使覆写在 waterfall 回程的最后一步生效:

  1. agent/request —— waterfall 跑完后改写 provider / model,并清掉从父会话继承来的 reasoningEffort(除非本次选择显式指定);
  2. system-prompt/assemble —— 同步改写系统提示词里的 provider / model 变量,与真实请求一致。

安装与启用

插件以当前 DSH 进程权限运行;安装前建议在 GitHub 上浏览源码与 MIT 许可证,确认符合你的环境策略。

方式一:DSH 官方插件管理器(推荐)

在 DSH Desktop 的「插件」面板里填写下列其一,装完重启 DSH 即可:

github:YuMo-233/dsh-subagent-model-switch

或直接填仓库地址:

https://github.com/YuMo-233/dsh-subagent-model-switch

适合改插件代码并即时验证。README 要求 Node >= 22.5.0。步骤概要:clone 仓库后,用 junction(Windows)或等价方式链入 %DSH_HOME%\profiles\desktop\node_modules,在 profile 的 package.json 登记 link: 依赖与 dsh.profile.bundles,在 cordis.patch.yml 注册插件 id,再重启 DSH Desktop。完整命令与路径见 仓库 README。

典型用法

  1. 通过 DSH 正常拉起队友或子代理会话(subagent / subagent_fork 等)。
  2. 在该子代理会话头部打开模型切换下拉,选 provider、模型,必要时再选推理强度。
  3. 继续对话;从下一 turn 起,新模型用于后续请求,无需重开子代理。
  4. 若想恢复父会话继承的模型,在菜单中选 继承父会话。

其他插件或脚本如需读写覆写,可调用宿主注册的 subagentModelSwitch 服务(typert RPC):getModel(sessionId)、setModel(sessionId, provider, model, reasoningEffort?)、unsetModel(sessionId)。首参须叫 sessionId 而非 session,以免网关参数劫持与会话查找冲突。错误码包括 subagentModelSwitch/invalid-request、/session-not-found、/not-subagent、/invalid-model。

适用场景与注意

适合谁: 经常在 DSH 里开多个子代理/队友、又需要在同一会话内按任务切换模型或 reasoning effort 的开发者;主会话请继续用 DSH 自带切换器。

生态说明: DSH 理念是「一切皆插件」;SkillHub 插件目录 是社区站点,与 DeepSeek / 幻方无官方从属关系,不要当作官方应用商店。

依赖: 插件依赖 @deepseek-ai/cordis、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-typert-protocol 等,由 DSH profile 解析安装。

链接

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

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

小夜