mcpField
C
cost-anomaly

cost-anomaly

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

关于 cost-anomaly

cost-anomaly 用于从单次会话层面识别成本异常,适合调查个别高支出或低支出会话。它使用中位数和 MAD 计算修正 z 分数,并标记超过阈值的会话。

主要功能

  1. 01筛选指定时间范围的会话
  2. 02使用中位数和 MAD 评估异常
  3. 03按修正 z 分数标记离群值
  4. 04区分高支出与低支出异常
  5. 05支持按异常数量触发告警

适用场景

  1. 01定位单次会话的异常高支出
  2. 02调查可能崩溃或未完成的会话
  3. 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

算法

实现:scripts/anomaly.mjs。

  1. 从 cost-tracking 命名空间读取所有 session-* 记录。
  2. 筛选 --since 时间范围内的记录(默认为所有时间)。
  3. 计算 median(total_cost_usd) 和 MAD = median(|x - median|)。
  4. 按会话计算修正后的 z 分数(Iglewicz-Hoaglin 1993): z = 0.6745 * (x - median) / MAD
  5. 标记 |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