在 AI Agent 开发初期,一个常见的误区是直接套用复杂的架构设计。文章指出,AI Agent 本质上是一个非确定性系统,在其上叠加复杂的架构设计,相当于在不确定性之上再叠加一层不确定性,往往导致系统性能下降。
反直觉现象:精心设计的复杂架构(如 Plan-and-Execute 模式)可能使系统变得更昂贵(Token 消耗增加)、效果更差、失败率更高且难以调试。
传统软件 vs. AI Agent:传统软件设计中,预先进行完备的架构规划是稳健的做法;但在 AI Agent 领域,这种做法行不通。
核心观点:优雅的架构是演进的结果,而非起点。系统应从最简单、最小可行的方案开始,根据实际需求逐步演进。
并非所有任务都需要使用 Agent。引入 Agent 的判断标准如下:
原则:如果一个问题可以通过单次 API 调用解决,就不要使用 Agent。
示例:生成标题、生成封面图等简单任务。
原因:为简单任务引入 Agent、记忆、工具等组件属于过度设计(“给蚊子装火箭助推器”)。
特征:任务包含多个步骤,但中间过程不需要用户介入,输入确定,输出一次性交付。
示例:视频剪辑(转字幕 -> 判断剪辑点 -> 生成剪辑方案 -> 处理音视频)。
解决方案:使用 Workflow(链式结构),如 N8N、Dify 等工具。这种任务本质上是确定性的长流程。
特征 1(被动因素):模型能力不足,需要人类指导或反复试错。
特征 2(主动因素):需要满足人类的主观偏好(如审美、风格)。
特征 3(交互复杂度):功能选项过多,若使用传统 UI 会导致前端界面极其复杂(“飞机驾驶舱”式界面)。
结论:当任务需要反复交互、多轮修改,或功能选项指数级增长时,需要引入对话式 Agent 作为通用入口。
误区:认为长链路必须使用重型后端调度系统(如复杂的 LangGraph 配置)。
辨析:
Workflow 的长链:一次性连续执行,需要考虑任务分发、队列调度、并发恢复等重型后端机制。
Agent 的长链:是可被用户切分的长链,每跑几步可能就会暂停等待用户交互。这意味着每次实际执行的片段可能很短,不需要重型调度系统。
建议:优先选择集成度高、上手快的 AI SDK(如 Vercel AI SDK)。先让系统跑起来,在真实迭代中验证和修正,比一步到位更重要。
陷阱:选择复杂架构后,容易在未运行任何代码前就开始设计节点、数据流转。
风险:存在双重不确定性(问题能否被模型解决?架构是否会干扰模型?)。
正确做法:即使使用复杂架构,也要先用最简单的用法跑一遍,确定任务的**基线(Baseline)**和底线,再决定是否增加节点或复杂编排。
初期策略:不要直接照搬复杂的“神级”提示词。
第一版 Prompt:应尽量简单、无限制,观察模型的默认行为。
迭代过程:根据观察结果,逐步添加限制条件(如格式化要求、思考深度)或提供示例(Few-shot)。
判断标准:只要 Agent 能遵循指令并逐步优化,提示词设计即算通过。
瓶颈识别:当任务做不好并非因为 Prompt 写得差,而是模型本身缺乏能力(如无法获取实时数据、无法验证代码)时,继续修改 Prompt 无效。
解决方案:加工具。
示例:希望参考流行设计 -> 引入搜索工具;希望代码可用 -> 引入代码验证工具。
涌现效应:引入 3-4 个工具后,Agent 会开始自主思考工具调用顺序,串联工具使用,产生 1+1>2 的效果。此时,即使没有复杂的规划逻辑,Agent 也已初具雏形。
当 Agent 工具增多、任务复杂化后,会进入性能下降期(上下文失控、注意力分散)。此时必须引入 Context Engineering。
现象:工具说明、历史对话、代码、图片等信息一股脑塞入模型,导致注意力分散,任务成功率下降。
核心概念:让模型在特定任务中只看到它需要看到的东西。
案例分析(视频 Agent):
设计任务:需要开放、发散的信息(用户意图、视觉风格)。
代码任务:需要精确、少量的信息(接口结构、输出格式)。
混合后果:信息相互污染,设计信息干扰代码准确性,代码信息拖慢设计判断。
架构演进:引入顶层规划者(Planner)和专项执行者(Sub-agent)。规划者掌握全局,执行者仅接收与其任务相关的上下文。
触发时机:当需要在不同 Agent 或步骤间传递长内容且不可修改的信息时。
核心痛点:
成本:通过模型复制粘贴长内容(如代码)消耗大量 Output Token。
准确性:模型不擅长机械复制,容易在传递过程中意外修改内容(引入 Bug 或修复 Bug)。
解决方案:记忆体(Memory)作为指针系统。
流程:规划者将长内容写入文件系统(或数据库),只向执行者传递文件名/指针 -> 执行者根据指针读取内容。
价值:大幅降低 Token 成本,提高信息传递的准确性。
内存(RAM):仅在当前轮对话中有用的信息。若持久化到外存,会成为下一轮的噪音。
外存(Storage):需要跨轮次保存的状态信息。
典型应用:任务清单(To-do List)、多轮对话中的任务进度追踪。
作用:告诉 AI 当前处于第几步,用户输入了什么,下一步该做什么。
当系统具备 Sub-agent 和记忆体后,复杂度急剧上升,调试变得困难。
关键动作:记录全过程,而不仅仅是结果。
记录内容:
使用了哪些工具。
工具调用的顺序。
每一步的 Token 消耗。
哪些上下文未被使用。
哪些信息不应传递给执行者。
目的:通过回溯流程,优化任务规划,减少 Token 消耗,提高成功率。
AI Agent 的构建是一个按需演进的过程,而非一蹴而就:
API 阶段:单次调用能解决的,绝不使用 Agent。
Workflow 阶段:多步骤但无需交互的,使用链式工作流。
Agent 阶段:需要多轮交互、选项繁多时,引入对话式 Agent。
工具阶段:Prompt 无法弥补能力缺失时,引入工具(Tools)。
Context Engineering 阶段:上下文失控时,进行上下文隔离(Sub-agent)。
Memory 阶段:需要传递长内容或跨轮状态时,引入记忆体。
Observability 阶段:系统复杂后,记录全链路过程以进行调试和优化。