← 返回总览
♻️ 生命周期与错误处理对比
Agent 的启动→运行→停止→恢复全流程对比
一、Agent 生命周期阶段
通用 Agent 生命周期:
┌─────────┐ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐
│ INIT │───→│ RUN │───→│ PAUSE │───→│ RESUME │───→│ STOP │
│ 初始化 │ │ 执行循环 │ │ 暂停等待 │ │ 恢复执行 │ │ 终止 │
└─────────┘ └────┬────┘ └──────────┘ └──────────┘ └─────────┘
│
├──→ Tool Call → Execute → Result → Continue
├──→ Error → Retry / Fallback / Stop
├──→ Human Input → Wait → Process
└──→ Max Steps / Token Limit → Stop
各项目实现差异:
┌──────────────┬────────┬────────┬─────────┬──────────┐
│ 项目 │ 暂停 │ 恢复 │ 检查点 │ 错误恢复 │
├──────────────┼────────┼────────┼─────────┼──────────┤
│ Aider │ ✅交互 │ ✅ │ Git │ 重试 │
│ OpenHands │ ✅ │ ✅ │ ✅State │ 重试+降级│
│ Codex CLI │ ✅审批 │ ✅ │ ❌ │ 中止 │
│ LangGraph │ ✅HITL │ ✅ │ ✅✅✅ │ 回溯 │
│ AutoGen │ ❌ │ ❌ │ ❌ │ 继续对话 │
│ AutoGPT │ ✅ │ ✅ │ Memory │ 重新规划 │
│ Agent Zero │ ❌ │ ✅ │ 文件 │ 记忆辅助 │
│ PydanticAI │ ❌ │ ❌ │ ❌ │ 类型错误 │
└──────────────┴────────┴────────┴─────────┴──────────┘
二、错误处理策略对比
三、关键模式深度分析
🏆 LangGraph: 最完整的生命周期管理
LangGraph Checkpointing 流程:
1. 每个节点执行后 → 保存 State 快照
2. 条件边决定下一步 → 也记录
3. 人工干预 (Human-in-the-loop):
- interrupt_before / interrupt_after 节点
- 暂停执行,等待人工输入
- 输入后从检查点恢复
4. Time Travel:
- 可以回退到任意历史检查点
- 修改 State 后从该点重新执行
- 完美支持调试和 A/B 测试
优势: 完整的可追溯性和可恢复性
代价: 存储开销 + 每步序列化开销
🔧 Aider: Git 作为状态管理
Aider 的巧妙设计——用 Git 作为 Agent 的"检查点":
1. 每次文件修改前 → 自动 git commit
2. 修改失败 → git revert 回到上一个已知好状态
3. 用户不满意 → /undo 命令直接 git checkout
4. 多文件修改 → 原子 commit,可整体回退
这是"用现有工具做正确的事"的完美示例。
不需要自定义检查点系统,Git 已经解决了版本控制问题。
🛡️ Codex CLI: Guardian 安全评估 + 审批策略
Codex CLI 的安全系统是多层设计:
1. Guardian 风险评估层:
- GuardianAssessmentEvent 评估每次操作风险等级
- GuardianRiskLevel (Low/Medium/High/Critical)
- GuardianUserAuthorization 记录用户授权
2. 审批策略:
on-request → 用户主动请求审批 (交互式)
on-failure → 仅失败时审批 (半自动)
never → 完全自动 (仅限信任环境)
3. Sandbox 隔离:
- Linux: Landlock (文件) + Seccomp (syscall) + Network NS
- Windows: Unified Exec Backend
这是 Agent 安全性的最佳实践:
不是"要不要审批",而是"审批粒度如何配置"。
🎯 构建自己 Agent 的生命周期建议:
- 必须实现检查点 — 不需要 LangGraph 那么复杂,至少保存每步状态 (参考 OpenHands)
- Git 作为代码 Agent 的状态管理 — Aider 的思路完美,不重复造轮子
- 审批流必须可配置 — Codex CLI 的三级模式是最佳实践
- 错误恢复 = 重试 + 降级 + 回退 — 三层防线:先重试,再简化方案,最后回退到检查点
- Human-in-the-loop 是特性不是 bug — 让用户能在关键时刻介入,比全自动更安全
- 上下文溢出必须有预案 — 压缩 > 截断,结构化摘要 > 简单砍掉