← 返回列表
未验证
为 DeepSeek Harness Web GUI 在屏幕上显示花费:
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/14 · 已提供中文文档
DeepSeek Harness Web GUI 屏幕上的金额:聊天中每轮对话的美元成本,一个带有图表、评级和交互式支出时间线的 Cost 标签页,以及一个由你掌控的本地价格表。
综合分
29.7
GitHub 分
29.7
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add thezavtrak-a11y/dsh-cost-stats该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-cost-stats
为 DeepSeek Harness Web GUI 在屏幕上显示花费:
每个已完成的回合下方都有一个费用胶囊,并且在聊天和轨迹视图旁边有一个 Cost 标签页,其中包含
图表、评级和交互式时间线。DSH 只报告 token 数,从不报告金额,因此本
插件会根据本地价格表进行算术计算——这些数字是估算值,不是账单。
上游没有任何内容被修改:该插件注册到官方 slot、session-source 和 locale
注册表中,因此它能经受 DSH 升级,并且只需删除一行即可卸载。
你将获得
在聊天中——消息操作行中一个扁平的、右对齐的胶囊,样式与旁边内置的
Used N tokens 项类似:
≈ $.6217 ⚙$.4698 🧠$.0430 👁$.1519
图标是类别,数字是每种操作的花费(见下文)。点击它可查看
完整明细:分桶表(未缓存输入、缓存输入、缓存写入、输出,其中推理部分)、模型、回合编号、墙钟时间、TTFT 和 tok/s。
在编辑器下方——整个会话的同样四个数字,紧跟在内置
统计条(steps、tok/s、tokens、cache hit)之后。
Cost 标签页(order: 20,因此它正好落在操作图之后)包含:
- KPI 卡片:已加载回合的费用、整个会话、请求数和平均每请求费用、
推理占比、缓存命中率、tok/s、TTFT、回合墙钟时间;
- 每回合的 token 和费用列、支出构成环形图、时间拆分和上下文构成;
- 每种操作的花费——工具 / 推理 / 阅读与分析,包含请求数、
token 数、金额和占比;
- 评级:最昂贵的回合、按调用次数和时间排序的工具、最昂贵的请求及其模型、
按费用排序的模型;
- 一个交互式时间线(见下文);
- 整个计算所依据的价格表。
每种操作的花费
每个模型请求都根据该请求所做的事情被精确归入一个类别:
| 类别 | 图标 | 条件 |
|---|---|---|
| 工具 | 齿轮 | 该请求调用了至少一个不在读取列表中的工具 |
| 推理 | shell 自带的“思考”字形 | 该请求完全没有调用任何工具 |
| 阅读与分析 | 浏览/数据 | 它调用的每个工具都在读取列表中 |
一个请求的费用只归入一个类别,因此各占比之和始终等于总计。读取列表位于
lib/client.js 顶部的 READ_TOOLS 中——MCP 名称会被规范化,因此
mcp__some-server__Snapshot 会被计为 snapshot。
交互式时间线
| 指标 | 显示内容 |
|---|---|
| $ per minute | 随时间变化的支出速率 |
| Requests per minute | 模型被调用的频率 |
| Tokens per minute | token 吞吐量 |
| Cumulative cost | 从窗口起点开始金额如何累积 |
滚轮以光标为中心缩放,拖动可平移,双击(或 Reset 按钮)返回完整
范围。步长选择器提供 10 秒 / 1 分钟 / 5 分钟 / 15 分钟;速率始终归一化为每分钟,
所以单位永远不变。悬停任意步骤都会显示它自己的数字。图表上方的行会汇总可见窗口:范围、请求数、窗口成本、平均速率、峰值速率以及有多少请求落在窗口之外。
几何图形是一个带有 preserveAspectRatio="none" 的 SVG,而所有可读文本都位于上方的 HTML 图层中——被拉伸的 SVG 内部的文本会变形。滚轮监听器以原生方式附加,并使用 { passive: false },因为 React 自带的 onWheel 是被动的,其中的 preventDefault 会被忽略(页面会滚动,而不是图表缩放)。
定价
lib/client.js 顶部的 PRICES 是每个模型的四个数字,单位为美元每百万 token:
miss — 未缓存的提示输入
hit — 由提供商缓存提供的提示输入
write — 写入提供商缓存的提示输入
out — 补全输出(推理 token 是 out 的 SUBSET,因此不会重复计算)
该表在提示/输出侧附带 DeepSeek 公布的费率,并将 hit 设为零。这个零是刻意为之:审计一个真实、长期存在的 DSH 语料库(tools/audit-usage.mjs)显示,所有提示 token 中约 99.4% 是以缓存命中形式到达的,而按公布的缓存费率对这些 token 计价,会比提供商自己的账单高出一个数量级——显然在该套餐下缓存输入不收费。如果你的套餐收费,就把真实数字填入 hit,所有总计都会随之变化。
安装
该插件是一个普通的 DSH 客户端包。把它放在任意位置,然后将其添加到 web 配置文件中:
// ~/.dsh/profiles/web/package.json
{
"dependencies": { "dsh-cost-stats": "file:" },
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-cost-stats"] } }
}
dsh plugin --profile web add "file:" 做的是同一件事,并且需要 pnpm 位于 PATH 中。bundle 列表在启动时组合,因此新添加的 bundle 会在重启后出现;之后对 lib/client.js 的编辑会被 dsh-client-hmr 捕获(它轮询 bundle 的 mtime 和大小),无需任何重启。
如果你不想改动 bundle 列表,可以从配置文件自己的实时重载补丁层挂载该行——它同样在启动时组合,并实时重载:
~/.dsh/profiles/web/cordis.patch.yml
- insert:
- id: cost-stats
name: dsh-cost-stats
工具
node tools/smoke.mjs # 96 条断言:折叠、定价、归因、渲染、钩子
node tools/audit-usage.mjs # 直接从持久会话日志中进行的独立审计
smoke.mjs 针对一个微型 React 和模拟 shell 服务渲染该插件,因此无需浏览器即可运行:它覆盖了成本折叠、类别归因、金额格式化、pill 可以渲染到的两个位置,并且——因为这两者都已经出过一次问题——确保没有组件在数据状态之间改变其钩子数量。
audit-usage.mjs 是基准真相检查。它读取 $DSH_HOME/sessions/*/session.v3.jsonl.zstd
(每个文件都是独立的 zstd 帧流),汇总提供方报告的使用量,用同一张表计价,并按模型、按会话以及总计进行报告。有用的标志:
node tools/audit-usage.mjs --session # 一个会话
node tools/audit-usage.mjs --target # 求解隐含的 $/M,并打印一张现成的表
node tools/audit-usage.mjs --root # 读取另一个 DSH 主目录
它不进行任何模型调用——只读取日志并做算术运算,因此运行它不产生任何费用。
局限性
- 是估算,不是账单。 Token 数量来自提供方;金额来自本地表。
- 只有在成本实际已知的地方才显示金额:精确的逐轮核算,或根据该轮自身的请求重建的轮次(标记为 ≈)。否则不渲染任何内容,而不是编造一个数字。
- 报告覆盖已加载的历史窗口;“整个会话”的数字来自宿主自身的 token 预测,并按已加载轮次的有效费率计价。
- 时间戳是日志中的请求开始时间,因此一个耗时较长的请求会被归到它开始的那一分钟。
给插件作者的说明
NOTES.md 汇集了在针对 DSH 的客户端插件 API 编写此内容时学到的经验:模块格式、四种插槽类型(以及为什么 chain 不是列表)、会话作用域的钩子如何到达组件、哪些对话目标携带使用量,以及只有在页面重新加载后才会出现的 React/滚动陷阱。
许可证
MIT——见 LICENSE。扫码进群