前言¶
在 DeepSeek Harness(DSH)里用子代理拆任务时,主会话侧栏能看到子代理入口,但运行中的子代理数量、状态、token 用量往往要切进各子会话才能确认。主会话派生出多个并行子代理时,缺少一块集中、实时、可逐层下钻的监视界面。
下面介绍社区插件 dsh-subagent-monitor(维护者 Mombrane,MIT 许可)。它在 DSH Web 侧栏底部增加「子代理」入口,并在屏幕右上角常驻一块可拖动的卡片面板,展示当前会话直接派生的子代理运行状态;进入子代理会话后,面板随之显示该层直接派生的下一层子代理。
这是什么¶
dsh-subagent-monitor 是面向 DSH Web 的客户端扩展插件,npm 包名为 @leetoners/dsh-ui-subagent-monitor,当前版本 0.3.0,要求 DSH 0.1.x 平台。仓库同时提供 dsh.client 插件与 dsh.bundle 组合 bundle(含 cordis.patch.yml 与预构建 lib/)。
插件通过轮询 /api/subagent-monitor/snapshot 获取快照;该路由面向回环地址、无鉴权,仅建议本地或内网使用。
核心功能¶
实时状态与卡片列表¶
每个子代理对应一张圆角卡片,展示名称、spawn 方式、短 ID、状态与耗时。「打开对话」在卡片右侧,可跳转到对应子会话。
支持的状态包括:
| 状态 | 含义 |
|---|---|
| 运行中 | 蓝色像素追逐动画(与 DSH 侧栏进行态同款)+ 实时秒表 |
| 完成 | 面板实时观测到成功结束,绿点 + 光晕,显示耗时 |
| 已结束 | 服务重启前的历史回填,结局未观测 |
| 失败 | 错误结束,红点 + 光晕 |
| 已打断 / 令牌上限 / 已拒绝 | 被中止、达到 token 上限或请求被拒绝,琥珀点 + 光晕 |
总体监控看板¶
面板顶部为汇总条:左侧三枚环形图分别展示主会话上下文窗口当前占用、主会话与子代理聚合的缓存命中率;右侧一根状态柱状图展示当前层子代理的运行 / 完成 / 异常计数(按最大值等比缩放)。每张卡片下方另附一行用量明细:该 run 的输入 / 输出 token、缓存命中、上下文大小。
主会话「上下文」环显示当前窗口占用(projectedTokens:最新 prompt 样本 + 表层启发式增减),随内容新增而上升,压缩后立即回落,而非随会话只增不减的累计量。用量数据来自各子代理会话日志中 provider 上报的 TokenUsage(assistant/message 事件);适配器未上报时显示「—」。
逐层查看与导航¶
面板只显示当前会话直接派生的子代理,不跨层平铺。进入某个子代理会话后,可继续查看其直接派生的下一层;面板出现「← 上一层」按钮,可跳回直接父会话。
面板交互¶
- 标题左侧四角箭头拖动柄:移动面板位置,跨会话保留,双击复位。
- 底部拖动柄:调整面板高度,按会话分别记忆,双击复位。
- 两段式收起:第一次「收起」只隐藏下方子代理卡片,顶部总览看板保留,按钮变为「全部收起」;再点一次收起到只剩标题栏;「展开」一步恢复完整面板。
- 底部提供「清空已完成」;每个直接父会话最多保留 200 条记录,超出时淘汰最旧的已结束行。
- 页面刷新或服务重启后面板自动恢复(常驻组合)。
- 视口宽度 ≤768px 时默认不弹出面板,侧栏按钮仍可手动打开。
安装与启用¶
推荐通过 npm 一行安装(已发布 v0.3.0,GitHub Actions 构建并签名,SLSA provenance 可验):
dsh plugin --profile <your-profile> add @leetoners/dsh-ui-subagent-monitor
也可从 GitHub 直装:
dsh plugin --profile <your-profile> add github:Mombrane/dsh-subagent-monitor
首次从 GitHub 安装若提示允许构建脚本,按提示在 profile 的 pnpm-workspace.yaml 中确认即可。
安装完成后重启 dsh web 生效。侧栏底部出现「子代理」入口,点击即可打开右上角监视面板。
典型用法¶
1、在主会话中派生子代理(如 spawn 或 one-shot),保持当前页面不切换。右上角面板会列出当前会话直接派生的子代理,运行中项显示秒表与 token 明细。
2、点击某张卡片的「打开对话」进入子代理会话。面板切换为该子会话直接派生的下一层子代理;需要返回时点击「← 上一层」。
3、并行派生多个子代理时,通过顶部状态柱状图与底部「运行 · 完成 · 异常」计数快速掌握整体进度;任务结束后用「清空已完成」整理列表。
4、关注上下文与缓存时,查看顶部三枚环形图:主会话当前窗口占用、缓存命中率,以及各卡片的输入 / 输出与上下文利用率。
适用场景与注意¶
适合谁: 经常在 DSH Web 中用子代理并行探索代码库、拆分子任务,且需要在主界面一眼掌握各子代理状态与 token 用量的开发者。
使用前注意:
- 插件以当前
dsh进程权限运行,安装前应检查源码与 MIT 许可证。 - 监视路由
/api/subagent-monitor/snapshot无鉴权,勿暴露到公网。 - 用量与缓存数据依赖 provider 适配器上报,未适配时相关字段显示「—」。
- 「完成」(实时观测成功)与「已结束」(重启前历史、结局未知)含义不同,见上文状态表。
如需二次开发,可将仓库 src/ 内联到 DSH 源码树,详见 GitHub README 中的方式 C;设计决策与数据流见仓库内 ARCHITECTURE.md。
链接¶
- SkillHub 目录页:https://www.skillhub.cn/plugins/Mombrane/dsh-subagent-monitor
- GitHub 仓库:https://github.com/Mombrane/dsh-subagent-monitor(约 18 stars,已收录 awesome-dsh-plugin)
dsh-subagent-monitor 把子代理运行态从「逐个点进会话查看」收敛到一块可拖动、可逐层下钻的实时面板,适合作为 DSH Web 多子代理工作流的日常监视工具。