先这样答
Agent 先判断冲突的性质,再决定修正范围。参数级冲突只影响当前工具调用。比如数据格式或参数取值和预期不符。Executor 应就地修正参数,然后重试,不需要改动后续计划。
目标级冲突说明某个计划前提已经不成立。比如计划要求继续处理库存,但工具返回库存已无。Executor 此时要把冲突上报给 Planner。Planner 只对受影响的部分进行 Replan,并保留与冲突无关的步骤。这样可以避免因为局部变化而推翻整个计划。
全局级冲突说明任务目标本身已经失效。Agent 应终止执行,并向用户说明原因。整个过程中,Executor 不能只把原始报错丢给 Planner。它要结构化描述哪里与假设不符,以及工具返回的实际结果。Planner 拿到明确的冲突信息后,才能判断应该重试、局部调整还是终止。
面试官会怎么追问
-
「为什么不能每次冲突都让 Planner 重新规划?」 因为参数级冲突只涉及当前调用。Executor 可以直接修正参数并重试。只有计划前提不成立时,才需要 Planner 调整受影响的步骤。
-
「局部 Replan 时,哪些步骤应该保留?」 保留与冲突无关的步骤。Planner 只修改依赖失效前提的部分。比如库存已无时,应调整依赖库存的后续步骤,而不是推翻其他无关步骤。
-
「Executor 上报什么信息才算结构化?」 至少要说明冲突发生在哪里,原计划假设是什么,工具返回的实际结果是什么。Planner 据此判断冲突层级。只上传原始报错,Planner 无法直接知道哪条前提已经失效。
回答的坑
-
只说失败后重新规划,没有区分参数级、目标级和全局级,会把不同范围的冲突混在一起。
-
只把工具原始报错交给 Planner,没有说明预期和实际的差异,会让后续判断缺少依据。
同系列的题