别急着学框架,先理解Agent的第一性原理

2026年,每两周就有一个新的Agent框架发布。开发者追框架追到疲惫——刚学会LangGraph,CrewAI火了;刚学会CrewAI,AutoGen又更新了;刚学会AutoGen,Anthropic发布了Agent SDK。

但Agent开发的核心不是框架,而是几个不变的第一性原理。理解这些原理,你可以在任何框架上构建Agent,甚至不需要框架。

第一性原理一:工具调用(Tool Use)是Agent的"手"

Agent和传统LLM应用的本质区别在于:Agent能"做事",不只是"说话"。而"做事"的能力来自工具调用。

工具调用的本质是:LLM输出一个结构化指令(函数名+参数),系统执行这个指令,把结果返回给LLM。

关键设计决策:

  • 工具粒度:一个工具应该做一件事,还是做多件事?做一件事——Agent更容易选择正确的工具
  • 工具描述:工具的docstring是Agent理解的唯一依据。写清楚"做什么、参数是什么、返回值是什么"
  • 工具数量:超过10个工具,Agent的选择准确率下降30%。用"工具分组"或"分层工具"解决

金句:Agent的能力上限 = 它拥有的工具数量 x 每个工具的可靠性。工具越多,上限越高,但下限越低。

第一性原理二:状态管理(State Management)是Agent的"脑"

Agent在执行多步骤任务时,需要记住"已经做了什么"和"正在做什么"。这就是状态管理。

状态管理的三种模式:

  1. 无状态:每次调用独立,不记忆上下文。适合简单任务,但不适合Agent。
  2. 消息历史:把整个对话历史作为状态。简单但低效——长对话中Token消耗巨大。
  3. 结构化状态:用Pydantic/JSON Schema定义状态结构,只传递必要信息。LangGraph的StateGraph就是这种模式。

金句:状态管理的本质是"压缩"——把100轮对话的历史压缩成10个关键字段,让LLM高效理解上下文。

第一性原理三:记忆系统(Memory)是Agent的"海马体"

Agent需要两种记忆:

  • 短期记忆:当前对话的上下文(窗口内)
  • 长期记忆:跨对话的知识积累(窗口外)

短期记忆靠"状态管理"解决。长期记忆靠"向量数据库"解决——把重要信息存成Embedding,需要时检索。

但长期记忆有三个关键设计问题:

  1. 存什么:不是所有对话都值得记住。Agent应该有"重要性评分"机制,只存有价值的信息。
  2. 怎么查:检索记忆时,需要结合"语义相似度"和"时效性"两个维度。
  3. 怎么忘:Agent应该有"遗忘机制"——过时的、矛盾的、无用的记忆应该被删除。

金句:Agent的记忆系统不是"什么都能记住",而是"知道该记住什么,该忘记什么"。

第一性原理四:多Agent协作(Multi-Agent)是Agent的"社会"

多Agent协作的本质是:把复杂任务拆分为子任务,分配给不同的Agent,然后协调它们的输出。

两种协作模式:

  1. 层级式(CrewAI):一个Manager分配任务,多个Worker执行。适合确定性流程。
  2. 对话式(AutoGen):Agent之间通过对话协商。适合探索性任务。

但多Agent协作最大的问题是"效率"——Agent之间的对话消耗大量Token,而且容易跑偏。一个实用的原则是:能用单Agent完成的任务,不要用多Agent。 多Agent只在以下场景有价值:

  • 任务天然需要多种专业能力(如代码审查+安全检查)
  • 任务需要并行处理(如同时搜索多个数据源)
  • 任务需要不同"视角"(如分析同一问题的不同观点)

金句:多Agent不是"更高级"的架构,而是"更复杂"的架构。只有单Agent确实不够用时,才该引入多Agent。

框架是"实现",不是"原理"

理解了这四个第一性原理,你会发现:框架只是提供了这些原理的"实现方式"。LangGraph用Graph做状态管理,AutoGen用对话做协作,CrewAI用角色做任务分配。它们的不同只是"实现方式"的不同,不是"原理"的不同。

金句:掌握了Agent的第一性原理,你可以用任何框架(甚至不用框架)构建Agent。被框架绑定的人,永远在追框架;理解原理的人,框架只是工具。