前言¶
DeepSeek Harness(DSH)的插件生态允许开发者在不修改核心代码的情况下扩展功能。在开发涉及子代理(Subagent)的复杂工作流时,开发者通常在配置界面设定模型,但实际运行中,路由重试、故障转移或中间代理逻辑可能会改变最终调用的模型。这种差异导致在原生的工具调用行中缺少对实际运行状态的直观反馈。
dsh-subagent-model-visibility 是一个小型的 DSH 插件,它的作用是直接在现有的原生子代理工具调用行中,显示子代理实际使用的提供者和模型,帮助开发者观察真实的路由情况。
插件简介¶
- 插件名:
dsh-subagent-model-visibility - 维护者:AGSQ11
- 类别:模型推理
- 许可证:MIT
- 核心价值:不猜测配置的模型,而是通过观察子会话的
llm/stream路由,在 UI 中展示实际接收请求的模型。
安装与启用¶
安装前,请确保插件文件已解压到本地目录。执行以下命令进行安装和启动:
dsh plugin --profile web add .\dsh-subagent-model-visibility
dsh web
使用方式¶
安装后,插件会自动增强原生子代理的下拉菜单和工具调用行。
- 在原生子代理下拉菜单中:
在 DSH 自身标题/摘要的下方,每个可见的子代理行会显示一行新的信息,标明该子会话当前正在服务的实际模型。例如:
Implement ATR position sizing & risk limits
…existing DSH summary…
Slave: claude-opus-5
- 在原生子代理工具调用行中:
插件会直接在现有的工具调用行中添加模型信息。例如:
Tool call · subagent · Implement ATR position sizing & risk limits
MODEL brainz / claude-opus-4.7 · 2 model requests · subagent: spawn
OUT
started subagent 616c26ce-...
- 查看路由历史:
如果子代理在恢复过程中更改了路由,行内显示会更新。将鼠标悬停在模型行上,可以查看路由历史和请求计数。
工作原理¶
插件通过以下几个步骤实现数据的采集与展示:
- 使用 Node
AsyncLocalStorage包装tools/execute,确保能安全地将原生的 DSH 工具调用与它创建的subagent/start事件关联起来,即使存在并发调用。 - 在
subagent/start阶段,记录子会话 ID 和 DSH 子代理传输方式(如 spawn、fork、ACP 等)。 - 监听
llm/stream,根据sessionId观察子代理的实际请求,并记录最终派发给 LLM 运行时的提供者和模型。 - 在
subagent/end阶段记录终端状态。 - Web 客户端利用 DSH 稳定的
[data-chat-call-id]行身份,在现有行内注入紧凑的模型信息行,并在路由变化时实时更新。
配置说明¶
插件提供基础的配置项来控制数据的保留和 UI 刷新:
- id: subagent-model-visibility
name: dsh-subagent-model-visibility
config:
retentionMs: 86400000
maxEntries: 1000
uiRefreshMs: 1000
retentionMs:已完成的观察数据保留给 UI 使用的时间长度。maxEntries:观察到的子代理会话的内存上限。uiRefreshMs:浏览器刷新模型/故障转移变化的频率。
注意事项¶
- 不猜测,只观察:插件不基于配置猜测模型,而是直接观察子会话的
llm/stream路由。 - 不修改行为:插件不会修改提示词、模型路由逻辑、工具参数、工具结果或子代理的生命周期。
- 初始状态:新启动的后台子代理在首次模型请求开始前,会短暂显示 “Resolving actual model…”。
- 远程传输限制:未通过父级 DSH
ctx.llm发起模型请求的远程子代理传输,将保持 “Resolving actual model…” 状态,因为无法获取权威的底层模型信息。 - 历史行重建:在此插件启动前创建的历史行无法可靠重建,因此这些行保持原样。
- 隐私安全:浏览器 API 仅包含工具/子代理 ID、传输名称、提供者/模型路由名称、时间戳、请求计数和终端状态。提示词、模型输出、凭据、标头、文件系统路径和工具参数均不包含在内。
结语¶
dsh-subagent-model-visibility 专注于提供对子代理实际模型调用的可视化能力。它通过非侵入式的方式,帮助开发者确认模型路由的实际走向,而不干扰核心业务逻辑。