这里写自定义目录标题
- 欢迎使用Markdown编辑器
- 引言:为什么 Agent 是 AI 应用的下一个范式
- 一、Agent 的认知架构:从 ReAct 到更复杂的范式
- 1.1 ReAct:Agent 的"启蒙范式"
- 1.2 从 ReAct 到图状态机
- 1.3 H-V-R 范式:假设-验证-反思
- 二、Harness:驾驭 Agent 的工程框架
- 2.1 什么是 Harness
- 2.2 Harness 的核心组件
- 2.3 为什么 Harness 决定了 Agent 的上限
- 三、工具系统:Agent 连接世界的桥梁
- 3.1 工具的本质
- 3.2 工具设计的工程要点
- 3.3 MCP 协议:工具标准化的方向
- 四、记忆系统:让 Agent 从"一次性"走向"持续服务"
- 4.1 记忆的分层
- 4.2 长期记忆的实现
- 4.3 记忆的"遗忘"机制
- 五、Agent 工程化的落地实践
- 5.1 从 Demo 到生产的鸿沟
- 5.2 可观测性:让 Agent 行为可审计
- 5.3 评测闭环:持续改进的引擎
- 六、我的几点实践心得
- 新的改变
- 功能快捷键
- 合理的创建标题,有助于目录的生成
- 如何改变文本的样式
- 插入链接与图片
- 如何插入一段漂亮的代码片
- 生成一个适合你的列表
- 创建一个表格
- 设定内容居中、居左、居右
- SmartyPants
- 创建一个自定义列表
- 如何创建一个注脚
- 注释也是必不可少的
- KaTeX数学公式
- 新的甘特图功能,丰富你的文章
- UML图表
- 流程图
- FLowchart流程图
- 导出与导入
- 导出
- 导入
欢迎使用Markdown编辑器
你好! 这是你第一次使用# AI Agent 核心架构与工程实践:从 ReAct 到 Harness 的完整拆解
引言:为什么 Agent 是 AI 应用的下一个范式
最近和几个做 AI 应用落地的朋友聊天,大家普遍有个感觉:单纯调用大模型的 API,做个问答或者文本生成,已经越来越"没劲"了。项目初期,一个简单的 Prompt 就能做出个 Demo,效果惊艳。但一旦想把它做成一个能稳定运行、处理复杂任务的系统,各种问题就接踵而至:任务一复杂,模型就开始"胡言乱语";需要调用外部工具时,流程控制变得异常繁琐;状态管理、错误处理、长期记忆……这些在传统软件开发里司空见惯的概念,在基于大模型的系统里却要重新造轮子。
这背后的核心矛盾在于,我们是在用一个"对话模型"去干"智能体"的活儿。大语言模型(LLM)本质是一个强大的世界知识压缩器和文本模式匹配器,它擅长的是在单次交互中生成符合上下文的文本。但现实世界的任务,无论是分析一份财报、编写一个爬虫脚本,还是规划一次旅行,都是多步骤、有状态、需要与环境(工具、API、数据库)持续交互的过程。把 LLM 直接当"大脑"用,就像让一位博闻强识的学者去指挥一场交响乐,他或许知道每个乐器的原理,但缺乏指挥的节奏感、协调性和对全局流程的控制力。
于是,Agent(智能体)的概念被推到了前台。它不再把 LLM 仅仅视为一个文本生成器,而是将其作为核心的"推理引擎"或"决策中心",围绕它构建起一整套感知、规划、执行和反思的架构。简单说,Agent = LLM(大脑)+ 规划能力(思维链/ReAct)+ 工具使用(Skill)+ 记忆模块 + 执行环境。它的目标是让 AI 能够像人一样,自主理解复杂目标,拆解任务,调用合适工具,并在执行中根据反馈调整策略,直至完成任务。
本文将从认知架构、Harness 概念、工具系统、记忆系统、以及工程化落地几个维度,完整拆解 Agent 开发的方方面面。
一、Agent 的认知架构:从 ReAct 到更复杂的范式
1.1 ReAct:Agent 的"启蒙范式"
ReAct(Reasoning + Acting,推理 + 行动)是 Agent 领域最经典的认知架构。它的核心思想是让模型在"思考"和"行动"之间交替:
- Thought(思考):模型分析当前状态,决定下一步该做什么
- Action(行动):模型选择一个工具并给出调用参数
- Observation(观察):系统执行工具调用,把结果返回给模型
- 回到第 1 步,直到任务完成
这个循环看似简单,却解决了 Agent 最核心的问题:让模型"边想边做",而不是"一次想完再一起做"。ReAct 的巧妙之处在于,它把推理过程显式化,让模型能够根据工具返回的真实结果调整策略,而不是凭想象硬撑。
- 回到第 1 步,直到任务完成
1.2 从 ReAct 到图状态机
ReAct 虽然经典,但有一个致命缺陷:它是"线性"的,缺乏对复杂流程的控制力。当任务需要条件分支、循环、并行执行时,ReAct 就力不从心了。
2026 年的主流范式是"图状态机"。以 LangGraph 为代表的框架,把 Agent 建模为一张有向图:
- 节点(Node):计算单元,可以是模型调用、工具执行、数据处理
- 边(Edge):路由逻辑,决定执行完一个节点后下一步去哪
- 状态(State):贯穿全图的共享内存,保存中间结果和上下文
这种范式的优势在于:开发者可以精确控制 Agent 的执行流程,把"模型自由发挥"限制在合理的范围内。比如,你可以规定"先检索再生成"、“工具调用失败后重试两次”、"超过 5 步强制终止"等规则,让 Agent 的行为可预测、可控、可审计。
- 状态(State):贯穿全图的共享内存,保存中间结果和上下文
1.3 H-V-R 范式:假设-验证-反思
在 ReAct 和图状态机之上,2026 年还出现了一种更高级的认知范式——H-V-R(Hypothesis-Verification-Reflection,假设-验证-反思)。它的核心思想是:Agent 不再"边想边做",而是先提出假设,再通过工具验证,最后根据验证结果反思修正。
这种范式特别适合需要严谨性的场景,比如科研、数据分析、代码生成。它通过"提出假设 → 设计验证方案 → 执行验证 → 反思修正"的循环,显著降低了模型的幻觉率。
二、Harness:驾驭 Agent 的工程框架
2.1 什么是 Harness
在 AI Agent 的语境下,Harness 的含义接近于"驾驭"、“控制"或"治理”。你可以把它理解为一套用于"驾驭"LLM 能力,使其能可靠、安全、高效地完成复杂任务的工程框架、方法论和最佳实践的集合。
这不仅仅是写个 Prompt 那么简单,它涉及到如何设计 Agent 的认知架构(如 ReAct),如何定义和管理可复用的能力单元(Skill/SubAgent),如何确保任务执行的可靠性与安全性,以及如何将多个 Agent 协同起来处理更宏大的问题。
2.2 Harness 的核心组件
一个完整的 Harness 通常包含以下组件:
- 上下文管理器:负责上下文的组装、压缩、裁剪,确保模型始终看到关键信息
- 工具注册中心:负责工具的注册、描述、参数校验、调用调度
- 记忆系统:负责短期记忆和长期记忆的读写、检索、整理
- 评测模块:负责对 Agent 输出进行质量评估和反馈
- 循环控制器:负责控制 Agent 的迭代次数、超时、终止条件
- 可观测性模块:负责日志、追踪、指标采集,让 Agent 行为可审计
2.3 为什么 Harness 决定了 Agent 的上限
很多人以为 Agent 的能力上限由模型决定,其实不然。模型是"思考引擎",但"思考"能否转化为"可靠的行动",取决于 Harness 的质量。
举个例子:一个模型可能"知道"如何调用搜索工具,但如果 Harness 没有做好工具描述,模型就会乱传参数;如果 Harness 没有做好错误处理,工具调用失败后 Agent 就会卡死;如果 Harness 没有做好上下文管理,长对话后模型就会"失忆"。这些问题的根源都不在模型,而在 Harness。
三、工具系统:Agent 连接世界的桥梁
3.1 工具的本质
工具是 Agent 连接外部世界的桥梁。一个 Agent 的能力边界,很大程度上由它的工具集决定。工具可以是 API 调用、数据库查询、代码执行、文件读写、网页访问等任何可编程的能力。
3.2 工具设计的工程要点
设计工具系统时,有几个关键的工程要点:
第一,工具描述要"面向模型"。工具描述不是给人看的,是给模型看的。描述要写清楚:这个工具是干什么的、参数是什么含义、返回值是什么结构、什么情况下该用这个工具。描述写得越清楚,模型调用就越准确。
第二,参数校验要严格。模型生成的参数不一定合法,工具层必须做严格的参数校验和类型转换,防止脏数据进入系统。
第三,错误处理要健壮。工具调用可能失败(网络超时、接口报错、数据异常),工具层要定义清晰的错误码和错误信息,让 Agent 能够理解失败原因并调整策略。
第四,权限控制要严格。不是所有工具都该让 Agent 随意调用。涉及敏感操作(删除数据、发送消息、支付)的工具,必须设置权限边界和审批流程。
3.3 MCP 协议:工具标准化的方向
2026 年,MCP(Model Context Protocol)协议正在成为工具调用的行业标准。MCP 的核心思想是把工具能力描述成标准的 JSON Schema,让模型能够统一理解不同来源的工具。这解决了 Agent 生态最大的痛点——工具碎片化。有了统一协议,Agent 可以像"插 USB"一样接入各种工具,生态的丰富度将大幅提升。
四、记忆系统:让 Agent 从"一次性"走向"持续服务"
4.1 记忆的分层
记忆是 Agent 从"一次性对话"走向"持续服务"的关键。2026 年的主流做法是把记忆分为两层:
- 短期记忆:当前会话的上下文,保存在内存中,会话结束即清空
- 长期记忆:跨会话的持久化知识,保存在外部存储中,可以跨会话复用
4.2 长期记忆的实现
长期记忆的实现通常依赖外部存储:
- 向量数据库:存语义记忆,支持按相似度检索
- 关系型数据库:存结构化事实,支持精确查询
- 文件系统:存原始文档,支持全文检索
记忆的写入需要经过筛选和整理,不能什么都存——存太多会污染检索结果,存太少又会丢失关键信息。记忆的读取需要按需检索,不能什么都塞进上下文——上下文窗口是有限的,塞太多反而会干扰模型判断。
- 文件系统:存原始文档,支持全文检索
4.3 记忆的"遗忘"机制
记忆系统还有一个容易被忽视的环节:遗忘。不是所有信息都值得长期保存,系统需要设计遗忘机制:过期的信息要清理,低价值的信息要降权,冲突的信息要仲裁。一个健康的记忆系统,应该像人脑一样,既记得住重要的,也忘得掉不重要的。
五、Agent 工程化的落地实践
5.1 从 Demo 到生产的鸿沟
很多团队在 Demo 阶段很兴奋,一上生产就崩溃。原因在于,Demo 只验证了"模型能不能做",生产环境还要验证"系统能不能稳定做"。从 Demo 到生产,需要补齐大量工程环节:错误处理、超时重试、日志追踪、成本控制、权限治理、灰度发布。
5.2 可观测性:让 Agent 行为可审计
生产级 Agent 必须有完善的可观测性。每一步执行都要有日志:模型想了什么、调用了什么工具、工具返回了什么、最终输出了什么。这些日志不仅是排障的依据,也是评测和优化的数据来源。
5.3 评测闭环:持续改进的引擎
Agent 的评测比传统软件复杂得多,因为它的输出是"非确定性的"。同一个输入,模型可能给出不同的输出。因此,Agent 评测不能只看单次结果,要看统计分布:跑 100 次,成功率是多少?平均耗时多少?成本多少?
评测集要持续扩充,把线上暴露的问题不断回流进去,形成"发现问题 → 加入评测 → 修复 → 回归"的闭环。这是 Agent 持续改进的引擎。
六、我的几点实践心得
最后,分享几点我在 Agent 工程化实践中的心得。
第一,先做"能跑的",再做"跑得好的"。很多团队一上来就追求完美的架构,结果项目迟迟无法启动。正确的做法是先做一个能跑通全流程的最小版本,再逐步优化。架构可以在迭代中演进,但业务价值必须尽早交付。
第二,控制权要"收放有度"。Agent 的自主性是一把双刃剑:自主性太强,行为不可控;自主性太弱,又失去了 Agent 的意义。好的设计是"在关键节点收权,在细节环节放权"——让模型在细节上自由发挥,但在关键决策上由规则把关。
第三,工具质量决定 Agent 质量。我见过太多团队花大量时间调 Prompt,却忽视了工具层的建设。实际上,工具描述是否清晰、参数校验是否严格、错误处理是否健壮,对 Agent 最终效果的影响,往往比 Prompt 更大。
第四,把 Agent 当产品运营。Agent 不是"开发完就完事"的一次性项目,而是一个需要持续运营的产品。线上反馈要收集、评测集要扩充、模型要迭代、成本要治理。只有把 Agent 当作产品来运营,它才能持续创造价值。
Agent 开发是一场"系统工程"的马拉松,而不是"调 Prompt"的百米冲刺。理解了认知架构、Harness、工具系统、记忆系统这些核心组件,你就掌握了 Agent 开发的底层逻辑。剩下的,就是在实践中不断打磨和迭代。
Markdown编辑器所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
- 全新的界面设计,将会带来全新的写作体验;
- 在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;
- 增加了图片拖拽功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
- 全新的KaTeX数学公式语法;
- 增加了支持甘特图的mermaid语法1功能;
- 增加了多屏幕编辑Markdown文章功能;
- 增加了焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置等功能,功能按钮位于编辑区域与预览区域中间;
- 增加了检查列表功能。
功能快捷键
撤销:Ctrl/Command+Z
重做:Ctrl/Command+Y
加粗:Ctrl/Command+B
斜体:Ctrl/Command+I
标题:Ctrl/Command+Shift+H
无序列表:Ctrl/Command+Shift+U
有序列表:Ctrl/Command+Shift+O
检查列表:Ctrl/Command+Shift+C
插入代码:Ctrl/Command+Shift+K
插入链接:Ctrl/Command+Shift+L
插入图片:Ctrl/Command+Shift+G
查找:Ctrl/Command+F
替换:Ctrl/Command+G
合理的创建标题,有助于目录的生成
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。
如何改变文本的样式
强调文本强调文本
加粗文本加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210运算结果是 1024.
插入链接与图片
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
如何插入一段漂亮的代码片
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的代码片.
// An highlighted blockvarfoo='bar';生成一个适合你的列表
- 项目
- 项目
- 项目
- 项目
- 项目1
- 项目2
- 项目3
- 计划任务
- 完成任务
创建一个表格
一个简单的表格是这么创建的:
| 项目 | Value |
|---|---|
| 电脑 | $1600 |
| 手机 | $12 |
| 导管 | $1 |
设定内容居中、居左、居右
使用:---------:居中
使用:----------居左
使用----------:居右
| 第一列 | 第二列 | 第三列 |
|---|---|---|
| 第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants
SmartyPants 是一个文本转换工具,主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如:
| 原始符号 | 转换后 | 说明 |
|---|---|---|
"引号" | “引号” | 直引号变弯引号 |
'单引号' | ‘单引号’ | 直单引号变弯单引号 |
-- | – | 两个连字符变短破折号 |
--- | — | 三个连字符变长破折号 |
... | … | 三个点变省略号 |
创建一个自定义列表
- Markdown
- Text-to-HTMLconversion tool Authors
- John
- Luke
如何创建一个注脚
一个具有注脚的文本。2
注释也是必不可少的
Markdown将文本转换为HTML。
KaTeX数学公式
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb NΓ(n)=(n−1)!∀n∈N是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息LaTeX数学表达式here.
新的甘特图功能,丰富你的文章
- 关于甘特图语法,参考 这儿,
UML图表
可以使用UML图表进行渲染,例如下面产生的一个序列图:
- 关于UML图表语法,参考 这儿,
流程图
- 关于Mermaid语法,参考 这儿,
FLowchart流程图
我们依旧会支持flowchart.js的流程图语法:
- 关于Flowchart流程图语法,参考 这儿.
导出与导入
导出
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出,生成一个.md文件或者.html文件进行本地保存。
导入
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
mermaid语法说明 ↩︎
注脚的解释 ↩︎