知识库 · AGENT架构
Agent架构设计原则
Barry Zhang · Anthropic 实战指导
本文基于 Anthropic 工程师 Barry Zhang 在多个技术分享中阐述的 Agent 架构设计理念,结合 Claude 实际工程经验,系统整理出可落地的 Agent 设计原则。这些原则已在 Anthropic 内部大量 Agent 产品中验证有效。
📚 知识来源
📖 Barry Zhang @ Anthropic

Barry Zhang 是 Anthropic 的工程师,专注于 Agent 系统设计与优化。他在多个场合(AI Engineer Summit、Anthropic 开发者活动)分享了 Agent 架构的实战经验。核心观点:大多数 Agent 失败不是模型能力问题,而是架构设计问题。

🤖 什么是Agent(工程视角)

从工程实践角度,Agent 是一个以 LLM 为核心决策引擎的系统,具备以下特征:

  • 感知:能接收和处理多种形式的输入(文本、代码、工具返回值)
  • 规划:能将复杂目标分解为可执行的步骤序列
  • 行动:能调用外部工具或API执行具体操作
  • 反思:能根据结果调整计划,自我纠错
  • 持久化:能在多轮交互中维持状态和上下文

关键认知:Agent ≠ 聊天机器人。聊天机器人处理一次性请求,Agent 在一段时间内自主完成复杂任务。

🏛️ 核心设计原则
原则 01
简单优先,复杂按需
不要为了用 Agent 而用 Agent。如果一个任务能用单次LLM调用完成,就不需要 Agent。只在任务需要多步规划、状态维持或工具调用时才引入 Agent 架构。过度工程化是 Agent 项目失败的首要原因。
原则 02
明确定义工具边界
每个工具应该只做一件事,并且做好。工具描述必须精确,参数名要自解释。模型选择工具的准确率很大程度上取决于工具描述的质量,而不是模型能力。
原则 03
状态外部化,避免上下文膨胀
长时间运行的 Agent 必须将关键状态存储到外部系统(数据库/文件),而不是全部堆在 context window 中。上下文长度增加会导致注意力稀释,模型性能下降。
原则 04
人类在环(Human-in-the-Loop)
对于不可逆操作(删除数据、发送邮件、部署代码),必须设置人工确认环节。Agent 的自主性应该与操作风险成反比。宁可多问一次,也不要自作主张。
原则 05
失败是一等公民
每个工具调用都可能失败,每一步都可能出错。在设计时就要考虑重试策略、降级方案和错误恢复逻辑。好的 Agent 不是不会出错,而是出错后知道如何优雅恢复。
原则 06
可观测性优先
Agent 的中间步骤必须可记录、可回放、可调试。每次工具调用的输入/输出都要留日志。没有可观测性,调试 Agent 就是在黑盒里猜谜。
🏗️ 主流架构模式
🔄 ReAct(推理+行动)
交替进行"思考→行动→观察"循环,每步推理可见。实现简单,调试友好,是最常用的基础模式。
适合:通用任务
📋 Plan-Execute
先完整规划所有步骤,再逐步执行。规划和执行可以用不同模型(规划用强模型,执行用快模型)。
适合:流程确定的任务
👥 Multi-Agent
多个专业化 Agent 分工协作,主 Agent 协调。能处理超出单 Agent 能力范围的复杂任务。
适合:大规模复杂任务
🌳 Tree of Thought
同时探索多条解决路径,评估后选最优方案。计算成本高,但对需要创意或最优解的任务效果更好。
适合:开放性决策问题
🧠 记忆系统设计

Agent 的记忆系统是影响性能的关键因素,通常分为四种类型:

  • Working Memory(工作记忆):当前 context window 中的信息,速度最快但容量有限
  • Episodic Memory(情节记忆):历史交互记录,通过向量数据库检索相关片段
  • Semantic Memory(语义记忆):结构化的知识库,如用户偏好、领域知识
  • Procedural Memory(程序记忆):工具使用模式、成功/失败经验总结
💡 Barry Zhang 的记忆设计建议

不要把所有历史记录都塞进 context。关键是"检索哪些记忆",而不是"存储多少记忆"。

使用 RAG 从历史中检索最相关的3-5条记录,比把20条记录全部堆入效果更好。

⚠️ 常见设计陷阱
  • 工具过载:给 Agent 太多工具会降低工具选择准确率。建议单 Agent 工具数≤15个
  • 目标不清晰:System Prompt 中对任务目标描述模糊,Agent 会频繁偏离方向
  • 无限循环:没有设置最大步数限制,Agent 陷入循环无法退出
  • 忽略边界情况:只测试 happy path,线上遇到各种异常输入就崩溃
  • 评估缺失:没有系统性的 Agent 评估框架,靠人工主观感受优化
  • 过度自主:在需要谨慎的场景(财务、医疗)给 Agent 过大权限
✅ Agent设计检查清单
  • □ 任务是否真的需要 Agent?单次LLM调用无法解决吗?
  • □ 每个工具是否有清晰的功能描述和使用示例?
  • □ 是否设置了最大步数/时间限制,防止无限循环?
  • □ 不可逆操作是否有人工确认环节?
  • □ 是否记录了每次工具调用的输入/输出?
  • □ 是否有自动化测试覆盖主要任务场景?
  • □ 失败恢复策略是否已经设计?
  • □ 上下文长度是否有管理策略?