DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

FeiYuSS /

FeiYuSS/dsh-cny-cost

Verified

DSH Web 插件:按 DeepSeek 官方定价把会话 token 用量折算成理论人民币成本,在输入框下方和每个回合末尾显示,可展开按「模型 × 时段」的计价明细。

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@c6e04c0e

dsh-cny-cost · Token 用量实时计价

English | 中文

CI License: MIT

English: dsh-cny-cost is a DeepSeek Harness web plugin that turns the token usage of DeepSeek official models into a theoretical CNY cost using the official peak/off-peak pricing. The cost appears under the composer and at the end of every completed turn, with a per-model, per-period breakdown. Install it from the Plugins page with github:FeiYuSS/dsh-cny-cost. MIT licensed.

DSH(DeepSeek Harness)Web 插件:在使用 DeepSeek 官方模型时,按官方公开定价把会话的 token 用量换算成理论人民币成本,并显示在三处:

位置 内容
输入框下方统计条(conversation.composer.dock) ¥0.0123 费用 pill(与宿主用量统计同款图标+数值样式;≈ 只出现在悬停气泡与明细面板里);悬停显示气泡,点击展开会话费用明细
每个已完成回合的操作行(conversation.chat.assistant-actions,排在「复制/点赞/用量统计/时间」行尾) ¥0.0042 pill;悬停显示「本回合 / 累计 / 分桶 / 时段」气泡,点击展开本回合明细
费用明细面板 总费用、按「模型 × 时段」的逐桶计算(tokens × 单价 = 小计)、时段拆分、每回合表、定价快照与口径说明

非 DeepSeek 官方模型不显示费用;混合会话只对官方模型计费(token 总数仍按宿主口径包含全部调用),并在面板中提示未计价次数。

两个 pill 的交互与宿主统计控件一致:hover 出现底色,悬停片刻(或键盘聚焦)出现读数气泡,点击在控件上方展开明细面板,Esc 或点击面板外关闭。

回合操作行里的费用 pill 依赖会话日志里记录的最后一条 Assistant 消息 id 与回合对应。 插件更新 Host 半侧后需要重启 DSH 才会切换到该精确映射;重启前客户端会退化为从 Chat 视图反查回合,功能一致。

官方定价自动检查(可选,默认开启)

插件会定期检查 DeepSeek 官方定价是否变化,变化时弹窗询问是否新建会话更新计费规则:

  • 纯浏览器实现:官方文档站不返回 CORS 头,网页无法直接读取 api-docs.deepseek.com(命令行工具不受影响)。仓库里的 GitHub Actions 每小时把官方 pricing.md 解析成 pricing/official-zh.json 静态快照,浏览器插件轮询 raw.githubusercontent.com(该域允许 CORS)。运行时没有自建服务,Host 半侧也没有新增接口。
  • 变化弹窗:价格/规则与已确认快照不同时,用 DSH 通用组件样式弹出全局对话框,列出逐条变化。点「新建会话并更新规则」会新建会话并自动填入更新提示词:Agent 核对官方页面、修改 logic.js 的默认价格/节假日/模型别名、更新测试与文档,然后汇报;不会自动发布。
  • 设置标签页:设置 → 内置插件 →「Token 计价」可配置自动检查开关、检查周期(1 小时–30 天)、立即检查、手动发起规则更新;同时显示上次/下次检查、已确认快照、镜像同步时间与待确认变化。
  • 设置保存位置:浏览器 localStorage(每个浏览器各自保存),不写入 profile 配置。
  • 延迟与维护:镜像每小时同步一次,最多约 1 小时延迟;若镜像超过 7 天未更新,设置页会提示检查 GitHub Actions。官方改价后,需要按更新会话的产出发布新版本插件,已安装用户才会拿到新计价规则。

设计取舍与状态机见 docs/pricing-watch.md。

计价依据

官方文档「模型 & 价格」:https://api-docs.deepseek.com/zh-cn/quick_start/pricing/ (内置快照日期 2026-11-10)。单位:元 / 百万 tokens。

