故障恢复与演化
故障恢复和自我演化共享一条原则:任何改变长期状态或行为的动作,都必须有证据、版本、验证和回退路径。
故障分类
先分类,再选择恢复策略:
| 类别 | 例子 | 典型策略 |
|---|---|---|
| 瞬时基础设施故障 | 网络抖动、临时限流 | 有预算的退避重试 |
| 持久依赖故障 | 服务下线、凭据失效 | 熔断、降级、等待人工 |
| 状态冲突 | 版本不匹配、租约丢失 | 重新加载、放弃写入、恢复协调 |
| 数据质量故障 | 格式错误、陈旧或冲突数据 | 隔离、重新观测、人工确认 |
| 领域执行故障 | 计划不可行、约束冲突 | 重新规划、转移任务 |
| 外部副作用不确定 | 请求超时但远端可能成功 | 查询、幂等重放或补偿 |
| 安全故障 | 越权、注入、异常委托 | 立即拒绝、隔离、撤销权限 |
| 语义质量故障 | 输出不符合目标或质量阈值 | 评估、重规划、请求监督 |
| 演化回归 | 新策略损害既有能力 | 停止发布、回滚稳定版本 |
恢复闭环
Failure
-> Detect
-> Contain
-> Diagnose
-> Select Recovery
-> Execute
-> Verify
-> Learn
Detect
检测信号包括异常、超时、心跳、指标阈值、状态不变量、人工反馈和语义评估。检测器必须标明置信度,避免单个噪声信号直接触发破坏性恢复。
Contain
在原因不清楚时,优先限制影响范围:停止新任务、撤销写租约、隔离工具、冻结演化版本或切换只读模式。
Diagnose
诊断记录至少包含:
- 首次异常时间和检测来源;
- 受影响 Agent、任务、资源和外部系统;
- 最后确认成功的恢复点;
- 已完成和不确定的副作用;
- 候选原因及证据;
- 当前数据和权限版本。
Select Recovery
恢复策略从轻到重通常为:重试、重新规划、降级、补偿、回滚、任务转移、实例迁移、隔离、人工接管、终止。
“重试”只有在动作幂等、失败可判定且未超出预算时才安全。
Verify
恢复动作执行成功不等于系统已恢复。验证至少检查:
- 生命周期和租约是否一致;
- 外部副作用是否重复或遗漏;
- 任务游标是否继续前进;
- 快照、事件日志和记忆索引是否对齐;
- 安全边界和资源预算是否恢复;
- 原始故障是否可再次复现。
重试预算
每个动作应定义最大次数、总时长、退避策略、可重试错误和不可重试错误。预算耗尽必须转入明确状态,不能形成无限循环。
建议记录:
RetryPolicy
├── max_attempts
├── max_elapsed_time
├── backoff
├── retryable_errors
├── non_retryable_errors
├── idempotency_requirement
└── exhausted_action
副作用安全
外部动作可能出现四种状态:未开始、已成功、已失败、结果未知。结果未知最危险,不能等价为失败。
工具适配器至少声明一种保障:
- 幂等执行:相同键重复调用只产生一次效果;
- 结果查询:可以通过操作 ID 查询远端真实状态;
- 补偿动作:可以撤销或抵消已发生效果;
- 人工确认:无法自动判断时暂停并请求授权主体处理。
演化闭环
Experience
-> Reflection
-> Hypothesis
-> Candidate Change
-> Isolated Experiment
-> Evaluation
-> Approval
-> Gradual Release
-> Monitor
-> Promote or Rollback
反思不是事实
Agent 的反思只是对经验的解释候选。它必须绑定来源、置信度和反例,不能直接写成语义事实或能力结论。
候选变更类型
- 语义知识更新;
- 程序性技能或工作流更新;
- 决策策略或提示配置更新;
- 工具选择和参数策略更新;
- 自我模型能力评分更新;
- Runtime 配置或架构变更建议。
不同类型需要不同验证门禁。知识更新关注事实来源;策略更新关注任务结果和安全回归;架构变更必须由工程流程处理,不能由在线 Agent 直接发布。
演化验证
候选版本至少与稳定版本比较:
- 目标任务质量;
- 失败率和恢复成功率;
- 资源、延迟和费用;
- 安全策略命中和越权风险;
- 已知回归集表现;
- 对其他 Agent 和共享资源的影响;
- 结果稳定性和置信区间。
只在候选版本的收益超过门槛、风险在预算内、回退路径已验证时发布。
发布策略
从低风险到高风险:
- 离线回放历史事件;
- 沙箱环境模拟;
- 影子运行,不产生外部副作用;
- 小流量或有限任务集灰度;
- 扩大范围并持续监控;
- 提升为稳定版本。
任何阶段出现硬性安全回归都应立即停止;质量退化根据阈值自动回滚或请求审批。
人类监督
以下变化默认需要人类或独立治理主体批准:
- 权限范围扩大;
- 高风险工具或外部系统访问;
- 身份、使命或价值约束修改;
- 删除不可恢复记忆或审计证据;
- 提高资源和费用上限;
- 修改演化门禁本身;
- 生产环境的架构或代码自修改。
审批必须绑定候选版本、证据和有效期。变更内容发生变化后,旧审批自动失效。
恢复与演化的共同不变量
- 不确定的副作用不能被当成未执行。
- 无限重试不是恢复策略。
- 反思和单次经验不能直接修改稳定行为。
- 新版本不能覆盖唯一稳定版本。
- 回滚必须恢复行为、配置和相关记忆引用,而不只是代码版本。
- 恢复和演化全过程必须能够关联到原始证据。
验收场景
- 工具请求超时但远端成功时,不会重复创建资源;
- 连续瞬时错误达到预算后,任务进入可诊断状态;
- 新策略在平均质量提高但安全回归时被拒绝;
- 灰度发布中指标恶化后自动回到稳定版本;
- 候选变更修改后,原审批不能继续使用;
- 回滚后,程序性记忆和自我模型不会继续引用已撤销版本。