METR的时间地平线(time-horizon)追踪给出了自主智能体领域最陡峭的一条曲线:前沿模型能独立完成(50%成功率)的任务长度,2019—2024年每7个月翻一倍,2024年之后加速到每4个月翻一倍。Claude Opus 4.6在2026年2月跨过了约14.5小时的单次任务门槛。这意味着一个prompt可以驱动智能体跑满一整个工作日。但生产端的真实失败曲线与之背离:绝大多数任务不是死在开头,而是死在第47步——一个50步长流程的最后三步。能力够,累积状态不够,这就是自主智能体的退化悖论(degradation paradox)。本期拆解让长程智能体"不死在末段"的自愈内核:重试、校验门、自批判、重规划、检查点回滚、持久化续航六件套,以及那条不可逾越的不可逆边界。
| 自愈机制 | 触发信号 | 成本量级 | 语义安全 | 适用阶段 | 代表实现 |
|---|---|---|---|---|---|
| 盲重试(指数退避) | 异常/超时/5xx | 低 | 否(可能重放副作用) | 瞬态故障 | LangGraph RetryPolicy |
| 校验门重试 | 输出schema不合规 | 中 | 是(先校验再生效) | 输出解析 | Pydantic + structured output |
| 自批判重写 | 评分/测试未过 | 高(多一轮LLM) | 是 | 代码/文档生成 | Reflexion、Critic循环 |
| 重规划 | 连续N步无进展 | 高 | 是 | 计划漂移 | ReWOO、plan-act-verify |
| 检查点回滚 | 状态被改坏 | 中 | 是(到已知good state) | 不可逆操作前 | LangGraph checkpoint、git revert |
| 持久化续跑 | 进程崩溃/中断 | 低(一次性) | 是 | 跨重启 | Temporal、durable execution |
| 优雅降级 | 主路径全失败 | 低 | 是 | 兜底 | 降级返回部分结果 |
METR的TH1.1评估把"任务时长"定义为人类专家完成同一任务所需的墙钟时间,再标定智能体50%成功率对应的那个时长。从GPT-3时代的几十秒,到Claude Opus 4.6的14.5小时,这是AI史上最陡的趋势线之一,被称为"新摩尔定律"。但企业部署侧的报告反复指向同一个现象:让智能体跑一个50步的工单,前44步几乎不会错,错的是45—50步的"收口"——提交前的最后校验、依赖更新、环境清理、回写数据库。这恰恰是METR成功率曲线下降最陡的区段:50%成功率意味着还有一半的长任务会在末段崩。所以"自愈"不是锦上添花,而是决定一个14小时任务最终是否交付的唯一变量。
zeltrex那篇《Self-Healing Architecture for Autonomous AI Agents》点破了一个反直觉结论:长程智能体输出质量下降,不是因为模型"忘了"或"累了",而是因为累积状态(accumulated state)的污染。跑了几十轮之后,上下文里堆满了半成品、被推翻的中间方案、互相矛盾的工具返回;工作目录里有几十个临时文件、几个失败分支、被注释掉的死代码;内存中的计划已经和实际走过的路径分叉。模型在第47步做出的决策,是基于一个被前46步反复改写的脏世界。这就是退化悖论——能力没变,世界变脏了。破局不是更强的模型,而是更强的状态卫生:每一步之后压缩、归档、对账,把"世界"重新对齐回"计划"。
最朴素的自愈是重试。LangGraph的RetryPolicy给每个节点挂一个按节点计算的指数退避重试,一行配置就能挡住90%的瞬态故障(网络抖动、429、超时)。但盲重试有个致命前提:操作必须幂等。对一个GET或纯函数调用,重试安全;对一个POST /charge或发邮件,盲重试会把钱扣两遍、邮件发两遍。所以生产级自愈的默认形态是校验门重试:工具输出先过Pydantic schema校验,不合规就在"未生效"阶段重试,而不是等副作用落地后才发现格式错了。关键的工程红线是——重试只重试"还没产生副作用"的那一层,副作用层一律走幂等键或检查点回滚,绝不走盲重试。
# LangGraph: 节点级退避重试,仅对可重试异常生效
from langgraph.pregel import RetryPolicy
graph = builder.compile(
retry_policy=RetryPolicy(initial_interval=1, backoff_factor=2.0, max_interval=30, max_attempts=4)
)
# 校验门: 输出未生效前拦截, 避免重试触发副作用
from pydantic import ValidationError
def safe_call(tool, payload, attempts=3):
for i in range(attempts):
raw = tool.invoke(payload) # 纯读取/无副作用
try:
return OutputModel.model_validate(raw) # 生效前的最后一道闸
except ValidationError as e:
log(f"attempt {i} schema fail: {e}")
raise FallbackSignal() # 校验失败, 转降级而非盲重试
自主编程智能体之所以能在长任务里反复试错而不毁掉仓库,靠的不是模型的判断力,而是git提供的"时间机器"。2026年业界沉淀出的标准做法是"一步一提交":每完成一个原子改动就自动commit,配一条清晰的message;发现路径走坏了,git revert到上一个green checkpoint,而不是让模型去"手动撤销"它自己的改动——模型对自己的历史改动基本是不可靠的。更激进的是工作树隔离:每个尝试在独立worktree里跑,验证通过才合并回主干,失败直接删树,零风险。但这里有一条无法绕过的硬约束:git只能撤销文件系统状态。代码可以revert,邮件不能unsend,转账不能untransfer,已经发出去的PRD不能unnotify。自愈内核的第一条设计原则就是区分可逆操作与不可逆操作,在不可逆操作前强制检查点+人工确认。
重试和回滚都是"局部回退到上一个好状态",但有一类失败它们救不了:计划本身错了。智能体按计划走到第47步才发现第30步的方向就偏了,这时候重试第47步一万次也没用,需要的是重规划(replan)——保留已完成且验证过的部分,丢弃剩余计划,基于当前真实世界状态重新生成后N步。2026年社区收敛出的可靠形态是plan-act-verify-self-correct四段循环:plan阶段产出可验证的子目标,act阶段执行,verify阶段用确定性检查(测试、lint、API探活)判生死,连续K次verify失败就触发replan而非继续retry。重规划的成本很高(要重新调用LLM、要重新展开上下文),所以触发电平要卡得严:单步失败重试,多步连续失败才replan,整体方向漂移才放弃任务转人工。
自愈的"软"形态是自批判——让模型当自己的评审。Reflexion范式让agent在每轮失败后写一段自然语言反思,塞进下一轮的上下文,对"格式错""漏边界条件"这类重复性失误有效。但纯文字反思有个老问题:模型批判别人的能力远强于批判自己,self-critique经常变成自我表扬。2026年的进化方向是过程奖励模型(Process Reward Model, PRM):用一个小模型给推理链的每一步打分,分数低的那一步才触发重写,而不是整链重来。这把"重试成本"从"整条trajectory"降到了"单步",长任务的尾部修复成本因此下降一个量级。代价是需要一个训练好的PRM评分器,对没有这个基建的团队,退而求其次用规则校验(测试通过率、type check)当"硬PRM"。
跑14小时的任务,进程不可能不中断——OOM、部署重启、API限流、人为中断都会发生。能从中断点继续而非从头再来,是长程自愈的底盘。LangGraph内置checkpointer,把图的state按step持久化(默认in-memory,生产换Postgres/Redis),崩溃后从最近的checkpoint续跑,适合节点间状态明确的图编排。Temporal这类durable execution引擎走得更远:把每一步都建模为可重放的activity,进程死在哪一步、重启后精确从那一步重放,连重试策略、超时、补偿都是声明式的。选型红线很清晰——图编排、节点少、状态简单选LangGraph checkpointer;长链路、跨服务、需要补偿事务(saga)选Temporal。两者解决的是"中断恢复",但前者是框架级便利,后者是运行时级保证,耐力等级不同。
flowchart TD
A[任务输入] --> B[Plan: 产出可验证子目标]
B --> C[Act: 执行原子操作]
C --> D{Verify: 确定性校验}
D -- 通过 --> E[Checkpoint: 一步一提交]
E --> F{还有剩余步骤?}
F -- 是 --> C
F -- 否 --> G[交付]
D -- 不通过 --> H{失败类型?}
H -- 瞬态/格式 --> R1[校验门重试<br/>退避+幂等键]
H -- 状态污染 --> R2[Checkpoint回滚<br/>git revert到green state]
H -- 连续K步无进展 --> R3[Replan<br/>重写剩余计划]
H -- 不可逆操作前 --> R4[强制人工确认]
R1 --> C
R2 --> C
R3 --> B
R4 --> G
C -.可逆/不可逆判定.-> P{操作是否可逆?}
P -- 可逆 --> R2
P -- 不可逆 --> R4
subgraph 持久化底盘
E -.state快照.-> CK[(Checkpoint Store<br/>Postgres/Temporal)]
CK -.崩溃续跑.-> C
end
style R2 fill:#ffe0e0
style R4 fill:#fff3cd
style CK fill:#e0e0ff
长程编程智能体(代码生成/重构):一步一commit + worktree隔离 + 测试驱动的verify门。重试用校验门重试,回滚用git revert,连续3次测试失败触发replan。这是2026年自主编码智能体最成熟的栈,git就是它的undo缓冲区。
长程数据处理/研究智能体:plan-act-verify-self-correct四段循环 + 检查点持久化。中间产物落盘归档,每完成一个子目标写一份阶段性结论,避免上下文被半成品污染(退化悖论的直接对策)。
触达外部世界(发邮件/调支付/写数据库)的智能体:在自愈工具箱之上再叠一层"可逆性防火墙"。所有不可逆操作前强制检查点 + 人工确认(HITL gate),副作用工具强制幂等键,绝不进盲重试路径。记住那条铁律:你没法git revert一封已经发出去的邮件。
跨进程/跨服务的超长任务(数小时到数天):放弃框架级checkpoint,上Temporal做durable execution,把每步声明为可重放activity。这是唯一能保证"跑到第47小时崩了,重启后从第47小时继续"的工程保证。
自愈能力不够时的诚实选项:当verify连续失败、replan也救不回时,正确做法是优雅降级——返回已完成的部分结果 + 明确的失败原因,而不是无限重试烧token。一个能说"我在第47步失败了,这是前46步的成果"的智能体,比一个默默卡死的智能体有用一万倍。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
