关于 cost-anomaly
cost-anomaly 用于从单次会话层面识别成本异常,适合调查个别高支出或低支出会话。它使用中位数和 MAD 计算修正 z 分数,并标记超过阈值的会话。
主要功能
- 01筛选指定时间范围的会话
- 02使用中位数和 MAD 评估异常
- 03按修正 z 分数标记离群值
- 04区分高支出与低支出异常
- 05支持按异常数量触发告警
适用场景
- 01定位单次会话的异常高支出
- 02调查可能崩溃或未完成的会话
- 03在 CI 中检测近期异常会话
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ruvnet/ ruflo --skill cost-anomaly安装后在 Claude Code 中输入/cost-anomaly确认已加载。
详细介绍
按会话检测异常值——这是与 cost-burn 的聚合趋势信号对应的诊断功能。
| 问题 | 技能 |
|---|---|
| “聚合费率是否正在加速?” | cost-burn |
| “哪些具体会话是异常值?” | cost-anomaly ← 就是这个 |
| “总体支出是否可以更低?” | cost-counterfactual |
| “何时会达到预算上限?” | cost-projection |
算法
- 从
cost-tracking命名空间读取所有session-*记录。 - 筛选
--since时间范围内的记录(默认为所有时间)。 - 计算
median(total_cost_usd)和MAD = median(|x - median|)。 - 按会话计算修正后的 z 分数(Iglewicz-Hoaglin 1993):
z = 0.6745 * (x - median) / MAD - 标记
|z| > --threshold的会话(默认为 3.5)。
为什么使用 MAD,而不是均值 + 标准差?
| 方法 | 问题 |
|---|---|
mean + sigma | 单个 $50 会话就会严重抬高均值和标准差,导致后续异常值落入新的“正常”范围。在小样本中会造成灾难性影响。 |
median + MAD | 两种估算方法都不受多达 50% 的数据影响——异常值本身无法使它们偏移。对 n=10 的样本也稳健。经典阈值 |z| > 3.5 来自 Iglewicz-Hoaglin(1993)。 |
冒烟测试记录(5 个基线会话,费用为 $0.08-$0.12,另有 1 个异常值 $5.00)
| Sessions considered | 5 |
| Threshold (|modified z|) | 3.5 |
| Median spend | $0.100000 |
| MAD | $0.010000 |
| Min / Max | $0.080000 / $5.000000 |
| **Outliers found** | **1** |
## Outlier sessions
| Session | Spend | Deviation | Modified z | Direction |
| outlier- | $5.000000 | +$4.900000 | 330.505 | high |
退出代码
$ cost anomaly --alert-on-outliers 1
⚠ ALERT: found 1 outlier session(s) (|modified z| > 3.5); threshold was ≥1
exit 1
$ cost anomaly --alert-on-outliers 5
✓ found 1 outlier session(s); under threshold ≥5 — OK
exit 0
CI 集成
# Fail the build if any session this week is a >3.5σ outlier
cost anomaly --since 7d --alert-on-outliers 1 || investigate-bad-session
与 cost-burn 配合使用效果最佳:
cost burn --alert-on-acceleration-pct 50 || page-oncall # rate-of-change alert
cost anomaly --alert-on-outliers 1 || investigate # point-anomaly alert
两者结合可分别回答“平均值是否在变化?”和“是否存在单个异常会话?”——两种情况都可以独立触发。
边缘情况
- n < 3:输出“数据不足”消息,退出代码为 0。对 1-2 个样本计算 MAD 没有意义。
- MAD = 0:至少 50% 的会话支出完全相同,因此 z 分数会归零。输出说明信息,而不是除以零。常见原因:试运行会话的费用均为 $0。
- 低方向异常值:通常是崩溃或中断的会话,而不是超支。输出表会明确标注方向,便于操作人员正确解读。
- MAD 极小:即使绝对偏差很小,也会产生很大的 z 分数。MAD=$0.01 时,$5 的异常值会得到 z=330——这是正确结果,不是错误。
方向列
| 方向 | 可能原因 | 操作 |
|---|---|---|
high | 会话过长、卡在昂贵层级,或循环失控 | 使用 cost report + cost conversation 进行调查 |
low | 崩溃、会话中断或工作未完成 | 确认会话是否正常完成 |
评论
支持 Markdown