AI Agent 相关概念与技术栈
AI Agent 相关概念与技术栈
上集讲了很多程序员在 AI 时代之前需要掌握的技术栈。这一集,我们把视角转向 Agent,梳理与它相关的核心概念和技术栈,暂时不深入展开大模型本身。
这些名词看起来很多,但可以先记住一条主线:
Agent 是谁 → Agent 如何循环工作 → 如何管理状态与记忆 → 如何检索知识 → 如何调用外部能力 → 如何开发和交付。
沿着这条主线理解,后面的概念就不再是彼此孤立的名词。
一、从 Chatbot 到 Agent
Agent(智能体),可以简单理解为一种能够控制电脑、执行任务的应用程序。AI Agent 由 LLM 大模型驱动才能运作。
在 Agent 之前,已经有了 Chatbot。Chatbot 主要负责接收问题并给出回答;用户输入的问题或要求,叫作提示词(Prompt)。Chatbot 还可以使用 CoT 思维链,把一个复杂问题拆解成很多步骤,然后一步一步回答。

简单来说,Chatbot 的重点是“回答”,而 Agent 的重点是“完成任务”。
多模态
多模态,指 AI 不仅能够接收文字提示词,还可以接受图片、音频或视频作为输入和输出。
二、Agent 是如何运行的
理解 Agent,最关键的是理解它并非只调用一次大模型,而是会不断循环。
Agent Loop
Agent Loop(智能体循环),大多采用 ReAct 模式,也就是不断进行观察、思考和行动,直到结果让大模型满意,才输出最终结果和回答。
如果任务步骤很多、思维链过长,就需要使用 Plan-and-Execute:先规划出多条任务,再逐步行动,行动完成后继续观察。
如果任务比较容易出错,则可以使用 Reflexion:行动结束后反思错误,并进行改正。

State:任务现在进行到哪里
State(状态管理),用于观察和记录当前的任务状态与进度。
它回答的是一个很实际的问题:Agent 已经完成了什么,现在正在做什么,接下来还需要做什么?
三、上下文、状态与记忆
Agent 要连续完成一个任务,除了会循环,还必须知道当前发生了什么,并且在需要时找回过去的信息。
Memory:过去有哪些信息值得参考
Memory(记忆),用于查看过去有哪些值得参考的信息,可以分为短期记忆和长期记忆。
短期记忆通常通过上下文解决;长期记忆则可以直接调取文档,或者通过向量数据库调取分片文档。大模型本身的记忆叫作参数记忆,模型训练完成后,参数记忆也就固定下来了。
上下文窗口与 Compact
上下文窗口,是 AI 在一次处理过程中能够看到的信息范围。为了提高准确率、节省 Token,AI 处理的上下文会被限制在一个窗口内。
随着多轮对话不断进行,上下文的信噪比会逐渐降低,同时也会逼近窗口上限。这时就需要进行 压缩(Compact):使用尽量少的 Token 保存目标、进度和其他关键信息。
文档一般采用 Markdown 格式,可以用来保存记忆,等到需要时再把内容放入上下文。有些系统提示词文档比较特殊,每次对话都会被放入上下文,例如 AGENTS.md。

四、三种工程:提示词、上下文与驾驭
了解上下文以后,就比较容易区分下面三个容易混淆的概念。
提示词工程,就是优化提示词,它是 Vibe Coding 的必要技能。
上下文工程,处理的范围比提示词更大。上下文由提示词、Tool 结果、分片文档等文字资料混合而成。优化上下文,是为了让 Agent 的输出更加稳定、不出幻觉,同时节省 Token。
驾驭工程是一个更大的概念。Agent 去掉大模型以后的部分,都可以归入驾驭工程,智能体循环的设计也包含在内。最近又出现了一个名字叫“循环工程”,这个纯炒作。
五、RAG:从大量资料中寻找相关信息
当长期记忆中的文档越来越多,就不可能每次把所有文档全部放进上下文。于是,我们需要先从大量资料中找出最相关的部分。
关系型数据库很少能找到语义相似的文档分片,所以采用了向量数据库。

