XG221B/dsh-deepseek-status

dsh-deepseek-status

DeepSeek Harness plugin: a peak/off-peak billing indicator and a live account balance beside the composer. Both self-updating, both credential-free.

Uncategorizedbalancedeepseekdeepseek-harness

dsh-deepseek-status

给 DeepSeek Harness 用的一个插件:在输入框旁边常驻三个徽标。

  • 计费时段:现在是峰价还是谷价,还有多久切换,当前各模型的价格
  • 本对话花费:这个对话到现在花了多少钱——所有子代理会话也算进去;点开看按会话、模型、峰谷的拆分
  • 账户余额:账号里还有多少钱(充值 + 赠送)

数据自动更新,装完不用管。

安装

桌面版(desktop profile):dsh plugin 不管这个 profile,命令行会直接停下:

error: profile "desktop" is managed exclusively by the Electron application

两条路,任选一条:

  • 侧边栏 Plugins → Add plugin,填 github:XG221B/dsh-deepseek-status;
  • 或者用仓库自带的安装器。它做的是 DSH 自己做的那两步——在 profile 目录里 pnpm add,再把真实包名并入 dsh.profile.bundles——只是绕开了那句拒绝。需要先克隆本仓库,在仓库目录里运行:
node tools/install.mjs --profile desktop

其它 profile(web / tui / headless …):命令行本来就能用。

dsh plugin --profile <你的 profile> add github:XG221B/dsh-deepseek-status

卸载:前者把 add 换成 remove;安装器加 --remove。

github: 这类 spec 要经 git 访问 github.com,网络到不了时改用同一个提交的 tarball,两种方式都认:

node tools/install.mjs --profile desktop \
  --spec https://codeload.github.com/XG221B/dsh-deepseek-status/tar.gz/refs/heads/main

装完刷新一次页面;覆盖安装旧版本则要重启一次 Harness(Host 代码缓存在进程里)。

长什么样

● 谷价 · 距峰价 5天15小时        ● 花费 ¥44.09*        ● 余额 ¥110.00

点计费徽标:当前时段与下次切换、价格表、一行规则和数据核对时间。 点花费徽标:总额(含子代理合计)、按模型与 token 的金额、未计价提示、数据核对时间。 点余额徽标:充值余额、赠送余额、合计,以及去充值、查看用量两个入口。

两张详情卡都只有几行,展开不会把对话顶高;更细的数字(精确 token 数、节假日与调休规则等)放在 hover 提示里。 带 * 表示有调用落在价格表之外的模型上(第三方路由),那部分 token 只列出、不并进总额。 颜色跟随 Harness 主题,中英文跟随界面语言。

花费怎么算

  • 逐条调用计价:每条 assistant/message 记录的 provider 上报 usage(未命中输入 / 缓存命中 / 输出 / 缓存写入)按这次调用发生时刻的峰谷价计费——跨时段、换过模型的会话都不会被一刀切。
  • 子代理算在内:从当前会话日志里的子代理目录递归读取每个子代理会话的日志,它们的花费一并计入,并在详情里以「子代理合计」一行体现。
  • 价格表之外的模型(例如第三方路由提供的模型)单独列出 token 数,明确标为未计价、不并入总额——不给假数字。
  • 缓存写入:官方价格表没有这一项,标为不计费(金额不受影响,token 数照常显示)。
  • 没有 usage 记录的内部调用(例如生成标题、自动压缩的摘要请求)不在日志的计费用量里,因此也不计入。
  • 金额由 Host 从本地会话日志计算,把每条调用的花费四舍五入到分显示;它是按官方价格表得出的估价,与官方账单口径一致,但不替代账单。

使用前要知道的四件事

余额需要登录 DeepSeek 账号。 只用 API key、没登录账号时,Harness 的账号服务里没有钱包,余额徽标就不会显示(计费徽标不受影响,它不需要账号)。

插件不碰你的密钥。 余额是向 Harness 自带的账号服务要的,令牌始终留在 Host 进程里,页面只拿到金额数字。余额不写磁盘、不打印、不外发。

花费只在本机可读。 花费路由 /dsh-deepseek-status/cost.json 从本机会话日志计价,只接受回环地址(127.0.0.1 / ::1);从局域网进来的请求会被拒绝,徽标在这种场景下不显示。这条路由不写盘、不联网,也拿不到你的密钥。

只有计费功能联网。 Host 半边会定时抓官方价格页和节假日数据,做交叉校验后缓存到插件目录下的 cache/dataset.json,并在本机回环上开一条只读路由 /dsh-deepseek-status/data.json 给页面读。那条路由里只有公开数据;如果你把 Harness 绑到 0.0.0.0,同网段的人也能读到它(花费路由不受影响,仍只限回环)。

余额相关的读取最快每分钟一次(页面切到后台就暂停),花费徽标每 20 秒刷新一次,计费数据每 6 小时刷新一次。

花费徽标需要重启一次 Harness 才会出现。 Host 代码在进程里缓存,覆盖安装后刷新页面只更新浏览器半边;Host 半边要等下次启动。启动后点徽标即可展开明细;若 Host 还没有价格数据或会话持久化,徽标会先隐藏而不是显示猜出来的数字。

开发

node tools/test-data.mjs         # 数据层解析与校验(100)
node tools/test-pricing.mjs      # 计费逻辑(85)
node tools/test-cost.mjs         # Host 花费引擎(196)
node tools/test-balance.mjs      # 余额逻辑(54)
node tools/test-cost-client.mjs  # 花费浏览器逻辑(139)
node tools/test-bundle.mjs       # 整个浏览器 bundle 的挂载冒烟(24)
node tools/test-install.mjs      # profile 安装器(49;本机有 pnpm 时多跑 9 项真实安装)
node tools/test-host.mjs         # Host 端到端,需要联网(63)

共 710 项检查;除最后一套(需要联网)外都离线,push 时自动跑。架构说明见 DEVELOPING.md。

DSH 升级后先跑一次契约检查,再决定要不要重启(一个入口没激活会让界面起不来,这条命令能提前发现):

node tools/preflight.mjs --live

它静态核对 21 处契约(槽位、客户端服务、标准槽位 props、Host 路由、会话持久化读取 API、用量与子代理目录的事件形状、Cordis 注入语义……)加 1 项信息性检查;--live 还会请求运行中的数据集路由与花费路由。

真出问题时,把 dsh-deepseek-status 从 ~/.dsh/profiles/<profile>/package.json 的 dsh.profile.bundles 里删掉再启动即可恢复。

数据来源

计费规则和价格取 DeepSeek 官方文档;节假日取 holiday-cn 与 chinese-days(都是 MIT),两者必须一致才采用。花费用量取自 Harness 自己的会话日志(~/.dsh/sessions),不额外记录任何东西。

在 DSH 0.2.0-rc.2 上开发验证,2.1.0 的契约检查在 0.2.1-rc.2 上通过。

许可

MIT