Agent 观察与动作描述 Agent 如何通过动作影响外部环境,再根据环境返回的观察决定下一步。这种反馈闭环使 Agent 能依据真实执行结果修正判断,而不是只靠一次文本生成完成任务。
基本关系
- 动作(Action):Agent 向环境发出的操作,例如调用搜索工具、读取文件、提交表单或向用户提问;
- 环境(Environment):动作实际作用的系统,例如网页、代码仓库、数据库、设备或模拟世界;
- 观察(Observation):环境在动作之后返回给 Agent 的信息,例如查询结果、文件内容、错误码、测试报告或界面状态。
最小闭环可以表示为:
当前状态 → 选择动作 → 环境执行 → 返回观察 → 更新状态 → 选择下一动作
在大语言模型 Agent 中,动作通常表示为结构化工具调用,观察通常表示为对应的工具结果。
动作空间
动作空间是 Agent 当前允许选择的全部动作。它不仅由模型能力决定,还受到工具清单、参数约束、身份权限、运行环境和人工审批规则限制。
设计动作空间时应注意:
- 工具职责清晰,减少功能重叠;
- 参数足以表达任务,但避免开放无边界的任意命令;
- 区分只读、可逆写入和不可逆操作;
- 根据当前阶段只暴露必要工具;
- 让“请求确认”“报告阻塞”“结束任务”也成为明确行为。
观察设计
工具返回了数据,不代表模型得到了有用观察。良好的观察应包含:
- 明确的成功或失败状态;
- 与本次动作对应的调用 ID;
- 足以继续决策的结构化数据;
- 错误码、可否重试和建议处理方式;
- 数据来源、时间或版本等必要元信息;
- 对过长结果的摘要、分页信息或后续读取方式。
观察必须反映真实环境。不能因为模型预期某操作会成功,就省略实际执行和结果检查。
部分可观察性
Agent 通常只能看到环境的一部分。例如,文件搜索没有返回结果,可能表示内容不存在,也可能是路径、权限或查询条件有误。因此应区分“确认不存在”“尚未检查”和“检查失败”,必要时通过额外动作获取证据。
从观察更新状态
收到观察后,Harness 或 Agent 应:
- 将结果与正确的动作对应;
- 判断结果是否可信、完整且仍然有效;
- 更新任务状态和已有假设;
- 决定继续、重试、改用其他动作、请求人工介入或结束;
- 保存必要轨迹,供调试和评测使用。
常见失败
- 模型生成了动作描述,但 Harness 没有真正执行;
- 工具只返回自然语言,成功与失败无法可靠判断;
- 错误观察被当成空结果,导致错误结论;
- 旧观察在环境变化后仍被当作当前事实;
- Agent 重复相同动作,却没有获得新的信息;
- 外部文本中的恶意指令被误当成高优先级规则。
与其他概念的关系
- Agent 工具调用定义一次动作如何表示、执行和返回;
- Agent 工具调用循环负责把多轮动作与观察组织成完整运行流程;
- Agent 状态与记忆保存观察产生的状态变化;
- Agent 规划与任务分解根据观察调整后续动作。