AI Agent 入门:程序员视角的概念与实践

从程序员熟悉的概念出发,理解AI Agent的核心定义、关键特性和基础架构模式

如果说 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.mdUSER.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 的四条铁律:

  1. 工具签名即文档 — 每个工具的名称、参数、返回值的设计本身就是使用说明
  2. 结果必须可验证 — 每一步的输出需要有明确的验证标准
  3. 错误不可沉默 — 所有失败必须可见并结构化回传(Error-as-Data)
  4. 渐进性披露 — 不要让 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 先制定完整计划,再分步执行。典型流程:

  1. Init 阶段:分析任务,生成 plan.md,分解为子步骤
  2. Exec 阶段:按计划逐步执行,每步完成后更新进度
  3. Check 阶段:验证结果是否符合预期,必要时回退或修正

这种模式的优点是任务可追溯、可断点续传。缺点是灵活性不如纯 ReAct——当实际情况偏离计划时,需要 Agent 具备"重新规划"的能力。

4.3 Tool-use 模式

专门优化工具调用的架构,关键要点:

  • 工具名用动词短语parse_resumescore_match,而不是 resume_toolmatch
  • 参数含正反面说明:告诉 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 时代真正的编程范式转变。

使用 Hugo 构建
主题 StackJimmy 设计