dsh-token-gauge:DSH Web 界面上的实时 Token 仪表盘

前言

在 DeepSeek Harness(DSH)里跑长会话时,上下文 token 会不断累积,解码速度也会随后端负载波动。Web 客户端虽然会通过 session projection 下发 tokenUsage、sessionStats 等字段,但默认界面并不把这些数字做成「一眼可读」的仪表。若你想在对话过程中随时看到累计用量、tok/s 和估算费用,又不想改会话逻辑或往模型侧注入额外内容,就需要一个只读的前端叠加层插件。

下面介绍社区插件 dsh-token-gauge(npm 包名 @stone100010/dsh-token-gauge),维护者为 stone100010,在 SkillHub 目录中归类为「模型推理」。它在 DSH Web GUI 上挂载三块可拖拽的表盘,数据全部来自客户端已有的 projection,不订阅新事件、不注册工具。

这是什么

dsh-token-gauge 是面向 DeepSeek Harness Web 配置的客户端插件:在应用上方浮动显示 Token 用量、解码吞吐和估算花费,可拖动位置、调整大小,并在浏览器内记住布局。

插件注册到 @deepseek-ai/dsh-client-ui-layout 声明的 shell.overlay 席位(全帧、点击穿透),与内置 overlay 条目并列,不会挡住下层界面操作。实现上不增加 session 事件、工具或模型可见内容,属于纯只读视图,不会改变对话行为。

开发与测试目标版本为 DSH 0.1.5-rc.2;插件依赖 ctx.sessions、ctx.slots 以及四个 projection 键名,若上游重命名这些接口,需要同步更新插件。

核心功能

三块表盘分别表示什么

README 用表格说明了刻度与含义,概括如下:

表盘 刻度 含义
Token Usage(左) 0 – 300M 整段 session log 的累计 token;指针进入琥珀区通常表示「读入上下文远多于输出」,会话可能已超出模型舒适区。
tok/s(中,最大) 0 – 500 解码吞吐:优先用页面观测到的「每秒新增 output token」,空闲时回退到 session 记录的平均值;读数乱跳往往对应后端不稳定。
Total Cost(右) 0 – $12 按参考单价估算的会话花费,相对预算刻度显示。

每块表盘带有绿 / 琥珀 / 红警示区、指针、大号数字,以及下方细项(如 In/Out 拆分、会话均值、预算等)。数值来源为 Web 客户端已有的 tokenUsage、contextPressure、contextBreakdown、sessionStats 等 projection。

面板交互与诊断行

安装并硬刷新后,面板默认出现在右下角。拖标题栏移动,拖右下角缩放,标题栏控件可折叠;位置、尺寸与折叠状态按浏览器持久化。

标题栏中的路由 + session 读数(实现上的 A4 诊断行)会标明解析路径(binding、scope 或 unresolved)、当前读取的 session id 以及 output token 计数。数字对不上时,可先对照这一行确认数据来源。

费用刻度是估算值

费用表盘标注为估算(est.)。README 说明:例如 deepseek-v4.1-flash 若不在 DSH 已安装模型目录中,DSH 不会为其计算 cost projection;插件默认 PRICES 与目录里 deepseek 族参考价对齐。若要以 $12 刻度做预算对照,应在 lib/client.js 顶部常量中填入网关真实的「每百万 token」单价。

可调常量示例(摘自 README):

const SCALE_TOKENS = 300e6;   // left dial maximum
const SCALE_RATE   = 500;     // centre dial maximum
const SCALE_COST   = 12;      // right dial maximum, also the budget
const ZONES = { tokens: [0.5, 0.8], rate: [0.6, 0.84], cost: [0.5, 0.8] }; // amber, red
const PRICES = { uncachedInput: 0.14, cacheRead: 0.0028, cacheWrite: 0.14, output: 0.28 }; // USD / M

修改后需按你的部署方式重新加载 Web 客户端 bundle(通常重启 dsh web 并硬刷新页面)。

环境与要求

  • 需以 web profile 运行 DSH,例如 dsh web 或 npx @deepseek-ai/dsh web。
  • 包 engines 要求 Node >= 22(见 package.json)。
  • 通过 profile 插件管理器安装时,需系统 PATH 上可用 pnpm。

安装与启用

推荐:profile 插件管理器

在已配置好 dsh 与 pnpm 的 shell 中执行:

dsh plugin --profile web add @stone100010/dsh-token-gauge

这是 README 给出的官方安装命令,会对 web profile 做 link 与注册。

pnpm 或 dsh 不在 PATH 时

README 提供仓库内的 setup.sh:自行定位 dsh 并完成与上述等价的 link 与注册。典型步骤为进入克隆后的目录后执行 ./setup.sh install、./setup.sh verify,必要时用 ./restart-and-verify.sh 重启并确认插件已加载。若仅从 npm 安装,tarball 内也包含 setup.sh,但 restart-and-verify.sh 以克隆仓库为准。

无论哪种方式,打开服务端打印的带 token URL 后,硬刷新一次(Ctrl+Shift+R),客户端 bundle 在页面加载时注入。

典型用法

  1. 启动 DSH Web:dsh web 或 npx @deepseek-ai/dsh web。
  2. 按上一节安装 @stone100010/dsh-token-gauge,重启 web 进程(若文档或脚本要求)。
  3. 浏览器打开 Web UI,硬刷新,确认右下角出现表盘面板。
  4. 开始或切换 session,观察左盘累计 token、中盘 tok/s、右盘估算费用;需要排查数据时看标题栏 diagnostic 行的 route 与 session id。
  5. 若使用非目录默认定价的模型或自建网关,编辑 lib/client.js 中 PRICES(及必要时 SCALE_*、ZONES),再重启并刷新。

卸载示例:

dsh plugin --profile web remove @stone100010/dsh-token-gauge

或在克隆目录执行 ./setup.sh uninstall。之后需重启 dsh web。

适用场景与注意

适合谁: 经常在 DSH Web 里调试长上下文、对比不同后端解码稳定性,或需要在本地对照 token 预算的开发者。分类上属于「模型推理」相关的可观测性增强,而非改模型或改 prompt 的工具链。

权限与安全: 插件随当前 DSH 进程与用户 profile 加载,具备与该 Web 会话相同的客户端访问面(读取已有 projection)。安装前应阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的合规要求;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

版本: npm 当前资料中的版本为 0.1.1;GitHub 仓库显示约 1 star。勿假设与尚未在 README 中声明的 DSH 版本完全兼容。

开发侧: 主客户端逻辑在 hand-authored 的 lib/client.js(ModuleLoader bundle,无构建步骤)。仓库内 node test/harness.mjs 提供 61 项检查,覆盖注册、projection 订阅、拖拽与持久化等行为。

结尾

dsh-token-gauge 把 DSH Web 已有的 token 与 session 统计投影成三块可拖拽表盘,只读、不碰会话协议,适合在开发调试时快速感知上下文压力、解码速度与估算成本。目录与源码:

  • SkillHub 目录页:https://www.skillhub.cn/plugins/stone100010/dsh-token-gauge
  • GitHub:https://github.com/stone100010/dsh-token-gauge
羽毛球分组比赛记分
小程序二维码

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

小夜