过去几年,“AI Agent”几乎成了一个被反复使用、也被反复误解的词。
有人说,Agent 就是一个会调用工具的大模型;有人说,Agent 是能够自主完成任务的系统;也有人认为,只要在 Prompt 里写了 ReAct 格式,让模型按“思考—行动—观察”循环执行,就可以叫 Agent。
这些说法都没有错,但都不够工程化。
如果只是说“Agent 能自主工作”,这个定义太宽泛,无法指导系统设计;如果只是说“Agent 会用工具”,这个定义又太窄,无法解释今天产品级 Agent 里那些复杂的权限、状态、沙箱、验证和调度机制。
我更倾向于从架构演进的角度理解 Agent:
Agent 不是某一个单点能力,而是一套围绕 LLM 构建起来的持续执行系统。
它的核心不是“大模型会不会思考”,而是:
系统如何让模型在正确的上下文中做决策,用安全的方式调用工具,在可控的循环里持续推进任务,并在合适的时候停止。
1. 第一阶段:LLM + Loop,让模型从“回答”变成“执行”
最早一批 Agent 原型给了我们一个非常重要的启发:
只要把 LLM 放进循环里,它就不再只是一个问答模型,而开始具备持续执行任务的形态。
以 BabyAGI 为代表,它的结构非常简单:
whileTrue:task=task_queue.dequeue()result=llm.execute(task)new_tasks=llm.create(result)task_queue.add(new_tasks)这套结构没有复杂工具,也没有权限控制,更没有持久化状态。它只有三个核心组件:
一个任务队列,一个 LLM 执行器,一个 LLM 任务生成器。
但它证明了一件事:
LLM + Loop = 一个可以持续推进任务的系统。
这是 Agent 的第一层工程定义:
Agent = LLM + LoopLoop 很关键。
没有 Loop,LLM 只是一次性响应用户输入;有了 Loop,LLM 才能在完成当前任务后继续判断下一步该做什么。
但这种早期架构也非常脆弱。它容易无限循环,缺少验证机制,错误会在循环中不断放大。也就是说,它有了“自主性”的雏形,但还没有“可控性”。
2. 第二阶段:LLM + Tools + Loop,让 Agent 真正拥有“手”
接下来,LangChain Agent 将早期粗糙的循环封装成了更标准的“推理—行动—观察”结构。
典型流程是:
用户输入 ↓ LLM 推理下一步 ↓ 选择工具并执行 ↓ 观察工具返回结果 ↓ 继续推理 ↓ 直到输出最终答案这一阶段最重要的变化,是 Agent 开始拥有工具调用能力。
也就是说,模型不再只是“生成文本”,而是可以通过 Tool 接口访问外部系统,例如:
- 搜索资料
- 查询数据库
- 调用 API
- 执行代码
- 操作文件
- 发送请求
这时,Agent 的定义变成了:
Agent = LLM + Tools + Loop + Stop Conditions这里多了两个关键点。
第一是Tools。
工具让 Agent 从“会说”变成“会做”。
如果没有工具,模型再聪明,也只能停留在文本层面;有了工具,模型才能真正改变外部世界。
第二是Stop Conditions。
停止条件让 Agent 从“无限循环的实验品”变成“可运行的工程系统”。
比如最大迭代次数、最大执行时间、提前停止策略等,都是为了防止 Agent 在错误路径上无限消耗资源。
但这个阶段的 Agent 仍然有明显限制:
它大多是一次会话里的线性循环,状态能力弱,崩溃后难以恢复,执行过程也不容易被人工干预。
这意味着,它可以做 Demo,可以做原型,但距离稳定生产系统还有距离。
3. 第三阶段:Stateful Graph,让 Agent 变得可控、可恢复
LangGraph 的出现,解决的是线性 AgentExecutor 的核心问题:
如果 Agent 的执行过程不可中断、不可回放、不可恢复,那么它就很难用于复杂任务。
线性循环的问题在于:
开始 → 推理 → 工具调用 → 观察 → 推理 → 工具调用 → 结束这个过程一旦开始,外部很难介入。
一旦中途失败,状态也很容易丢失。
LangGraph 的思路是:不要把 Agent 看成一个简单的 while 循环,而要把它看成一个有状态执行图。
输入 ↓ [推理节点] → [工具调用节点] → [验证节点] ↑ ↓ └────── 重试决策节点 ↓ [人工介入节点] ↓ 输出这带来了几个重要能力:
第一,执行结构从线性循环变成有向图。
Agent 可以分支、重试、并行,也可以根据不同结果进入不同路径。
第二,状态可以持久化。
通过 Checkpoint,Agent 即使中途失败,也可以从断点恢复,而不是从头再来。
第三,人工可以介入。
在关键节点上,人可以检查、批准、修改或终止任务,这让 Agent 更适合真实业务场景。
第四,调试能力增强。
当执行过程可以回放,问题就不再是黑盒,而是可以定位到具体节点。
这一阶段的 Agent 定义可以进一步升级为:
Agent = (LLM + Tools) × Stateful Execution Graph + HITL + Checkpoint也就是:
Agent 不只是一个会循环调用工具的模型,而是一个可观测、可控制、可恢复的执行系统。
但这仍然主要解决的是“执行流程”的问题,还没有完全解决“执行环境”的问题。
例如:
- 工具调用是否有权限边界?
- 代码执行是否在沙箱中?
- 上下文如何压缩和组织?
- 每一步输出如何验证?
- 敏感操作是否需要审批?
- 失败后如何进行审计?
这些问题,引出了下一层架构:Harness。
4. 第四阶段:Harness,让 Agent 从“能跑”变成“能安全地跑”
如果说前几个阶段关注的是 Agent 如何执行任务,那么 Harness 关注的是:
Agent 在什么环境里执行任务。
一个非常有价值的定义是:
Agent = Model + Harness也就是说,如果你不是模型本身,你就是 Harness 的一部分。
Harness 包括什么?
它几乎包括包裹在模型外部的一切工程设施:
- 系统提示词
- 工具注册表
- 权限控制
- 沙箱环境
- 上下文管理
- 验证机制
- 钩子脚本
- 子代理编排
- 日志与可观测性
这也是为什么同一个模型,在不同 Agent 产品中的表现可能差异巨大。
很多时候,真正拉开差距的不是模型本身,而是 Harness 的设计。
一个好的 Harness 会回答这些问题:
模型能看到什么? 模型能调用什么? 模型不能做什么? 工具执行在哪里发生? 输出如何验证? 失败后如何回滚? 敏感操作如何审批? 整个过程如何审计?因此,这一阶段的 Agent 定义可以写成:
Agent = LLM + Harness进一步展开:
Agent = LLM + 工具 + 权限 + 上下文 + 验证 + 钩子 + 沙箱这一步非常关键。
因为它让 Agent 不再是“裸奔的推理机器”,而是一个有边界、有规则、有保护层的系统。
对于生产环境来说,Agent 的问题从来不只是“能不能完成任务”,还包括:
- 是否安全
- 是否可控
- 是否可审计
- 是否可恢复
- 是否能在错误发生时限制损失
这也是我认为很多 Agent Demo 和真实 Agent 产品之间最大的差距。
Demo 关注“模型能不能做成一件事”。
产品关注“模型在复杂环境里,能不能稳定、安全、可控地持续做事”。
5. 第五阶段:Loop Engineering,让 Agent 真正具备持续自主性
即使有了强大的 Harness,仍然有一个问题没有解决:
谁来启动下一次运行?
如果每次都需要用户手动输入,系统本质上仍然是“被动响应”。
它可以很强,但还不够自主。
Loop Engineering 关注的是 Harness 之上的一层:
Harness 负责让 Agent 安全执行; Loop Engineering 负责让 Agent 持续运转。这一层会引入更多系统级组件,例如:
- Automations:定时或事件触发
- Worktrees:隔离多个 Agent 的执行空间
- Skills:将项目知识沉淀成可复用能力
- Plugins / Connectors:连接工单系统、数据库、Slack、GitHub 等外部系统
- Sub-agents:区分执行者和检查者
- Memory:跨会话保存状态
这时的 Agent 已经不只是“用户问一句,它答一句”。
它可以:
- 定时检查任务
- 主动发现工作
- 分派子任务
- 在隔离环境中执行
- 调用外部系统
- 保存长期状态
- 自我验证结果
- 在满足条件时停止
因此,完整的工程定义可以写成:
Agent = (LLM + Harness) + Loop进一步展开:
Agent = LLM + 工具 + 权限 + 上下文 + 验证 + 钩子 + 沙箱 + 调度 + 工作发现 + 持久化状态 + 子代理 + 自验证 + 停止条件这才更接近今天产品级 Agent 的形态。
6. 一个更完整的工程定义
把前面的几层合起来,我会这样定义 AI Agent:
AI Agent 是一个在固定循环中运行的智能执行系统。它使用 LLM 进行推理和决策,通过 Harness 提供工具、权限、上下文、验证和沙箱环境来执行动作,并通过 Loop 层实现调度、状态持久化、任务发现、自我验证和停止控制。
用公式表达:
Agent = LLM(Reasoning) + H(T, P, C, V, S) + L(A, W, M, Sub, Stop)其中:
T = Tools,工具注册表与工具 Schema P = Permissions,权限系统与审批边界 C = Context,上下文管理与压缩 V = Verification,验证信号、测试与检查 S = Sandbox,隔离执行环境 A = Automations,调度与事件触发 W = Worktrees,并行隔离执行空间 M = Memory,跨会话状态持久化 Sub = Sub-agents,子代理与 Maker/Checker 分离 Stop = Stop Conditions,停止条件与收敛判断这个定义的好处是,它不是抽象概念,而是可以直接指导系统设计。
当我们评估一个 Agent 系统时,可以逐项拆解:
它有没有工具? 工具有没有 Schema? 有没有权限边界? 上下文是否可控? 执行是否在沙箱里? 结果是否经过验证? 失败后能不能恢复? 能不能跨会话记忆? 能不能自动触发? 什么时候停止?如果这些问题回答不清楚,那么这个系统可能只是一个“会调用工具的聊天机器人”,还不能算完整意义上的产品级 Agent。
7. 为什么这个视角更适合工程实践?
过去关于 Agent 的讨论,经常陷入几个抽象争论:
- LLM 到底会不会规划?
- Agent 是否真的自主?
- ReAct 是否等于 Agent?
- Tool Calling 是否足够?
- 多 Agent 是否一定更强?
这些问题当然重要,但如果从工程视角看,会更清晰。
LLM 提供的是推理和决策能力。
Harness 提供的是执行环境和安全边界。
Loop 提供的是持续运行和自主调度能力。
三者缺一不可。
没有 LLM,系统没有智能决策能力。 没有 Harness,Agent 就是不安全的裸奔系统。 没有 Loop,Agent 就只是等待用户启动的工具。所以,一个成熟的 Agent 不应该只看模型能力,也不应该只看是否支持工具调用,而应该看整体系统设计。
真正有价值的问题不是:
这个 Agent 用了什么模型?而是:
这个 Agent 的 Harness 怎么设计? 它的权限边界在哪里? 它如何管理上下文? 它如何验证结果? 它如何恢复失败? 它的 Loop 如何触发? 它什么时候停止?这些问题,才决定 Agent 能不能从 Demo 走向生产。
8. 对开发者的启发
如果我要设计一个 Agent 系统,我不会一开始就追求“多智能体”“完全自主”或“复杂规划”。
我会优先搭好四个基础层:
第一,明确工具边界。
每个工具都要有清晰的 name、description、args_schema 和返回结构。模型不应该猜工具怎么用,而应该在明确接口中做选择。
第二,建立权限系统。
读操作、写操作、危险操作要分级。涉及外部副作用的操作,例如发邮件、提交代码、删除数据、支付订单,必须有审批或回滚机制。
第三,加入验证闭环。
Agent 的输出不能只靠模型自信。代码要跑测试,数据要校验,文档要检查格式,关键结论要有来源。
第四,设计停止条件。
一个 Agent 是否可靠,很大程度取决于它是否知道什么时候停。没有停止条件的 Agent,最终会变成资源黑洞。
在这些基础上,再逐步增加状态持久化、调度触发、子代理协作和长期记忆。
也就是说,Agent 的建设路线不应该是:
先追求自主,再补安全而应该是:
先建立边界,再扩大自主性这是我认为 Agent 工程化最重要的一条原则。
结语:Agent 的本质是“带边界的自主执行系统”
回过头看,Agent 的演化其实是一层一层补全能力的过程:
LLM + Loop:能持续执行 LLM + Tools + Loop:能调用外部能力 Stateful Graph:可控、可恢复 Harness:安全、有边界、可审计 Loop Engineering:可调度、可持续、自主运行所以,Agent 不是一个 Prompt 技巧,也不是一个简单的 Tool Calling Demo。
它是一套围绕 LLM 构建的工程系统。
如果用一句话总结:
Agent = 用 LLM 做决策,用 Harness 管边界,用 Loop 给系统生命力。
一个没有 Harness 的 Agent,是裸奔的推理机器。
一个没有 Loop 的 Agent,是等待人按启动键的工具。
只有同时具备推理能力、执行边界和持续循环能力的系统,才更接近真正意义上的 AI Agent。
参考来源
Yohei Nakajima, “BabyAGI”, GitHub, March 2023
Harrison Chase, LangChain Agent / LangGraph, 2023-2025
Addy Osmani, “Agent Harness Engineering”, addyosmani.com, April 19, 2026
Addy Osmani, “Loop Engineering”, addyosmani.com, June 7, 2026
Anthropic, “Effective Harnesses for Long-Running Agents”, anthropic.com, November 26, 2025
Viv Trivedy, “Anatomy of an Agent Harness”, 2026