dsh-status-telemetry:Composer 会话遥测 pill 与展开面板

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye