Nalleyer/dsh_session_cost

dsh_session_cost

show cost for your current dsh session

미분류

dsh-session-cost

在 DeepSeek Harness Desktop 和 Web 的输入框下方信息栏里,作为官方统计控件(轮次/速度、token 用量)之后的第三个控件显示本会话的估算费用。点击金额,可以查看 token 用量、缓存命中率、当前单价和各模型的费用。

◔ 1 轮 14 步 · 256 tok/s      ▤ 409K tok · 缓存命中 95%      ▤ ¥0.1335 · 高峰

费用按 DeepSeek API 公开标价估算,实际扣款以服务商账单为准。插件只记录启用后收到的用量,安装前的聊天记录不会自动补算。

支持的模型

请求模型名计费方式
deepseek-flash按 V4.1 Flash 单价计算
deepseek-v4-pro按 Pro 单价计算
deepseek-v4-flash2026-09-10 12:00 起按 V4.1 Flash 单价计算
deepseek-v4-flash-vision-exp2026-09-10 12:00 起按 V4.1 Flash 单价计算

旧模型名的兼容路由见 DeepSeek 官方更新日志。插件按消息发生时的规则计价,因此此前的记录仍使用对应时期的价格。

会话中只要出现不支持的模型,插件就会隐藏整个会话的费用角标,避免只显示部分费用。没有收到有效用量的会话也不显示角标。Headless 没有聊天界面,无法显示角标。

安装

Desktop

  1. 在侧栏打开「插件(Plugins)」,选择「添加插件(Add plugin)」。
  2. 输入下方仓库地址,安装后启用 dsh-session-cost。
  3. 完整退出 Desktop,包括托盘进程,再重新打开。
https://github.com/Nalleyer/dsh_session_cost

Desktop 使用 desktop profile。装在 web profile 中的插件不会自动在 Desktop 中启用。

升级时按插件页提供的操作卸载后重装,并在详情页确认版本。GitHub 安装读取远端仓库,本地尚未推送的改动不会被安装。

Web

dsh plugin --profile web add https://github.com/Nalleyer/dsh_session_cost

安装后重启使用 web profile 的 DSH host,再刷新页面。

使用

用支持的模型完成一次回复后,费用角标会在下一次刷新时出现;刷新间隔为 5 秒。点击角标打开明细,点击面板外部或按 Esc 关闭。

明细内容说明
总费用最多显示六位小数
计价当前高峰/空闲状态,输入、缓存读取和输出的单价,单位为每百万 tokens
模型最近计费的模型;发生兼容路由时显示「请求名 → 实际计费名」
时段下次单价变化时间,以及高峰、空闲和平价记录各自的费用
用量未命中缓存的输入、缓存读取、输出 tokens,缓存命中率和请求数
时间保留明细中的首次和最近计费时间
按模型会话使用过多个模型时,列出各模型的费用

角标上的「高峰/空闲」表示最近一条计费消息所处的时段。明细里的单价则按最近计费的模型在当前时刻查询,两者可能不同。当前单价变化不会改变已经记录的费用。

默认情况下,英文界面显示美元,其他语言显示人民币;也可以通过 displayCurrency 固定币种。两种金额分别按官方价格表计算,不通过汇率换算。

明细只在面板打开时请求,打开期间每 5 秒刷新。面板底部会显示价格数据的核对日期;早期明细已被归档时,也会注明记录条数。

费用怎么算

插件根据每条助手消息附带的 token 用量,按消息完成时刻取价。输入、缓存读取和输出分别计算,再累计到会话总额。

当前价格表采用北京时间(Asia/Shanghai):

  • 周一至周五(不含节假日)的 09:00–12:00 和 14:00–18:00 为高峰时段。
  • 其余时段为空闲时段,包括周末和节假日全天;空闲单价为高峰的一半。周末补班仍按空闲价计算。

节假日按国务院公布的完整放假区间处理,包含调休日。当前内置 2026 年放假安排,与 官方定价说明中的周末及节假日空闲规则配合使用。

日历随插件版本维护。未收录的年份继续按星期和每日时段估算,角标和明细会显示“节假日数据缺失”的提示;这些年份的节假日费用可能偏高。计算下次单价变化时间时会跳过已收录的假期,能跨越春节等长假。

价格表随插件发布,由作者维护在 lib/pricing-data.json,不会自动从官网获取更新。官方调价后,需要更新插件。用户配置不提供价格覆盖选项。

估算不包含订阅套餐和第三方渠道折扣,也无法反映本地模型的实际成本。其他渠道使用相同模型名时,插件仍按公开 API 标价计算。

记录保存在哪里

账本默认保存在当前 DSH 数据目录下:

$DSH_HOME/storages/session-cost.json

正常退出后重新打开,插件会读取已保存的金额。Web 和 Desktop 只有使用同一数据目录时,才会读取同一份账本。

每个会话默认保留 2000 条逐条明细。超出后,早期记录只保留汇总金额和用量,仍计入总额,但不再参与按模型、按时段拆分;明细中的时间范围也只涵盖保留的记录。

