用 DSH 写东西的时候,你有没有遇到过这种时刻:正写到一半,脑子里突然冒出一个念头——「我的余额还剩多少?」
然后你切出去开浏览器,登录 platform,翻到用量页,看完再切回来。半小时后,同样的流程再来一遍。
有人给这个动作做了一只挂件:一只住在 DSH 界面右下角的小鲸鱼,帮你盯着余额。它叫 dsh-whale-widget(DSH 小鲸鱼记账挂件),代码是 MIT 许可,随界面自动启用。
它长什么样
挂件就是一个常驻在右下角的角色,点它会有气泡:

它是标准 DSH bundle 插件,每次打开界面自动出现,不需要手动唤起。
下面这张是项目仓库里的官方展示图:

角色形象由项目提供,素材使用范围与代码许可不同:

项目文档里的三件事,正好对应这只鲸鱼存在的理由:余额、今日已用、每轮对话消耗。
余额、今日已用、每轮消耗
余额:60 秒自动刷新一次;点一下鲸鱼也能手动刷新。余额数字变化时会有滚动动画;网络抖动拿不到新数据时,沿用最近一次余额,不把界面变成报错页。
今日已用:这部分不需要任何令牌。它靠「小鲸鱼记账」——余额下降就按观测累计为消费,余额上升(充值 / 赠金)单独记录,不会冲掉已有消费。
每轮对话消耗:每轮结束弹一个消耗泡泡,金额按宿主返回的 input、cache、output、reasoning tokens 与内置价格换算,属于用量估算。
插件会依据内置的模型价格与时段规则估算消耗。价格和优惠变化后,估算可能与实际扣费不同,账户账单才是结算依据。
记账是怎么算的
这一块值得多说两句,因为它决定了数字能不能信。
插件每 60 秒取一次余额快照,把相邻两次的下降按观测累计成消费;余额上升(充值或赠金)单独归类,不会冲掉已经记下的消费。
三件事在账本里是分开记的:
| 发生了什么 | 账本怎么记 |
|---|---|
| 余额比上次低 | 差额记为「已观测消费」,累计到今日已用 |
| 余额比上次高 | 单独记为充值 / 赠金,不冲掉消费,并提示「待核对余额调整」 |
| 同一刷新间隔内既有充值又有消费 | 用「余额校正」按实际累计到账金额和非调用扣减修正 |
如果检测到余额增加,这部分会单独归类并在数字上标注出来;需要修正时,可以在「小鲸鱼记账 → DeepSeek(内置)→ 设置 → 余额校正」里按实际累计到账金额和非调用扣减来校正。
记账口径是:金额按 8 位小数记账、显示保留两位;逐轮明细保留 90 天或最多 2 万条,逐日归档 365 天,超期数据归档到 .dshw-usage-archive.json。
还有一处设计是「按密钥指纹分本」——每把 API key 一本书。换了或删了 key,更早的记账天不会消失,它们仍在 .dshw-usage.json 的 accounting.books 里,界面会标注「已观测消费 · 历史账户」。两个本不会被相加(插件无法判断是不是同一个账户),但可以在「每日与逐条明细」里逐日查看。
记账面板本身长这样——这一屏是插件前端在本地渲染出来的实际界面(数据为演示数据):

泡泡可以自己拼
点一下鲸鱼会弹气泡;再点,按队列推进下一条。下面是菜单入口:

