mcpField
C
cost-session

cost-session

github.com/ruvnet数据与数据库80.0k249 次安装今天更新
代码仓库

关于 cost-session

cost-session 是用于分析单个会话成本的技能,可按消息计算成本并列出高成本消息。它展示缓存读写用量和会话内百分位,帮助定位成本异常的具体消息。

主要功能

  1. 01按会话读取 JSONL 消息
  2. 02计算并排序消息成本
  3. 03展示缓存读写用量
  4. 04计算消息成本百分位
  5. 05标记会话内高成本异常

适用场景

  1. 01深入检查异常会话中的高成本消息
  2. 02按时间范围筛选会话消息
  3. 03调查缓存写入造成的成本
  4. 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 ← 就是它

算法

实现:scripts/session.mjs。

  1. 解析会话 jsonl:--session-id <id>(扫描 ~/.claude/projects/*/),或使用 --latest(默认值;选择最近修改的 jsonl)。
  2. 解析所有包含 usage 块的助手消息。
  3. 使用共享的 PRICING(_prices.mjs)计算每条消息的费用。
  4. 按 cost_usd 降序排序,显示费用最高的前 N 条(默认 20 条)。
  5. 计算消息费用的 p50/p90/p99,提供会话内百分位背景。
  6. 如果费用最高的消息超过 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