dsh-cost-chip:在 DSH 里看见本会话花了多少钱

前言

用 DeepSeek Harness(DSH)做长会话时,模型调用会不断追加到本机会话日志里,但界面上通常只有上下文占用比例,看不到把这些 token 折成人民币大概是多少、钱主要花在缓存命中还是输出上。要去对账单或心里估数,往往得事后翻日志或靠经验猜。

dsh-cost-chip 是社区插件,在 DSH Web GUI 输入框下方、上下文百分比圆环旁挂一颗「花费药丸」,用本会机上的会话记录做汇总,并同步官方定价与法定节假日口径。下面按安装、界面能看什么、数字怎么来、可调项与注意事项说明。

这是什么

  • 名称:dsh-cost-chip(npm 包名与仓库同名)
  • 维护者:chenqianes
  • 分类:admin-security(目录归类)
  • 许可:MIT(package.json 与 README 一致)
  • 定位:A cost chip for DeepSeek Harness — 展示当前会话实际花费、按计费桶拆分、今日合计与 DeepSeek 余额;单价从官方定价页同步,每次调用按发生时生效的价表计价。

DSH 生态里能力多以插件形式挂载;插件目录站(如 SkillHub)与 DeepSeek / 幻方无官方从属关系,装插件前建议自行查看源码与许可证。

核心功能

界面上的药丸与弹层

药丸默认显示本会话今日花费(可配置,见下文)。点开弹层可见:

区域 内容
药丸 本会话今日花费(可切换显示模式)
弹层「本会话」 该会话累计,并拆成「今日」与「之前」两行(按本地零点切分)
弹层「成本构成」 对应药丸口径下的金额花在何处:缓存未命中 / 缓存命中 / 输出(金额 + 占比,悬停可看 token 数);同一口径下若用过多个模型会再列模型行
弹层「今日全部」 当天所有会话、所有工作区的花费与调用次数,并按工作区分列(最多 4 行,其余合并);当前工作区行前带 ·
弹层「余额」 DeepSeek 账户余额:已登录走 DSH 账户服务;未登录则请求 GET https://api.deepseek.com/user/balance,60 秒缓存

README 说明:三个计费桶单价可差到约 50 倍,只显示总价难以判断优化方向,故单独列出成本构成。

药丸显示模式

环境变量 DSH_COST_CHIP_CHIP 控制药丸上的数字:

值 药丸显示
today(默认) 本会话今日
total 本会话累计
all 今日全部(所有会话、所有工作区)

弹层第一行「本会话」始终是累计;默认用「今日」是为跨天会话仍能看出当天花了多少。

数字从哪里来

本机会话日志(host 侧)

插件在 host 侧读取 DSH 持久化数据:$DSH_HOME/sessions/<workspace>/<session>/session.*.jsonl.zstd。

要点(来自 README):

  1. 日志为追加式多帧 zstd,需逐帧解压(zlib.zstdDecompressSync);续读只解新增段,减轻轮询时对主线程的压力。
  2. 同一会话目录可能有多份日志(格式升级遗留);按「版本号 > mtime > 大小」取最新一份,避免读到空壳旧文件导致显示为 0。
  3. 每条 assistant/message 带 data.usage(inputTokens / cacheReadTokens / cacheWriteTokens / outputTokens)与 data.message.source(provider, model),按每次调用当时的模型计价;inputTokens 仅表示缓存未命中部分,不会把命中 token 再按全价计一遍。
  4. 累计 / 今日 / 之前与按工作区拆分在同一遍遍历中完成;仅当天有写入的文件会进入读缓存失效逻辑。

工作区展示名取自会话头里的 cwd,而非 $DSH_HOME/sessions 下有损编码的目录键。