价格或节假日规则更新后,插件会在启动时按各条明细的原始时间重新计价。已归档的汇总保留原金额,无法逐条重算。已归档金额若曾缺少节假日数据,对应年份的提示会保留;日历补齐后显示“节假日未校准”,说明这部分仍是原估算金额。升级到 1.2.1 后,保留明细中此前误按 Flash 计价的 Pro 记录会改按 Pro 单价计算,已归档的部分无法修正。

配置

默认配置见 cordis.patch.yml。如需调整,在当前 profile 的配置层中覆盖 session-cost 对应的配置。

配置项默认值用途
displayCurrencyauto跟随界面语言;设为 CNY 或 USD 可固定币种
symbol¥人民币显示符号
symbolUsd$美元显示符号
persistPath$DSH_HOME/storages/session-cost.json账本文件路径
maxMessagesPerSession2000每个会话保留的逐条明细数,影响可拆分和重算的范围
loopbackOnlytrue查询端点只允许回环地址访问

安装后没有显示金额

依次检查:

  1. 插件是否已启用,并安装在当前运行的 profile 中。Desktop 用 desktop,Web 用 web。
  2. 安装后是否重启了对应的 host。Desktop 需要退出托盘进程,Web 需要刷新页面。
  3. 启用插件后,是否用支持的模型完成过一次回复。旧聊天记录不会补算,回复还需要携带有效用量。
  4. 同一会话是否出现过不支持的模型。出现后,整个会话的费用角标会隐藏。
  5. Web 是否通过远程地址访问。loopbackOnly: true 时,费用查询只接受回环连接。

本地开发

需要 Node.js 20 或更新版本。在仓库目录安装依赖:

npm ci

Windows 安装助手通过官方 CLI 链接当前仓库:

# Web:使用 PATH 中的 dsh
powershell -ExecutionPolicy Bypass -File scripts/install.ps1 -Profile web

# Desktop:使用内置 CLI;自定义安装时替换为实际路径
$desktopCli = Join-Path $env:LOCALAPPDATA 'Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd'
powershell -ExecutionPolicy Bypass -File scripts/install.ps1 -Profile desktop -DshCommand $desktopCli

自定义数据目录可加 -DshHome <path>。助手只在安装命令执行期间设置 DSH_HOME,结束后恢复原值;运行 host 时也需要使用对应的数据目录。

CLI 和 Desktop 可能来自不同版本的安装,给 Desktop 安装本地插件时应使用其内置 CLI。源码修改后重启对应 host,Web 还需刷新页面。

检查与测试

npm run check
npm test

check 检查三个 lib JavaScript 文件的语法。测试覆盖峰谷计价、模型路由、账本、HTTP 端点和客户端交互。

客户端文件无需构建。客户端测试通过 jsdom 和 React 渲染组件,检查控件注册与结构、与官方统计控件一致的字号样式、明细开关、语言切换及无可用记录时的隐藏行为;缺少开发依赖时会跳过这些测试,检查结果时应留意跳过项。

现有兼容性检查记录针对官方 Desktop 0.2.1-rc.2(2026-10-22):已核对内置模块,并在隔离环境检查 host 记账、HTTP 端点及客户端注册与卸载。0.2.1 起官方信息栏改为 conversation.composer.dock 中的 activity(order 0)与 usage(order 1)两个统计控件,不再有 [data-composer-stats] 行;本插件随之注册为 order 2 的同款控件,并沿用官方的字号、行高、圆角与分隔点样式(旧版把角标门户进 stats 行的做法已移除)。Desktop 的 GitHub 安装流程、原生窗口布局和实际字体渲染仍需在应用中验收。

安装后可用以下操作验收:完成一次 Flash 回复并展开明细;用 Pro 检查计费模型;切换中英文和会话;完整退出后重开,再继续聊天,确认金额保留且请求数继续增加。

文件与查询接口

文件职责
lib/pricing-data.json模型、历史价格、峰谷窗口、年度节假日、兼容路由和来源日期
lib/pricing.js计价函数
lib/index.jshost 记账、持久化和查询端点
lib/client.js费用角标和明细面板
test/自动化测试
tools/本地 CDP 探针,用于检查实际页面的 DOM、样式和控制台错误,不随包发布

host 提供两个 GET 端点,默认仅允许回环访问:

/session-cost/session/<id>
/session-cost/session/<id>/detail

概览返回 cost(人民币)、costUsd(美元)、token 用量、calls、lastMode、supported、missingHolidayYears(尚未应用节假日规则的年份)、holidayCalendarYears(已收录的年份)和显示配置。明细另含 cacheHitPercent、firstTime、lastTime、models[]、modes、pricing、nextSwitch 和 trimmed。

supported: false 时客户端隐藏角标。未知会话返回零汇总,明细的 pricing 为 null。价格表更新后,插件会重新判断已记录的不支持模型名是否已获支持;旧账本缺少模型名且仍有计费记录时,会保留隐藏状态。

客户端注册到 conversation.composer.dock,id 为 session-cost、order 为 2,排在官方 activity(order 0)与 usage(order 1)之后;控件在 data-composer-stat 中携带自己的 id,样式与官方统计控件一致。dsh.client.platform 的 web 表示客户端模块平台,Desktop 的 profile 名称仍是 desktop。

许可

MIT