李宏毅 AI Agent:目标、行动、观察与规划
整理 AI Agent 的循环、应用、记忆、工具调用、自动构建工具和规划研究。
文章目录
AI Agent:从目标、行动、观察到记忆、工具与规划
原始课件:
ai_agent (v11).pptx,共 96 页 主讲:李宏毅 本文使用简体中文整理,论文标题保留英文。
0. 本章总览
本章把 AI Agent 理解为一种“由目标驱动、能够连续与环境互动并自行调整行动”的系统。它与普通问答式 AI 的区别,不在于是否使用了更大的模型,而在于是否形成了持续循环:
目标(Goal) -> 根据当前观察选择行动(Action) -> 环境产生新的观察(Observation) -> Agent 更新上下文、记忆或计划 -> 继续行动,直到达到目标或终止课件聚焦三个关键能力:
- 根据经验调整行为,也就是记忆与持续改进。
- 使用工具,把语言模型的能力扩展到外部系统。
- 制定并修正计划,在长程任务中搜索可行路径。
一个贯穿全章的重要前提是:课件中的 Agent 主要依赖现成语言模型的推理与上下文学习能力,没有为了每个示例重新训练模型。 因此,本章讨论的重点是推理时的系统设计,而不是参数训练。
1. 什么是 AI Agent(第 1-14 页)
1.1 从“明确指令”到“只给目标”
普通使用方式通常是“一个口令、一个动作”:人类给出明确指令,模型直接生成一次结果。Agent 的输入更接近目标,例如“解决一个研究问题”“赢得比赛”或“完成一次旅行规划”。系统需要自己决定:
- 目标应拆成哪些子任务;
- 当前应该采取什么动作;
- 怎样解释环境反馈;
- 原计划失败后如何调整;
- 何时认为任务已经完成。
因此,Agent 适合需要多步骤执行、环境反馈和动态改计划的任务。
1.2 Agent 的基本闭环
课件用 AlphaGo 说明 Goal -> Action -> Observation 闭环:目标是赢棋,行动是落子,观察是对手和棋盘的新状态。这与强化学习的常见表述相似,但本章重点不是为每个任务做强化学习。
传统强化学习方法通常需要:
- 明确定义状态、动作空间和奖励;
- 在特定环境中反复采样;
- 针对任务训练策略以最大化累计奖励。
这种方法在边界清晰的任务中有效,但为每个开放任务重新设计奖励和训练模型,成本很高。
1.3 直接以 LLM 作为 Agent 的决策核心
课件给出的替代思路是直接使用 LLM:
- 用自然语言描述目标和当前观察。
- LLM 生成文字形式的行动意图。
- 系统将文字转译为环境可执行的动作。
- 把新的观察追加到上下文,再让 LLM 继续生成下一步。
从 LLM 的角度看,Agent 仍然是在“续写”:
goal, obs1 -> action1, obs2 -> action2, obs3 -> action3 ...Agent 的能力因此受到基础模型原有能力的直接约束。提示词、记忆、工具和搜索可以放大能力,但不能保证模型已经掌握任务所需的知识或规划算法。
1.4 为什么 LLM Agent 的动作空间更开放
传统 Agent 往往有预先定义的有限动作,例如围棋只有棋盘上的落子位置。LLM Agent 可以通过自然语言调用搜索、代码、数据库、视觉模型、浏览器和操作系统,动作空间接近开放集合。
另一个优势是环境反馈可以包含丰富信息。例如程序出错时,传统奖励可能只是 -1;LLM Agent 可以读取编译日志,再据此修复代码。也就是说,LLM 不只接收奖励值,还能利用带语义的反馈。
1.5 相关研究
- BIG-bench: Beyond the Imitation Game Benchmark:课件以其中的棋类任务说明,语言模型虽然能处理棋局文本,但“能生成答案”不等于稳定掌握环境规则和长程决策。
- 课件还用 ChatGPT 与 DeepSeek 下棋的视频案例提醒:演示可以显示能力,也可能暴露非法动作、状态跟踪失败和长程规划不足。
本节结论
LLM Agent 不是一种全新的基础模型,而是一种系统形态:让语言模型在目标、观察和行动之间循环,并通过外部执行器真正改变环境。
2. Agent 的应用与评测环境(第 15-26 页)
2.1 虚拟社会中的生成式 Agent
Generative Agents: Interactive Simulacra of Human Behavior 在类似《模拟人生》的小镇中放入 25 个 Agent。其核心架构包含:
- 观察:把经历记录成自然语言记忆;
- 检索:按照相关性、时间近因和重要性取回记忆;
- 反思:把零散经历综合成更高层认识;
- 规划:依据记忆与反思生成后续行为。
论文展示了从“举办情人节派对”这一初始意图出发,Agent 自发传播邀请、建立关系并协调到场的现象。消融实验表明,观察、规划和反思都对行为可信度有贡献。
2.2 游戏世界中的 NPC
Minecraft NPC 案例说明 Agent 可以在持续环境中扮演角色、观察世界并采取行动。这里的难点包括:
- 状态空间巨大;
- 需要保持长期目标;
- 行动会改变世界,错误可能累积;
- 多个 Agent 之间还会产生协作和涌现行为。
2.3 让 AI 使用电脑和网页
网页与电脑操作把观察表示为页面、DOM、截图或系统状态,把行动表示为点击、输入、滚动、选择和调用 API。
相关研究形成了逐渐接近真实世界的一条路线:
| 研究 | 主要贡献 | 对 Agent 的启示 |
|---|---|---|
| World of Bits(ICML 2017) | 建立网页任务平台,让 Agent 通过键鼠完成网页操作 | 网页可作为通用交互环境,但早期任务较规则化 |
| Mind2Web | 收集 137 个真实网站、31 个领域、2000 多个开放任务;用小模型先过滤超长 HTML | 通用网页 Agent 需要处理真实页面,并控制输入上下文规模 |
| WebArena | 构建可复现、功能完整的网站环境和长程任务 | GPT-4 基线端到端成功率为 14.41%,远低于人类 78.24% |
| VisualWebArena | 在 WebArena 基础上加入必须依赖视觉理解的任务 | 只读取文本或 DOM 不足以处理真实视觉网页 |
2.4 用 Agent 训练模型和做数据科学
- AIDE: AI-Driven Exploration in the Space of Code:把机器学习工程视为在代码方案空间中的迭代搜索,通过提出方案、运行实验、读取反馈和继续改进,自动完成建模流程。
- AutoKaggle:以多 Agent 分工处理数据科学竞赛,体现角色分解、协作、调试与实验管理。
这类系统的关键不是一次生成完整答案,而是维护“代码 -> 运行 -> 指标/错误 -> 修改”的反馈回路。
2.5 用 Agent 辅助科学研究
课件以 Google 的 AI co-scientist 为例展示多 Agent 科研工作流:生成假设、反思、排序、演化、元审查和主管分配任务。它说明复杂研究任务可以拆成多个专门角色,但产出的假设仍需实验与人类专家验证。
2.6 从回合制走向实时互动
回合制 Agent 必须等完整观察结束后才生成行动;真实语音交互需要在输入尚未结束时就决定是否继续听、插话、停止或立即响应。
Full-Duplex-Bench 评测全双工语音对话模型的轮次切换能力。课件用“用户在故事进行中说停止”说明:实时 Agent 的观察和行动在时间上重叠,系统不再是整齐的 obs1 -> action1 -> obs2,而要持续监测并快速切换行为。
本节结论
越真实的环境,Agent 越需要同时处理长程目标、复杂观察、不可逆动作、实时反馈和多约束,而不是只依赖一次文本生成。
3. 根据经验调整行为:Agent 记忆(第 28-46 页)
3.1 参数更新与上下文更新
收到反馈后,系统有两种不同层次的学习:
- 更新模型参数:训练或微调模型。本课件不展开。
- 不更新参数:把过去经验保存在外部记忆中,在未来任务中检索并放回上下文。
后者本质上是针对经历的 RAG:数据库不再只是外部文档,也可以是 Agent 自己过去的观察、行动、反馈和反思。
3.2 为什么不能把一生经历全部塞进上下文
持续把所有历史记录加入提示词会导致:
- 上下文超过长度限制;
- 重要信息被大量细节淹没;
- 推理成本和延迟持续增长;
- 无关或错误经验干扰当前决策。
因此,实用记忆系统至少需要 Read 和 Write 两个决策模块。
3.3 Read:检索相关经验
基本流程是:
当前目标与观察 -> 生成检索查询 -> 从记忆库取回相关经验 -> 加入上下文 -> 生成行动检索不能只看表面相似度,还要考虑任务阶段、经验是否成功、反馈是否可靠、时效性以及是否存在冲突。
StreamBench:连续改进能力的评测
StreamBench 把问题和反馈组成连续流,评测语言 Agent 是否能随着序列推进持续提高准确率,而不是只测模型的初始能力。
课件强调两个发现:
- 检索过去经验可以让性能随时间提高;
- 负面反馈不一定有帮助。消融图显示,只使用正确经验通常比只使用错误经验更有利。
这意味着“记住所有失败”并不自动产生进步。系统必须判断反馈是否提供了可复用的修正信息。
3.4 Write:决定什么值得写入
每轮经历都写入,会让记忆库被琐碎信息塞满。写入模块应评估:
- 这次经验是否新颖;
- 是否纠正了过去错误;
- 是否能迁移到未来任务;
- 是否包含可靠结果;
- 是否应该替换、合并或降低旧记忆权重。
3.5 Reflection:重组和压缩记忆
反思不是简单摘要,而是从多条经历中提炼规律、形成更高层知识,并重新组织索引。例如多次调试后,可以把具体错误归纳为一条可复用的排查流程。
一种自然的演进是:
原始经历 -> 筛选写入 -> 检索使用 -> 反思归纳 -> 更新结构化知识3.6 用知识图谱组织长期记忆
- GraphRAG:先从文档构建实体知识图谱,再为图社区生成摘要;面对全局问题时,分别生成局部回答并汇总。它主要解决传统向量 RAG 难以回答“整个语料的主题是什么”这类全局问题。
- HippoRAG:受海马体索引理论启发,结合 LLM、知识图谱和 Personalized PageRank 进行多跳检索。论文报告其在多跳问答上最高提升约 20%,同时比迭代检索更便宜、更快。
课件在 Agent 记忆中引用它们,是为了说明经历可以被重组为关系网络,而不是永远保持线性日志。
3.7 代表性记忆系统
| 方法 | 核心思想 | 适合解决的问题 |
|---|---|---|
| MemGPT | 借鉴操作系统分层内存,在有限上下文与外部存储之间主动移动信息,并用中断管理控制流 | 超长文档、多轮跨会话对话 |
| Agent Workflow Memory | 从历史轨迹中归纳可复用工作流,再选择性提供给后续任务 | 长程网页任务;论文在 Mind2Web 和 WebArena 上分别取得 24.6% 和 51.1% 的相对成功率提升 |
| A-MEM | 借鉴卡片盒笔记法,为新记忆生成上下文、关键词和标签,并动态建立链接、更新旧记忆 | 需要持续演化的结构化 Agent 记忆网络 |
3.8 记忆模块的实践原则
一个可靠的记忆系统不等于一个向量数据库。它至少要回答四个问题:
- 写什么:过滤琐碎、重复和不可靠经历。
- 怎么存:保留来源、时间、任务、结果和关系。
- 怎么读:按当前目标检索,并控制返回数量。
- 怎么改:允许合并、反思、纠错、遗忘和版本更新。
4. AI 如何使用工具(第 47-69 页)
4.1 工具调用的本质
对语言模型而言,工具通常被描述为函数:
函数名 + 参数说明 + 返回值说明 + 使用条件模型先生成结构化调用,Agent 框架执行真正的函数,再把结果作为新的观察返回给模型。课件用温度查询说明:模型生成的 <tool>Temperature(...)</tool> 本身仍只是文字;必须由外部程序解析和执行。
完整流程是:
- 系统提示提供工具说明和调用格式。
- 用户给出任务。
- 模型判断是否需要工具,并生成函数名与参数。
- Agent 框架执行函数。
- 工具结果作为观察加入上下文。
- 模型继续生成面向用户的答案或下一次调用。
4.2 常见工具类型
- 搜索引擎与 RAG:补充模型参数中没有或已经过时的知识。
- Python、计算器和代码执行器:进行精确计算、数据处理和验证。
- 数据库与业务 API:读取或修改真实系统状态。
- 其他 AI 模型:把语音识别、说话人识别、情感分析、视觉理解等能力模块化。
4.3 使用其他 AI 作为工具:Speech-Copilot
Speech-Copilot 的方法包括:
- 分析预收集的语音任务指令;
- 把复杂任务拆成可管理的子任务;
- 构建模块化语音工具集;
- 由 LLM 生成程序来组合工具。
该方法不需要额外训练端到端音频语言模型,并在 Dynamic-SUPERB 上取得当时的领先结果。关键启示是:复杂多模态能力可以通过任务分解和工具组合获得,而不必全部压进一个模型。
4.4 工具很多时:先选择再使用
把数百个工具描述全部放入上下文会增加成本、引入干扰,并使模型选错工具。因此可以加入 Tool Selection 层:根据当前任务先检索少量候选工具,再交给执行 Agent。
- MetaTool 评测两个问题:是否应该使用工具,以及应该选择哪个或哪些工具。论文发现多数 LLM 在相似工具、可靠性冲突和多工具选择上仍有明显困难。
- OctoTools 用标准化工具卡、分层规划器和执行器组织可扩展工具;课件引用它说明工具说明、选择与规划可以被模块化。
工具描述本身也是接口设计。名称模糊、参数含义重叠或示例不足,会直接降低选择准确率。
4.5 模型自己创造工具
当现有工具过于底层或不能覆盖任务时,可以让模型生成并保存高层函数。
| 方法 | 工具生成方式 | 关键价值 |
|---|---|---|
| LATM | 强模型负责一次性造工具,较小模型反复调用并缓存工具 | 把昂贵的工具构建成本分摊到多次使用;GPT-4 造工具、GPT-3.5 用工具可接近全程 GPT-4 的表现 |
| CREATOR | 将抽象工具创建与具体任务执行分离,用文档和代码实现新工具 | 在 MATH、TabMWP 上优于多种 CoT、PoT 和工具使用基线 |
| CRAFT | 从训练样例的正确代码解法中抽象、验证、去重工具;推理时检索专用工具 | 无需微调即可适配视觉、表格和数学等任务 |
| TroVE | 在使用中生成、扩充并定期裁剪工具箱 | 用小得多的工具箱获得更简单、更准确、也更易人工验证的程序 |
工具创建必须配套验证、权限隔离和生命周期管理。能生成代码并不代表代码正确、安全或值得永久保存。
4.6 不要盲信工具
工具可能返回错误、过期、恶意或脱离上下文的信息。课件以搜索结果建议在披萨上加胶水的案例提醒:RAG 只保证“检索到了文本”,不保证文本正确,更不保证模型能正确综合。
语言模型对荒谬结果有一定判断力,但并不稳定。课件中的温度示例显示,模型可能直接复述 100°C,却会对 10000°C 表示怀疑。这说明判断往往依赖“错误是否足够明显”,而不是可靠验证。
4.7 内部知识与外部证据冲突
- ClashEval:模型会在内部先验和检索证据之间拉扯。实验中,错误检索内容在超过 60% 的情况下覆盖了模型原本正确的知识;外部内容越不现实,模型越可能回到先验,模型对初始答案越不自信,也越容易采纳外部内容。
- Blinded by Generated Contexts:当模型生成的上下文和检索上下文冲突时,多个 LLM 倾向相信“同类模型生成”的上下文,即使它是错的。原因包括生成文本与问题更相似,以及检索切片破坏了文档完整性。
- Do Metadata and Appearance of the Retrieved Webpages Affect LLM’s Reasoning in RAG?:网页发布时间会影响多数模型的选择;来源标签的影响较小;页面外观对 Claude 3 的回答具有明显因果影响。
这些研究共同说明:模型对证据的信任并不只由内容真假决定,还受置信度、相似度、切片方式、时间元数据和页面外观影响。
4.8 工具与模型能力的平衡
使用工具不一定更快、更便宜或更准确。例如 3 x 4 直接心算比调用计算器更高效。合理策略应考虑:
- 模型是否能稳定直接完成;
- 错误代价是否足以要求外部验证;
- 工具调用的延迟和费用;
- 工具结果是否可信;
- 操作是否会产生真实且不可逆的影响。
5. AI 能不能做计划(第 70-93 页)
5.1 反应式行动与显式规划
反应式 Agent 每次看到观察就生成下一步;显式规划则先生成一串候选动作,再逐步执行。显式计划可以改善任务分解,但计划不是不可修改的脚本。
Plan-and-Solve Prompting 的核心是先把问题拆成子任务,再依计划求解。它主要用于推理题,能减少 Zero-shot CoT 的漏步骤问题。用于交互式 Agent 时,还必须加入环境反馈和重规划。
5.2 为什么计划必须动态修改
现实环境会偏离预期:
- 下棋时对手走了不同的棋;
- 浏览网页时弹出广告或登录窗口;
- API 返回异常;
- 资源、时间或预算约束发生变化。
因此,稳健循环应是:
制定计划 -> 执行一步 -> 检查新状态 -> 验证剩余计划 -> 必要时重规划5.3 LLM 可以生成看似合理的计划,但不等于可执行
Language Models as Zero-Shot Planners 发现,足够大的预训练模型可以把“做早餐”等高层目标分解成中层步骤,但直接生成的步骤经常不能映射到环境允许的动作。论文使用演示和语义翻译,把自由文本计划转为 VirtualHome 的可执行动作,提高了可执行性。
这个研究揭示两个不同指标:
- 语义正确性:计划在常识上是否合理;
- 环境可执行性:每一步是否满足动作定义和前置条件。
Agent 需要同时满足二者。
5.4 PlanBench:隔离记忆效应,测试真正的规划
PlanBench 基于自动规划领域构造可扩展任务,用于测试动作、状态变化和计划生成。课件展示两个关键设计:
- 积木世界要求遵守拿取、放置和堆叠的前置条件;
- Mystery Blocksworld 把动作和对象改成无意义词,降低模型凭训练语料记忆类似题目的可能。
On the Planning Abilities of Large Language Models 报告 GPT-4 在多个领域自主生成可执行计划的平均成功率约为 12%。但在 LLM-Modulo 架构中,LLM 作为启发式建议源,外部可靠规划器和验证器负责检查与搜索,效果更有希望。
LLMs Still Can’t Plan; Can LRMs? 进一步测试 o1:相对其他模型进步明显,但仍未解决准确性、效率和正确性保证问题。课件中的曲线还强调,计划越长,正确率通常越低。
5.5 TravelPlanner:真实世界多约束规划
TravelPlanner 提供近 400 万条数据、1225 个旅行意图及参考计划,要求 Agent 同时处理信息搜集、预算、日期、交通、餐饮和住宿等约束。论文初始评测中 GPT-4 最终成功率只有 0.6%。主要失败包括:
- 偏离任务;
- 工具调用不完整;
- 忘记硬约束;
- 生成的日程在局部合理、整体冲突;
- 输出格式或信息引用不一致。
5.6 形式化验证:让 LLM 负责翻译,让求解器保证约束
Large Language Models Can Solve Real-World Planning Rigorously with Formal Verification Tools 将自然语言旅行需求转成约束满足问题,再交给可靠求解器。方法流程是:
- LLM 从用户请求提取变量和约束;
- 生成形式化问题;
- 求解器搜索满足全部约束的方案;
- 检查和修正代码或约束;
- 把形式化结果转回自然语言计划。
论文报告在 TravelPlanner 上达到 93.9% 成功率,并能为不可满足的请求找出冲突核心、解释原因、提出修改建议。这是“LLM + 符号工具”优于纯语言生成的典型案例。
5.7 用树搜索增强规划
如果只沿一条轨迹执行,早期错误会持续放大。树搜索会在每个状态提出多个候选动作,评估前景并探索更有希望的分支。
Tree Search for Language Model Agents 使用实际网页环境中的 best-first tree search:
- 在 VisualWebArena 上,相对无搜索的 GPT-4o Agent 成功率提升 39.7%,达到 26.4%;
- 在 WebArena 上相对提升 28.0%,达到 19.2%;
- 增加推理时计算量可以继续提升表现。
课件特别指出树搜索的两个现实问题:
- 路径数量指数增长,需要价值评估来剪枝。
- 某些动作不可回溯,例如已经下单、发送消息或修改数据,不能把真实环境简单恢复到旧状态。
5.8 用世界模型在“脑内”预演
为避免在真实环境中试错,可以先预测动作后果,再只执行最有希望的动作。这需要世界模型:给定当前状态和候选动作,预测下一个状态或结果价值。
WebDreamer: Is Your LLM Secretly a World Model of the Internet? 让 LLM 同时充当世界模型和价值函数,并训练专用世界模型 Dreamer-7B。论文报告:
- 相比反应式基线有明显提升;
- 在 VisualWebArena 中与树搜索竞争时效率高约 4-5 倍;
- 能用于不可随意回溯的真实网站;
- 专用的 Dreamer-7B 世界模型可达到接近 GPT-4o 的预测能力。
世界模型的风险是“模拟错误”:如果模型错误预测网页或环境变化,规划会建立在虚假未来之上。因此仍需真实观察校正。
6. 从 Agent 看“思考”:推理与行动的权衡(第 94-95 页)
传统问答把推理看成输入与输出之间的内部文字;Agent 还必须把推理转成环境行动。推理太少可能盲目行动,推理太多也可能错过观察环境的机会。
The Danger of Overthinking 在 SWE-bench Verified 的 4018 条轨迹中分析三类过度思考:
- 分析瘫痪:反复讨论却迟迟不执行;
- 失控行动:长推理后采取与证据或目标不一致的操作;
- 过早退出:在仍可继续交互时放弃任务。
论文发现过度思考分数越高,任务表现越差,推理模型比非推理模型更容易过度思考。选择过度思考较少的解答可使性能提高接近 30%,计算成本下降 43%。
因此,Agent 中有效的“思考”应服务于下一次可验证行动:
- 只推理到足以决定下一步;
- 尽早通过工具或环境获得新证据;
- 根据反馈更新计划;
- 不用冗长内心独白替代真实验证。
7. 方法与研究对应速查表
| 能力 | 方法 | 对应研究 | 主要结论 |
|---|---|---|---|
| Agent 基本架构 | 目标-行动-观察循环 | 课件总体框架 | LLM 在持续上下文中生成动作,外部系统执行并返回观察 |
| 社会行为 | 记忆、反思、规划 | Generative Agents | 三个组件都影响行为可信度 |
| 网页操作 | 真实网站任务与可复现环境 | Mind2Web、WebArena、VisualWebArena | 真实网页的长程、多模态任务仍很困难 |
| 持续改进 | 从反馈流检索历史经验 | StreamBench | 正确经验有帮助,负面反馈未必有用 |
| 长期记忆 | 分层内存与上下文管理 | MemGPT | 在有限上下文中管理长文档与跨会话记忆 |
| 流程记忆 | 归纳并检索可复用工作流 | Agent Workflow Memory | 显著提升网页任务成功率并减少步骤 |
| 结构化记忆 | 动态链接和演化的卡片盒网络 | A-MEM | 记忆可随新经历重组,而不只是追加 |
| 图式检索 | 知识图谱、社区摘要、多跳扩散 | GraphRAG、HippoRAG | 提升全局总结和多跳检索能力 |
| AI 作为工具 | 任务分解、模块化、程序生成 | Speech-Copilot | 无额外端到端训练也可组合多种语音能力 |
| 工具选择 | 先判断是否用,再选候选工具 | MetaTool、OctoTools | 工具多时需要检索、规划和标准化描述 |
| 工具创建 | 生成、验证、缓存、检索和裁剪函数 | LATM、CREATOR、CRAFT、TroVE | 自制高层工具可提高复用性、准确率和效率 |
| 工具可信度 | 校准内部先验与外部证据 | ClashEval 等 | 模型可能盲从错误检索,也可能固守错误先验 |
| 计划生成 | 先分解再执行 | Plan-and-Solve | 减少漏步骤,但交互环境仍需重规划 |
| 规划评测 | 隐去语义、检查前置条件与可执行性 | PlanBench | 看似合理的文本计划经常不可执行 |
| 真实规划 | 多源信息与多约束行程 | TravelPlanner | 纯 LLM 难以稳定满足全部约束 |
| 形式化规划 | LLM 翻译需求,求解器保证约束 | Formal Verification Tools | 在 TravelPlanner 上大幅提高成功率 |
| 推理时搜索 | best-first tree search | Tree Search for Language Model Agents | 搜索提高网页任务成功率,但成本高且受不可逆动作限制 |
| 模型式规划 | 用世界模型预测动作后果 | WebDreamer | 可以减少真实试错并提高搜索效率 |
| 推理-行动平衡 | 识别并抑制过度思考 | The Danger of Overthinking | 更长的内部推理不必然带来更好的 Agent 行为 |
8. 面向实现的系统设计清单
8.1 最小 Agent
- 明确目标与完成条件;
- 定义环境观察格式;
- 定义可执行动作或工具;
- 让 LLM 在观察后生成结构化动作;
- 执行动作并把结果返回上下文;
- 设置最大步骤、超时、预算和终止条件。
8.2 增加长期能力
- 将成功经验与失败原因分开记录;
- 为记忆保留来源、时间和可信度;
- 检索前先形成与当前任务相关的查询;
- 限制检索数量,并允许冲突检测;
- 定期反思、合并、纠错和遗忘。
8.3 增加工具能力
- 使用严格模式定义函数名、参数和返回值;
- 先做工具选择,再向模型暴露少量候选工具;
- 校验参数、权限和副作用;
- 对外部结果做合理性检查和交叉验证;
- 对代码执行、文件修改、下单和发送信息设置审批边界。
8.4 增加规划能力
- 区分语义合理与环境可执行;
- 每执行一步都重新读取状态;
- 用验证器检查前置条件和约束;
- 高风险任务优先使用形式化求解或确定性程序;
- 可回溯环境可考虑树搜索,不可回溯环境优先考虑世界模型预演;
- 控制推理长度,让思考尽快转化为可验证行动。
9. 本章核心结论
- AI Agent 是目标驱动的持续交互系统,而不是一次问答。
- LLM 的开放语言接口让 Agent 可以拥有近乎无限的工具和动作,但基础能力缺陷仍会沿轨迹累积。
- 记忆的关键不是“存下来”,而是有选择地写入、检索、反思、纠错和遗忘。
- 工具扩展了能力,也引入错误信息、权限和不可逆副作用;Agent 必须保留独立判断和验证机制。
- LLM 会生成看似合理但不可执行的计划。形式化求解器、验证器、树搜索和世界模型分别提供不同层面的补强。
- 推理越长不一定越好。交互式 Agent 应在思考与真实观察之间保持高频闭环。
- 一个可靠 Agent 通常不是“单个更强模型”,而是 LLM、记忆、工具、验证器、规划器和环境控制共同组成的系统。