子智能体模型切换:为 DSH 子代理补上可改的路由

前言

在 DeepSeek Harness(DSH)里,子智能体、团队队友和嵌套后代在创建时会把模型路由写进各自会话;之后主会话怎么换模型,通常影响不到已经跑起来的子代理。更麻烦的是:子代理若因渠道下线、额度耗尽或鉴权失效等模型侧错误停住,往往不会产生完成通知,父会话收不到唤醒,整轮对话会卡死;而 QUOTA、ACCOUNT_QUOTA 一类额度错误又不在官方自动重试集合里。官方有意关闭了子代理会话里的模型控件,/model 也不可用。下面介绍的插件 dsh-subagent-model-sync 就是在请求发出前改写子代理路由,并可选地让主会话一键同步全部子代理——核心用途之一,是把因模型失败而卡死的子代理救回来。

这是什么

dsh-subagent-model-sync 是社区维护的 DSH 插件(维护者 123123liang),npm 包名与仓库名一致,当前 README 标注版本为 v0.0.2,许可证 MIT。分类上属于模型推理:给子智能体、团队队友及其后代提供可手动切换的模型与思考强度入口,并支持主会话侧「同步子代理」开关。插件不修改 DSH 官方代码,路由改写依赖 agent/request 等内部钩子;卸载后从 profile 移除并重启即可,偏好可选删。

为什么需要它

子代理正常结束时,DSH 会通知并唤醒父会话。若失败发生在模型侧且属于终态,子代理不会走完完成链路,父会话会一直等待。此时可行操作往往是换一个还能用的模型——但子代理界面没有官方模型选择器。本插件的表述是:换掉子代理的模型,等于把唤醒链路接回去。

核心功能

手动切换(主要能力)

在任意子代理或团队队友会话里,输入框右下角会出现插件控件:

  1. 展示该子代理当前真实生效的路由(提供方 / 模型)及来源标识;
  2. 可按提供方分组浏览、搜索并选择模型,不受子代理白名单限制;
  3. 面板底部有「思考强度」,档位随所选模型从模型目录读取;不支持时置灰并注明;
  4. 选完后不必重开会话,下一次模型请求即使用新路由,上下文保留。

来源标识含义(README 原文):

标识 含义
手动指定 为该子代理单独指定的模型
跟随中 主会话开启同步,正在跟随主会话
无标记 未改动,走官方原生路由

同步子代理(辅助能力)

主会话输入框右下角有开关。打开后,该会话下所有子代理、团队队友及其后代在下一次模型请求时跟随主会话当前模型。

理解行为时注意 README 中的三点:

  1. 勾选本身不改路由,只写入偏好标记;
  2. 切换发生在下一次模型请求;子代理空闲时勾选,需等到再次被唤醒或委派才会生效;正在运行时的当前调用不受影响;
  3. 没有请求就不会改写。

取消勾选后,子代理不会回退到更早的模型,而是停在同步期间最后一次请求所用的路由。同步开启时优先级最高,会压过子代理上的单独指定;同步期间子代理面板会置灰并提示需先关闭同步。

优先级(README 原文):

1(最高)  主会话开启了同步
2          子代理页面手动切换
3          AI 委派时显式指定的路由
4(最低)  官方默认继承

安装与启用

插件要求 Node.js ≥ 22,DSH ≥ 0.2.1-rc.3(engines.dsh 会阻止更低版本安装;更高版本 README 标注为未验证,安装前可看 Releases 说明)。无论哪种安装方式,改完 profile 后需重启 DSH;仅刷新页面拿不到新的前端 bundle。

方式一:克隆后 link(README 推荐)

git clone https://github.com/123123liang/dsh-subagent-model-sync.git

在 profile 的 package.json 中指向克隆目录,并把包加入 bundles:

{
  "dependencies": {
    "dsh-subagent-model-sync": "link:<克隆目录的绝对路径>"
  },
  "dsh": { "profile": { "bundles": ["dsh-subagent-model-sync"] } }
}

README 提醒:本地路径请用包管理器的 link:,不要手工建 Windows 目录联接(junction),否则可能导致浏览器端无法正常进入启动图。

方式二:从 npm 安装

pnpm add dsh-subagent-model-sync

同样将 dsh-subagent-model-sync 写入 dsh.profile.bundles,然后重启 DSH。

插件包含 Host 半与浏览器半:Host 负责改写路由并提供本地接口,浏览器半负责界面;偏好写本机,接口仅服务环回请求。

典型用法

  1. 子代理因额度或渠道错误挂起:打开该子代理会话,在右下角控件中换到仍可用的提供方与模型,必要时调整思考强度;下一次请求应走新路由,便于任务继续并触发父会话唤醒。
  2. 希望整组子代理跟主会话一致:在主会话打开「同步子代理」;对各子代理发消息或再次委派,使其产生下一次模型请求后才会统一路由。
  3. DSH 升级后自检兼容性:仓库提供探针脚本,用真实会话日志验证解析逻辑是否仍与上游一致:
node tools/probe-resolver.mjs <某个会话日志文件>.zstd

开发者可在仓库内运行:

npm test

(或 node --test;README 称自动化测试共 41 条。)

适用场景与注意

适合谁:经常在 DSH 里委派子智能体或团队队友、且遇到过模型侧失败导致对话卡死;或需要在不重建子会话的前提下,为单个后代指定与委派默认值不同的模型与思考强度。

兼容性边界(README「我们可能没做好的地方」):嵌套孙代理逻辑上有支持但未在真实环境完整验证;一次性子代理(one-shot)输入框被官方接管,插件不渲染;父会话未加载时子代理页控件会消失;通过非本机地址访问时控件可见但点击无效(接口仅环回)。换模型后新模型可能不支持图片、长上下文或工具调用,插件只提示不阻止。

与其它插件:若同时使用其它「让子代理跟随父会话」的插件,本插件注册在最外层,会压过对方改写;建议只保留一个。

安全与信任:插件以当前 DSH 进程权限运行,会 hook 模型请求并读写本机偏好;安装前应阅读 GitHub 源码 与 MIT 许可证。README 声明切换错模型产生的费用由使用者自行承担,且代码由 LLM 辅助编写、经作者自述的真实请求与测试验证——关键环境建议小范围试用。

结尾

dsh-subagent-model-sync 把官方未开放的子代理模型入口补在用户侧:手动切换用于救活卡死的子代理并微调思考强度,主会话同步用于在「下一次请求」维度统一后代路由。社区目录页:skillhub.cn/plugins/123123liang/dsh-subagent-model-sync;源码与完整说明:github.com/123123liang/dsh-subagent-model-sync。

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

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

小夜