如果说 2024 年是"AI 聊天机器人"普及的一年,那么 2025-2026 年则是"AI Agent"从概念走向工程的一年。Claude Code、OpenAI Codex、Manus、Cline……越来越多的产品不再满足于"你问我答",而是主动帮你完成任务——读代码、改文件、跑测试、甚至自己写一篇博客。
但 Agent 到底是什么?它和普通的 LLM 对话有什么区别?这篇文章将从程序员熟悉的概念出发,系统地梳理 AI Agent 的核心概念、关键特性和基础架构模式。
一、从对话到自主:Agent 的核心定义
最简单的定义来自 LangChain:
Agent = Model + Harness
翻译成程序员能理解的语言:Agent 不是更聪明的 LLM,而是把 LLM 装进了一个有工具、有记忆、有控制循环的"运行时环境"里。
你可以把 LLM 想象成一个天才程序员,但你只能跟他口头交流——他再聪明,不动手也写不了代码。Agent 就是给了这个天才一台电脑、一套工具链、和一份"你自己想办法搞定"的指令。
Anthropic 的 Barry Zhang 有一个更简洁的说法:
Agent = 在 Loop 中使用工具的模型
关键的区别在于:
| 特性 | 普通 LLM 对话 | Agent |
|---|---|---|
| 交互方式 | 一问一答 | 给定目标,自主行动 |
| 工具使用 | 不能 | 可以调 API、读写文件、执行命令 |
| 记忆 | 上下文窗口(易失) | 持久化记忆(跨会话) |
| 决策 | 用户决定下一步 | 自主决定下一步 |
| 错误处理 | 用户发现并纠正 | 自行检测和重试 |
二、Agent 的五个关键特性
从工程角度看,一个完整的 Agent 系统通常具备以下五个特性:
1. 工具调用(Tool-use)
Agent 不只"说",还能"做"。通过工具调用操作外部系统——读文件、搜网页、发 API、执行命令。
💡 类比:工具的接口就像微服务的 API endpoint,有 schema、参数、返回值。Agent 根据任务自主选择调哪个"端点"。
2. 记忆(Memory)
Agent 需要跨会话记住你的偏好、工作环境、学到的经验。记忆分为多个层级:
- 文件层:
MEMORY.md、USER.md等结构化文件,持久化存储 - 语义层:向量检索,用于快速召回相关历史
- 上下文层:当前会话窗口,易失但高效
💡 类比:上下文窗口是 Redis(缓存,易失),文件系统是 PostgreSQL(持久存储)。
3. 规划(Planning)
复杂任务需要拆解。Agent 先制定计划(如 plan.md),再分步执行——每一步完成后再决定下一步做什么。
💡 类比:就像你写代码之前先画架构图、列 TODO 清单。Agent 也需要先规划再行动。
4. 自主决策(Autonomous Decision)
这是 Agent 和"带工具的聊天机器人"的本质区别。Agent 自主决定调哪个工具、用什么参数、是否重试。
关键设计原则:Error-as-Data。工具失败时,错误信息作为数据回写给 LLM,而不是抛异常——Agent 自己决定是重试还是换工具。
5. 验证与反馈(Verification)
Agent 需要自己检查结果是否正确。没有验证的 Agent 就像没有测试用例的 CI/CD 流水线——跑得再快也不知道对不对。
Boris Cherny(Claude Code 负责人)的一条核心经验:给 LLM 自我验证的能力,输出质量能提升 2-3 倍。
三、四层工程模型:理解 Agent 系统的骨架
这是理解 Agent 技术栈最清晰的可视化框架,由浅入深分为四层:
L4 Loop Engineering —— 设计替你跑 Agent 的系统
L3 Harness Engineering —— 怎么把 Agent 装好
L2 Context Engineering —— 怎么给 Agent 喂对信息
L1 Prompt Engineering —— 怎么把话说清楚
⚠️ 注意:四层是嵌套关系而非替代关系。L3 不覆盖 L2,而是在它上面叠加。
L1: Prompt Engineering
最基本的层次。研究"怎么写指令"能让 LLM 给出更好的回答。包括角色设定、示例引导、思维链(Chain-of-Thought)等技巧。
程序员熟悉的起点:就像写一个好的函数注释和调用说明。不同之处在于 Prompt 的"读者"是 LLM,它比编译器宽容得多,但也会产生你意想不到的输出。
L2: Context Engineering
这一层关注"给 LLM 什么信息"。Andrej Karpathy 提出的概念——长上下文不是银弹,关键是上下文的质量和结构。
核心实践包括:
- 渐进性披露:先给概要,逐步展开细节,避免信息过载
- 上下文窗口管理:当上下文超长时,如何压缩、优先排序、丢弃
- 结构化上下文:用 XML、JSON 等格式组织信息,让 LLM 更容易解析
💡 类比:Prompt Engineering 是"怎么问",Context Engineering 是"给什么参考材料"。
L3: Harness Engineering
这是 Agent 工程的核心创新层。Mitchell Hashimoto(Harness Engineering 提出者)将其定义为:
围绕 LLM 构建一个"操作系统"——包括工具系统、权限控制、上下文管理、反馈回路、可观测性。
Harness 的四条铁律:
- 工具签名即文档 — 每个工具的名称、参数、返回值的设计本身就是使用说明
- 结果必须可验证 — 每一步的输出需要有明确的验证标准
- 错误不可沉默 — 所有失败必须可见并结构化回传(Error-as-Data)
- 渐进性披露 — 不要让 Agent 同时面对所有信息,按需呈现
LangChain 的 Deep Agents 项目做过一个令人印象深刻的实验:仅仅优化 Harness(不改模型),Terminal Bench 2.0 排名从第 30 位直接跃升至第 5 位。 这证明了瓶颈往往不在模型本身,而在"怎么装"。
L4: Loop Engineering
最高层次,研究"自动触发 Agent 的循环系统"。不是你自己跑一次 Agent,而是系统定期或按事件自动启动 Agent。
Boris Cherny 的实践是代表性案例——他不再"提示"Claude,而是"写循环"(I don’t prompt Claude anymore. I write loops.)。
典型的 Loop 模式:
- 事件驱动:文件变更 → 自动触发代码审查
- 定时任务:每日自动抓取信息、生成摘要
- Pipeline:多个 Agent 接力完成复杂工作流
四、基础架构模式
4.1 ReAct Loop(核心循环)
ReAct(Reasoning + Acting)是所有现代 Agent 的基座模式。它的执行循环可以用一行伪代码概括:
while (task_not_complete) {
think() // 推理:当前状态 + 下一步做什么
act() // 行动:调用工具或生成输出
observe() // 观察:收集执行结果
}
Manus、Cline、Claude Code 都是 ReAct Loop 的具体实现。不管上层叠了多少层 Harness 或 Loop,最底层永远是 observe-think-act 这个基本循环。
💡 类比:一个
while(true) { think → act → observe }的事件循环。Agent 每次迭代都自主决定是调用工具还是给出最终答案。
4.2 Plan-and-Execute
Agent 先制定完整计划,再分步执行。典型流程:
- Init 阶段:分析任务,生成
plan.md,分解为子步骤 - Exec 阶段:按计划逐步执行,每步完成后更新进度
- Check 阶段:验证结果是否符合预期,必要时回退或修正
这种模式的优点是任务可追溯、可断点续传。缺点是灵活性不如纯 ReAct——当实际情况偏离计划时,需要 Agent 具备"重新规划"的能力。
4.3 Tool-use 模式
专门优化工具调用的架构,关键要点:
- 工具名用动词短语:
parse_resume、score_match,而不是resume_tool、match - 参数含正反面说明:告诉 LLM 什么情况下用什么参数
- 返回值结构稳定:格式可预测,方便 LLM 解析
- 工具隔离:每个 Sub-Agent 只装它真正需要的工具
4.4 MCP 协议
MCP(Model Context Protocol)是 Anthropic 提出的工具层标准协议。可以理解为 Agent 世界的 USB 协议——任何工具只要实现 MCP,就能即插即用。
“OneAgent + MCPs” 范式正在成为趋势:用一个统一的基础 Agent,通过不同领域的 MCP 服务器扩展能力,代替传统的"每个场景一个独立 Agent"的模式。
五、关键术语速查表
| 术语 | 一句话解释 | 程序员类比 |
|---|---|---|
| Agent | 能自主决定下一步做什么的 LLM | 一个有 main loop 的微服务,每次迭代自己选路由 |
| LLM | Agent 的"大脑",负责推理和决策 | 一个超级强大的 if-else 引擎,输入是自然语言 |
| Tool | Agent 操作外部世界的接口 | 微服务的 API endpoint,有 schema、参数、返回值 |
| Memory | 跨会话持久化知识 | 数据库(持久层)+ 缓存(上下文窗口) |
| ReAct Loop | 基础执行循环 | while(true) { think → act → observe } |
| Harness | 把 Agent 装起来的"操作系统" | 相比"怎么写"(Prompt),优化"怎么装" |
| Loop | 自动触发 Agent 的循环系统 | cron + event-driven 架构 |
| Workspace | Agent 的"当前工作目录" | 不是变量,是 git 仓库——每一步可回放、可审计 |
| Verifier | 检查 Agent 输出是否正确 | 断言之于测试 |
| Skill | 可复用的知识包 | 插件系统 + 懒加载库 |
| MCP | 工具层的标准协议 | Agent 世界的 USB 协议 |
六、从哪里开始?
如果你是一个有编程基础的程序员,想开始实践 Agent 工程,以下资源值得关注:
一手信息源(英文,需网络环境)
| 来源 | 推荐理由 |
|---|---|
| Lilian Weng, “LLM Powered Autonomous Agents” | Agent 入门圣经,系统讲工具调用、记忆、规划三大支柱 |
| Anthropic, “Build Effective Agents” | 官方最佳实践,简洁实用 |
| Mitchell Hashimoto 博客 | Harness Engineering 原创者 |
| Boris Cherny, howborisusesclaudecode.com | Claude Code 之父,loop 实战 |
| Addy Osmani Substack | Loop Engineering 提出者 |
国内可访问的中文资料
| 文章 | 来源 | 推荐角度 |
|---|---|---|
| Agent Harness 工程实践 | 阿里云开发者 | Harness 定义 + 四条铁律 |
| Harness 工程之道:Skill 原理与最佳实践 | 阿里云开发者 | 渐进性披露、Skill 目录结构 |
| Loop Engineering 四层模型 | 腾讯云开发者 | 四层嵌套框架(本文骨架来源) |
| OneAgent + MCPs 范式 | 阿里云开发者 | Agent 发展四阶段模型 |
| Boris Cherny 的 /loop 实战 | 歪脖抠腚 | 验证先行、CLAUDE.md 知识积累 |
七、结语
回到最核心的那句话:Agent = Model + Harness。
模型本身的能力固然重要,但工程落地的瓶颈往往不在模型够不够聪明,而在有没有把它装好。Prompt Engineering 只是起点,往上还有 Context Engineering(喂对信息)、Harness Engineering(装好系统)、Loop Engineering(自动化循环)——每一层都是值得深入的方向。
从今天开始,不妨试着用 Agent 的思维来思考问题:不是"让 AI 帮我回答这个问题",而是"给 AI 一个目标、一套工具、一个自主决策的环境,让它自己去搞定"。
这才是 Agent 时代真正的编程范式转变。