作者:云与数字化 来源:AI Agent 架构设计实战笔记 01 背景:为什么 Agent 比你想象的更容易踩坑 ChatGPT 之后,生成式 AI 的第二波浪潮指向了一个共同方向:AI Agent(AI 智能体)。 从 AutoGPT、BabyAGI 到如今各企业自研的 Copilot 助手,Agent 架构正在快速落地。但现实很骨感:大量团队在构建 Agent 系统时,经历了相似的痛苦循环—— 建好了,跑不通;跑通了,容易死循环;不死循环了,发现结果全是幻觉。 这不是个别团队的问题。IBM、Microsoft、Neudesic 的工程师联合发布的这篇论文 [「The Landscape of Emerging AI Agent Architectures」](arXiv:2404.11584)系统梳理了当前 Agent 架构的现状和陷阱。本文结合这篇论文的核心结论,加上工程实践,整理出一份完整的 Agent 设计避坑手册。 02 基础认知:Agent = Brain + Perception + Action 在开始设计之前,先把 Agent 的本质搞清楚。 一个最小可用的 AI Agent 由三个部分构成: 组件 作用 类比 Brain 大语言模型,负责推理和决策 人类大脑 Perception 感知环境反馈、用户输入 感官系统 Action 调用工具、操作外部系统 手脚 很多设计失败的 Agent,本质上是把"大模型套了个壳"就叫做 Agent。但没有规划(Planning)、没有工具调用(Tool Calling)、没有反思(Reflection)能力的,本质上还是"高级聊天机器人",不是 Agent。 03 架构选型:单 Agent 还是多 Agent? 这是第一个需要做对的选择。 单 Agent 适用场景 - 任务目标清晰,步骤可枚举 - 反馈来源是环境或用户,不需要其他 Agent 提供信息 - 工具集合有限,执行路径相对固定 典型案例:代码审查 Agent、产品文档写作 Agent 多 Agent 适用场景 - 任务需要多个专业能力(搜索 + 写作 + 代码执行) - 存在多个可并行的独立子任务 - 需要协作、讨论和多方校验 论文原文:While single agent architectures excel when problems are well-defined and feedback from other agent-personas or the user is not needed, multi-agent architectures tend to thrive more when collaboration and multiple distinct execution paths are required. 多 Agent 两种拓扑 垂直架构(Vertical):一个 Leader Agent 负责分配任务,其他 Agent 向 Leader 汇报。 Leader Agent / | \ Agent1 Agent2 Agent3 (专业化分工,清晰汇报线) 水平架构(Horizontal):所有 Agent 平等协作,共享同一个讨论线程,各自认领任务。 Agent A ←→ Agent B ←→ Agent C (平等协作,适合需要大量讨论的场景) 论文中一个关键发现值得单独提出:有明确 Leader 的团队,比无 Leader 团队快近 10%。 在没有 Leader 的情况下,Agent 们会把 50% 的时间花在互相"发指令"上,而不是真正执行任务。 04 任务拆分:如何把大任务变成可执行的子任务 这是 Agent 系统中最核心、也最容易做错的一步。 任务拆分的 5 种方法 论文引用了人类自动驾驶规划领域的研究,总结出 5 条路线: ① Task Decomposition(任务分解) 把大任务递归拆解为子任务树。这是最基础的方法,也是大多数团队第一时间想到的。 关键原则:每个子任务必须原子化——有明确输入输出,可独立执行验证。拆分深度一般控制在 2-3 层,过深的规划链会显著增加执行出错的概率。 ② Multi-plan Selection(多计划选择) 不急着拆解,而是让 LLM 一次性生成 N 个候选计划,通过 Evaluator 评估后选择最优路径。适合需求模糊、方向不确定的场景。 ③ External Module-aided(外部模块辅助) LLM 不自己负责规划,而是翻译成专用模块可理解的格式,交给外部规划器执行。 论文特别指出:在机器人规划任务上,"纯 LLM 目前缺乏直接将自然语言指令转换为可执行计划的能力"。结合 PDDL(Planning Domain Definition Language)等经典规划工具后,效果显著优于纯 LLM 方案。 这个结论对企业 AI 应用有重要启示:SQL 查询、路径优化、数值计算这类精确推理任务,不应该强依赖 LLM 规划,而应该由专用模块负责,LLM 只做指令翻译层。 ④ Reflection & Refinement(反思迭代) 不追求一次拆解完美,而是在执行中根据反馈动态修正计划。LATS 和 Reflexion 都采用了这个思路。 ⑤ Memory-augmented(记忆增强) 规划时主动查询外部记忆库,参考历史经验。避免"每次规划都从零开始"。 多 Agent 场景下的动态组队 多 Agent 架构里,任务拆分不只是"谁做什么",而是动态构建专业团队: 规划阶段(Planning) → Leader 分析任务,拆成子任务,按需召唤 Agent(用完即弃) 执行阶段(Execution) → Agent A(搜索专家)→ 并行查资料 → Agent B(写作专家)→ 并行写文案 → Agent C(代码专家)→ 并行写脚本 评估阶段(Evaluation) → Leader 汇总结果,评估质量 → 如需新能力 → 重新组队,进入下一轮 05 系统提示词设计:7 层结构法 一个生产级 Agent 的系统提示词,推荐用以下 7 层结构: ┌─────────────────────────────────────┐ │ 1. Role / Persona(角色定义) │ │ 2. Core Capabilities(能力边界) │ │ 3. Tools(可用工具) │ │ 4. Workflow(执行流程) │ │ 5. Output Format(输出格式) │ │ 6. Constraints(硬性约束) │ │ 7. Memory Rules(记忆规则) │ └─────────────────────────────────────┘ 原则一:Persona 越具体越好 ❌ 不要这样写: "你是我的助手,帮助用户完成任务" ✅ 应该这样写: "你是一名 10 年经验的后端工程师,擅长 Python/Golang 架构设计。你用简洁、直接的技术语言交流。禁止在非技术任务中发挥创意想象力。" 研究发现:"shaped personality verifiably influences LLM behavior"——明确的职业身份会实质性地影响模型行为。 原则二:工具定义要覆盖"禁止使用场景" 很多 Agent 乱调工具的根本原因在于工具描述只写了"能做什么",没写"不能做什么"。 每个工具描述必须包含: - 用途:解决什么问题 - 输入格式:期望什么数据 - 输出格式:返回什么结果 - 禁止使用场景(关键!):什么时候不能用 原则三:执行流程要有标准步骤 不要让 Agent 自己摸索执行路径。规定标准操作顺序,Agent 按流程执行,有据可依: Step 1 - 理解:需求如有歧义,先提问确认,不猜测 Step 2 - 拆解:用 [Task-N] 标注每个子任务 Step 3 - 执行:按依赖顺序执行,每完成一个报告进度 Step 4 - 验证:检查输出是否满足需求,不满足则重做 Step 5 - 交付:按统一格式呈现结果,说明决策理由 06 负面清单:Agent 设计中最常见的 16 种错误 架构设计层 ❌ 单 Agent 处理超长任务链 超过 8-10 步后,幻觉率和重复循环概率急剧上升。长任务必须上多 Agent 并行。 ❌ 无 Leader 的水平多 Agent 团队 团队 50% 时间在互相发指令而不是执行任务。必须有明确的调度者(Agent Leader 或人类)。 ❌ 任务依赖关系模糊就并行执行 A 依赖 B 的输出,但 B 先跑了。拆任务时必须标注依赖图,串行在前,并行在后。 Tool Calling 层 ❌ 工具描述不具体,Agent 乱调 必须明确:用途 + 输入格式 + 输出格式 + 禁止使用场景。 ❌ 没有循环检测机制 Agent 可能反复调用同一工具陷入死循环。必须设计 max_iterations 限制和执行计数监控。 ❌ 信任工具输出,不做验证 工具返回错误数据,Agent 直接用导致级联失败。关键工具输出必须加自我验证步骤。 Memory 层 ❌ 只用 Context Window 做记忆 Reflexion 论文指出:sliding window 记忆容量受限于 token 上限,长期任务必然遗忘。短期记忆用 scratchpad,长期记忆用向量数据库或文件存储。 ❌ 记忆无过期和更新机制 Agent 记住的判断是错的,但永远不更新。记忆必须带时间戳 + 版本,定期验证有效性。 ❌ RAISE 的角色幻觉问题 论文记录:一个 Sales Agent 因为没有明确定义角色能力边界,突然能写 Python 代码,开始做开发任务而不是销售任务。每个 Agent 的能力边界必须在 Persona 里显式禁止。 Planning 层 ❌ 一次性生成完整长计划,不留调整空间 环境变化后整条计划报废。必须设计 Replan 触发条件(收到意外反馈时自动重新规划)。 ❌ 依赖纯 LLM 做精确规划 机器人路径、SQL 生成、数值优化等——这类任务必须交给专用规划器,LLM 只做自然语言翻译层。 安全可靠性层 ❌ 执行破坏性操作前没有确认 删库、删文件、强制终止进程——直接执行没有兜底。危险操作必须加 CONFIRM_REQUIRED 标志,等待人工批准。 ❌ 全程无 Human-in-the-loop 关键决策节点(规划审批、预算审批、方向变更)必须有手工确认机制。 07 论文中最常见的 5 种失败模式 序号 失败模式 表现 根源 1 重复循环 ReAct 反复生成相同动作 没有退出条件或反馈信号 2 局部最优 Reflexion 停在次优解不动了 评估器也有认知偏差 3 幻觉传播 Agent 错误输出被下个 Agent 当真 没有交叉验证 4 能力漂移 做着做着偏离原始目标 缺乏阶段性 Checkpoint 5 上下文遗忘 长任务后期丢失关键约束 记忆机制不完善 08 快速设计检查清单 每次设计新 Agent 之前,对着这份清单过一遍: □ 角色定义:具体职业身份,不是"助手" □ 能力边界:明确列出"不能做"的事 □ 工具规范:每个工具都有禁止使用场景 □ 循环保护:有 max_iterations,有自我验证 □ 记忆设计:短期+长期分离,有过期机制 □ 规划校验:有不符预期时的 Replan 触发条件 □ 多 Agent:有信息过滤,不是所有 Agent 都能读所有消息 □ 危险操作:有 CONFIRM_REQUIRED 或人工确认 □ 日志审计:每个 Action 都有记录 □ 人类兜底:关键节点有人工退出机制 09 结语 Agent 架构的设计,本质上是在解决一个核心矛盾:LLM 的能力很强,但它的不可预测性也很强。 论文中有一句话值得所有 AI 应用开发者记住: "Among the community, there is a current debate on whether single or multi-agent systems are best suited for solving complex tasks." 答案从来不是"哪个架构更好",而是你的任务适合哪种架构。 把这个问题回答清楚,比选任何框架都重要。 参考资料 - The Landscape of Emerging AI Agent Architectures for Reasoning, Planning, and Tool Calling: A Survey,Tula Masterman et al.,arXiv:2404.11584 - Open-Source LLM-Driven Federated Transformer for Predictive IoV Management,Yazan Otoum et al.,arXiv:2505.00651