Bundle
dsh-deepseek-billing
DSH WebUI 插件:侧边栏 DeepSeek 账户余额显示与按会话费用估算
- Source
- Jolly-J
- stars
- 4 stars
- License
- MIT
- Updated
- Updated 10 hours ago
Readme
# dsh-deepseek-billing [](https://awesome-dsh-plugin.com) 给 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(DSH)网页版装一个**余额小卡片**:左侧边栏底部常驻显示你的 DeepSeek **账户余额**,以及**当前会话花了多少钱**。不用翻网页、不用开账单,一眼看住钱包。 ## 效果图 <img src="docs/images/hero.png" width="720" alt="DSH 余额卡片 封面图" /> | 实际页面截图 1 | 实际页面截图 2 | | --- | --- | | <img src="docs/images/market-1.jpg" width="400" alt="实际页面截图 1" /> | <img src="docs/images/market-2.jpg" width="400" alt="实际页面截图 2" /> | 卡片能做什么: - **一行摘要**:状态点 · `余额:¥xx.xx元` · `会话:¥x.xxx` · 刷新按钮 · 展开箭头; - **点击展开详情**:充值/赠送余额、token 明细(输入/缓存命中/输出)、缓存命中率、输入与输出费用小计、当前费率说明(标注"估算,非账单"); - 数字变化时是**滚动动画**;切换会话自动跟着变; - 侧边栏收起(窄栏)时自动隐藏,不挡东西; - 每 60 秒自动刷新一次,也可以随时点刷新按钮。 ## 安装(选一种就行) ### 方式一:插件市场(最推荐) 在 DSH 网页版里打开**插件市场**(dsh-market),搜索 `dsh-deepseek-billing`,点安装。装完重启 `dsh web` 即可。 ### 方式二:一条命令 ```sh dsh plugin --profile web add https://github.com/Jolly-J/dsh-deepseek-billing.git ``` 装完重启 `dsh web`(`lib/` 产物已随仓库提交,无需本地构建)。 ### 方式三:让 AI 帮你装 把本仓库地址发给你的 DSH 智能体,对它说一句: > 帮我把这个插件装到我的 DSH 里:<仓库地址> 智能体只需执行上面的官方 `dsh plugin add` 命令并提示你重启 `dsh web`,不需要修改 DSH 源码。 ### 更新 ```sh dsh plugin --profile web update dsh-deepseek-billing ``` 更新后重启 `dsh web`。 ## 计费是怎么算的 卡片上的「会话费用」是**逐条请求计价、滚动求和**,而不是"把所有 token 加成一个总数,再乘以一个当前费率"。它也不保存按模型或时段的明细分桶,只给你一个会话总额——但总额的每一分钱,都来自对每条回复的独立计价。 每一条成功的助手回复,按它**自己的三个属性**计一次价: 1. **模型家族**:回复所用模型属于 Flash 系列(含 `deepseek-flash` 与仍在路由的旧名 `deepseek-v4-flash`、`deepseek-v4-flash-vision-exp`)就用 Flash 价表;其它模型(含无法识别的)按 Pro 价表计。官方自 2026-09-14 12:00(北京时间)起把 `deepseek-v4-pro` 的请求全部路由到 V4.1-Flash,插件从同一时刻起也改按 Flash 价表计它; 2. **时间时段**:按北京时间的官方调价节点分段——**2026-08-17 00:00 之前**按旧价表(不分峰谷);**2026-08-17 00:00 起**启用峰谷定价,高峰为 9:00–12:00、14:00–18:00,当时不分工作日与周末;**2026-09-10 12:00 起** Flash 系列降价,高峰同时收窄为**工作日**的 9:00–12:00、14:00–18:00,周末与其余时段一律算空闲时段; 3. **Token 明细**:缓存命中、未命中输入、输出三类 token 各用各的费率。 单条回复的计价公式: ```text 费用 = (未命中输入 × 未命中费率 + 缓存命中 × 命中费率 + 输出 × 输出费率) ÷ 1,000,000 ``` 内置价表(元 / 百万 token,生效时间均为北京时间): | 模型 | 生效时间 | 时段 | 缓存命中 | 未命中输入 | 输出 | | --- | --- | --- | ---: | ---: | ---: | | DeepSeek-V4.1-Flash | 2026-09-10 12:00 起 | 空闲(含周末) | 0.02 | 1.0 | 4.0 | | DeepSeek-V4.1-Flash | 2026-09-10 12:00 起 | 高峰(工作日) | 0.04 | 2.0 | 8.0 | | DeepSeek-V4-Flash | 2026-08-17 00:00 起 | 空闲 | 0.05 | 1.5 | 4.5 | | DeepSeek-V4-Flash | 2026-08-17 00:00 起 | 高峰(每天) | 0.10 | 3.0 | 9.0 | | DeepSeek-V4-Flash | 2026-08-17 之前 | 不分峰谷 | 0.02 | 1.0 | 2.0 | | DeepSeek-V4-Pro | 2026-08-17 之前 | 不分峰谷 | 0.025 | 3.0 | 6.0 | | DeepSeek-V4-Pro | 2026-08-17 00:00 起 | 空闲 | 0.15 | 4.5 | 13.5 | | DeepSeek-V4-Pro | 2026-08-17 00:00 起 | 高峰(工作日) | 0.30 | 9.0 | 27.0 | > 2026-09-14 12:00(北京时间)起,`deepseek-v4-pro` 的请求由官方路由到 V4.1-Flash,按上表 Flash 价计费。 举个例子:一个会话里有三条回复,分别是 Flash·闲时、Pro·高峰、Pro·闲时——卡片显示的金额就是这三条**各自按自己的价表算出后相加**的结果。它不会把三次的 token 合并后套用某一个费率,也不会用"当前选中的模型"去重算历史回复;每条回复的账,只跟它自己有关。 界面汇总口径: - 顶部一行是**会话总额**,展开区给出**输入费用 / 输出费用**两个小计; - token 统计为未命中输入、缓存命中、输出三类之和,并显示**缓存命中率**; - 展开区底部的"费率说明"显示**最后一条回复的模型**与**当前时段**的单价(不是该会话的加权平均),换了模型或跨过峰谷/调价时点就会跟着变。 以下内容**不计入**会话费用,详见下一节:失败重试、后台模型调用(会话标题生成、联网搜索查询等)、reasoning token(目前只统计、不计价)、子代理会话的用量。 ## 数据从哪来 - **余额**:直接调用 DeepSeek 官方余额接口,用的就是你模型正在用的**同一把 API Key**,不用另外配置; - **会话费用**:读取 DSH 自己记录的每次模型调用用量,按上节的方式逐条计价后累加。 ## 密钥安全(重要,请花一分钟读) 插件**不存、不偷、不外传你的 API Key**: - 它只是向 DSH 要"模型正在用的那把钥匙"(`DEEPSEEK_API_KEY`),临时拿来调一次官方余额接口,用完即弃; - 密钥只在本机插件进程内存里存在一瞬间,只放进发往 DeepSeek 官方的请求头(`Authorization`);**不进命令行参数、不进任何子进程的环境变量、不落盘、不进日志、不出现在网页接口返回里**; - 仓库代码里没有任何密钥,只有环境变量的**名字** `DEEPSEEK_API_KEY`。 已知的两个通用风险(不是本插件独有):同机器的同权限进程理论上能读到宿主进程的内存;局域网里能访问你 DSH 网页端口的人可以看到你的**余额数字**(看不到密钥)。介意的话请在部署层给 `/billing/status` 加访问限制。 ## 费用准确性说明(与余额对账必读) 卡片上的"会话费用"是**估算值,不是账单**:官方刊例价 × 会话内**成功请求**的用量。以下三样是会话日志看不见、但余额会扣的: 1. **失败重试**:模型请求失败重试时,每次尝试的输入 token 都会被计费,但只有最终成功的那次会写进会话日志; 2. **后台模型调用**:会话标题生成、联网搜索的查询等不在会话 usage 里; 3. **余额异步入账**:DeepSeek 结算有延迟,余额读数可能滞后或提前包含窗口外的消费。 **作者实测对账案例**(7 分钟窗口):余额 -¥1.36,会话估算 +¥1.035,差 ¥0.325——正是上述不可见计费。**余额是唯一真值,卡片费用仅作归因参考。** ## 已知限制 - 费用只算**当前会话**,子代理会话暂未汇总; - 不保存"按模型 × 时段"的分组明细,界面只显示会话总额与输入/输出小计; - reasoning token 目前只统计、不计价; - 价格表内置在代码里,官方调价后需要更新插件版本(官方没有价格查询接口);调价时在 `src/pricing.ts` 的价表里**追加一段**并重新发版即可,历史会话仍按当时的费率逐条计费; - 文案目前是中文。 ## 开发与维护 用户安装直接使用仓库内提交的 `lib/` 产物。`src/` 是唯一源码真源,根目录不保留源码或 bundle 副本。官方 DSH 的客户端 bundle 运行在 Vite 模块图之外,因此发布产物同时包含 `lib/client.js` 和 `lib/client.js.map`。 构建配置复用 DSH 官方的客户端插件预设,所以开发 checkout 必须位于 DSH monorepo 的扩展目录: ```sh git clone https://github.com/deepseek-ai/deepseek-harness.git cd deepseek-harness git checkout aa8262ec091698bae9a6b04773a6b5b06ad4aef2 # CI 钉住的同一个 ref git clone https://github.com/Jolly-J/dsh-deepseek-billing.git \ packages/extensions/dsh-deepseek-billing pnpm install --no-frozen-lockfile pnpm run build:lib:host pnpm --filter dsh-deepseek-billing verify ``` harness **必须按 commit 钉住**,别跟默认分支:插件的 `devDependencies` 用 `workspace:^` 指向官方包,上游一旦改名(例如 2026-09-10 把 `@deepseek-ai/dsh-client-runtime` 拆成 renderer/session/store),`pnpm install` 就会直接报 `ERR_PNPM_WORKSPACE_PKG_NOT_FOUND`。**升级这个 ref 时,要同步改 `src/client/` 里的类型导入**:客户端上下文现在从 `@deepseek-ai/cordis` 取 `Context`,`ctx.slots` 由 `@deepseek-ai/dsh-client-ui-renderer` 声明,`useSessions` 由 `@deepseek-ai/dsh-client-ui-session` 声明,`package.json` 的 `dsh.client.inject` 也要跟着对齐。 `build:lib:host` 先生成 DSH Typert remote contracts;新 checkout 缺少这些产物时,客户端类型聚合无法解析 `/remote` 入口。随后 `verify` 会依次执行插件类型构建、官方 client bundle、价格与用量单元测试,以及发布目录和页脚布局约定检查。GitHub Actions 使用相同顺序。 > 注意:上游 `tsconfig.host.json` 的测试 glob(`packages/*/*/tests/**/*.ts`)会把第三方插件的 `tests/` 拉进 host 聚合编译,导致 TS6307。手动 checkout 构建时,请把 `packages/extensions/dsh-deepseek-billing/tests` 加入该文件 `exclude` 数组;本仓库 CI 已自动注入这一步。 目录职责: - `src/`:源码和可直接测试的计费模块; - `lib/`:由 `npm run build` 生成并提交的安装产物; - `tests/`:价格、用量和发布产物回归测试; - `docs/images/`:README 与插件市场截图; - `cordis.patch.yml`:让 `dsh plugin add` 自动挂载本插件的组合包声明。 ## License [MIT](LICENSE)
Install
dsh plugin --profile web add github:Jolly-J/dsh-deepseek-billing
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-deepseek-billing from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.