【免费下载链接】Sentry
Learning to Recover from LLM Agent Failures at Test Time
Sentry 是面向 LLM Agent 的外部运行时故障管理层。本文聚焦它的验证机制:Agent 被"救活"之后,Sentry 如何在恰好 H=10 个循环内判断这次恢复是真正修好了故障,还是只是侥幸没有再出错。
🔍为什么需要专门的验证?
故障修复很容易"看起来成功":Agent 卡循环几轮之后,突然走出两步正常操作,然后任务又重新卡死。如果只凭"没再报错"就算恢复,错误的经验会沉淀进记忆库,污染后续所有任务。Sentry 的 Verifier 就是为解决这个问题而设计的——它只认证"触发救援的那个具体故障"是否被修复,而不是笼统地看任务是否成功。
H=10 验证边界的配置位置
H=10 是 Sentry 论文中设定的固定参数,在源码里被硬性锁死:
- 轨迹配置:
post_rescue_horizon默认值为 10,见 Sentry/config.py - 完整配置校验:如果试图修改该值,会直接报错
Full Sentry uses H=10,见 Sentry/config.py - 论文参数快照:configs/paper.yaml(与
window_size: 5检测窗口配套)
软故障与硬故障的两种验证路径
Sentry 把故障分成两类,验证方式完全不同:
| 故障类型 | 验证方式 | 验证时机 |
|---|---|---|
| 硬故障(动作不合法) | 由环境执行结果直接判定 | 1 个循环内立即验证 |
| 软故障(卡循环 / 目标跑偏 / 幻觉) | 模型裁判审阅恢复轨迹 | 恰好走满 H=10 步后验证 |
硬故障走 verify_hard_repair:动作解析成功、schema 合法、且被环境接受,三个条件同时满足才算恢复。
软故障走 EscapeVerifier.verify,它先校验一条强约束:恢复轨迹必须恰好等于 10 步,少一步或多一步都会直接抛错。
验证器的判断标准:如何排除侥幸成功
真正区分"真恢复"与"侥幸"的核心逻辑在验证提示词 build_verifier_prompt 中,有三条关键规则:
- 只判具体故障:裁判必须判断"触发救援的那个故障"是否被修复,提示词明确要求 "Judge the specific retrieval labels and resolution criteria, not generic task success alone"。
- 禁用外部奖励:裁判看不到 benchmark 奖励或最终任务成功标签,提示词明令 "You have no benchmark reward or final task-success label. Do not infer either.",避免拿任务结局倒推恢复是否成立。
- 按故障标签逐条核对:每种细粒度故障标签都有专属的解决标准——例如"循环"要求停止重复旧动作并获得新信息、"幻觉"要求未证实的假设被删除、修正或验证,全部标准见 Sentry/taxonomy.py。
判断标准一句话概括:✅Agent 停止被诊断的行为,并恢复有效、与任务相关、基于观察的进展,才算 resolved;同一故障模式继续、越跑越偏、或恢复中引入新的无据假设,都是 unresolved。
此外,验证器输出必须是固定 JSON(status / justification / evidence),任何格式不合法都会被 parse_verifier_response 保守地记为 unresolved——宁可不认证,也不放过侥幸。
为什么必须是"恰好"10 步?
Sentry.py 中的observe_step是边界的执行者:救援注入后,每个新循环都被追加进post_rescue_steps,满 10 步立即触发验证;如果出现第 11 步时验证仍未触发,会直接抛出 "Sentry missed the exact H-step verification boundary"。
这个"恰好"很关键:
- 短于 10 步:只看到 2、3 步正常表现,无法区分"真修好"和"还没开始复发",侥幸成功会混进来;
- 长于 10 步:验证延迟与 Token 成本上升,且轨迹后段与救援无关的噪声会稀释证据;
- 任务提前结束:finalize_task 会把没走满 10 步的救援事件记为
verification_incomplete,它永远无法更新 Playbook——不完整就不下结论。
只有验证通过的恢复才会沉淀为经验
验证结果直接决定经验沉淀:PlaybookUpdater.summarize 只处理escaped=True的软故障事件,将"触发模式 + 修复原则"总结成可复用条目写入 Playbook;硬修复和未通过验证的事件一律不入库。
这正是 Sentry 在 939 次检测到故障中取得 81.7% 恢复率背后的质量门槛:进入记忆库的每一条经验,都先通过了 H=10 步边界的验证。
关键源码速查表
| 模块 | 作用 |
|---|---|
| Sentry/verifier.py | 硬 / 软两条验证路径与验证器提示词 |
| Sentry/config.py | H=10 参数定义与强制校验 |
| Sentry/taxonomy.py | 故障分类与各标签的解决标准 |
| Sentry/Sentry.py | 主循环:按 H 步边界触发验证 |
| Sentry/updater.py | 把验证通过的恢复总结为 Playbook 经验 |
| configs/paper.yaml | 论文参数快照(W=5,H=10) |
【免费下载链接】Sentry
Learning to Recover from LLM Agent Failures at Test Time
相关推荐
WuKongIM MQTT Will Raft 故障恢复切面评审:故障注入证据链、静态评审结论与验证边界
WuKongIM MQTT Will Raft 故障恢复切面评审:故障注入证据链、静态评审结论与验证边界 本文围绕 docs/reports/mqtt will
即时通讯后端30分钟做出自己的蓝牙鼠标:ESP32 + ESP-IDF 蓝牙 HID 实战教程(附排错清单)
30分钟做出自己的蓝牙鼠标:ESP32 + ESP IDF 蓝牙 HID 实战教程(附排错清单) 本文带你用 ESP IDF 在 ESP32 上完成一个蓝牙 H
物联网嵌入式驱动开发系统编程Registrator故障恢复机制:如何从网络分区和注册中心故障中恢复
Registrator故障恢复机制:如何从网络分区和注册中心故障中恢复 Registrator作为Docker服务注册的桥梁工具,在微服务架构中承担着关键的服务
微服务服务注册发现云原生
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考