
DSH Token Usage
☆ 0更清晰美观的会话 Token 用量条:上下文占用、输入/输出/缓存分解、吞吐与首字延迟,取代默认的纯文本 stats 行
Get this plugin
Review the source, then continue to the publisher.
dsh plugin add dsh-token-usage@latestAbout this plugin
Source snapshot 8/13/2026dsh-token-usage
将 DeepSeek Harness 会话界面底部的 Token 用量信息,以更美观、更清晰的方式展示的 Web UI 插件。
它做什么
默认的 Web 界面在输入框下方只有一行挤在一起的纯文本统计。本插件用视觉化的 用量条 取代它(conversation.composer.dock 插槽中 id 为 stats 的条目,以 priority: -1 遮蔽),展示:
- 上下文占用:当前上下文已用 / 窗口容量 + 细进度条,按占用率变色(<50% 绿 / <80% 黄 / ≥80% 红)
- Token 用量:输入(含缓存读取/写入/未命中三段分解)、输出、缓存命中率
- 速度:解码吞吐(tok/s)与平均首字延迟(TTFT)
- 点击用量条展开 明细面板:上下文占用与构成(系统提示/工具/对话)、输入构成堆叠条、会话轮次/步数与模型/工具耗时
数据全部来自官方持久投影(tokenUsage、contextPressure、contextBreakdown、sessionStats),窗口折叠仅在投影缺失时兜底;样式只使用 --dsw-* 主题变量,自动适配明暗主题。无任何数据时整行自动隐藏。
安装
# 本地目录
npx -p @deepseek-ai/dsh dsh plugin --profile web add <本仓库路径>
# GitHub 仓库(仓库需包含构建产物 lib/,见下文“构建与分发”)
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:<owner>/dsh-token-usage
安装后重启目标 profile:
dsh web
卸载后重启即可恢复默认 stats 行。
验证
dsh --profile web --dump-config # 应出现 `# == dsh-token-usage` 层及其 insert 行
浏览器中打开会话,输入框下方的胶囊用量条即为本插件;点击展开明细面板,Escape 或点击面板外关闭。
构建与分发
pnpm install
pnpm typecheck # tsc -b
pnpm build # tsc -b + tsdown(产出 lib/index.js 与 lib/client.js 双半)
pnpm test # vitest:纯函数折叠、locale 配对、jsdom 渲染、slot 注册/销毁/重载
tsdown.config.ts 使用从官方 packages/client/tsdown.client.ts 裁剪的构建助手:client bundle 以 window.__ModuleLoader__.load({ id, factory }) 形式产出,CSS Modules 经 lightningcss 哈希并注入 <style data-plugin="dsh-token-usage">,且带 client bundle 纯度门(跨插件值导入会在构建期报错)。
Git 分发:本仓库采用官方备选路径——把 lib/(含 lib/client.js 与类型声明)提交进 Git,用户安装时不执行任何脚本。改动源码后需重新 pnpm build 并提交产物。
技术要点
- 运行面:纯 client UI 插件;host 半只是空
apply(),使插件出现在 host Loader 与dsh.client名册中。 - 插槽:
conversation.composer.dock(ui-conversation 声明),通过ctx.slots.inject等待声明后注册;同一 cell(id: 'stats')以更低 priority 遮蔽官方文本行,fiber dispose 时注册随之撤销。 - Locale:自有
tokenUsage命名空间,zh/en 双语字典经ctx.locale.register注册,键集合以 zh 为源、编译期校验 en 完整。 - 投影:
tokenUsage/contextPressure/contextBreakdown(token-meter)与sessionStats(session-stats)通过SessionProjectionMap类型合并;useProjection是框架标准 kit 的第五个 hook 位。