前言¶
在 DeepSeek Harness(DSH)里跑长会话时,token 会分散在多轮、多次 attempt 和不同模型路由上。Harness 内置 meter 能反映用量,但若要在 Web 界面里直接看到「这一轮花了多少、本会话累计多少、账户还剩多少」,并把历史轮次留成可复查的记录,通常还要自己查日志或外接脚本。
下面介绍社区插件 dsh-token-cost(仓库 BigFatFish4Wm/dsh-token-cost)。它在每一轮已完成对话下方挂载用量条,按会话与轮次把工作区内的 JSON 账本持久化,并可选读取 DeepSeek 账户余额或预算/手动余额。插件由 BigFatFish4Wm 维护,在 SkillHub 目录中归类为 admin-security;DSH 生态主张「一切皆插件」,SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-token-cost 是面向 Harness Web UI 的 DSH 插件:在每轮对话尾部显示本轮 token 用量、估算费用、会话累计与当前余额;数据按「会话 + 轮次」写入工作区 .dsh-token-cost/ledger.json,刷新页面、重开 Harness 或重新打开历史会话后仍可还原,后续对话不会覆盖旧记录。
Host 侧通过 tokenCost 投影从 Session 事件日志折叠出每轮 attempts、tokens 与费用;Web 客户端在 conversation.chat.turnTail 槽位(条目 id token-cost,order = 30)订阅该投影,余额摘要经 GET /api/token-cost/summary 获取。余额与费用仅用于展示,不参与 Harness 的上下文或压缩决策。
核心功能¶
每轮用量条与明细¶
收起态可显示本轮总 tokens、费用、本会话累计和当前余额(显示项均可配置)。展开后可查看:
- 输入、输出、缓存读取、缓存写入、推理 tokens 及请求数、模型;
- 本轮费用、会话累计、工作区账本累计;
- 各
provider/model路由的 tokens、费用与每百万 token 单价; - 余额来源、钱包明细、更新时间;
- 账本文件绝对路径与累计已保存轮数。
界面位置在内置交付文件卡片、计划卡片之后、完成轮次操作行之前,不会替换任何内置条目。插件内置简体中文与英文,数字、时间和费用随当前 Harness 语言格式化。
按模型与时段计价¶
计价口径与 Harness 内置 token-meter 一致:inputTokens 为未缓存输入,cacheReadTokens / cacheWriteTokens 分别计费,outputTokens 含推理(reasoningTokens 不重复计费)。每条 Assistant 的 usage 按 assistant/message / assistant/attempt 事件时间判断高峰或空闲窗口,再套用对应单价;同轮混用多个模型时分别计价并汇总。默认单价参考 DeepSeek 开放平台 2026-10-24 公开价(部署时请以官方价格页为准并在配置中覆盖)。
modelPricing 支持按 provider/model、provider/* 等键覆盖单价。重试(llm/retry-started)会累加重试 attempt 的用量;若某条 Assistant 未上报 usage,界面会标「部分未上报」,费用显示为下限(≥)。
余额来源¶
balance.mode 支持:
account:通过 Host 的deepseekAccount.getBalance()读取 DeepSeek 账户余额(含充值与赠送钱包);budget:初始预算减去工作区账本累计消费;manual:固定手动余额;auto:依次尝试 account → budget → manual;off:不显示余额。
Host 对账户余额有进程内缓存;前端刷新最短间隔 15 秒,明细内可手动「刷新」。
工作区账本与安全¶
默认账本路径:
<session workspace>/.dsh-token-cost/ledger.json
写入采用临时文件加 rename 的原子替换;损坏文件会先改名为 ledger.json.corrupt-<timestamp> 再重建。storage.dir 仅允许落在工作区内,越界配置会回退到 .dsh-token-cost。账本中费用为写入时快照,改单价不会重写历史;界面上的本轮/会话费用会按当前配置实时重算。
Host 只暴露余额与账本摘要路由,并复用 Harness 的 connection.requestRejection 鉴权;无 connection 服务时仅允许回环地址与同源请求。
安装与启用¶
前置条件:已安装 DSH 本体,Node ≥ 22。
Web(dsh web)¶
在终端执行(命令来自插件 README):
dsh plugin --profile web add github:BigFatFish4Wm/dsh-token-cost
装完后重启 dsh web,浏览器按 Ctrl+F5 强刷。若已从源码拿到本地目录,可用:
dsh plugin --profile web add link:<本目录绝对路径>
桌面端(官方 Electron 客户端)¶
dsh plugin 不操作 desktop profile。在客户端插件市场中,来源填写:
https://github.com/BigFatFish4Wm/dsh-token-cost
装完后若界面未出现条目,需完全退出客户端(含托盘)再打开。安装后在插件页启用,或在 profile 的 cordis.patch.yml 中保留 token-cost 行;替换已安装包通常需重启 Host 以加载新的 Host JavaScript。
典型用法¶
默认启用¶
插件 cordis.patch.yml 中默认 enabled: true。安装并激活后,有 Assistant 消息的已完成轮次会在 turnTail 出现 token-cost 条;空白会话不显示。
在 profile 中改配置¶
可在 profile 的 cordis.patch.yml 覆盖 token-cost 行,或在插件配置页编辑。修改 patch 后由 Loader 热重载;浏览器未更新时刷新页面即可。示例:使用预算模式并关闭高峰计价(节选):
- id: token-cost
name: 'dsh-token-cost'
config:
balance:
mode: budget
budgetInitial: 100
pricingSchedule:
enabled: false
多模型场景可在 modelPricing 中为 deepseek-account/deepseek-v4-pro 或 openai/* 等键单独设 inputPerMillion、outputPerMillion 及 peak / offPeak 子表。完整字段与默认值见仓库 README 的配置表。
查看与排查账本¶
展开用量条可看到账本绝对路径。若未写入,检查 storage.enabled、工作区是否只读,以及明细中的 ledger.error;插件激活且 storage.backfill: true 时会回填当前存活会话中已完成的轮次。
适用场景与注意¶
适合需要在 Harness Web UI 里长期盯会话成本、对比调价前后费用、或把工作区消费留痕的团队与个人开发者。目录归类为 admin-security,与账户余额读取及受鉴权保护的摘要 API 相关;安装前仍应自行审阅源码与 MIT 许可证(当前 package 版本 1.0.0)。
插件以当前 dsh 进程权限运行:读取工作区账本、调用账户余额 API、暴露 Host 路由均发生在 Host 内。安装前请确认仓库来源与变更记录;SkillHub 目录页:https://www.skillhub.cn/plugins/BigFatFish4Wm/dsh-token-cost。
常见问题:条形未出现——确认 turnTail 槽位中 token-cost 已激活且本轮有 Assistant 消息;余额不可用——检查登录与 balance.mode,或为 auto 配置 budgetInitial / manualAmount 回退;费用偏差——核对 pricingSchedule、modelPricing 与 attempt 事件时间是否落在高峰窗口。
结尾¶
dsh-token-cost 把每轮 token、费用、会话累计和余额收进 Harness 对话尾部,并用工作区账本保留历史轮次,适合在 DSH Web 工作流里做成本可见性而不改 Harness 核心行为。源码与文档:https://github.com/BigFatFish4Wm/dsh-token-cost;社区目录:https://www.skillhub.cn/plugins/BigFatFish4Wm/dsh-token-cost。