RAG、Embedding、Chunk 与检索器
RAG,是在向量数据库中索引到最相关的分片文档,再将它们放入上下文。
它解决的问题是:当上下文窗口有限,而文档又大又多时,只挑选有用的部分放入上下文。
向量数据库录入数据时,一般先将文档进行 Chunk(分片),再通过 **Embedding(嵌入)**转换成向量并添加到数据库中。
检索器负责找出与问题在语义上最接近的向量,也就是在高维空间中距离最短的内容;随后返回前 K 个向量所代表的文档分片,把它们放入上下文。只有文档本身是准确的,才能降低幻觉问题。

大部分需要防止幻觉的咨询类问答 Chatbot,用 RAG 就能解决。但如果出现“语义相似、意思却不同”的情况,例如检索文档中存在实体关系,工作流程安排,那么 RAG 也无法解决幻觉问题,只能依靠知识图谱。对于代码块,也不要用RAG,这个用终端命令查询就好了。
六、让 Agent 获得外部能力
到这里,Agent 已经能够思考、维护状态并检索资料。接下来,它还需要真正执行动作。
Tool
Tool(工具),也就是工具函数(Tool Function)。Agent 在行动时需要调用工具函数;一个工具通常包含工具名称、描述和规范等信息。
和大模型不同,工具接收输入后会给出非常准确的回答,但不能解决宽泛问题。
工具调用(Tool Use),是指大模型通过特定格式的 JSON 消息调用工具函数。工具的运行结果,通常也会成为上下文的一部分。
MCP 与 A2A
MCP,是一套连接 Agent 应用和外部应用数据的通信规范,让 Agent 可以获取外部程序信息的信息存入上下文。
A2A用于两个 Agent 之间互相通信,非必要不要使用,没搞好会起反效果,但是放在简历上含金量很高。
Skill
Skill(技能),通常是一套提示词模板,外加一些资源、脚本和文档,用来封装日常使用的一些过程。
Skill 和工具不同:相同的输入,Skill 可能产生意思相近但并不完全相同的输出。

浏览器控制与电脑控制
浏览器控制主要有两种方式:
- 使用 Playwright、CDP、Selenium 等方式执行固定脚本,类似 RPA。
- 一边截图,一边模拟鼠标点击。
第二种方式需要分析截图并定位准确位置,因此需要较长时间,速度特别慢。电脑控制只能使用这种方法,目前暂时没用。
七、Agent 框架与交付方式
智能体循环也有对应的开发框架。为了方便建立直觉,可以先用一句话记住它们各自的特点:
- LangChain = 万能工具箱:链式编排。
- LlamaIndex = 精通 RAG:图编排。
- AutoGen = Agent 开会。
- AgentScope = 工程化 Agent。
- CAMEL = Agent 社会。
- LangGraph = Agent 流程图:图编排。
角色扮演或者多 Agent 系统,需要考虑业务需求以及引入技术的性价比。能够选择简单框架解决的问题,就不要使用复杂框架。
有些业务需要让客户看到整个流程的变化,而不是只看到一个黑盒。此时可以使用低代码平台交付,例如 Coze、Dify、n8n 和 FastGPT。
八、其他工程概念
最后,再补充几个开发 Agent 时经常遇到的概念。
后训练
后训练可以改变模型的参数记忆。Fine-tuning、RLHF 和 SFT 都属于后训练,这部分属于大模型知识。

CLI
CLI就是命令行界面。如果要手搓一个 Agent,最好从 CLI 开始做起。
沙箱
沙箱是一种安全隔离机制,用来避免 Agent 获得过多权限。
例如,用户提出了“删除全部”的要求,Agent 一不小心运行了 rm -rf。因此必须使用沙箱,让 Agent 只能在一个文件夹内部活动。
Eval
评估(Eval),是使用另一个 AI 评估生成结果。它类似传统软件测试:准备一系列数据集,对 Agent 进行测试并打分。
结语:理解概念之后,还需要亲手做一遍
了解这些概念只是开始。
为了深入理解 Agent 的工作原理以及其中的隐性知识,只能自己搓一个Coding Agent,比如pi agent,openharness,自己重新造一次轮子,并且问清楚其中的细节、每一个代码块分别是做什么的。光看学不会,中间出问题了都不知道在哪里。