前言¶
在 DSH 里跑长对话时,turn、step、token 和上下文占用往往分散在日志或内置统计里,Composer 旁缺少一条可扫一眼、又能展开细看的会话状态。内置 stats 入口仍在,但若要 uncached/cached、decode 速度、上下文组成条等读数同屏呈现,通常要自己在客户端拼投影或改 profile。
下面介绍社区客户端插件 dsh-status-telemetry(维护者 ags-neto):向 conversation.composer.dock 槽位贡献独立的 session status pill,与内置 chat stats 并列;点击后在原位展开为 token、性能与上下文面板。数据全部来自宿主已计算的 projection,不做客户端日志折叠、不轮询、不发起模型调用。
这是什么¶
dsh-status-telemetry 是 DSH 客户端插件 bundle(platform: web),在 Composer 停靠区增加一条会话遥测入口。它不替换内置 stats(禁用本 bundle 后 UI 与原先一致)。包名 @local/dsh-status-telemetry,版本 1.0.0,许可证 MIT(见仓库 package.json)。
界面与读数¶
收起态¶
单行展示,沿用宿主 typography 与配色,例如:
◔ ● 12 turns · 41 steps · 634k tok · 84% cached · 150 tok/s
圆点 glyph 表示由 decode 速度推导的实时健康度(ok / warn / bad)。
展开态¶
四个区块:
| 区块 | 内容 |
|---|---|
| Conversation | turns、steps、吞吐、output tokens |
| Token usage | 总量、billed input、uncached/cached input、cache write、cache-hit 占比 |
| Performance | LLM 时间、tool 时间、平均首 token、decode 速度、tool 占比 |
| Context | 窗口占用率、窗口大小、projected/reported prompt,以及 system / tools / messages 组成条 |
当前 profile 缺少某项 capability 时,面板会说明缺失,而不是显示误导性的 0。
数据来源¶
读数经 slot 框架的标准 session kit(useProjection)与 locale 服务注入;bundle 在浏览器侧仅从模块表 import react。
| Projection | 所属包 | 用途 |
|---|---|---|
sessionStats |
@deepseek-ai/dsh-session-stats |
turns、steps、LLM/tool/TTFT/decode 墙钟时间 |
tokenUsage |
@deepseek-ai/dsh-token-meter |
uncached/cached/cache-write input、output |
contextPressure |
@deepseek-ai/dsh-token-meter |
占用率、窗口、projected/reported prompt |
contextBreakdown |
@deepseek-ai/dsh-token-meter |
system / tools / messages 组成 |
安装与启用¶
插件安装目标是 DSH profile,不是 /opt/dsh。README 给出的安装方式是在该主机上执行根目录脚本(需 root,因 / 只读时需 remount):
sudo /srv/workspaces/infra/status-telemetry/install.sh
脚本会:临时 remount / 可写;将包复制到 $DSH_PROFILE_DIR/node_modules/@local/dsh-status-telemetry;向 dsh.profile.bundles 追加 bundle;恢复属主;再 remount 只读。支持 --uninstall,按字节还原 profile 的 package.json。
注意: 仅编辑 bundle 列表。profile 会组合各 bundle 的 dsh.bundle.patch;本包的 cordis.patch.yml 已提供 status-telemetry Loader 行,若在 profile 的 patch 里重复添加同一行会导致同一 id/priority 二次注册并抛错。
安装后 硬刷新 页面。profile watcher 会 live 重组;dsh-client-hmr 对 client.js 的编辑约 500 ms 内重载。若槽位未出现,可重启服务(会轮换 web token,401 时需重新拉取):
sudo systemctl restart dsh.service
卸载示例:
sudo /srv/workspaces/infra/status-telemetry/install.sh --uninstall
典型用法与自测¶
日常用法:在 Composer 停靠区找到新增的 status pill,点击展开查看四类遥测;内置 stats 入口仍可单独使用。
仓库内离线测试(README 示例路径):
cd /srv/workspaces/infra/status-telemetry
node --test test/client.test.mjs
Node 侧无 React 时用 React double 测 formatters 与注册契约;套件不覆盖实机 GUI 视觉效果。
适用场景与注意¶
- 适合:需要在 Composer 旁快速查看会话健康度、token 分项、性能与上下文压力,且希望与内置 stats 并存、可一键禁用的 DSH 用户。
- 分类:客户端(SkillHub 目录归类为客户端插件)。
- 权限与安全:安装脚本以 root 修改 profile 与 remount;插件逻辑在浏览器 bundle 中运行,数据来自宿主 projection。安装前请自行审阅 GitHub 源码 与 MIT 许可证;路径
/srv/workspaces/infra/status-telemetry来自上游 README,其他环境需对照仓库中的install.sh与 profile 布局调整,勿臆造dsh plugin add github:...类命令(资料未提供)。
设计要点(便于排查):新 id 注册、不 shadow stats;样式随组件挂载为 <style>,主题仅用 --dsw-* token;不 import Harness 包,仅依赖 react。
结尾¶
dsh-status-telemetry 把 session 遥测收成 Composer 旁一条可展开的 pill,读数对齐 @deepseek-ai/dsh-session-stats 与 @deepseek-ai/dsh-token-meter 的 projection,改动可逆。目录与仓库:
- SkillHub 插件页:https://www.skillhub.cn/plugins/ags-neto/dsh-status-telemetry
- GitHub:https://github.com/ags-neto/dsh-status-telemetry