前言¶
DeepSeek API 从 2026 年 8 月 17 日起按北京时间峰谷计价:高峰是每天 9:00–12:00、14:00–18:00,其余为空闲时段,空闲价是高峰价的一半。智能体在 DeepSeek Harness 里连续跑任务时,账户还剩多少钱、按当前模型大概还能开几次会话,往往要自己去控制台查余额,再对照官方价目和历史用量心算。
DeepSeek Harness(dsh)的架构口号是「一切皆插件」。社区目录里有一款会话与消息插件,把官方 GET /user/balance 的真实余额,以及按模型折算的剩余任务估算,直接挂到 Web 会话头部。本文按插件目录页、GitHub 仓库 README / 源码,以及 DeepSeek 官方余额接口与价目页核对后整理:它做什么、怎么装、估算怎么算、边界在哪。
这是什么¶
DeepSeek-Harness-billing-plugin 是 WilliamLIiii 维护的开源插件,许可证 MIT,主要语言 TypeScript。GitHub 仓库主题带 dsh-plugin。目录页把它归在「会话与消息」,当前星标 9。根目录 package.json 里的工作区版本是 0.1.0-rc.5。
它解决的问题很具体:在 DeepSeek Harness 的 Web 会话头部显示账户余额,并按当前模型估算大概还能跑多少个任务。余额来自 DeepSeek 官方接口 GET /user/balance 的真实数字;「还能跑多少任务」是估算,不是计费承诺。这一点目录页和仓库 README 写的是同一句话。
仓库是 pnpm workspace,拆成两个包:
| 包 | npm 名 | 运行位置 | 作用 |
|---|---|---|---|
packages/llm-billing |
@deepseek-ai/dsh-llm-billing |
主机端 | 拉余额、跨会话按模型折叠 token、峰谷计价表;对外暴露 billing Remote(getBalance、getEstimate) |
packages/ui-billing |
@deepseek-ai/dsh-client-ui-billing |
浏览器端 | 挂载 billing Remote,向会话头部工具区贡献徽标 |
包名带 @deepseek-ai 前缀,仓库维护者是 WilliamLIiii。DeepSeek Harness 官方仓库在 deepseek-ai/deepseek-harness;插件目录站点是社区收录页,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。
核心功能¶
会话头部徽标¶
浏览器包向 conversation.session.header.utilities 贡献一个条目,在右上角渲染标签框。触发器两行:
- 剩余额度:
剩余额度:¥X - 按当前模型预计还能跑多少任务
点击后展开详情:剩余金额、手动刷新按钮,以及每个模型一行的剩余任务。没有消耗记录的模型显示「暂无消耗记录」,不会编造数字;按历史消耗折算不足 1 个任务时,文案是「按消耗能跑不足 1 个任务,该充钱了」。
仓库 README 和 UI 文案还约定了这些行为:
- 首个请求在途时不渲染任何东西。
- 刷新失败时保留上一次有效值,旧数字不会先消失。
- 未配置 API key、凭据被拒绝或传输出错时,显示弱化的「额度不可用」,提示里带 Remote 返回的错误信息。
- 徽标是账户级数字。插槽虽然挂在会话标题栏,显示值不随当前会话切换。
- 只手动刷新。挂载时拉一次,之后要点「刷新」;长会话过程中不会自动跟随余额变化。
分模型剩余任务估算¶
主机包把「余额 + 每个已配置模型的一条估算」做成 getEstimate()。算法在 README 和 packages/llm-billing/src/billing.ts 里写得很清楚:
- 1 个任务 = 1 次会话。 在线会话和已持久化会话按会话 id 去重后各折叠一次,避免同一会话被算两遍。
- 每个模型累计三个计费 token 桶:缓存命中输入、未命中输入(未缓存输入 + 缓存写入)、输出(含推理)。源码从
assistant/message事件的usage里取cacheReadTokens、inputTokens + cacheWriteTokens、outputTokens。 - 用该模型的历史平均每会话消耗,乘当前峰/谷时段单价,得到平均每任务费用。
还能跑多少 = floor(人民币余额 ÷ 平均每任务费用)。
没有历史用量、没有费率行、或余额不是人民币时,该模型不给出估算。一个会话里切换过多个模型时,会分别计入它实际调用过的每个模型;平均是「每次调用会话」,不是「每次声明任务」。
默认展示行是 deepseek-v4-flash(DeepSeek-V4-Flash)和 deepseek-v4-pro(DeepSeek-V4-Pro)。只读投影,不改 prompt、消息、schema、流或工具结果。
峰谷费率表¶
源码常量 DEFAULT_MODEL_PRICING 写明按 2026-08-17 实行的官方 V4 费率,单位是元 / 百万 token。和 DeepSeek 模型与价格 对得上:
| 模型 | 时段 | 缓存命中输入 | 缓存未命中输入 | 输出 |
|---|---|---|---|---|
| deepseek-v4-flash | 高峰 | 0.10 | 3.0 | 9.0 |
| deepseek-v4-flash | 空闲 | 0.05 | 1.5 | 4.5 |
| deepseek-v4-pro | 高峰 | 0.30 | 9.0 | 27.0 |
| deepseek-v4-pro | 空闲 | 0.15 | 4.5 | 13.5 |
高峰窗口默认是北京时间 09:00–12:00、14:00–18:00,其余为低谷。源码用 Asia/Shanghai 对应的 UTC+8 小时判断,不考虑夏令时。
余额传输走 {baseURL}/user/balance,默认 baseURL 是环境变量 $DEEPSEEK_BASE_URL,再退回 https://api.deepseek.com。请求头是 Authorization: Bearer <API key>。这和 DeepSeek 查询余额 一致:响应含 is_available 和 balance_infos(currency 为 CNY 或 USD,以及 total_balance / granted_balance / topped_up_balance)。估算只读人民币余额行;纯美元账户可以显示余额,但不换算任务数。
安装与启用¶
目录页给出的安装命令如下,在 DeepSeek Harness 终端运行:
dsh plugin add github:WilliamLIiii/DeepSeek-Harness-billing-plugin
需要可复现安装时,按目录页说明固定 commit 哈希:
dsh plugin add github:WilliamLIiii/DeepSeek-Harness-billing-plugin#<commit>
把 <commit> 换成仓库里实际的提交哈希。插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前检查源代码仓库和许可证。
GitHub README 写的是另一条更细的路径:先把两个包装进 web profile。仓库原文是:
dsh plugin --profile web add @deepseek-ai/dsh-llm-billing @deepseek-ai/dsh-client-ui-billing
README 同时说明:这两个包在本仓库 packages/ 里,需要先发布到 npm(@deepseek-ai 或自己的 scope),dsh plugin add 才能从 registry 解析。也就是说,目录页的 GitHub 安装命令是收录页对外写法;仓库自己把可运行形态定义成两个 Cordis 插件。DeepSeek Harness 官方文档也写过:从 GitHub 安装拿到的是源码而不是构建产物,TypeScript 包通常要允许 prepare 构建,并在 profile 的 pnpm-workspace.yaml 里为包名打开 allowBuilds。以你实际用的安装路径为准,不要混用未发布的 npm 名和未构建的 git 源码。
接进组合时,README 要求编辑 ~/.dsh/profiles/web/cordis.patch.yml:
- insert:
- id: llm-billing
name: '@deepseek-ai/dsh-llm-billing'
- id: ui-billing
name: '@deepseek-ai/dsh-client-ui-billing'
然后配置 DeepSeek API key,二选一:在网页「模型」页填入(会把 DEEPSEEK_API_KEY 写入 ~/.dsh/.credentials.yaml),或导出环境变量:
export DEEPSEEK_API_KEY=sk-...
最后重启 Web UI:
dsh web
浏览器包子包声明 platform: web,这套界面挂在 Web 会话头部,不是终端 TUI。
典型用法¶
装好并配上自己的 DeepSeek API key 之后,打开 Web 会话即可看到头部徽标。不需要向模型下指令,插件不注册面向模型的工具。
可选配置都有默认值。主机端字段如下(摘自仓库 README):
| 字段 | 默认 | 含义 |
|---|---|---|
apiKeyEnv |
DEEPSEEK_API_KEY |
每次调用时解析的凭据引用(环境变量)名 |
baseURL |
$DEEPSEEK_BASE_URL,其次 https://api.deepseek.com |
端点基础地址,会追加 /user/balance |
models |
V4 Flash + V4 Pro | 展示用的模型行,按展示顺序 |
billing.peakHours |
09:00–12:00、14:00–18:00(北京) | 高峰时段窗口 |
billing.models |
官方 V4 费率 | 每个模型的峰/谷单价行 |
只覆盖某个模型、又不想丢掉其余默认行时,提供一个非空的 billing.models 列表;空或省略则回退到源码里的官方默认费率。
主机端最小配置示例(子包 README):
- id: llm-billing
name: '@deepseek-ai/dsh-llm-billing'
config:
# apiKeyEnv: DEEPSEEK_API_KEY # default
# baseURL: https://api.deepseek.com
点开徽标后的操作就是看余额、看分模型估算、点「刷新」。UI 自带的说明文案也写了口径:只预估 DeepSeek 相关模型;1 个任务 = 1 次会话;按全部历史会话平均每模型的 token 消耗,再按当前峰谷单价折算。
适用场景与注意事项¶
比较适合这些情况:
- 日常用 DeepSeek 官方 API 跑 DeepSeek Harness Web UI,希望抬头就能看到人民币余额。
- 8 月 17 日峰谷价生效后,想按当前时段粗估「V4 Flash / V4 Pro 大概还能开几次会话」。
- 需要分模型看历史消耗是否已经足够支撑估算,而不是只看一个总数。
使用前要注意仓库写明的限制:
- 估算不是账单。 实际扣费以 DeepSeek 服务商为准;产品价格也可能再变,官方价目页是权威来源。
- 仅人民币估算。 非人民币余额不换算任务数;多币种换算在仓库里标为暂缓。
- 按需全量折叠。 每次估算都会重新折叠可达会话的用量,成本随会话数量和日志体积增长,不是增量账本。
- 点快照。 不会在长会话里自动刷新。
- 要有自己的 API key。 余额从 DeepSeek API 读取,每个用户用自己的 key。key 只应交给你信任的插件,去请求你配置的
baseURL。
插件以当前 dsh 进程权限运行。安装前阅读仓库源码和 MIT 许可证;需要可复现环境时固定 commit,避免后续推送静默改变安装内容。
小结¶
DeepSeek-Harness-billing-plugin 把官方余额接口和按会话平均用量的剩余任务估算,做成 Web 会话头部的一枚徽章。余额是真的,任务数是估算,费率对齐 8 月 17 日的 V4 峰谷价。目录页与 GitHub 如下:
- 目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/deepseek-harness-billing-plugin/
- GitHub:https://github.com/WilliamLIiii/DeepSeek-Harness-billing-plugin