模型 输入·缓存命中(空闲/高峰) 输入·缓存未命中(空闲/高峰) 输出(空闲/高峰)
deepseek-flash(含 deepseek-v4-flash、deepseek-v4-flash-vision-exp 别名) 0.02 / 0.04 1 / 2 4 / 8
deepseek-v4-pro 0.15 / 0.30 4.5 / 9.0 13.5 / 27.0
  • 高峰:北京时间周一至周五(不含中国法定节假日)09:00–12:00、14:00–18:00;其余时段为空闲(半价)。
  • 内置 2026 年法定节假日表(国办发明电〔2025〕7号)。跨年或官方调整时请更新 holidays 配置。
  • 价格与节假日是手工维护的快照(logic.js 的 DEFAULT_FAMILIES / DEFAULT_HOLIDAYS,快照日期 2026-11-10)。 官方调价或发布新一年节假日安排后需要更新,建议至少每季度对照一次官方价格页;跨年后 rateDate 与 holidays 都应重新核对(2027 年节假日目前尚未内置)。
  • 计费 = 命中输入 + 未命中输入 + 输出;缓存写入默认不计价(writePrice: 0)。
  • 推理 token 已包含在输出 tokens 中,不重复计算。
  • Search / Fetch 按「次」计费,与 token 无关,不计入本插件。
  • 内部以整数「纳元」(1 元 = 1e9 纳元)累加,避免浮点误差;费用按请求完成事件的时间戳归入高峰/空闲。 配置的单价格式是「元 / 百万 tokens」,精度为 0.001 元/百万 tokens(即 1 纳元/token);更细的价格会被 拒绝激活而不是静默取整,保证明细公式与计费一致。

数据一致性

费用使用的 token 分桶与宿主界面显示的 token 用量完全同源同口径:

  • 插件在 Host 侧注册两个会话投影(deepseekTokenCost、deepseekTurnCost),折叠已提交的会话日志;
  • 折叠规则镜像宿主 @deepseek-ai/dsh-token-meter 的 tokenUsage 投影:同一 turn/step 的重复 usage 样本按替换处理、llm/retry-started 关闭替换区间、assistant/attempt 取 stream 中最后一次 usage;
  • 因此费用中的 hit / miss / write / output 总量恒等于宿主 tokenUsage 投影的对应字段(usage 上报什么值就 用什么值,不做四舍五入或截断)。
  • 会话 token 总数包含非官方模型的调用(与宿主口径一致),但费用只对配置了价格的模型计价;未计价的调用 次数会在明细面板里提示。

插件重装或新开会话时,投影会按需回填整个日志,历史会话也会显示正确费用。

安装

本包是标准 DSH bundle:安装时 dsh.bundle.patch 声明的 cordis.patch.yml 会作为 bundle 层自动应用,不需要再把其中的 insert 抄进配置档 patch(重复插入会产生同 id 冲突)。

从 GitHub 安装(推荐)

