samecorner/dsh-token-usage ↗★ 1
@samecorner/dsh-client-ui-token-usage
Token usage analytics tab for the dsh web GUI: whole-log projections plus a per-turn/per-step breakdown
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:samecorner/dsh-token-usage说明文档
阅读完整 README ↗dsh-token-usage
DSH(DeepSeek Harness)Web GUI 的 Token 用量分析插件:在会话顶部的 Tab 栏(Chat / Trajectory 之后)新增一个「Token 用量」页,展示整轮对话的 token 明细与上下文占用。发布在 npm:@samecorner/dsh-client-ui-token-usage。
灵感来自 pi-web-token-usage(pi-web 的同类插件),但完全按 DSH 的插件契约实现:
| 能力 | 数据来源 |
|---|---|
| 总 token / 计费 token / 输出 / 缓存读取 KPI(数字滚动动画) | host 端 tokenUsage projection(token-meter 已内置在 dsh web) |
| 上下文占用进度条(≥80% 警告变色) | host 端 contextPressure projection |
| 轮次 / 步数 / 推理 token | host 端 sessionStats projection + 窗口快照 |
| 构成环形图 + 明细表(输入/缓存读/缓存写/输出/推理,占比微条) | 上述 tokenUsage |
| 逐轮堆叠柱状图(hover tooltip)+ 累计计费曲线 | 客户端从会话事件窗口折叠 assistant/message 的 usage(ConversationNode + View target) |
| 按模型拆分 + 复制 Markdown 报告 + 加载更早记录 | 模型路由聚合 / 面板按钮 |
安装
方式 A:npm 一键安装(推荐,免编译、免改配置)
# 在哪里执行都可以,dsh 会自动到对应的 profile 目录里跑 pnpm
# (首次使用会自动初始化 profile)
dsh plugin --profile web add @samecorner/dsh-client-ui-token-usage
# 重启 dsh web,顶部即出现「Token 用量」Tab
该包声明了 dsh.bundle.patch(见 bundle.patch.yml),dsh plugin add 后自动挂载:包会被加进 profile 的 bundle 层,无需手动改 cordis.patch.yml。若之前在 cordis.patch.yml 里手动 insert 过同 id,请删除该条目,避免重复挂载报错。
更新:dsh plugin --profile web update @samecorner/dsh-client-ui-token-usage
卸载:dsh plugin --profile web remove @samecorner/dsh-client-ui-token-usage(依赖与层列表自动一并摘除)
方式 B:源码构建 + 本地开发安装
# 1. 构建(需要 node >= 18;依赖只来自 npm 公开包,不需要 DSH 源码)
npm install
npm run build # 产出 lib/client.js + lib/index.js
# 2. 以本地目录安装进 profile(同样走 dsh plugin,自动挂载)
dsh plugin --profile web add /path/to/dsh-token-usage
# 目录依赖是链接语义:改代码 npm run build 后重启 web 即生效,无需拷贝/同步
# 3. 重启 dsh web
开发
npm run typecheck # tsc --noEmit(类型来自 npm 上的 @deepseek-ai/*@0.1.0-rc.6)
npm run build # esbuild:浏览器 bundle + node half
npm run test # 冒烟:loader 形态 + SSR 渲染(不启动 web)
node scripts/smoke-loader.mjs # 模拟 DSH 模块表验证产物形态
node scripts/render-test.mjs && node scripts/.tmp/render-test.bundle.mjs # SSR 渲染冒烟(抓运行时错误)