关于 cost-session
cost-session 是用于分析单个会话成本的技能,可按消息计算成本并列出高成本消息。它展示缓存读写用量和会话内百分位,帮助定位成本异常的具体消息。
主要功能
- 01按会话读取 JSONL 消息
- 02计算并排序消息成本
- 03展示缓存读写用量
- 04计算消息成本百分位
- 05标记会话内高成本异常
适用场景
- 01深入检查异常会话中的高成本消息
- 02按时间范围筛选会话消息
- 03调查缓存写入造成的成本
- 04比较最高消息与会话内百分位
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill cost-session安装后在 Claude Code 中输入/cost-session确认已加载。
详细介绍
当 cost-anomaly 将某个会话标记为超过 3.5σ 的异常值时,接下来要问的是:“哪些消息费用高?”cost-session 可以回答这个问题。
| 问题 | 技能 |
|---|---|
| “费用最高的是哪些会话?” | cost-conversation |
| “哪些会话是异常值?” | cost-anomaly |
| “本次会话中哪些消息费用高?” | cost-session ← 就是它 |
算法
- 解析会话 jsonl:
--session-id <id>(扫描~/.claude/projects/*/),或使用--latest(默认值;选择最近修改的 jsonl)。 - 解析所有包含
usage块的助手消息。 - 使用共享的 PRICING(
_prices.mjs)计算每条消息的费用。 - 按
cost_usd降序排序,显示费用最高的前 N 条(默认 20 条)。 - 计算消息费用的 p50/p90/p99,提供会话内百分位背景。
- 如果费用最高的消息超过 p99 的 2 倍,则将其标记为会话内异常值。
为什么这很重要:缓存写入是隐形成本
真实会话示例,费用最高的消息:
| # | Model | In | Out | Cache W | Cache R | Cost |
| 1 | opus-4-7 | 6 | 569 | 881898 | 0 | $16.58 |
如果没有 Cache W 列,看起来就像是“569 个输出 token 花了 $16”——这不对,差了 380 倍。实际费用来自按 opus 定价的临时 1 小时缓存写入:881,898 个 token × $18.75/1M = $16.54。
运维人员查看此表后会立即发现:“模型向临时缓存写入了 881K 个 token。”接下来就会问:“为什么要为一个包含 6 个输入的请求缓存 881K 个上下文 token?”——这是一个真正有价值的工程信号。
深入排查工作流
# Step 1: find outliers across all sessions
cost anomaly --alert-on-outliers 1 || cost anomaly # see which session-ids
# Step 2: drill into the flagged session
cost session --session-id <flagged-id> --top 10
# Step 3: open that jsonl at the timestamp the top message reports,
# inspect the prompt + tool calls
百分位背景
输出顶部:
| p50 (median) message | $0.85 |
| p90 message | $1.45 |
| p99 message | $1.74 |
这样运维人员就能直接判断“这条费用最高的消息是 2 倍异常值,还是 380 倍异常值?”,而无需自己计算。当答案为“是,这条消息是值得调查的会话内异常值”时,底部会显示“top is >2× p99”提示。
--since 筛选条件
适用于深入排查长会话中的特定时间范围:
cost session --since 2026-06-16T13:00:00Z --top 5
只考虑 timestamp >= --since 的消息。
边缘情况
- 没有已计费的助手消息 → "No costed assistant messages" + 退出码 0。
- 在任何项目的 jsonl 文件中都找不到
--session-id→ 退出码 2,并显示错误。 --top必须为正整数 → 退出码 2。
评论
支持 Markdown