单价与峰谷、法定节假日

  • 启动及之后每 12 小时抓取官方定价页 https://api-docs.deepseek.com/zh-cn/quick_start/pricing/,解析逐模型峰谷两套价、高峰时段文案、旧模型别名等。
  • 法定节假日:内置 lib/holidays-data.js(2025–2026)快照;可从默认镜像 timor.tech 按年刷新(7 天缓存);DSH_COST_CHIP_HOLIDAYS 可手工叠加,优先级最高。
  • 价表变更写入 $DSH_HOME/dsh-cost-chip.pricing.json 时间线(最多 24 条);每条调用按发生时刻对应的价表计价,官方调价不会重写历史金额。可用 DSH_COST_CHIP_PRICING_EFFECTIVE_FROM 校准最新调价生效时刻。
  • 同步失败时不换价表,沿用上次成功结果;从未同步成功时才用内置兜底表并标注「内置价表」。

安装与启用

插件按 profile 安装,该 profile 下所有会话生效。桌面端常用 desktop;命令行 dsh web 使用 web profile。

从 npm 安装(README 推荐):

dsh plugin --profile desktop add dsh-cost-chip

装完后重启 DSH(bundle 列表在启动时读取)。卸载:

dsh plugin --profile desktop remove dsh-cost-chip

dsh plugin 透传 profile 内的 pnpm add dsh-cost-chip 并写入 dsh.profile.bundles。包无第三方 npm 依赖。

环境要求

  1. DSH 需具备 webServer / slots / locale 服务(桌面端与 dsh web 均满足)。
  2. Node ≥ 22.15:会话 zstd 解压依赖 zlib.zstdDecompressSync(README 写明;桌面端自带运行时通常无需自管,CLI 跑 dsh web 且系统 Node 过旧可能失败)。

典型用法与配置

安装并重启后,在 Web GUI 输入框下方即可看到花费药丸,点击查看弹层,无需额外命令。

常用环境变量(节选,完整表见 README):

环境变量 默认 作用
DSH_COST_CHIP_CHIP today 药丸显示:today / total / all
DSH_COST_CHIP_PRICING_URL 官方定价页 更换价格来源
DSH_COST_CHIP_PRICING_EFFECTIVE_FROM 空 校准最新调价生效时刻
DSH_COST_CHIP_HOLIDAYS 空 逗号分隔 YYYY-MM-DD,叠加法定假日
DSH_COST_CHIP_HOLIDAYS_URL https://timor.tech/api/holiday/year/{year} 放假日历镜像
DSH_COST_CHIP_BASE_URL https://api.deepseek.com 余额接口基址
DSH_COST_CHIP_SESSIONS_ROOT $DSH_HOME/sessions 会话日志根目录

缓存文件:$DSH_HOME/dsh-cost-chip.pricing.json、$DSH_HOME/dsh-cost-chip.holidays.json;删除后可强制重新拉取。

调价生效时刻示例(README,PowerShell 语法;Linux/macOS 可设同名环境变量):

$env:DSH_COST_CHIP_PRICING_EFFECTIVE_FROM = '2026-10-01T00:00:00+08:00'

适用场景与注意

适合:长期在 DSH 里做 Agent / 对话开发、希望实时对照本会话与今日花费、区分缓存与输出成本、并顺带查看余额的用户。

注意:

  1. 插件以当前 DSH 进程权限读本机 $DSH_HOME 下会话与缓存;对话正文不读取、不上传,汇总不出本机(除定价页、放假日历镜像、余额接口等 README 列明的对外请求)。
  2. 未登录查余额时可能使用 $DSH_HOME/.credentials.yaml 中的 DEEPSEEK_API_KEY 请求 api.deepseek.com。
  3. 安装前请阅读仓库源码与 MIT 许可证;admin-security 分类表示涉及账户与本地敏感路径,请自行评估是否纳入工作流。
  4. 修改 lib/index.js(host)需重启;lib/client.js 支持热更。

结尾

dsh-cost-chip 把「花了多少钱、花在哪、今天一共多少、账户还剩多少」收到上下文环旁的一颗药丸里,计价跟官方页与节假日规则走,历史调用不被事后改价表重写。需要插件详情或 issue 可走目录页与 GitHub:

  • 目录页:https://www.skillhub.cn/plugins/chenqianes/dsh-cost-chip
  • 仓库:https://github.com/chenqianes/dsh-cost-chip
羽毛球分组比赛记分
小程序二维码

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

Xiaoye