在 DSH 侧边栏「插件」页的安装入口填入下面的安装地址(也接受 https://github.com/FeiYuSS/dsh-cny-cost):

github:FeiYuSS/dsh-cny-cost

等价的 CLI(<profile> 换成你的配置档名,例如 desktop):

dsh plugin --profile <profile> add github:FeiYuSS/dsh-cny-cost

DSH 会以 git 依赖通过 pnpm 安装本包,并按 dsh.bundle 声明启用。首次安装后刷新一次 Harness 页面,浏览器半侧模块即会加载。非官方 bundle 升级需要先卸载再安装新版。

本地目录安装(开发用)

在插件页安装绝对路径目录(也接受 file: / link: 绝对路径),例如:

C:\Users\you\src\dsh-cny-cost

本包没有构建步骤,改完源码后重装或等待 HMR 即可;页面未出现新控件时刷新一次 Harness 页面。

配置

在配置档的 patch 中覆盖本插件的 config(整段替换;未写字段取默认值):

- id: cny-cost
  name: dsh-cny-cost
  config:
    rateDate: '2026-11-10'
    models:
      deepseek-flash: flash
      deepseek-v4-flash: flash
      deepseek-v4-flash-vision-exp: flash
      deepseek-v4-pro: pro
    families:
      flash:
        peak: { hit: 0.04, miss: 2, out: 8 }
        idle: { hit: 0.02, miss: 1, out: 4 }
      pro:
        peak: { hit: 0.30, miss: 9, out: 27 }
        idle: { hit: 0.15, miss: 4.5, out: 13.5 }
    writePrice: 0
    periodMode: auto        # auto | peak | idle(后两者用于自测或保守估计)
    # holidays 是整段替换:不写则使用内置 2026 年表;一旦提供就完全覆盖内置表,
    # 所以自定义时要写完整的法定节假日列表,否则会漏掉其余假期、把高价时段算多。
    # holidays:
    #   - '2026-01-01'
    #   - '2026-10-01'

配置改动后插件会重启并重新折叠日志,历史会话费用随之更新。配置字段有拼写错误时插件会拒绝激活并 在日志中给出明确原因。

已知边界

  • 展示的是理论成本,不是账单;实际扣费以 provider 返回的 usage 与官方结算为准。
  • 高峰期边界时刻附近按请求完成时间归类,可能有秒级偏差。
  • 调休上班的周末仍按「周一到周五才是工作日」的规则计为空闲(法定节假日表只覆盖放假日), 与把「工作日」理解为含调休的口径不同;需要保守估计时可用 periodMode: peak。
  • 子代理是独立会话,各自显示自己会话的费用,不汇总进父会话。
  • fork 出的子会话包含被复制历史的费用(与宿主 tokenUsage 口径一致)。
  • 已压缩/剪枝的历史仍计入费用(计费是全会话口径)。
  • 未上报 usage 的尝试(如中断且无 usage)不计费。
  • 每个回合的明细只展示该回合的聚合结果;一个回合内混用多个模型时会提示「分模型单价见会话费用明细」。
  • 自动定价检查只在 Harness 页面打开时轮询;页面关闭期间不检查,下次打开会按周期补检。
  • 官方文档站没有 CORS 头,浏览器无法直连官方页;检测基于 GitHub Actions 维护的静态镜像,最多约 1 小时延迟。
  • 自动检查的设置保存在当前浏览器的 localStorage,不同浏览器/设备各自独立。

开发与测试

纯计价/折叠逻辑在 logic.js,不依赖任何包,可直接用 Node 测试:

npm test                      # node --test(计价/折叠/客户端模块/镜像校验,共 34 项)
npm run check:locale          # 校验 client.js 用到的文案键在中英文里都存在
npm run check:package         # 校验包名、patch 行、loader id、exports、镜像与 client 基线一致
npm run check                 # 以上全部
npm run sync:pricing          # 手动拉取官方 pricing.md 并刷新 pricing/official-zh.json

测试覆盖峰谷边界(含周末、法定节假日)、模型别名、缓存分桶、同 step 替换、重试另计、 逐回合落账、金额精度、配置校验与视图/状态校验;test/client-pricing.test.mjs 还会从 client.js 中提取浏览器内置的定价检查模块,校验其解析/差异/提示词与 Node 版一致, 并模拟加载客户端模块确认四个 slot 注册。

装好本插件后还可以用真实会话日志做端到端核对(需要 DSH_HOME 指向 DSH 主目录):

# Windows (PowerShell)
$env:DSH_HOME="$env:USERPROFILE\.dsh"; node scripts/verify-against-host.mjs <sessionId>
# macOS / Linux
DSH_HOME="$HOME/.dsh" node scripts/verify-against-host.mjs <sessionId>

脚本会用独立实现的参考折叠与插件折叠各算一遍,并与宿主 tokenUsage 投影的持久化 检查点逐项比对。

贡献

欢迎提 Issue 和 Pull Request。提交前请跑一遍 npm run check;CI 会在 Node 22 和 24 上运行同样的检查。

许可证

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit c6e04c0ea425

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout