news 2026/8/20 11:05:45

AI Agent 核心架构与工程实践:从 ReAct 到 Harness 的完整拆解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Agent 核心架构与工程实践:从 ReAct 到 Harness 的完整拆解

这里写自定义目录标题

  • 欢迎使用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 领域最经典的认知架构。它的核心思想是让模型在"思考"和"行动"之间交替:

  1. Thought(思考):模型分析当前状态,决定下一步该做什么
    1. Action(行动):模型选择一个工具并给出调用参数
    1. Observation(观察):系统执行工具调用,把结果返回给模型
    1. 回到第 1 步,直到任务完成
      这个循环看似简单,却解决了 Agent 最核心的问题:让模型"边想边做",而不是"一次想完再一起做"。ReAct 的巧妙之处在于,它把推理过程显式化,让模型能够根据工具返回的真实结果调整策略,而不是凭想象硬撑。

1.2 从 ReAct 到图状态机

ReAct 虽然经典,但有一个致命缺陷:它是"线性"的,缺乏对复杂流程的控制力。当任务需要条件分支、循环、并行执行时,ReAct 就力不从心了。

2026 年的主流范式是"图状态机"。以 LangGraph 为代表的框架,把 Agent 建模为一张有向图:

  • 节点(Node):计算单元,可以是模型调用、工具执行、数据处理
    • 边(Edge):路由逻辑,决定执行完一个节点后下一步去哪
    • 状态(State):贯穿全图的共享内存,保存中间结果和上下文
      这种范式的优势在于:开发者可以精确控制 Agent 的执行流程,把"模型自由发挥"限制在合理的范围内。比如,你可以规定"先检索再生成"、“工具调用失败后重试两次”、"超过 5 步强制终止"等规则,让 Agent 的行为可预测、可控、可审计。

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编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;
  3. 增加了图片拖拽功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的KaTeX数学公式语法;
  5. 增加了支持甘特图的mermaid语法1功能;
  6. 增加了多屏幕编辑Markdown文章功能;
  7. 增加了焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了检查列表功能。

功能快捷键

撤销: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. 项目1
  2. 项目2
  3. 项目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)=(n1)!nN是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)=0tz1etdt.

你可以找到更多关于的信息LaTeX数学表达式here.

新的甘特图功能,丰富你的文章

2014-01-072014-01-092014-01-112014-01-132014-01-152014-01-172014-01-192014-01-21已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid
  • 关于甘特图语法,参考 这儿,

UML图表

可以使用UML图表进行渲染,例如下面产生的一个序列图:

王五李四张三王五李四张三李四想了很长时间, 文字太长了不适合放在一行.你好!李四, 最近怎么样?你最近怎么样,王五?我很好,谢谢!我很好,谢谢!打量着王五...很好... 王五, 你怎么样?
  • 关于UML图表语法,参考 这儿,

流程图

链接

长方形

圆角长方形

菱形

  • 关于Mermaid语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart.js的流程图语法:

Created with Raphaël 2.3.0开始我的操作确认?结束yesno
  • 关于Flowchart流程图语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 11:05:40

友思特ZED全系列深度评测:X/X Mini/2i/Mini型号差异与选型建议

一、ZED系列型号繁多,选型为什么总是拿不准?在3D视觉项目选型过程中,Stereolabs ZED系列是许多开发者绕不开的选项。从ZED Mini到ZED 2i,从ZED X到ZED X Mini,再加上近年来推出的ZED X Nano和ZED X One单目系列&#x…

作者头像 李华
网站建设 2026/8/20 11:04:17

AI 画的图总带“AI 味“?2.1 万 Star 的开源 Skill,让图直接能上片

本文介绍一个给 Claude Code / Codex 等 AI 编程工具装的开源 Skill:diagram-design。装上之后,AI 画出来的不再是"通用圆角框",而是品牌一致、编辑级、能直接导出的图。全文含安装命令、使用示例和选型对比,读完 5 分钟…

作者头像 李华
网站建设 2026/8/20 11:02:49

VMware虚拟机多开实战:从环境隔离到性能调优的完整指南

最近在帮朋友测试一些老游戏多开时,发现像《问道》、《热血江湖》这类经典游戏,对多开环境的要求其实挺有讲究的。直接在物理机上多开,不仅容易因为系统资源分配不均导致卡顿,还可能触发游戏本身的检测机制。而使用 VMware 虚拟机…

作者头像 李华
网站建设 2026/8/20 11:02:30

告别繁琐运维!Codex 一键安装脚本

使用 Codex CLI 提升服务器运维效率 在服务器运维工作中,日志查看、部署操作和问题排查等任务往往比较繁琐。Codex CLI 作为一款命令行工具,能够显著简化这些流程,提升工作效率。本文将介绍如何通过自动化脚本在多台服务器上快速安装和配置 …

作者头像 李华
网站建设 2026/8/20 11:02:02

如何用网盘直链下载助手 3 步搞定全平台下载:LinkSwift 完整上手指南

如何用网盘直链下载助手 3 步搞定全平台下载:LinkSwift 完整上手指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…

作者头像 李华
网站建设 2026/8/20 10:57:40

DETR目标检测:Transformer端到端集合预测原理与实战

如果你在2020年之前接触过目标检测,那么你一定对“两阶段”和“一阶段”这两个词印象深刻。从R-CNN系列到YOLO系列,整个领域似乎都在这两条技术路径上做“选择题”:是先找候选框再分类,还是直接回归出框和类别?无论怎么…

作者头像 李华