本页目录
Lesson 08 — 可靠性评估:混沌收益矩阵与 SLO
本课目标:量化 L01–L07 全部治理机制的收益,给 v3 一张 SLO 卡。跑六类故障 ×(全关/全开)的混沌收益矩阵,对照 L00 裸基线量出每个机制的收益,并加一行纯净跑回归证明治理零税。
学完你能回答面试官那句:「你的 Agent 可靠性怎么证明?」——答案是回归式混沌套件:六类故障注入的收益矩阵 + SLO 卡 + 纯净跑零税回归,全关 vs 全开的差异对着 L00 基线量出来。
0. 起点:L00 基线 + L01–L07 机制,缺一张收益表
L00 跑了裸基线(六类故障的失控结局),L01–L07 各修了一类。但「修了到底好多少」没有量化——需要一张矩阵把每个机制的收益对着基线量出来。
🎯 核心认知:可靠性 SLO 和能力收益(frontier-L09)是两种东西。frontier 量「干净跑下的能力」(加记忆好多少),本课量「故障注入下的生存」(断网/慢工具/崩溃下还能不能出结果)。矩阵跑批复用 frontier-L09 的开关矩阵思路,但对象从「能力开关」变成「混沌故障」。
1. 可靠性 SLO 定义
| SLO 指标 | 含义 | 怎么算 |
|---|---|---|
| 任务成功率 | 含诚实截断算部分成功 | outcome ∈ {completed, truncated} 算成功 |
| 卡死率 | 跑到 recursion_limit 崩 | outcome == stuck |
| 预算超支率 | token 烧穿 max_budget | outcome == overspent |
| 副作用重复率 | publish 执行 >1 次 | publish_count > 1 |
| 崩溃恢复成功率 | 崩溃后续跑能完成 | crash 场景全开成功 |
| 故障下平均浪费 token | 重做/超支/污染的 token | wasted_tokens 均值 |
与 frontier-L09 能力收益的区别
| 维度 | frontier-L09(能力收益) | L08(可靠性 SLO) |
|---|---|---|
| 量什么 | 干净跑下的能力(加记忆好多少) | 故障下的生存(还能不能出结果) |
| 注入 | 无故障 | 六类混沌故障 |
| 指标 | 任务成功率/步数效率/机制触发 | 成功率/卡死率/超支率/副作用重复率 |
| 矩阵 | 机制开关(记忆/代码) | 防护开关(全关/全开) |
2. 混沌收益矩阵(实测结果)
| 故障 | 全关结局 | 全关浪费 | 全开结局 | 全开浪费 | 收益 |
|---|---|---|---|---|---|
| slow | ☠️ polluted | 124 | 🟡 truncated | 30 | 省 94 token + 不污染 |
| flaky | ☠️ polluted | 162 | 🟡 truncated | 40 | 省 122 token + 不污染 |
| loop | 🟡 caught | 220 | 🟡 truncated | 80 | 省 140 token |
| crash | 🔄 full_rerun | 115 | ✅ completed | 60 | 省 55 token + 不重跑 |
| bomb | 💸 overspent | 70714 | 🟡 truncated | 5000 | 省 65714 token |
| sideeffect | ⚠️ duplicate | 168 | ✅ completed | 10 | 省 158 token + 不重复 |
🎯 核心认知:每类故障都有对应的机制兜住(slow/flaky→L03 熔断+降级,loop→L01 步数,crash→L06 续跑,bomb→L02 预算,sideeffect→L04 幂等+L05 审批)。全关成功率 33%,全开 100%——这就是治理的收益。
3. SLO 卡(汇总)
| SLO 指标 | 全关(裸奔) | 全开(v3) | 改善 |
|---|---|---|---|
| 任务成功率 | 33% | 100% | +67% |
| 卡死率 | 0% | 0% | — |
| 预算超支率 | 17% | 0% | -17% |
| 副作用重复率 | 17% | 0% | -17% |
| 平均浪费 token | 11917 | 870 | -11047 |
⚠️ 诚实标注:以上为 mock 演示数字(基于 L00 基线的结构性结论)。真实 API 的绝对数字需
--real模式跑,但「全关 vs 全开」的差异结构不变。
4. 纯净跑回归行:治理零税证明
| 场景 | 全关 | 全开 | 应满足 |
|---|---|---|---|
| pure(无故障) | 成功 0 token | 成功 0 token | 全开不劣于全关 |
💡 纯净跑(无故障)下,全开防护的结果与耗时不劣化——证明治理机制对正常任务零税。这是「不伤老能力」传统的延续:所有机制默认关、可降级,开了不劣化、故障下才生效。
5. 方案对比:怎么验证可靠性?
| 方案 | 做法 | 取舍 |
|---|---|---|
| ① 不做混沌直接上线 | 等用户当测试员 | ✅ 零开发;🚫 生产事故当测试反馈,代价大 |
| ② 一次性混沌演练 | 上线前跑一次混沌,过了就上 | ✅ 比不做好;🚫 会过期(代码改了就不准了) |
| ③ 回归式混沌套件(本课主路线) | 进测试资产,每次改动可重跑 | ✅ 持续验证、对照基线、可复现;🚫 要维护套件 |
选 ③ 的理由:方案 ① 把用户当测试员,方案 ② 是快照(会过期)。回归式混沌套件进 CI/测试资产,每次改动重跑,对着 L00 基线量收益——这才是「可靠性有数字背书」的含义。
6. 跑起来
code.py / run_chaos_eval.py
cd portfolio-projects/research-assistant
python eval_agent/run_chaos_eval.py # mock 演示(本表数字)
# python eval_agent/run_chaos_eval.py --real # 真实 API(需 ZHIPUAI_API_KEY)
输出:
- 混沌收益矩阵(六类故障 × 全关/全开)
- 可靠性 SLO 卡
- CHAOS_REPORT.md
7. 落地清单
| 文件 | 改动 | 如何验证 |
|---|---|---|
eval_agent/run_chaos_eval.py |
新增:六类故障 × 防护矩阵跑批 + SLO 卡 + CHAOS_REPORT.md 生成 | python eval_agent/run_chaos_eval.py |
agent-ops-lessons/08_chaos_eval/code.py |
调用 run_chaos_eval 的演示入口 | python code.py |
验收
cd portfolio-projects/research-assistant
# 1. 现状测试全绿(L08 不改主链路)
python -m pytest -q
# 预期:219 passed
# 2. 混沌收益矩阵可复现
python eval_agent/run_chaos_eval.py
# 预期:生成 CHAOS_REPORT.md,含「全关 vs 全开」两行且全开显著改善
# 3. 纯净跑回归行不劣化(看报告第三节)
cat eval_agent/CHAOS_REPORT.md | grep -A2 "纯净跑回归"
# 预期:pure 全开不劣于全关
8. 本课在两条主线上的位置
- 爆炸半径主线:把 L01–L07 的治理收益量化——全关 vs 全开的成功率(33%→100%)、浪费 token(11917→870)对着 L00 基线量出来。没有这张矩阵,「爆炸半径有界」只是断言,有了它是数字。
- 自主-控制主线:纯净跑回归行证明「治理零税」——全开防护对正常任务不劣化。这是自主-控制主线的关键证据:闸开得不伤自主性(正常任务照跑),只在故障下生效。
🎯 面试话术
「我的 Agent 可靠性有 SLO 卡:任务成功率、卡死率、超支率、副作用重复率、崩溃恢复成功率。数字来自六类故障注入的回归式混沌套件——不是一次性演练,而是进测试资产,每次改动可重跑。
全关 vs 全开的收益矩阵对着 L00 裸基线量出来:全关成功率 33%、平均浪费 1.2 万 token;全开成功率 100%、平均浪费 870 token。每类故障都有对应的机制兜住——慢/坏工具用熔断+降级,循环用步数预算,崩溃用 checkpoint 续跑,超支用成本预算,副作用用幂等+审批。
还有一行纯净跑回归证明治理零税——全开防护对无故障的正常任务不劣化。这和 frontier 的能力评估不同:那个量『干净跑下的能力』(加记忆好多少),我量『故障下的生存』(断网/慢工具/崩溃还能不能出结果)。矩阵跑批复用了 frontier-L09 的开关矩阵思路,但对象从能力开关变成了混沌故障。」