Apollo Timeout - 超时容错原则
核心准则
每个子任务设置超时时间,超时后标记继续而不是卡死整个流程。危险操作用fork隔离。
Claude Code 的超时机制:
- stall 检测:事件循环超过500ms无响应会报警
- 子任务超时:每个子任务有独立的超时时间
- 超时标记继续:不卡死,记录超时继续下一步
三种超时处理策略
1. 超时标记继续(Timeout → Continue)
子任务执行中... → 超时 →
记录"任务X超时" →
标记继续 →
执行下一个任务
2. 超时重试(Timeout → Retry)
子任务执行中... → 超时 →
重试一次 →
再超时 →
标记失败,继续
3. Fork 隔离(Fork Isolation)
危险操作 →
在独立子Agent中执行 →
超时/失败不影响主流程
stall 检测原则
| stall时长 | 处理 |
|---|---|
| < 100ms | 正常 |
| 100-500ms | 关注 |
| > 500ms | 报警 |
| > 阈值 | 强制中断 |
应用检查表
- 每个子任务是否都设置了超时时间?
- 超时后是否有明确的处理策略?
- 危险操作是否用fork隔离?
- 是否有任务可能无限循环?
危险操作需要隔离
- 执行用户提供的代码
- 文件系统修改
- 网络请求
- 长时间运行的命令
- 不可逆的操作
参考
来源:Claude Code 事件循环 + AgentTool,512,000行源码研究
