dshplugin.devDeepSeek Harness Plugins
DSH Token Usage plugin logo
DeepSeek Harness Plugin

DSH Token Usage

0
Published by hashdiana

更清晰美观的会话 Token 用量条:上下文占用、输入/输出/缓存分解、吞吐与首字延迟,取代默认的纯文本 stats 行

Developer Toolsdsh-plugindsh-plugins

Get this plugin

Review the source, then continue to the publisher.

dsh plugin add dsh-token-usage@latest
Get this plugin
Share on X ↗

About this plugin

Source snapshot 8/13/2026

dsh-token-usage

将 DeepSeek Harness 会话界面底部的 Token 用量信息,以更美观、更清晰的方式展示的 Web UI 插件。

它做什么

默认的 Web 界面在输入框下方只有一行挤在一起的纯文本统计。本插件用视觉化的 用量条 取代它(conversation.composer.dock 插槽中 id 为 stats 的条目,以 priority: -1 遮蔽),展示:

  • 上下文占用:当前上下文已用 / 窗口容量 + 细进度条,按占用率变色(<50% 绿 / <80% 黄 / ≥80% 红)
  • Token 用量:输入(含缓存读取/写入/未命中三段分解)、输出、缓存命中率
  • 速度:解码吞吐(tok/s)与平均首字延迟(TTFT)
  • 点击用量条展开 明细面板:上下文占用与构成(系统提示/工具/对话)、输入构成堆叠条、会话轮次/步数与模型/工具耗时

数据全部来自官方持久投影(tokenUsagecontextPressurecontextBreakdownsessionStats),窗口折叠仅在投影缺失时兜底;样式只使用 --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 位。