dsh-plugin-subagent-model-route:在子智能体目录与会话头显示实际模型路由

前言

在 DeepSeek Harness(DSH)里用子智能体(subagent)做委派时,父会话的目录列表和子会话界面是两条最常查看的路径。默认 UI 会显示名称、标题、运行状态等,但不会把「这次委派实际走了哪条模型路由」写在你一眼能看到的位置。排查「为什么这个子任务用了另一个 provider / 推理档位」时,往往要额外翻日志或推断,成本偏高。

社区插件 dsh-plugin-subagent-model-route(维护者 huhu23333,分类:客户端)做的是一件事:从已有 durable 投影里读出子智能体最后一次请求的模型路由,并在上述两个界面原位标注出来。它不新增 RPC、不改 host 投影,而是通过占用(shadow)官方 UI 的两个 slot 来渲染 badge。下面介绍它改动了哪里、如何安装,以及安装前需要接受的取舍。

这是什么

dsh-plugin-subagent-model-route 是 DSH 的 client 插件(npm 包名同目录名)。简介(与仓库 README 一致):在父会话 catalog 每一行和子会话 header 两处,标注该 subagent 实际运行时所使用的 model route。

  • 维护者:huhu23333(GitHub:huhu23333/dsh-plugin-subagent-model-route)
  • 当前版本(package.json):0.1.2
  • 许可证:MIT
  • 兼容声明:dshReleases 中 0.2.1-alpha.1 标记为 compatible;Node >= 20

路由文案格式为 provider/model · reasoningEffort(例如 openai/gpt-5.6-sol · medium、deepseek-official/deepseek-flash · high),与委派执行时一致;过长时在 badge 行换行而不是截断,tooltip 与无障碍名称也会重复该路由。

核心功能

插件只改两个 UI 表面,其余保持官方 shipped 行为。

表面 改动前 改动后
父 catalog 每一行 名称 + 一行 title · one-shot · running 三行:名称 / one-shot running + 路由 badge / 标题
子会话 header 仅 lineage 面包屑切换器 面包屑旁显示完整路由

路由数据来源:每次 request/header 已记录的 durable modelSelection 投影,通过与子行已有的 token、耗时相同的 summary.projectionValues 读取——无新 RPC、无 host 变更、无新 slot 定义。

行为细节(README 已说明):

  1. 子会话从未发过请求的行:不显示 badge(表示「从未请求」,不是「未知」)。
  2. 子会话生命周期内若切换模型:badge 只反映最后一次请求的路由。
  3. 与 subagent-director 等同屏使用时,子会话 composer 下方与 header 可能各显示一次路由,需自行只保留其一。

实现上,官方 @deepseek-ai/dsh-client-ui-subagent 对 conversation.session.header.lineage(single)和 catalog 行没有可扩展的 additive API,插件因此在 priority: -1 注册同一 seat,shadow 默认 0 的 shipped 组件(SubagentHeaderLineage、SubagentCatalogAction,后者以相同 id subagent-catalog 再注册)。

安装与启用

插件以 profile bundle 挂载;dsh.client 为 composition 级配置,修改后必须重启 host,不能热加载。

官方支持的安装方式(会同时写入 dependencies 与 dsh.profile.bundles):

dsh plugin --profile web add dsh-plugin-subagent-model-route     # from npm
dsh plugin --profile web add ./dsh-plugin-subagent-model-route   # from a checkout

也可手动在 profile 的 package.json 中 link 本地路径并加入 bundles(需放在 @deepseek-ai/dsh-base、@deepseek-ai/dsh-web-app 之后),例如:

// ~/.dsh/profiles/web/package.json
"dependencies": {
  "dsh-plugin-subagent-model-route": "link:/path/to/dsh-plugin-subagent-model-route"
},
"dsh": { "profile": { "bundles": [
  // ...after @deepseek-ai/dsh-base and @deepseek-ai/dsh-web-app
  "dsh-plugin-subagent-model-route"
] } }

完成后 重启 DSH host。

卸载:从 profile 的 bundles 移除该包并重启即可;不持久化任何 host 侧状态,界面恢复官方默认。

典型用法

本插件无独立 CLI 或配置项:安装并重启后,打开带子智能体 catalog 的父会话即可看到行内 badge;点进某一子会话,header lineage 旁会出现同一路由。

可复现的验证路径(与仓库开发脚本一致,供维护者或二次开发者使用):

npm run check      # typecheck -> build -> headless smoke(16 checks)
npm run preview    # 生成 preview.html,在浏览器中查看两处 seat 的渲染

普通使用者只需完成 profile 安装与 host 重启,无需额外配置。

适用场景与注意

适合谁

  • 频繁委派 subagent、需要在目录里快速对比「各子任务实际用的模型与 reasoningEffort」的开发者。
  • 打开子会话时要确认 lineage 与当前路由是否一致、便于和父会话决策对照的场景。

安装前务必知晓的代价(插件刻意 shadow shipped UI)

  1. Catalog 行高由约 44px 增至 59px(路由换行时可达约 74px),下拉在 min(560px, 100vh - 140px) cap 下可见行数减少(约 12 行降至约 9 行)。
  2. Catalog 契约标记 replaceRisk: 'shadows-shipped-ui';上游若改进同一区域(含官方自行加 model 列),不会自动合并,需按仓库 PATCH-RECORD.md 重新 vendor 并应用修改。当前 vendored 渲染器 pin 在 deepseek-ai/deepseek-harness master @ 5badb15009。
  3. 该区域 shipped UI 的 bug 也会落在 fork 副本上;样式表会以第二份 CSS module 注入(hash 不同,一般不冲突)。
  4. Shipped 占用者仍注册但渲染为空,有少量 inert 成本。
  5. 只读 composer、Sidebar chat、@ 引用源等保持官方,不变。

权限与安全

插件随当前 DSH client profile 加载,在浏览器 / host 进程内与官方 UI 同级运行。安装前应阅读仓库源码与 MIT 许可证,确认 bundle 来源可信;社区目录(SkillHub 等)为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-plugin-subagent-model-route 把子智能体「最后一次请求的真实 model route」写进父 catalog 行与子会话 header,改动的面很窄,但对排查委派与模型选择足够直观。若你同时安装 subagent-director,注意同一视图可能重复显示路由。

  • 社区目录页:https://www.skillhub.cn/plugins/huhu23333/dsh-plugin-subagent-model-route
  • 源码与说明:https://github.com/huhu23333/dsh-plugin-subagent-model-route
羽毛球分组比赛记分
小程序二维码

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

Xiaoye