dsh-token-usage

by hashdiana

3 UI 增强github收录于 08-23

DeepSeek Harness Web UI 更清晰、更好看的 token 用量条

A clearer, prettier token-usage bar for the DeepSeek Harness web UI.

安装

dsh plugin --profile web add github:hashdiana/dsh-token-usage

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

dsh-token-usage

更清晰、更美观的 DeepSeek Harness 会话界面 Token 用量条。

GitHub stars License: MIT DSH Plugin

🌐 中文 · English

DeepSeek Harness 的 Web 界面默认只在输入框下方用一行挤在一起的纯文本展示 Token 统计。dsh-token-usage 把它替换成一目了然的胶囊用量条,外加一个可展开的明细面板——并且自动适配你的明暗主题。

🎯 Token 用量不该靠猜,应该一眼就读懂。

截图

亮点

  • 上下文一眼掌握 —— 细进度条随上下文占用从绿 → 黄 → 红变化。
  • 输入 / 输出 / 缓存分开展示 —— 输入拆成缓存读取、缓存写入、未命中三段,命中率直接亮在条上。
  • 速度就在眼前 —— 解码吞吐(tok/s)与平均首字延迟(TTFT)直接显示。
  • 点击展开明细面板 —— 上下文占用与构成(系统提示 / 工具 / 对话)、输入构成堆叠条、会话轮次 / 步数 / 模型 / 工具耗时。
  • 自然的边缘渐隐 —— 面板上下边缘在还有内容可滚时渐隐并高斯模糊,滚到顶/底自动消失。
  • 主题自适应、中英双语 —— 样式只用 --dsw-* 主题变量(明暗皆宜),文案内置中英双语。

展示内容

输入框下方的用量条从左到右依次是:

胶囊 含义
上下文 已用 / 窗口 token,带按占用率变色的进度条
输入 计费输入总量(缓存读取 + 缓存写入 + 未命中)
输出 服务商上报的输出 token
命中率 缓存读取占计费输入的比例
tok/s 解码吞吐(按上报用量的步骤)
TTFT 平均首字延迟

点击用量条展开面板:上下文占用与构成、输入分段堆叠条、吞吐 / TTFT、会话统计。没有任何数据时整行自动隐藏。

安装

从 GitHub 安装(推荐):

npx -p @deepseek-ai/dsh dsh plugin --profile web add github:hashdiana/dsh-token-usage

从本地目录安装:

npx -p @deepseek-ai/dsh dsh plugin --profile web add <本仓库路径>

安装后重启目标 profile:

dsh web

Git 安装路径直接使用仓库里已构建好的 lib/(见「构建与开发」),安装时不执行任何构建脚本。

卸载 / 禁用

临时禁用而无需卸载 —— 在 $DSH_HOME/profiles/web/cordis.patch.yml 中加入:

- id: dsh-token-usage
  disabled: true

重启 dsh web 即恢复默认 stats 行;删除这几行即可重新启用。

构建与开发

pnpm install
pnpm typecheck   # tsc -b
pnpm build       # tsc -b + tsdown → lib/index.js(host)+ lib/client.js(浏览器)
pnpm test        # vitest:折叠纯函数、locale 配对、jsdom 渲染、slot 注册/销毁/重载

client bundle 以 window.__ModuleLoader__.load({ id, factory }) 形式产出;CSS Modules 由 lightningcss 哈希后注入 <style data-plugin="dsh-token-usage"> 标签。务必提交 lib/ —— Git 安装使用的是构建产物,不是 src/。

实现原理

  • 纯 client 插件 —— host 半只是空 apply();浏览器半通过 exports["./client"] 下发。
  • 插槽 —— 注册进 conversation.composer.dock(cell id: "stats"、priority: -1),遮蔽官方文本行;注册随插件 fiber 一并撤销。
  • 数据 —— 读取持久投影 tokenUsage、contextPressure、contextBreakdown、sessionStats;仅在投影缺失时用窗口折叠兜底。
  • Locale —— 自有 tokenUsage 命名空间,中英双语。

许可证

MIT

原始 README: https://github.com/hashdiana/dsh-token-usage/blob/main/README_CN.md ↗