从"会回答"到"能执行":AI Agent 的系统构成、运行机制与工程实践
本文拆解 AI Agent(智能体)的核心公式、ReAct 循环、上下文工程、支撑框架(Harness)、工作流与自主智能体的选型边界,以及生产级落地的安全与可靠性设计。适合希望从概念走向工程实现的开发者阅读。
一、问题的起点:什么才是 Agent
业界对"AI Agent"的叫法相当宽松------能调用工具的聊天机器人、带提示词的 LLM、甚至一个定时脚本,都可能被贴上"智能体"标签。要区分真假,关键不在于它回答得像不像专家,而在于它能否做到三件事:
- 围绕一个目标持续行动,而不是单次作答即结束;
- 读取环境反馈,用反馈决定下一步;
- 调用工具改变环境,让任务状态朝"可验证的完成"推进。
举一个对比鲜明的例子:用户提出**"帮我修好这个程序错误"**。
| 类型 | 典型行为 | 核心产物 |
|---|---|---|
| 聊天机器人 | 分析原因、给出修改建议 | 一段文本回答 |
| 智能体 | 搜索代码 → 编辑文件 → 运行测试 → 失败时据结果再调整 | 被修复并验证过的代码 |
判断 Agent 的第一个标准由此清晰:它有没有让任务状态发生变化,并把结果推进到可验证的完成。建议(suggestion)与执行(execution)到验证(verification)的闭环,是分水岭。
二、核心公式:智能体 = LLM + 上下文 + 工具
把上面的修复过程抽象拆解,可得到被广泛引用的核心公式:
Agent=LLM+Context+ToolsAgent = LLM + Context + ToolsAgent=LLM+Context+Tools
三部分职责如下:
- LLM(大语言模型):负责推理与决策,判断"下一步做什么";
- Context(上下文):提供系统规则、工具定义、任务历史与当前现场;
- Tools(工具):把决策变成可执行的真实行动(搜索、编辑、测试、API 调用等)。
核心认知 :智能体的本质不是"给模型外挂几个按钮",而是把思考、现场信息、执行能力连接成一个可持续运行的系统。三者任一缺失都会直接限制结果:
- LLM 判断能力不足 → 选错步骤;
- 上下文不完整 → "失忆",重复操作或遗漏线索;
- 工具能力不足 → 明知该做也只得给建议。
因此:模型很强 ≠ Agent 一定能把任务做好,系统能力取决于三部分的协同质量。
三、运行机制:让执行链转起来的 ReAct 循环
一个最小可运行的 Agent,本质上就是不断重复 "思考---行动---观察" 的闭环,这一范式即 ReAct(Reasoning + Acting)。
以修复程序错误为例,一次完整循环:
[思考] 看到报错信息 → 推断应先查日志,定位报错位置
↓
[行动] 调用 search_code 工具定位相关代码
↓
[观察] 读到相关函数与调用链 → 推断根因
↓
[思考] 制定修改方案
↓
[行动] 调用 edit_file 工具修改文件
↓
[观察] 运行测试 → 测试仍失败
↓
[思考] 调整方案(而非宣告完成) → 进入下一轮循环
↓
... 直到任务完成 / 达上限 / 需人工介入
用更形式化的伪代码表示:
python
def run_agent(user_goal, max_steps=20):
context = init_context(user_goal) # 系统规则 + 工具定义
for step in range(max_steps):
# 思考:基于上下文决策下一步
action = llm.decide(context) # 可能输出: {tool, args}
# 行动:执行工具
observation = tool_registry.invoke(action.tool, action.args)
# 观察:把结果写回上下文
context.append(observation)
# 终止条件:任务完成 / 需人工介入
if llm.should_stop(context):
return context.final_result
return context.partial_result
关键洞察 :Agent 的价值不在某一次判断,而在于把一次次判断接入连续执行 ,让任务状态持续朝完成靠近。每一次观察 都会直接影响下一次行动,这正是它与"一次性回答"的根本差异。
四、上下文工程:模型"看见什么"比"有多大"更重要
Agent 为什么知道下一步该做什么?因为它每次决策时看到的,远不止用户最初的那一句话。上下文通常由两部分构成:
- 相对稳定的部分:系统规则(system prompt)、工具定义(名称、参数、描述);
- 不断增长的任务轨迹(trajectory):用户目标、已采取的操作、工具返回结果、当前状态。
可以把下一步决策理解为:
下一步 = 固定规则 + 任务现场
现场信息一旦缺失,Agent 就会像"失忆"一样,出现重复调用、跑偏、遗漏关键线索等问题。因此上下文管理(Context Engineering)是 Agent 工程化的核心难题之一,常见策略包括:
- 裁剪与压缩:对过长的工具返回做摘要,保留关键字段;
- 结构化存储:用统一 schema 记录行动---观察对;
- 分层记忆:短期轨迹 + 长期可检索记忆(向量库 / 数据库);
- 窗口管理:优先保留最近若干轮与关键决策节点。
一个经验性结论:模型"看见什么"往往比模型"有多大"更重要。再强的模型,若上下文残缺,也会做出糟糕决策。
五、从最小 Agent 到可靠产品:支撑框架(Harness)
一个最小 Agent 虽能跑通流程,但离可靠产品仍有显著距离。模型可能:选错工具、传错参数、忽略失败、任务未完成却宣布结束......
支撑框架(Harness) 的作用,就是把这些错误变得可发现、可处理。它承担模型之外的"工程脚手架"职责:
| 职责 | 说明 |
|---|---|
| 组装信息 | 拼接系统规则、工具定义、任务轨迹形成完整 prompt |
| 校验行动 | 检查工具名、参数类型、取值范围 |
| 检查结果 | 判断工具调用是否成功、输出是否符合预期 |
| 失败纠正 | 超时/报错时重试、降级或触发人工介入 |
模型与 Harness 的分工可以概括为:
模型负责"提出下一步";Harness 负责"让这一步安全、可执行、可验证"。
这引出了构建生产级 Agent 时必须回答的五个工程问题:
- 它现在需要看见什么?(上下文设计)
- 它能采取哪些行动?(工具边界)
- 哪些事情绝对不能做?(安全红线)
- 怎样确认任务真的完成?(终止与验证)
- 失败后如何继续,而不是直接卡住?(容错与恢复)
产品与可靠性的差距,往往正藏在这样一些"看起来不那么智能"的机制里。
六、工程原则:简单、透明、工具优先
实践中有三条被反复验证的原则:
- 保持简单(Keep it simple):从最小方案起步,每增加一层复杂度都要有明确理由;
- 保持透明(Be transparent):记录计划、工具调用与结果,让问题可复现;
- 设计好工具接口 :工具的名称、参数、返回值要让模型不容易误用(清晰的 docstring、枚举约束、类型校验)。
不可观察的复杂系统很难持续改进。 可靠性通常来自清晰设计,而非堆叠更多步骤。
七、选型边界:工作流 vs. 自主智能体
设计 Agent 系统时,首先要区分工作流(Workflow)与自主智能体(Autonomous Agent) ,判别标准是:执行路径能否提前写死?
| 维度 | 工作流 | 自主智能体 |
|---|---|---|
| 路径确定性 | 可预先编排(DAG / 状态机) | 路径依赖运行时反馈,无法预知 |
| 决策主体 | 程序逻辑为主 | LLM 动态决策 |
| 典型场景 | 订票(核验→搜索→付款→确认)、审核、报表 | 代码修复、复杂研究、开放探索 |
| 稳定性 | 高、可预测 | 较低、需容错 |
| 成本/风险 | 低延迟、易管控 | 多次模型调用、高延迟、风险复杂 |
实际选型建议------从最简单方案开始:
- 单次 LLM 调用:摘要、改写、简单问答;
- 工作流:审核、报表等步骤固定的任务,更稳定可控;
- 自主智能体 :仅代码修复、复杂研究等路径无法预知的任务才值得引入。
自主性越高,通常意味着更多模型调用、更高延迟、更复杂的风险处理。 最佳架构是刚好够用的最小架构(the minimum architecture that solves the problem)------这既是成本考量,也是可靠性考量。
八、生产级安全:贯穿整条执行链
一旦 Agent 能发邮件、改文件、付款或操作真实系统,安全就不能只靠模型"自觉"。防护需覆盖输入、执行、输出三个环节:
[输入侧] 识别恶意指令 / 提示注入(prompt injection)
↓
[执行侧] 校验参数、权限、操作风险;高风险行为强制人工确认
↓
[输出侧] 过滤隐私信息、验证结果格式与安全
安全要点:
- 提示注入防护:区分"指令"与"数据",对不可信内容做隔离;
- 最小权限原则:工具账号仅授予必要权限;
- 高风险操作确认:写文件、外发、支付等需 human-in-the-loop;
- 可观测与审计:完整记录决策链,便于追溯与复盘。
安全不是最后补上的一条规则,而是贯穿从输入到行动再到输出的整条执行链。
九、四个问题:判断一个系统是否真正具备 Agent 能力
可以用下面四个问题做快速自检:
- 它能否围绕目标持续推进?
- 它能否读取环境反馈?
- 它能否调用工具改变环境?
- 它有没有验证、纠正和安全机制?
其中前三个决定它能不能行动 ,最后一个决定它能不能可靠地行动。
十、总结
本文沿着"修复程序错误"这一场景,梳理了 AI Agent 的技术全貌:
- 本质:Agent = LLM + 上下文 + 工具,是把思考、现场、执行连成闭环的持续运行系统;
- 引擎:ReAct(思考---行动---观察)循环驱动任务状态不断朝完成推进;
- 关键:上下文工程决定决策质量,"看见什么"比"模型多大"更重要;
- 工程化:靠 Harness 支撑框架做校验、容错、验证,遵循简单、透明、工具优先原则;
- 选型:工作流与自主智能体无高下之分,按路径是否可预知选择,优先最小架构;
- 安全:贯穿输入---执行---输出的全链路,高风险行为保留人工介入。
对开发者而言,落地 Agent 的务实路径是:先验证最小闭环能否跑通,再用 Harness 补齐可靠性与安全,最后才考虑提升自主性。毕竟,一个能在边界内稳定完成任务的系统,价值远大于一个"什么都能做但常常失控"的系统。
参考资料与延伸阅读
- ReAct: Synergizing Reasoning and Acting in Language Models(Princeton / Google, 2022)
- Building Effective Agents(Anthropic, 2024)
- 主流 Agent 框架文档:LangGraph、CrewAI、AutoGen、LlamaIndex Workflows 等