dsh-token-dashboard:在 DSH 里看清每一次模型调用的 token 去向

前言

在 DeepSeek Harness(DSH)里跑主对话、子代理、上下文压缩或会话标题生成时,token 会从多条路由、多种用途里持续流出。宿主本身并不自带「自安装以来、按天/模型/项目/用途」的完整用量看板;若只凭账单或零散日志,很难回答「今天到底用了多少」「缓存读占了多少」「哪个项目最耗」这类问题。

下面介绍社区插件 dsh-token-dashboard(维护者 guanhaisen,仓库 guanhaisen/dsh-token-dashboard)。它从挂载时刻起记录每一次经 llm/stream 的模型调用,聚合并展示用量,入口在侧栏底部、账号行正上方,一次点击打开看板面板。

这是什么

dsh-token-dashboard 是面向 DSH desktop profile 的第三方 bundle 插件:从 profile 加载,不修改 app.asar,不改动随应用发布的组件。当前包版本为 0.1.0(见仓库 package.json),许可证 MIT;要求 Node >=20、DSH ^0.2.0-rc.1。

它解决的核心问题是:用量口径统一、统计完整、界面就近可用——与 dsh-our-free-model 使用的 ~/.dsh/channel-pack/token-ledger.json 无关,两者账本互不影响。

核心功能

记录范围与字段

用量来自 llm/stream(LlmRuntime.streamWithRegistration),主对话、子代理、压缩、会话标题生成均经过同一漏斗,因此不是抽样统计。每次调用记录 provider 上报的 inputTokens / outputTokens、cacheReadTokens / cacheWriteTokens、reasoningTokens(若有)、provider / model、purpose(chat / compaction / session-title)、sessionId / cwd、durationMs / ttftMs 以及 ok / error。

聚合维度包括:按天(默认日界 UTC+8)、按模型、按用途、按项目,外加最新在前的最近调用列表。

口径说明(阅读看板前建议知晓)

  • 只向前记录,不补历史;挂载前的调用不会导入。
  • 字段按 provider 原样入账,缓存读/写单独计数,不折进 inputTokens。
  • 不做价格换算;看板报告 token 构成,不报告成本。
  • 看板展示两个总量:总 token = 四类 token 之和(含缓存读);非缓存 token = inputTokens + outputTokens。provider 侧的 inputTokens 指未命中缓存的输入。

界面与布局

侧栏底部显示 Token 用量摘要;面板内自上而下为读数区(主指标与紧凑 KPI)、每日堆叠柱状图、近一年用量日历、按模型/项目/用途排行及最近调用。布局按面板宽度做容器查询,窄主面板在宽窗口下也会重排;图表自测宽度绘制 viewBox,避免标签被拉伸。

安装与启用

安装前请知悉:插件以当前 DSH 进程权限运行,安装等于在 profile 中引入第三方代码。建议先阅读仓库源码与 MIT 许可证,再决定是否安装。

方式 A:CLI(需先完全退出 DSH)

CLI 会拒绝修改正在被运行实例占用的 profile。

dsh plugin --profile desktop add github:guanhaisen/dsh-token-dashboard

方式 B:插件页

  1. 打开侧栏 插件。
  2. 选择安装,粘贴:github:guanhaisen/dsh-token-dashboard。
  3. 查看 pnpm 输出并确认。

方式 C:由 Agent 安装

让模型将 github:guanhaisen/dsh-token-dashboard 安装到 desktop profile;会使用 plugin_manager,需 danger-full-access 或人工批准。

锁定发布版本

dsh plugin --profile desktop add 'github:guanhaisen/dsh-token-dashboard#v0.1.0'

安装器会更新 <dsh-home>/profiles/desktop/package.json、将 bundle 写入 dsh.profile.bundles、执行自带 pnpm;Desktop 组合启用 HMR 时无需重启,刷新页面即可。若侧栏入口未出现,检查 dsh.profile.bundles 是否包含 "dsh-token-dashboard"。

确认运行:通过 plugin_manager { action: "list_plugins" } 应看到 dsh-token-dashboard,enabled: true,fiberPhase: "active"。

典型用法

安装并刷新后,日常使用无需额外命令:

  1. 在侧栏底部点击 Token 用量入口,打开看板。
  2. 在读数区查看总 token、非缓存 token、缓存命中率、延迟等;切换「近 7 天」「近 30 天」等区间时,环比标签由日历序列计算。
  3. 在每日图中查看四段堆叠(缓存读、缓存写、输入、输出);悬停列可读当天明细。
  4. 在日历热力图查看近一年「哪天更忙」(固定近一年窗口,不随区间选择变化)。
  5. 在排行表中按模型、项目(cwd)、用途对比用量;「最近调用」仅显示当前选中区间内的记录。

数据默认落在:

<dsh-home>/token-dashboard/ledger.json

<dsh-home> 通常为 ~/.dsh;可用环境变量 DSH_TOKEN_DASHBOARD_STATE_DIR 覆盖目录。原子写入、2 秒防抖、多 profile 增量合并;清空数据可删除该文件(插件不提供清空按钮)。

配置

在 cordis.patch.yml 或 profile 中的覆盖项里调整(无效值会被拒绝并回退默认,避免误配毁掉历史):

字段 默认 含义
retentionDays 730 日聚合保留天数
recentLimit 300 明细记录上限
utcOffsetMinutes 480 日界偏移(480 = UTC+8)
trackProjects true 是否记录 cwd 维度
flushDebounceMs 2000 落盘防抖(毫秒)

适用场景与注意

适合:需要在 DSH 内长期观察 token 构成、按项目/模型/用途排查用量、理解缓存读在总量中的占比的开发者。

不适合或暂无:成本预算、告警、历史回填导入;日界为固定偏移(默认 UTC+8),不会随系统时区自动变更。

已知限制(摘自上游文档):不上报用量的 provider 仍计请求、token 为 0;重试产生的多次尝试会反映在 requests 中;开发与测试主要在 Desktop profile 上验证。

结尾

dsh-token-dashboard 把 DSH 内每一次 llm/stream 调用落成可查询的账本,并把看板放在侧栏触手可及的位置;口径透明、不做伪计费,适合「先看清 token 构成,再谈优化」的工作流。

  • 社区目录页:https://www.skillhub.cn/plugins/guanhaisen/dsh-token-dashboard
  • 源码与完整说明:https://github.com/guanhaisen/dsh-token-dashboard

社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装与使用由你自行评估风险与合规。

羽毛球分组比赛记分
小程序二维码

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

小夜