前言¶
在 DeepSeek Harness(DSH)里跑长对话、多轮工具调用时,界面上通常能看到轮次、步数、吞吐和 token 统计,但很难立刻把「用了多少 token」换算成「这次对话花了多少钱」。若按上下文长度粗估,又容易和 provider 实际上报的缓存命中、写入分桶不一致。维护者 xin1223yue 的客户端插件 dsh-cost-pill 面向 DSH Web:在输入框下方统计行和每条助手回复脚注各增加一格人民币金额,点开可看分项账单,并按每条回复的 turn/start 时刻套用官方高峰/空闲价表计价。
这是什么¶
dsh-cost-pill 是挂在 DSH Web 上的纯前端 bundle(分类:客户端)。它不注册 Host 服务、不发额外网络请求,只读取会话里已有的 turn-tail.tokenUsage、路由模型与时间戳,在官方预留槽位里渲染金额与账单弹层。仓库:xin1223yue/dsh-cost-pill;社区目录:SkillHub 条目。当前包版本 1.1.0,许可证 MIT,在资料中于 dsh 0.2.1-rc.5(Windows / Chromium)上验证。
界面上会出现什么¶
下面三块能力均来自 README 说明,可与截图 docs/demo.png、docs/turn.png 对照。
统计行一格:与「轮次 / 步数 · tok/s|总 token · 缓存命中|进度」并排,例如显示 ¥2.15,不占额外一行。
每轮脚注一格:在复制、点赞、用量 x.xM tok 同一行旁增加本轮花费(如 ¥0.07)。
点开账单:展示输入(未命中 + 缓存写入)、缓存命中、输出三行,各行含 token 与金额;并标明模型、计费时刻、当前时段、当轮单价。弹层复用官方「轮次用量」类 UI(半透明菜单、背景虚化)。窗口外没有逐轮记录的部分会用已计价轮次的均价折算,并一定带 ≈ 标记。
计价逻辑(为何数字可信)¶
插件按「能拿到时间的轮次尽量精确、否则估算且标 ≈」设计,要点如下。
| 关心的事 | 做法 |
|---|---|
| 分桶是否准确 | 用 provider 上报的真实桶(含缓存命中/写入),不按上下文长度估 |
| 高峰 / 空闲 | 按该轮 turn/start 定档;跨 12:00、18:00 自动分段(北京时间高峰 09:00–12:00 / 14:00–18:00) |
| 换模型 | 读 routes[].model,历史轮次不被新模型价覆盖 |
| 重开旧会话 | 已加载轮次按当时价,不用今天时段重算 |
| 性能与侵入 | 纯前端读现有数据;只往 conversation.composer.dock(id cost,order 2)与 conversation.chat.assistant-actions(id cost,order 60)各加一格 |
价表单位为 元 / 百万 tokens(节选自 README):高峰 deepseek-v4-flash 输入未命中 3、缓存命中 0.1、输出 9;空闲 flash 分别为 1.5、0.05、4.5;pro 档数值更高。2026-08-17 之前有旧价行;cacheWrite 按未命中输入价计。改价需编辑 bundle 内 client.js 的 V4_PEAK / V4_OFFPEAK / V4_BASE / POLICY_SWITCH。
安装与启用¶
插件零运行时依赖、无构建步骤;安装是把包挂到 profile 的 node_modules 并把包名写入 dsh.profile.bundles。装完后需重启 dsh web,再对页面 Ctrl+Shift+R 硬刷(bundle revision 在 dsh 启动时烘进页面)。
方式一:克隆目录 + 一键脚本(README 推荐,脚本不联网装包)¶
Windows:
git clone https://github.com/xin1223yue/dsh-cost-pill.git
cd dsh-cost-pill
powershell -ExecutionPolicy Bypass -File .\install.ps1
macOS / Linux:
git clone https://github.com/xin1223yue/dsh-cost-pill.git
cd dsh-cost-pill && sh ./install.sh
install.mjs 会在 ~/.dsh/profiles/web/node_modules/dsh-cost-pill 建指向克隆目录的链接,并把 dsh-cost-pill 写入 package.json 的 dependencies 与 dsh.profile.bundles(幂等)。可选参数:--profile <名字>(默认 web,也读 $DSH_PROFILE)、--dry-run。
方式二:dsh 插件命令(需联网)¶
dsh plugin --profile web add xin1223yue/dsh-cost-pill
该命令只加依赖(经 pnpm);还须手工编辑 ~/.dsh/profiles/web/package.json,把 "dsh-cost-pill" 加入 dsh.profile.bundles,否则不会加载。
生效与卸载¶
重启示例(Windows,默认端口 3080):
powershell -ExecutionPolicy Bypass -File .\restart-dsh.ps1
或手动结束 dsh web 后重新启动,用新控制台 URL 打开页面并硬刷。
卸载:
dsh plugin --profile web remove dsh-cost-pill
并从 dsh.profile.bundles 删除对应行后重启。
典型用法¶
- 完成安装并重启 DSH Web,打开任意会话。
- 看输入框下方统计行是否出现人民币一格;完成一轮对话后,在该条助手回复脚注行查看本轮金额。
- 点击金额打开账单,核对三行分桶与「当前时段高峰/空闲」说明是否符合该轮发生时刻。
开发侧离线校验计价纯函数:
node verify.mjs
适用场景与注意¶
适合:长期在 DSH Web 里调试智能体、需要按官方 DeepSeek 价表(含高峰策略)对照真实 token 分桶的用户。
权限与安全:插件以当前 dsh 进程及浏览器会话上下文运行;apply() 为空实现,不碰 API Key。安装前建议浏览仓库源码与 MIT 许可证。
已知限制(README 原文):一轮内跨模型重试时整轮按最后一路由计价;只认 DeepSeek 价表,其他 provider 模型落到 flash 档仅供参照;子代理独立会话各自计费,不汇总到父会话。
兼容性:依赖槽位名 conversation.composer.dock 与 conversation.chat.assistant-actions;若未来 dsh 重命名槽位,金额可能静默不出现,需在 apply() 中改挂载名。
结尾¶
dsh-cost-pill 把「这次对话多少钱」放进 DSH 已有的统计行与回复脚注,计价跟逐轮日志与时间戳走,高峰/空闲与历史会话重开行为在 README 中有明确表格说明。需要安装步骤与价表细节时,以 GitHub README 为准:https://github.com/xin1223yue/dsh-cost-pill;目录页:https://www.skillhub.cn/plugins/xin1223yue/dsh-cost-pill。
DSH 生态主张「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。