dsh-account-balance-pill:在 Composer 底栏显示 DeepSeek 账户余额

前言

在 DeepSeek Harness(DSH)里跑会话时,输入框下方统计行已经会显示轮次、步数、tokens/s、用量和上下文环。账户里还剩多少可用余额,却要切到 Settings → Account 才能看到。若你希望在写 Composer 消息时一眼看到「还能花多少」,又不希望插件自己存凭证或另起网络请求,社区维护的客户端插件 dsh-account-balance-pill(维护者 azkbzxf)把官方账户 Remote 的余额读数嵌进同一条底栏。

这是什么

dsh-account-balance-pill 是 DSH 的一个 bundle 插件:Host 侧通过 dsh.bundle.patch 插入一行(实际为 no-op),Web Client 侧在槽位 conversation.composer.dock 注册一条与内置 activity、usage 并列的入口(id account-balance)。数据来自 DSH 自带的 ctx.get('remote.account').getBalance(...),与设置页账户面板同源;插件不存储数据、不读凭证文件、也不自行发起网络请求。

底栏示意(README 中的 ASCII 示例):

[welcome icon] 余额 ¥12.34        [stats] 1 轮 160 步 · 254 tok/s     [usage] 10.9M tok · 缓存命中 98%   (ring) 9%

药丸展示的是可消费总余额(充值 + 赠送,按币种合并),例如 余额 ¥17.34;悬停可看到充值/赠送拆分、上次刷新时间,并提示点击可刷新。

  • 包名:dsh-account-balance-pill
  • 分类:客户端(DSH 插件目录 SkillHub 条目)
  • 许可证:MIT(package.json 版本 1.0.0)
  • 依赖与构建:无额外依赖,无构建步骤

核心功能

显示规则

账户状态 底栏表现
已登录且有余额 钱包图标 + 余额 ¥12.34;tooltip 含充值/赠送拆分、更新时间、点击刷新提示
未登录或 Remote 返回 null 不显示(无占位、无报错)
读取失败(离线、Host 拒绝等) 保留上次已知值并变淡标为陈旧;若从未成功读取则保持隐藏
多币种 CNY 用 ¥,USD 用 $;充值与赠送按币种合并,CNY 优先

金额截断到分,与官方设置页一致,避免显示多于实际可用;千分位分组。0 显示为 ¥0.00,不足一分显示 <¥0.01。

刷新时机

  1. 药丸挂载后立即拉取;
  2. 页面可见时每 30 s 轮询(隐藏时跳过,再次可见时补一次);
  3. 一轮对话结束约 1.5 s 后(sessionStats 的 steps 变化时);
  4. 窗口重新获得焦点或页面变为可见时(仅当数据已超过 15 s);
  5. 账户 Remote 晚加载出现时;
  6. 用户点击药丸。

同一时刻最多一个请求在飞;请求间隔至少 3 s;失败时指数退避(4 s 至 60 s)后自动恢复。

兼容性与实现要点

  • 面向 DSH Web GUI(DSH Desktop 与 dsh web 共用),README 写明在 DSH Desktop 2.0.18、client 0.2.1-rc.2 上验证。
  • 仅使用 conversation.composer.dock 与官方 account Remote;不替换或改写既有 UI,不读其他插件 DOM,不向 document.body 挂载。
  • 样式使用 Harness 主题 token(--dsw-* / --dsh-*);文案经 DSH 客户端 locale(zh/en)随界面语言切换。
  • 无 account Remote 时插件仍加载但保持隐藏;渲染错误由该条目范围内的 error boundary 捕获,不影响 dock 其余部分。

已知限制

  • 余额来自 DeepSeek 账户平台,可能滞后数秒,非账本级实时。
  • dock 行仅在会话 Composer 可见时渲染(与内置槽位行为一致)。
  • 平台持续失败时插件退避并在首次失败时打一条 console 警告,不弹对话框。

安装与启用

在使用的 profile 下从 GitHub 安装(命令来自官方 README):

dsh plugin --profile <profile> add github:azkbzxf/dsh-account-balance-pill

新加的 bundle 会在当前运行实例上激活(Host 行立即生效,Client 半部分热加载到已打开页面)。若替换已安装副本,需重启 DSH 以加载新的 client 构建。

在 DSH Desktop 中也可通过插件管理器安装本地目录:

{ "action": "install_bundle", "target": "D:\\path\\to\\dsh-account-balance-pill" }

卸载:

dsh plugin --profile <profile> remove dsh-account-balance-pill

典型用法与可调参数

默认无需配置:登录 DeepSeek 账户后,打开带 Composer 的会话,底栏会出现余额药丸;点击即可手动刷新。

若需调整轮询间隔(毫秒,限制在 5 s~1 h),可在页面全局设置:

window.__DSH_ACCOUNT_BALANCE__ = { intervalMs: 60000 };

开发侧可用离线冒烟测试(不依赖真实 DSH):

node test/harness.mjs client.js

主要文件:client.js(Client 半部)、index.js(no-op Host)、cordis.patch.yml(bundle patch)、locale/{en,zh}.json、icon.svg。

适用场景与注意

适合长期在 DSH Desktop 或 dsh web 里对话、希望在与轮次/用量同一行看到账户余额的开发者。插件以当前 dsh 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全与合规要求。DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-account-balance-pill 把设置页同源的账户余额接到 Composer 底栏,复用官方 Remote、无自建凭据与请求,并约定好在登录、失败与多币种下的显示与刷新行为。进一步了解可看插件目录页与仓库 README:

  • 目录页:https://www.skillhub.cn/plugins/azkbzxf/dsh-account-balance-pill
  • GitHub:https://github.com/azkbzxf/dsh-account-balance-pill
羽毛球分组比赛记分
小程序二维码

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

Xiaoye