泡泡内容不是写死的几句话,而是模块化的:
- 可以放什么:纯文本与超链接、随机语句、图片与动图、余额相关模块(总余额、赠金、充值余额、今日已用、峰谷状态、对话名等)
- 每个模块单独调:字体、字号、加粗、斜体、下划线;纯色或跑马灯渐变;底色
- 排版有上限:每行最多 6 个模块,一个泡泡最多 6 行,图片类独占一行
- 点击序列:比如第一次点击看余额,再点看今日已用,第三次看峰谷状态;也支持把多条并列成一组,按权重点其中一个
- 模块库:常用的模块可以「存为可选模块」,下次直接载入
鲸鱼本体也能换:导入 PNG / GIF / APNG 角色图,自己裁切、命名。
它是怎么知道余额的
两条路,API key 优先:
DEEPSEEK_API_KEY:配在 DSH 的凭据里,插件用它拉余额- DSH 账号登录态:如果你是通过 DSH 的「设置 → 账号与余额」登录 DeepSeek 账号的,又没有配 API key,插件会自动走 DSH 自己的账号服务取数——不需要专门去 platform 建 key
这两条路是互不干扰的:配了 key 就走 key,没配才走账号。不过要注意,账号态与 API key 态的账本是分开的(按账号标识区分),从 key 换成账号登录之后,「今日已用」会从新的观测点重新起算。
安装:桌面端要特别注意
安装前先确认客户端使用的 profile:
官方桌面端读的不是 web profile。
桌面客户端用的是 desktop profile,而 dsh plugin 命令行按设计拒绝碰它:
error: profile "desktop" is managed exclusively by the Electron application
如果你在桌面端按 --profile web 装,插件会落在 web profile 里,而桌面窗口读的是 desktop profile——结果是右下角什么都没有(连菜单按钮也没有),控制台也不报错。
桌面端的正确做法:在桌面客户端的会话里直接说一句,让它用当前宿主内置的 plugin_manager 装:
请使用当前桌面端内置的
plugin_manager安装dsh-whale-widget。先核对当前 profile 和是否已有同名插件;已有安装时先报告来源与版本。按该工具支持的操作完成后,告诉我安装结果及是否需要重启。
要固定版本时,把安装规格写成 dsh-whale-widget@0.4.2。工具不可用或操作不受支持时,先说明缺哪项宿主能力,不要绕过桌面端限制改用 --profile web。
命令行版的 dsh web 才用 dsh plugin:
# GitHub 直接安装
dsh plugin --profile web add github:MeteorNOX/DeepSeek-Balance-Whale-Widget
# 或 npm 已发布版
dsh plugin --profile web add dsh-whale-widget
两条路别混用:npm 名与 github: 指向同一个包,先后安装会并存冲突。已经在用 github: 装的人想换成 npm 名,先 dsh plugin --profile web remove dsh-whale-widget 再装。另外官方也说明:从 GitHub 装的是 main 的当前状态,不跟随已发布版本——想要稳定版就用 npm 名。
装完重启 dsh web,再刷新浏览器。桌面端则建议完全退出客户端(含系统托盘)后重新打开;项目文档提到,热生效不一定够。
怎么确认装上了(两条自检):
- 宿主侧:
%USERPROFILE%\.dsh\.dshw-turn.json存在,且seq随对话递增 - 客户端侧:桌面端的 LevelDB 里出现
dshw-pos/dshw-last-seq——这两个键只有挂件前端会写
另外 dsh plugin --profile web add link:. 这类软链安装后不能移动源目录,移动了要重新 add 一次。
它不碰什么
这部分是项目文档里单列一节「安全边界」的内容,值得原样传达:
- 不需要
DEEPSEEK_PLATFORM_TOKEN:早期的「实时·令牌」模式已下线,今日已用统一由小鲸鱼记账(余额差 + 会话事件)计算,零令牌开箱即用 - 写设置只能在本机:0.3.15 起,所有写请求如果不是来自
127.0.0.1/localhost/[::1],一律返回 403。需要远端管理时才用DSHW_ADMIN_HOSTS显式声明 - 凭据默认只发往厂商内置端点:自定义接口地址(不在该厂商模板内)默认拿不到凭据,需要你在这台机器本机打开面板,对该模型勾选「允许把凭据发送到自定义地址」
这三条加起来的意思是:余额的读取路径是明确写死的,写配置的入口只在你本机。
适合谁,以及要注意的
适合:经常用 DSH 跑长任务、想随时看到余额与今日已用、又不想反复开网页的人。web 与桌面端都支持。
要注意的事项:
- 许可:代码是 MIT;但
assets/下的美术素材(图片、动图、音效)不在 MIT 覆盖范围内,按 PROVENANCE 说明是「原样提供」,仅用于运行本插件,不授予再许可。作者也写明收到权利主张会立即替换或移除 - 别装错 profile:桌面端只认
desktopprofile,用内置plugin_manager;命令行dsh web才用--profile web - 生态里有同类插件:除了这个余额挂件,社区里还有整站鲸鱼娘皮肤、养成型桌宠,以及基于本项目做的二创版本(例如增加了多套表情与火山 Coding Plan 用量)。装之前先确认你要的是哪一个
项目地址:https://github.com/MeteorNOX/DeepSeek-Balance-Whale-Widget
