前言¶
DSH(DeepSeek Harness)的 Web GUI 输入框下方有三个胶囊,显示的是轮次、token 数量和上下文占用,没有任何金额。想知道这轮花了多少钱,只能自己拿 token 数去乘单价;而 DeepSeek 官方计费分高峰和空闲,单价差一倍,界面上却看不出现在处在哪个时段。
下面介绍的插件 jiangpengtkd-alt/dsh-balance-chip 就是补这块信息缺口的:输入框下方常驻显示账户总余额、会话累计、本轮消耗和当前时段,点开还能看本日消耗、每轮平均、缓存命中率和当前单价。
这个插件是社区维护的,分类为客户端,GitHub 星标 1,许可证 MIT,当前版本 0.15.1,运行环境要求 Node ≥ 22.15.0(DSH 桌面版内置 Node 24,满足)。它没有发布到 npm,安装一律从 Releases 下载 tgz。
它显示什么¶
胶囊从左到右是余额、这个会话的累计、这一轮的消耗,最右边还有一个时段。三段始终占着位置,算不出来就显示 —,不会整段消失导致右边数字左右横移。
| 显示项 | 是什么 | 从哪来 |
|---|---|---|
| 总余额 | 账户可用总额 = 充值余额 + 赠金余额 | host 端由两个钱包相加得出 |
| 会话累计 | 这个会话从建立到现在一共花了多少 | 官方 tokenUsage.totals |
| 本轮消耗 | 当前这句话从发出到此刻花了多少 | 当前 totals − 本轮起点的 totals,实时累加 |
| 时段 | 空闲 / 高峰 / 假日 / — |
按 DeepSeek 官方峰谷规则与内置法定节假日表判断 |
四种状态都是两个字,宽度一样,切换时不会抖动。外观和交互照官方那三个胶囊做:透明胶囊、悬停出底色、点击弹浮层、点外面或按 Esc 关闭。
浮层里还有本日消耗、每轮平均消耗、缓存命中率、当前单价。其中本日消耗是扫当天全部会话日志算的,不是只看当前会话。
刷新节奏¶
余额和会话累计 15 秒刷一次,本轮消耗 2 秒一次,所以回答过程中能看到数字在涨。冷启动第一回同步扫当天日志,其余情况缓存过期或跨天时用 setImmediate 排一次补扫,先返回旧值,不在请求关键路径上。跨天时宁可显示 —,也不拿昨天的数字冒充今天。
数据来源¶
插件不自己造数据,全部来自官方接口与官方投影:
- 总余额 =
normal_wallets+bonusWallets,由 host 相加得出,赠金缺省时就等于充值余额 - 充值余额走
ctx.deepseekAccount.getBalance(client);兜底可走GET api.deepseek.com/user/balance(API Key 账号,那里total_balance本身就是总额) - 赠金余额是账号的第二个钱包。官方扣费规则是两种余额同时存在时优先扣减赠金余额,所以浮层行标签写作「赠金余额(优先消耗)」
- 会话累计取
ctx.sessionProjections.stateOf(session, "tokenUsage")的totals - 本轮消耗是插件补出来的口径:官方只有
totals(整会话)与last(最近一步),没有一轮合计。做法是在turn/start事件记下当时的totals作基准,每次请求做差 - 每轮平均 = 会话累计 ÷
sessionStats.turns,轮数来自官方session-stats投影 - 缓存占比 =
totals.cacheReadTokens ÷ 四项之和,用来解释成本为何低(缓存读取单价 0.02,未缓存输入 1)
官方没有「一轮合计」,所以本轮消耗是插件唯一的自算项。0.10.0 修过一个高危 bug:换轮时不重置基准,导致「本轮消耗」等于「会话累计」,靠一条只有实现正确时才成立的等式断言抓住,并用变异测试验证过把缺陷注回去测试确实会失败。
安装¶
安装分三步,装的过程不用联网、不用账号:
- 去 Releases 下载最新的
dsh-balance-chip-<版本>.tgz - 执行
dsh plugin --profile desktop add dsh-balance-chip-<版本>.tgz - 重启 DSH
各平台命令相同,只是路径写法不同:
# macOS / Linux
dsh plugin --profile desktop add ~/Downloads/dsh-balance-chip-<版本>.tgz
# Windows (PowerShell)
dsh plugin --profile desktop add "C:\路径\dsh-balance-chip-<版本>.tgz"
desktop 是 profile 名,换成你自己的。插件目录可以放在任意位置,下面的例子放在 ~/.dsh/plugins/dsh-balance-chip,profile 侧用 link 依赖指向它,不需要把代码拷进 profile 目录:
~/.dsh/plugins/dsh-balance-chip ← 插件源码(位置可自选)
├─ lib/index.js host 半身
├─ lib/client.js client 半身(浏览器)
├─ lib/holidays.js 法定节假日数据(唯一的年度维护点)
├─ cordis.patch.yml bundle 激活层
└─ tools/gen-preview.mjs 预览生成器
profile 侧:
~/.dsh/profiles/<profile>/
├─ package.json dependencies: dsh-balance-chip → link:<插件目录>
└─ node_modules/dsh-balance-chip → 软链到插件目录
装完(改完代码后同理)都要重启 DSH 才生效:host 半身必须重启,client 半身随 host 一起重新生成。完整的安装说明、三种安装方式和「装完没反应」的排查清单见仓库里的 INSTALL.md。
不想装,先看效果¶
把仓库 clone 下来跑预览生成器,打开生成的预览页,里面把原厂胶囊和本插件并排渲染,可以直接比对位置、字号、基线:
node tools/gen-preview.mjs
# 然后浏览器打开 docs/preview.html
注意 preview.html 是生成物,需要与源码同步;实机截图在 docs/screenshot-chip.png 和 docs/screenshot-panel.png。
安全边界¶
安装包只从本仓库的 Releases 下载。插件会读取本机 ~/.dsh/.credentials.yaml,用于账号服务不可用时直连 api.deepseek.com/user/balance 的兜底查询。默认配置下凭据只发往 api.deepseek.com,不写入日志、不返回给浏览器、不发往任何第三方。
有两点例外:
baseURL是可配置的。若把它改成别的地址,兜底路径会把 API Key 发往那个地址,上面那条保证只对默认值成立。- 被改过的副本(fork、二次打包、第三方网盘)不受任何保证。
每个 Release 附带 SHA256SUMS.txt,下载后可自行核对:
# Windows
Get-FileHash .\dsh-balance-chip-<版本>.tgz -Algorithm SHA256
# macOS / Linux
sha256sum dsh-balance-chip-<版本>.tgz
与 Release 页面上的值一致即可。哈希不写进文档,因为每个版本都变,写进去必然过期。
其余运行时边界:零依赖(纯 JavaScript,无原生模块)、无 install / postinstall 脚本、运行时对磁盘只读(不写任何文件)、HTTP 路由只接受回环地址(127.0.0.1)的请求。另外 HTTP 接口只校验回环地址与 Host,不做 DSH 登录校验,同一台机器上的其他进程也能读取余额(只能读,插件对磁盘和配置都没有写操作)。
测试与审计¶
五套测试全是纯 Node、零依赖、不联网,也不用启动 DSH:
node tools/selftest.mjs # 68 项 host 端到端(余额、计费、回环校验、换轮基准)
node tools/render-test.mjs . # 110 项 渲染(金额精度、标签配对、胶囊可见性、面板结构)
node tools/heartbeat-test.mjs . # 6 项 心跳独立于组件、节奏参数
node tools/refresh-test.mjs . # 13 项 「立即刷新」的排队与补发
node tools/gen-preview.mjs # 28 项 预览页自检
退出码 0 即全部通过,CI 在 Node 22 / 24 上跑。项目经历过两轮外部独立审计,共报出 16 条问题,绝大多数自测发现不了,完整记录见 docs/audits/。
适用场景与注意¶
适合自己用 DSH 跑长会话、想随时知道花了多少钱、想确认当前是高峰还是空闲的人。节假日表(lib/holidays.js)是内置静态数据,运行时不访问任何外部接口,但也是唯一的年度维护点,跨年后需要更新。
几点注意:
- 这个插件以当前 dsh 进程的权限运行,安装前应自己检查源码与许可证(MIT),不要从第三方网盘下载
- 它默认不联网,只有本机账号服务读不到余额时才回退到
api.deepseek.com - 平台支持:Windows x64 与 macOS arm64 均已实机验证;macOS x64 与 Linux 预期可用但未单独验证
- 判断自己的 DSH 是什么平台,读安装目录里
resources/app.asar→dsh/desktop-runtime.json的platform字段(Windows 是win32,macOS 是darwin,Linux 是linux)
结尾¶
这个插件的价值在于把「官方不给你看的金额」补回界面上,并且顺带解决了两个没人替你算的问题:本轮消耗的口径,和当前时段对应的单价倍率。功能不复杂,但零依赖、运行时对磁盘只读、有完整测试和两轮独立审计记录,作为一个长期挂在输入框下面的组件算是克制的实现。
目录页:https://www.skillhub.cn/plugins/jiangpengtkd-alt/dsh-balance-chip
GitHub:https://github.com/jiangpengtkd-alt/dsh-balance-chip