30个Agent工程核心概念,每个开发者都得知道
问题的根源:工具跑得比思想快
Agent工程领域每周都有新工具、新框架、新模型上市,每个都号称颠覆一切。如果你试图追着每个工具跑,你会发现你花在切换工具上的时间比真正使用工具多得多。
但底层逻辑没那么复杂:跑在表面的是工具名,藏在下面的是几个反复出现的核心概念。一个工具叫它”skill”,另一个叫它”rule”,再另一个叫它”workflow”或”agent instruction”——它们解决的往往是同一个基本问题。理解了这些概念,任何新Agent工具你都能一眼看穿它在做什么。
不要追每个工具,追工具背后的思想。
第一层:核心构建块
1. Agent
Agent这个词现在到处都在用,但含义已经模糊了。简单来说,AI Agent是一个不会回答一次就停下来的LLM——它在循环中运行:理解目标、决定下一步、使用工具、读取结果、再决定下一步。
对比一下:
普通聊天机器人:
你提问 → 它回答
Agent:
你给目标 → 它思考下一步 → 使用工具 → 检查结果 → 继续直到任务完成
Agent不是产生一个最终答案,而是产生一连串行动链。每个行动依赖之前的结果。编码是最清晰的例子:你让Agent调试一个失败的测试,它可能检查错误、打开相关文件、修改代码、再次运行、看到另一个错误、再修复,直到测试通过。
2. 执行模型(Think - Act - Observe)
Agent循环的核心模式只有三步:
Think(思考) → Act(行动) → Observe(观察)
模型读取当前对话、查看目标、检查可用上下文,决定下一步做什么。然后执行行动——通常是调用工具(读文件、运行命令、搜索数据库、调用API、使用MCP)。最后观察结果并决定是否继续。
3. Agent状态
Agent在循环之间需要持续跟踪的信息:对话历史、已完成步骤、中间结果、已发现的错误。状态管理是Agent设计的核心挑战之一——太简洁会丢失上下文,太详细会撑爆上下文窗口。
4. 常见Agent模式
所有Agent框架本质上只有四种工作模式:
- 反思(Reflection) — Agent对自己的输出做自我检查。生成代码后让另一个LLM实例审查。
- 工具使用(Tool Use) — Agent动态选择调用哪个工具。读文件、写代码、搜索网络、执行命令。
- 规划(Planning) — Agent把复杂任务分解为子步骤。如”写一个博客文章”被分解为”搜索主题→写大纲→填内容→校对”。
- 多Agent协作(Multi-Agent) — 不同Agent扮演不同角色协同工作。一个写代码、一个测试、一个管理任务。
第二层:工具与能力
5-10. 工具层概念
工具是Agent与外部世界交互的接口。核心概念包括:
- 工具定义 — 描述工具的名称、参数、返回值的schema。Agent根据描述决定何时调用。
- 工具调用 — Agent生成结构化调用请求→系统执行→返回结果。格式通常是JSON或function calling。
- MCP(Model Context Protocol) — 标准化的工具通信协议,让不同Agent和工具之间互相发现和调用。已成为Agent工具生态的事实标准。
- 知识检索 — Agent搜索向量数据库或外部知识库获取相关上下文。RAG(Retrieval-Augmented Generation)是其典型实现。
- 代码执行沙箱 — Agent生成的代码在隔离环境中运行,防止越权操作。Docker容器、Firecracker微VM都是实现方式。
- 文件操作 — 读/写/搜索文件系统的标准工具。注意权限边界:Agent不应该能写系统关键文件。
第三层:记忆架构
11-15. 记忆层概念
记忆决定了一个Agent能做多复杂的持续任务。
- 短期记忆 — 当前会话上下文窗口内的信息。随Token过期自然消失。适用于单次任务的中间状态。
- 长期记忆 — 跨会话持续存在的知识。通常通过外部存储实现:向量数据库、SQLite、JSON文件。
- 工作记忆 — Agent在单次任务中需要记住的中间状态。如调试过程中已经检查过的文件列表。
- 记忆检索 — Agent主动搜索记忆存储获取相关信息的过程。搜索质量直接决定Agent的”经验”是否有效。
- 记忆写入策略 — 什么时候应该把信息存入长期记忆?每次交互都写会造噪音,关键转折点才写需要识别机制。
第四层:安全框架
16-20. 安全层概念
安全不是功能的对立面,是Agent投产的入场券。
- 护栏(Guardrails) — 定义Agent不能做什么。结构化的约束条件而非模糊的建议:明确列出被禁止的操作(”不能执行系统命令”、”不能写/etc/passwd”)。
- 沙箱隔离 — Agent代码执行在隔离环境中运行。容器级别(Docker)、内核级别(Firecracker/KVM)或进程级别(子进程权限降级)。
- 人工审批(Human-in-the-Loop) — 高风险操作需要人类确认。写文件可以自动执行,但删除数据库、下单购买必须审批。
- 审计日志 — Agent的每次操作记录。不是事后调试用,是在Agent运行时就能实时监控它正在做什么。
- 权限边界 — Agent能接触什么数据、不能接触什么数据。最小权限原则:Agent只需要完成任务所需的最小数据子集。
第五层:何时不该用Agent
这个部分经常被忽略,但比前面所有内容加起来还重要。
用提示词就够的场景: 格式化日期、转换JSON、重命名文件、生成简短答案。Agent的每个循环都消耗时间,每次工具调用都花钱。
用脚本就够的场景: 固定的步骤流程、已知的输入输出映射。一个Python脚本比Agent循环便宜100倍。
使用Agent的场景只有一个:任务不可预测,下一步依赖上一步的结果。
比如”调试这个失败的测试”——你可能不知道测试失败的原因,需要先看错误日志才能决定下一步。Agent的价值在于灵活性,而不是自动化本身。
工程化的建议
入门路径
- 理解Think→Act→Observe循环:这是所有Agent的基石。
- 掌握两种工具使用方式:预定义函数调用 vs MCP动态发现。
- 从单一Agent开始:不要一上来就搭多Agent系统。先让一个Agent可靠地完成单一任务。
- 加上安全层:护栏、沙箱、审批流。投产之前先想好失败时的回退路径。
成本意识
Agent不是免费的。每个循环消耗时间,每次工具调用花费token。一个调试任务可能调用5次工具、消耗15万token。对于每天跑100次的自动化场景,月Token成本可能远超预期。
选型原则
不看工具名,看它解决问题的维度:如果你的Agent在执行时卡壳,先检查安全护栏是否太严,再考虑记忆配置,最后才是换模型。大多数Agent框架问题出在配置而非模型能力上。
我的判断
最让我认同的是”不要追每个工具,追工具背后的思想”——工具几周一换,但底层概念几个月甚至几年不变。理解了Agent循环、工具调用、记忆架构、安全护栏这四大支柱,任何新框架都只是这些概念的不同排列组合。
不过我也注意到一个问题:30个概念中对”什么时候不该用Agent”的强调比大多数同类文章多得多,这也正是该领域最普遍的错误。Agent不是万能药,很多时候一个JSON格式化脚本比Agent循环便宜100倍。
另一个值得关注的细节是,当你真正开始写Agent代码时,最大困难不是写循环或工具调用,而是让Agent可靠地决定”什么时候停下来”。好的Agent设计 = 好的循环入口 + 好的循环出口。”什么时候算完成任务”的判断逻辑往往比”如何执行任务”更难设计。
适合:刚开始接触Agent工程的开发者。 不适合:已经熟悉Agent基础概念的资深工程师。