agent-cost-lens

把 Agent 会话流水算成钱:一条命令给出总花费、缓存命中率、每次调用均价
在线 Demo(静态) · 输入 JSONL 会话流水 → 输出成本报告 · GitHub 仓库

输入:一份会话流水

{"time": 1767225600000, "data": {"usage": {"inputTokens": 48213, "cacheReadTokens": 1902331, "outputTokens": 3311}}}
{"time": 1767225605000, "data": {"usage": {"inputTokens": 31204, "cacheReadTokens": 1000270, "outputTokens": 2108}}}
...
也认 prompt_tokens / completion_tokens / cache_read_input_tokens 别名;没有 usage 或时间戳的行自动跳过。

输出(demo 会话)

- 总花费:0.23 元
- 事件(调用)数:6
- 每个事件均价:0.0378 元
- 缓存命中率:97.7%
- token:未命中输入 101502 命中输入 4392181 输出 9362
- 基线:1.20 元 偏差 -81%

怎么用

node bin/cli.mjs report demo/sample-session.jsonl
node bin/cli.mjs report today.jsonl --baseline 12.5        # 基线直接给金额
node bin/cli.mjs report today.jsonl --baseline yesterday.jsonl  # 或拿另一份会话当基线
node bin/cli.mjs report today.jsonl --json                 # 给下游用

判读口径

- 超基线两成 → 先看缓存命中率掉没掉,再看每次调用事件数涨没涨
- 明显低于基线 → 通常不是省钱,是费率表过期了
- 命中率从 95% 掉到 60% → 上下文被重排过,钱会翻好几倍

诚实边界

- 只认 usage 形状的流水,不管日志收集、传输、存储
- 只算钱,不评估「这次调用值不值」
- 没有 Web UI,输出是 Markdown / JSON
- 单个会话几百到几千条事件;更大的量请自己分片
- 费率表必须自己对一遍账单,误差 5% 以内再信它
仓库:github.com/Hayabusa-YL/agent-cost-lens · MIT