前言¶
在 DeepSeek Harness(dsh)里跑 agent,模型调用会不断产生 token 用量。若只关心「当前这一会儿烧多快、要不要拦」,社区里的 dsh-plugin-price-aware 更对口。但若需要跨会话、跨重启的对账——「这个月一共花了多少、按模型和按日怎么分布、能否导出给 Excel」——就需要把每次有价目的调用落盘,并能在 dsh 里查报表。
下面介绍维护者 121212165 在 SkillHub 分类「模型推理」下的插件 dsh-plugin-cost-ledger:监听会话 usage 事件,按内置或自定义价目表计价,按月写入 JSONL;通过 /ledger、/ledger-export 和 ledger_query 工具做汇总与导出。插件以当前 dsh 进程权限读写本地文件,安装前请自行审阅源码与 MIT 许可证。
这是什么¶
dsh-plugin-cost-ledger 是 dsh 插件:把每一次有价目表的模型调用记进持久台账,出月度汇总、CSV 导出,并让 agent 能回答「这个月花了多少钱」。
数据按 token 桶(uncached input、cache read、cache write、output)拆分,支持错峰日期与多币种分块统计;价表里没有的模型事件会被丢弃而不是猜价,避免静默错账。README 注明:尚未在运行中的 dsh 里完成 live mount 验证(单元与装配层测试已通过)。
核心功能¶
持久台账¶
当 accounting 为 own(默认)时,插件监听 session/event 的 assistant/message usage 事件,用内置价目表(DeepSeek 官方价,含高峰/错峰、缓存价)计价后,逐条追加到 dataDir 下按月分文件的 JSONL,例如 ledger-2026-09.jsonl。会话结束或 dsh 重启后,账仍保留在磁盘上。
/ledger¶
输出本月汇总:总额、调用次数、会话数、token 总量与缓存命中率、按模型分布(带占比)、按日分布、与上月对比。多币种逐块渲染,不混算。若 JSONL 中有损坏行,汇总里会提示「N 行损坏」。
/ledger-export [YYYY-MM]¶
把指定月份台账导出为 CSV(BOM + CRLF,便于 Excel 直接打开),写到 exportDir(默认与 dataDir 相同)。导出不含会话标题(host 侧只有 sessionId)。
ledger_query 模型工具¶
agent 被问到花费时,可通过该工具查询台账。
与 price-aware 的分工¶
price-aware 侧重实时用量与拦截;本插件侧重「月度账本」——落盘、跨会话、可导出可对账。两插件定价逻辑从 price-aware 复制(MIT,同作者),安装上彼此独立。
安装与启用¶
README 给出三步,在 @deepseek-ai/dsh@0.1.7-alpha.1 上实测(需 pnpm 在 PATH 中;package.json 要求 Node >=22.18)。
1、装进 profile(参数会原样转发给 pnpm,git 包会自动跑 prepare 构建 lib/):
dsh plugin --profile web add github:121212165/dsh-plugin-cost-ledger
2、把仓库根目录 cordis.patch.yml 的内容合并进 $DSH_HOME/profiles/web/cordis.patch.yml。默认文件往往是 [],应整份替换或把 insert 条目并进同一数组;不要直接追加,否则会出现两个 YAML 文档,启动报错 failed to parse overlay ... end of the stream or a document separator is expected。
3、重启 dsh。配置层与 client 半都要重启才生效(浏览器硬刷新不够)。
自检是否挂载:
dsh --profile web --dump-config | grep dsh-plugin-cost-ledger
应能看到该插件条目。
配置¶
| 字段 | 默认 | 说明 |
|---|---|---|
enabled |
true |
关闭后插件不挂载 |
accounting |
own |
own:从 session 事件自行记账;assume-price-aware:假定 price-aware 已记账,本插件只读台账做报表(当前实现下该模式等价于「只报表、不记新账」) |
dataDir |
~/.dsh/cost-ledger |
JSONL 台账目录,~ 会展开 |
exportDir |
dataDir |
CSV 导出目录 |
prices |
[] |
中转/自定价目,形状与 price-aware 的 prices 一致 |
holidays |
[] |
按错峰计价的北京时间日期(YYYY-MM-DD) |
模型 id 只能低置信度匹配价目行时,记录会带 matchVia 字段;金额视为估算,需核对价目表后再信。
典型用法¶
看本月汇总¶
在 dsh 中执行 slash 命令:
/ledger
导出某月 CSV¶
省略参数时行为以 dsh 内帮助为准;README 示例为指定月份:
/ledger-export 2026-09
文件写入 exportDir,可用 Excel 打开。
JSONL 单行示例¶
每行一条计价记录,金额单位为 micro(1e-6 币种单位):
{"v":1,"sessionId":"…","at":"2026-09-15T02:30:00.000Z","turn":3,"step":1,
"modelId":"deepseek-v4-pro","provider":"deepseek","pricedAs":"deepseek-v4-pro",
"buckets":{"uncachedInput":1000,"cacheRead":90000,"output":500,"cacheWrite":0},
"reasoningTokens":400,"currency":"CNY","costMicros":225000000}
适用场景与注意¶
适合:需要在 dsh 中长期保留调用成本、按月对账、导出 CSV,或让 agent 回答花费问题的开发者。
注意:
- 插件随 dsh 进程运行,读写
dataDir/exportDir;安装与配置前请检查源码与权限。 - 无价目表的模型不会入账(debug 日志可见),总额不会因缺价而虚高。
- 台账暂无 compaction/归档命令,文件需自行备份或清理。
- 与 price-aware 同时挂载时,若不想重复记账,可设
accounting: assume-price-aware,但 price-aware 尚未把 ledger 写入同一dataDir前,新账仍依赖本插件own模式或历史文件。 - SkillHub 目录页:dsh-plugin-cost-ledger 为社区插件索引,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」。
结尾¶
dsh-plugin-cost-ledger 把有价目的模型调用沉淀为按月 JSONL,用 /ledger 看板、/ledger-export 导出 CSV、ledger_query 供 agent 自查,并在缺价时选择丢弃而非猜测。若你已在 dsh 里做 agent 开发并希望有可审计的月度成本,可按 README 三步安装并合并 cordis.patch.yml。
- 目录页:https://www.skillhub.cn/plugins/121212165/dsh-plugin-cost-ledger
- 源码与说明:https://github.com/121212165/dsh-plugin-cost-ledger