先这样答
处理子 Agent 崩溃或超时,整体遵循隔离、检测、梯度兜底和状态保持四个步骤。设计原则是让异常限制在局部环境,按先自救再上报的顺序处理,避免脏数据污染全局。
隔离与检测是前提。子 Agent 需运行在独立的进程或沙箱中,确保崩溃不波及主循环与兄弟 Agent。主流程通过心跳机制或进度上报监控状态,并设置全局超时熔断防止死锁。针对每步设定工具级或任务级的超时预算。捕获异常后,系统会区分可重试的瞬时错误与不可重试的逻辑错误,以决定后续策略。
兜底执行采用逐级递进策略。首先是带退避机制的限次重试;若重试耗尽,则降级使用更简单的工具或小模型路径;若当前路径走不通,将任务委派给另一子 Agent;当横向尝试均失败,再向上抛出异常,由主 Agent 重新规划;最后才是转人工并向用户输出失败说明。此过程必须保证状态一致性。子 Agent 的写入要求幂等或事务化,失败后回滚现场再重试,防止半成品状态污染环境。对于长任务,引入检查点机制让任务从断点续跑,避免全量重来。
兜底顺序体现先自救再上报的逻辑,同时保证失败路径在日志和追踪中可观测,便于事后归因。
面试官会怎么追问
- 「如果是子 Agent 调用外部工具时卡住,怎么防止主 Agent 被拖死?」 主流程需设置全局超时熔断机制。下发任务时给子 Agent 分配明确的超时预算。一旦到达截止时间,主流程直接在沙箱层面强杀子 Agent,回收资源并触发上抛逻辑,防止无限等待。
- 「重试时怎么保证执行了一半的操作不产生脏数据?」 依赖状态一致性设计。要求工具调用具备幂等性,或采用事务化处理。触发重试前,主流程先执行现场回滚,清理半成品状态。对于长任务,依赖检查点机制从上一个断点恢复。
- 「异常分类中,怎么区分瞬时错误和逻辑错误?」 通过解析错误信息判断。网络抖动、接口限流导致的超时归为瞬时错误,适合退避重试。模型幻觉导致的参数格式错误、权限拒绝属于逻辑错误,重试无效,需直接降级或交主 Agent 重新规划。
回答的坑
遇到异常直接回答让主 Agent 重新规划,忽略局部重试和降级,会导致算力浪费与延迟增加,正确方向是遵循梯度兜底顺序。
只强调重试次数,不提环境隔离与状态清理,会导致脏数据累积,正确方向是把幂等回滚和沙箱隔离作为前置条件。
同系列的题
—— 本题完 ——