Goal 在长程任务推进中如何防止 Agent 行为漂移?
未标记
考查重点:目标持久化与执行方向。持久保存独立目标/约束和验收,阶段结果对照检查,计划可改、目标变更需用户新要求,不让历史噪声带偏
本题目录
参考答案
核心回答
Goal防止长程Agent漂移,需要把目标保存为独立于聊天历史的任务状态,再用阶段结果持续校对。目标中应包含要交付什么、作用范围、重要约束和完成依据;计划只描述当前怎么推进,可以调整,目标不能被一次工具结果或压缩摘要悄悄改写。
每轮恢复时加载目标、当前步骤、已完成证据和未解决项。行动前判断它服务于哪个未完成目标;行动后根据文件、测试、查询结果等外部证据更新进度。发现路径无效就改局部计划,发现需求变化就更新目标版本。预算耗尽或长期无进展属于停止原因,不能算目标已经完成。
目标、计划与证据分开保存
例如“给订单列表增加退款状态筛选”,目标是筛选能按状态正确返回结果,并保持原分页行为;计划可能是先定位接口、补查询条件、连接UI、验证。执行中发现现有接口已经支持该条件,可以删掉后端修改步骤,但不能因此把“完成整个筛选”缩成“接口能查询”。
状态中至少保留目标版本、范围、子任务依赖、每步产物引用、验证结果及阻塞项。摘要只负责帮助快速理解,详细日志和代码仍保存在可回查位置。这样上下文重置或容器迁移后,可以按真实状态续接,而不是根据模型印象猜测进展。
怎样发现正在偏离
漂移往往表现为不断研究无关方案、重复执行没有新证据的动作,或者局部优化挤掉了原交付。可以在步骤结束、计划变化和上下文压缩后检查目标覆盖:当前产物解决了什么,剩余差距是什么,下一步为什么能缩小差距。
确定性约束由程序检查,例如允许修改的目录、预算、必需交付文件;业务语义和体验质量再结合规则、独立评审或人工判断。验证器同样可能不完备,不能把“模型说相关”当成硬保证。重复失败时先定位前提或工具环境,再决定重规划,避免仅换一种措辞继续同一路径。
长任务的接力方式
把大任务拆成可验证的增量交付,在每次接力留下当前状态、产物和未完成事项。新一轮先核实环境及最近结果,再选择下一项。Anthropic的长任务实践采用功能清单和进度记录解决跨窗口衔接;适合借鉴的是外部状态与增量验证,不是机械复制它的文件名或每轮提交方式。
常见追问
反复把Goal放在Prompt开头是否够用? 有助于提醒,但无法证明动作相关、结果正确或任务完成。可靠性来自目标状态、可观察反馈和恢复机制一起工作。
对应教程
- 实战项目-深度研搜/1-DeepAgents基础与核心概念:回看任务规划、上下文管理和主子智能体职责。
参考资料
- 国内:JavaGuide:Loop Engineering:依据内外循环与外部状态,说明正文中长程任务如何沿用上轮留下的证据继续推进。
- 国内:zero2Agent:Agent架构与规划设计:采用 Goal 设计中的目标、计划与预算分工,说明正文中稳定目标如何与可变步骤、退出条件分开保存。
- 国内:Datawhale:上下文工程:借鉴长时程上下文中的摘要、结构化笔记与独立子任务,说明正文中跨窗口任务如何接力。
- 国外:Anthropic:Effective harnesses for long-running agents:依据功能清单、增量进展和测试,说明正文中如何防止任务尚未验证就宣称完成。
- 国外:Anthropic:Building effective agents:采用 Agent 循环的环境反馈和停止条件,说明正文中持续校对目标与实际结果的作用。
