基于 ReAct 模式的 Harness 实现细节

关键词:ReAct模式, Harness大模型应用框架, 大模型推理与行动协同, 工具调用, LLM应用开发, 提示工程, 状态管理

摘要:本文以「大模型像只会空想的探险家?不,ReAct+Harness让它变成会看地图、会用工具的专业向导」为核心故事线,一步一步拆解 ReAct 模式的本质原理,再结合行业级大模型应用开发框架 Harness(LangChain 的竞品与创新者,专为生产级应用打造的可观测、可调试、可扩展框架) 的核心源码片段,用小学生能听懂的“地图探险”类比贯穿始终,讲解从 ReAct 提示词的设计逻辑,到 Harness 中 Agent、Tool、State、Executor 四大核心组件的协同架构,最后给出一个完整的生产级“餐厅预订+路线规划”Agent 实战项目,并附上可复制的代码、最佳实践以及未来趋势分析。


背景介绍:从“只会空想的探险家”到“专业向导”的蜕变

目的和范围

你有没有过这样的经历:让大模型帮你订个明天晚上7点、人均100以内、离地铁站步行5分钟、有儿童座椅的川菜馆?大模型可能会先噼里啪啦空想一堆川菜馆的名字,然后说“抱歉我没有实时数据,订不了”——这就是传统「仅推理(Reasoning-Only)」大模型的痛点:它活在自己的知识库里,像个只会背地图册的探险家,一到陌生城市(处理实时/动态/专业领域问题)就抓瞎。

后来有人想,能不能让大模型先推理为什么(找川菜馆需要什么条件)、再决定怎么做(用大众点评查实时数据、用高德查步行距离、用商家API订座)、最后观察结果对不对(订到的川菜馆人均是不是真的100以内),错了就修正——这就是ReAct(Reasoning + Acting)模式的核心:把推理和行动绑定在一起,让大模型从「知识背诵者」变成「问题解决者」。

但光有 ReAct 模式的理念还不够,要把它落地成生产级应用,你得解决一堆麻烦事:

  1. 怎么统一管理大模型的思考状态?
  2. 怎么安全、高效地调用各种工具(API、数据库、本地脚本)?
  3. 怎么调试大模型的思考过程(万一它“走火入魔”重复问同一个问题怎么办)?
  4. 怎么让多个工具、多个 Agent 协同工作?
  5. 怎么监控生产环境下的 Agent 性能(比如响应时间、工具调用次数、失败率)?

这就是 Harness 框架的用武之地:它是 Google Cloud 推出的、专为生产级 LLM 应用打造的可观测、可调试、可扩展的 Agent 开发框架(虽然 LangChain 更早火,但 Harness 在企业级安全、可观测性、成本管理、多Agent编排上有明显优势)。

本文的目的就是:

  1. 让你彻底理解 ReAct 模式的本质,不会再被“ReAct就是加个工具调用”这种片面说法忽悠;
  2. 让你深入掌握 Harness 框架中实现 ReAct 模式的核心源码逻辑,不是只会调 API,而是知道为什么这么调;
  3. 让你能用 Harness 从零搭建一个生产级可用的 ReAct Agent,并学会调试、监控它;
  4. 让你了解 ReAct+Harness 在实际行业中的应用场景,以及未来的发展趋势。

本文的范围是:

  • 聚焦于 Harness LLM Ops 平台中的 Agent Core 模块(因为 Harness 是个大平台,还包含 CI/CD、Feature Flags 等,我们只讲和 ReAct 实现相关的部分);
  • 主要使用 Python 作为示例语言(因为 Harness 的 Python SDK 最成熟,覆盖的场景最多);
  • 工具调用主要使用 公开的免费 API(比如 OpenWeatherMap、Google Maps Geocoding 模拟版、大众点评点评模拟版),方便你直接复制运行;
  • 不涉及 Harness 的多Agent编排(比如 Multi-Agent Task Orchestration,这个是高级功能,我们放在未来发展趋势里讲)。

预期读者

本文的预期读者是:

  1. 对大模型应用开发感兴趣的初级/中级程序员:你不需要懂复杂的深度学习算法,只要会写 Python 代码,用过 OpenAI/Claude 等大模型 API 即可;
  2. 想把 ReAct 模式落地成生产级应用的全栈工程师/架构师:你需要了解企业级大模型应用的核心痛点(安全、可观测性、成本),以及 Harness 是怎么解决这些问题的;
  3. 想了解 ReAct 模式本质原理的AI爱好者/研究者:你可以跳过实战部分,重点看核心概念与联系、核心算法原理与源码解读部分;
  4. 正在选型大模型应用开发框架的技术负责人:你可以对比 Harness 和 LangChain 的实现细节,看看哪个更适合你的团队。

文档结构概述

为了让你像玩“地图探险”游戏一样,一步一步跟着我们学习,本文的结构设计如下:

  1. 背景介绍:这是“游戏的开场动画”,告诉你为什么需要 ReAct+Harness,以及本文会讲什么、不会讲什么;
  2. 核心概念与联系:这是“游戏的新手教程”,用“地图探险”的类比,彻底讲清楚 ReAct 模式、Harness 四大核心组件(Agent、Tool、State、Executor)的本质,以及它们之间的关系;
  3. 核心算法原理 & 具体操作步骤:这是“游戏的攻略本”,先讲 ReAct 模式的通用算法,再结合 Harness 的核心源码,一步一步拆解它的实现细节;
  4. 数学模型和公式 & 详细讲解 & 举例说明:这是“游戏的数值设计手册”,用数学公式(Markov 决策过程、提示工程的信息增益)来量化 ReAct 模式的工作原理,让你知其然更知其所以然;
  5. 项目实战:生产级“餐厅预订+路线规划”Agent:这是“游戏的实战关卡”,从环境搭建、功能设计、架构设计、核心实现,到调试、监控,一步一步教你从零搭建一个可用的 ReAct Agent;
  6. 实际应用场景:这是“游戏的开放世界地图”,告诉你 ReAct+Harness 在医疗、金融、教育、电商等行业的实际应用;
  7. 工具和资源推荐:这是“游戏的装备商店”,给你推荐学习 ReAct+Harness 最好的工具、书籍、论文、视频;
  8. 未来发展趋势与挑战:这是“游戏的续集预告”,告诉你 ReAct+Harness 未来会怎么发展,以及还有哪些挑战需要解决;
  9. 总结:学到了什么?:这是“游戏的通关奖励”,用通俗易懂的语言再次强调核心概念和它们之间的关系;
  10. 思考题:动动小脑筋:这是“游戏的隐藏关卡”,给你出一些思考题,鼓励你进一步思考和应用所学知识;
  11. 附录:常见问题与解答:这是“游戏的客服中心”,解答你在学习过程中可能遇到的问题;
  12. 扩展阅读 & 参考资料:这是“游戏的制作人员名单”,列出本文参考的所有论文、书籍、文档、视频。

术语表

为了避免你在阅读过程中遇到“看不懂的黑话”,我们先列一个核心术语表,用“地图探险”的类比来解释:

核心术语定义
核心术语 地图探险类比 专业定义(简化版)
ReAct 模式 探险家的“思考→行动→观察→修正→再思考”的循环流程 一种结合大模型**推理(Reasoning)行动(Acting)**的协同模式,通过“思考→调用工具→观察结果→修正思考→再调用工具…”的循环,解决复杂的、实时的、专业领域的问题
Harness Agent Core 地图探险的“指挥中心” Harness LLM Ops 平台中的核心模块,负责管理 Agent 的思考状态、调度工具调用、协调各个组件的工作
Agent 地图探险的“专业向导” 一个由大模型驱动的、能够自主推理、调用工具、解决问题的程序单元
Tool 地图探险的“工具包”(比如地图、指南针、手机、手电筒) 一个能够执行特定任务的程序/API/数据库,比如天气查询API、路线规划API、数据库查询接口
State 地图探险的“探险日志”(记录当前位置、已走路线、已发现的信息、剩余的任务) Agent 在解决问题过程中积累的所有信息,包括思考历史、工具调用历史、观察结果、用户输入、任务目标等
Executor 地图探险的“行动执行者”(帮向导拿工具、查地图、订酒店) Harness 中负责执行 Agent 决策的组件,包括工具调用的安全检查、超时控制、错误重试、结果格式化等
Prompt Engineering 地图探险的“向导培训手册”(告诉向导怎么思考、怎么用工具、怎么写探险日志) 设计和优化大模型输入提示词的过程,目的是让大模型更准确、更高效地完成任务
LLM Ops 地图探险的“向导管理系统”(负责培训向导、监控向导的工作状态、优化向导的路线) 一种结合大模型开发、部署、监控、调试、优化的工程实践,目的是让大模型应用从“原型”快速变成“生产级产品”
相关概念解释
相关概念 地图探险类比 专业定义(简化版)
Reasoning-Only 模式 只会背地图册的探险家,一到陌生城市就抓瞎 传统的大模型使用模式,只让大模型进行推理,不调用任何工具,所有信息都来自大模型的预训练知识库
Acting-Only 模式 只会按按钮的机器人,没有思考能力,别人让它做什么它就做什么 一种大模型使用模式,只让大模型调用工具,不进行推理,工具调用的决策由人工编写的规则决定
Chain-of-Thought (CoT) 探险家的“自言自语”(告诉自己为什么选这条路、为什么用这个工具) 一种提示工程技术,让大模型在解决问题时,先把思考过程一步一步写出来,再给出答案,目的是提高大模型的推理准确性
Self-Consistency 让多个探险家同时探险同一条路线,然后选大多数探险家选的那条路 一种基于 CoT 的提示工程技术,让大模型多次生成不同的思考过程和答案,然后通过投票选最优解,目的是提高大模型的答案可靠性
Toolformer 会自己学会用工具的探险家(不需要别人教它怎么用指南针、怎么查地图) 一种让大模型自动学习如何调用工具的技术,通过在预训练数据中加入工具调用的示例,让大模型在预训练阶段就掌握工具调用的能力
缩略词列表
缩略词 全称 中文翻译
LLM Large Language Model 大语言模型
ReAct Reasoning + Acting 推理与行动协同
CoT Chain-of-Thought 思维链
API Application Programming Interface 应用程序编程接口
SDK Software Development Kit 软件开发工具包
CI/CD Continuous Integration/Continuous Deployment 持续集成/持续部署
MDP Markov Decision Process 马尔可夫决策过程
NLP Natural Language Processing 自然语言处理

核心概念与联系:用“地图探险”类比彻底搞懂 ReAct+Harness

故事引入:探险家小明的两次城市之旅

为了让你更直观地理解 ReAct 模式的优势,我们先来看一个真实的故事(改编自 OpenAI 的 ReAct 论文实验):

假设你是一个住在北京的小学生,你的好朋友小红要来上海玩,你想帮她:

  1. 订一个明天晚上7点、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅的上海本帮菜馆;
  2. 给她规划一条从虹桥火车站到这个菜馆的地铁+步行路线;
  3. 查一下明天上海的天气,提醒她带什么衣服。

你有两个“探险家助手”可以选:

  • 助手A(只会背地图册的Reasoning-Only探险家):他背过2023年之前的所有上海地图册、上海菜馆点评、上海天气历史数据,但他没有手机,不能查实时数据,也不能订座;
  • 助手B(会看地图、会用手机、会写探险日志的ReAct探险家):他也背过一些基本的上海地理知识,但他有一个装满工具的背包(手机里有大众点评模拟版、高德地图模拟版、OpenWeatherMap API),还有一个探险日志本,他会先思考“我需要做什么”,再决定用什么工具,然后观察工具返回的结果,再修正思考,直到完成任务。

我们来看看两个助手的表现:

助手A的表现(Reasoning-Only模式)

你:“帮我订一个明天晚上7点、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅的上海本帮菜馆,然后规划从虹桥火车站到这里的路线,再查明天的天气。”

助手A(背了一堆地图册之后):“上海本帮菜馆有很多,比如南翔馒头店、小南国、老正兴… 离陆家嘴地铁站步行5分钟的有… 人均80以内的可能有… 明天上海的天气可能和今天差不多… 抱歉我没有实时数据,订不了座,也查不了实时天气和实时路线。”

你:“…(无语)”

助手B的表现(ReAct模式)

你:“帮我订一个明天晚上7点、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅的上海本帮菜馆,然后规划从虹桥火车站到这里的路线,再查明天的天气。”

助手B(打开探险日志本,写下任务目标,然后开始自言自语):

思考1:我需要完成三个任务:1. 找符合条件的本帮菜馆并订座;2. 规划路线;3. 查天气。首先应该先找菜馆,因为路线和天气都是围绕菜馆的。找菜馆需要知道四个条件:明天晚上7点有空位、人均80以内、离陆家嘴地铁站步行5分钟、有儿童座椅。我没有实时数据,应该用大众点评模拟版API来查。

助手B(拿出手机,打开大众点评模拟版API,输入查询条件,然后等待结果):

行动1:调用大众点评模拟版API,参数:city=上海,cuisine=本帮菜,price_max=80,near_station=陆家嘴,walk_time_max=5,has_child_seat=true,available_time=2025-10-15T19:00:00+08:00,party_size=2(假设小红和她妈妈一起去)。

助手B(收到API返回的结果,然后写在探险日志本上):

观察1:大众点评模拟版API返回了1个符合条件的菜馆:“老上海弄堂菜(陆家嘴店)”,地址:浦东新区陆家嘴环路1000号恒生银行大厦B1层,人均75元,离陆家嘴地铁站6号口步行3分钟,有儿童座椅,明天晚上7点有2人空位,订座电话:021-12345678。

助手B(继续自言自语):

思考2:太好了,找到了符合条件的菜馆!接下来需要订座。订座应该用商家的API,但大众点评模拟版API没有订座功能?哦不对,我可以用模拟的订座工具(因为是实战项目,我们会自己写一个模拟订座工具)。

助手B(拿出手机,打开模拟订座工具,输入参数,然后等待结果):

行动2:调用模拟订座工具,参数:restaurant_name=老上海弄堂菜陆家嘴店,address=浦东新区陆家嘴环路1000号恒生银行大厦B1层,time=2025-10-15T19:00:00+08:00,party_size=2,contact_name=小红,contact_phone=13800138000。

助手B(收到工具返回的结果,然后写在探险日志本上):

观察2:模拟订座工具返回:订座成功!订座编号:SH20251015001,确认短信已发送到13800138000。

助手B(继续自言自语):

思考3:订座成功!接下来需要规划从虹桥火车站到这个菜馆的地铁+步行路线。规划路线应该用高德地图模拟版API。

助手B(拿出手机,打开高德地图模拟版API,输入参数,然后等待结果):

行动3:调用高德地图模拟版API,参数:origin=虹桥火车站,destination=老上海弄堂菜陆家嘴店,transport_mode=subway_walk。

助手B(收到API返回的结果,然后写在探险日志本上):

观察3:高德地图模拟版API返回:路线1:虹桥火车站坐地铁2号线(徐泾东→浦东国际机场方向)到陆家嘴站下车,6号口出,步行3分钟到达,总耗时约45分钟,总票价约5元;路线2:虹桥火车站坐地铁10号线(虹桥火车站→基隆路方向)到南京东路站下车,换乘地铁2号线(徐泾东→浦东国际机场方向)到陆家嘴站下车,6号口出,步行3分钟到达,总耗时约50分钟,总票价约5元。推荐路线1。

助手B(继续自言自语):

思考4:路线规划成功!接下来需要查明天上海的天气。查天气应该用OpenWeatherMap API。

助手B(拿出手机,打开OpenWeatherMap API,输入参数,然后等待结果):

行动4:调用OpenWeatherMap API,参数:city=上海,date=2025-10-15,units=metric。

助手B(收到API返回的结果,然后写在探险日志本上):

观察4:OpenWeatherMap API返回:明天上海的天气是多云转小雨,气温18℃-24℃,东北风3-4级,相对湿度60%-80%。

助手B(继续自言自语):

思考5:所有任务都完成了!现在需要整理一下结果,给用户一个清晰的回复。

助手B(合上探险日志本,然后给你一个清晰的回复):
“小红妈妈您好!我已经帮您完成了所有任务:

  1. 订座成功:订了老上海弄堂菜(陆家嘴店)明天晚上7点的2人空位,人均75元,离陆家嘴地铁站6号口步行3分钟,有儿童座椅,订座编号:SH20251015001,确认短信已发送到13800138000;
  2. 路线规划成功:推荐从虹桥火车站坐地铁2号线(徐泾东→浦东国际机场方向)到陆家嘴站下车,6号口出,步行3分钟到达,总耗时约45分钟,总票价约5元;
  3. 明天天气提醒:明天上海多云转小雨,气温18℃-24℃,东北风3-4级,建议带一件薄外套和一把雨伞。

祝您和小红玩得开心!😊”

你:“哇!太棒了!这就是我想要的!”


看完这个故事,你应该能直观地感受到 ReAct 模式的优势:它让大模型从「只会背知识的书呆子」变成「会解决实际问题的专业人士」。接下来,我们就用这个“地图探险”的类比,一步一步拆解 ReAct 模式和 Harness 四大核心组件的本质,以及它们之间的关系。


核心概念解释(像给小学生讲故事一样)

核心概念一:ReAct 模式——探险家的“思考→行动→观察→修正→再思考”循环

我们刚才已经通过故事看到了 ReAct 模式的工作流程,现在我们用更清晰的语言(还是用地图探险的类比)来定义它:

ReAct 模式的本质:一个由大模型驱动的「状态机」(State Machine),它会在「思考状态」「行动状态」「观察状态」「修正状态」「完成状态」之间不断切换,直到完成任务。

我们把这个循环流程拆成5个小步骤,每个步骤都用地图探险的类比来解释:

  1. 思考状态(Reasoning State)

    • 地图探险类比:探险家停下来,拿出探险日志本,回顾之前的探险记录(已走路线、已发现的信息),然后思考“我现在在哪里?我需要做什么?下一步应该用什么工具?”,最后把思考过程写在探险日志本上。
    • 专业定义:大模型接收当前的状态信息(包括用户输入、任务目标、思考历史、工具调用历史、观察结果),然后生成下一步的思考过程(Reasoning)和行动决策(Action)。
    • 关键要求:思考过程必须清晰、具体、可追溯(用 Chain-of-Thought 提示工程技术),行动决策必须明确、可执行(比如“调用大众点评模拟版API,参数是xxx”,而不是“查一下大众点评”)。
  2. 行动状态(Acting State)

    • 地图探险类比:探险家拿出对应的工具(比如大众点评模拟版手机APP),按照之前的行动决策操作工具(比如输入查询条件),然后等待工具返回结果。
    • 专业定义:Agent 按照大模型生成的行动决策,调用对应的工具(Tool),并传入工具需要的参数。
    • 关键要求:行动状态必须安全、高效、可靠(比如工具调用前要做权限检查、参数验证,调用时要做超时控制、错误重试,调用后要做结果格式化)——这些都是 Harness Executor 组件要解决的问题。
  3. 观察状态(Observing State)

    • 地图探险类比:探险家收到工具返回的结果(比如大众点评模拟版APP返回的菜馆列表),然后把结果整理成清晰、易懂的格式,写在探险日志本上。
    • 专业定义:Agent 接收工具返回的原始结果(Observation Raw),然后把它整理成大模型能看懂的格式(Observation Formatted),并更新到状态信息中。
    • 关键要求:观察结果必须简洁、准确、有用——如果工具返回的结果太长(比如大众点评返回了100个菜馆的详细信息),Agent 需要先对结果进行“摘要”(Summarization),只保留大模型需要的信息;如果工具返回的结果太专业(比如医疗API返回了一堆医学术语),Agent 需要先对结果进行“翻译”(Translation),转换成大模型能看懂的语言。
  4. 修正状态(Refining State)

    • 地图探险类比:探险家回顾之前的思考过程、行动决策、观察结果,看看有没有错误(比如之前查的人均价格错了、之前选的路线绕远了),如果有错误,就修正思考过程,然后重新进入思考状态。
    • 专业定义:大模型接收更新后的状态信息,然后判断之前的思考过程和行动决策是否正确,观察结果是否符合预期,如果不符合,就修正思考过程,然后重新生成行动决策;如果符合,就继续进入思考状态,完成下一个任务。
    • 关键要求:修正状态必须及时、准确、灵活——如果大模型“走火入魔”重复问同一个问题(比如重复调用大众点评模拟版API查同一个菜馆的人均价格),Agent 需要及时干预,强制它进入修正状态,或者直接终止任务(这也是 Harness 可观测性组件要解决的问题)。
  5. 完成状态(Finished State)

    • 地图探险类比:探险家完成了所有任务,然后整理探险日志本,给用户一个清晰、易懂的总结。
    • 专业定义:大模型判断所有任务都已完成,然后生成最终的答案(Final Answer),并终止任务。
    • 关键要求:最终答案必须清晰、具体、有用——要直接回答用户的问题,不要有多余的思考过程(思考过程应该只保存在状态信息中,用于调试和监控)。

为了让你更直观地理解 ReAct 模式的循环流程,我们画一个简单的文本示意图

[用户输入/任务目标] → 进入思考状态
    ↓
[大模型生成思考过程和行动决策] → 进入行动状态
    ↓
[Agent 调用工具并传入参数] → 工具执行任务
    ↓
[工具返回原始结果] → 进入观察状态
    ↓
[Agent 整理结果并更新状态] → 进入修正状态
    ↓
[大模型判断是否需要修正] → 如果需要,修正后重新进入思考状态
    ↓
[大模型判断是否完成任务] → 如果没完成,继续进入思考状态
    ↓
[大模型生成最终答案] → 终止任务

接下来,我们再画一个Mermaid 流程图(流程节点中没有括号、逗号等特殊字符),让你更清晰地看到 ReAct 模式的状态切换:

用户输入任务目标

进入思考状态

大模型生成思考过程

大模型生成行动决策

是否为完成指令

生成最终答案

进入行动状态

验证工具调用权限

验证工具调用参数

调用工具

工具调用是否成功

记录错误信息

进入修正状态

进入观察状态

整理工具返回结果

更新状态信息

终止任务


核心概念二:Harness Agent Core——地图探险的“指挥中心”

刚才我们讲了 ReAct 模式的本质是一个「状态机」,但要把这个状态机落地成生产级应用,你需要一个「指挥中心」来管理它的所有组件:思考状态的管理、行动状态的调度、观察状态的整理、修正状态的干预、完成状态的判断——这就是 Harness Agent Core 的用武之地。

我们还是用地图探险的类比来定义 Harness Agent Core:

Harness Agent Core 的本质:一个由「Agent Manager」「State Manager」「Tool Manager」「Executor Manager」「Observability Manager」五大子模块组成的「中央指挥系统」,它负责协调所有组件的工作,让 ReAct 模式的状态机安全、高效、可靠地运行。

我们把这五大子模块拆成5个小部分,每个部分都用地图探险的类比来解释:

  1. Agent Manager(探险家管理器)

    • 地图探险类比:负责招聘、培训、管理所有的探险家(Agent),比如给探险家分配任务、给探险家提供培训手册(提示词模板)、给探险家发放背包(工具包)、给探险家配备探险日志本(状态存储)。
    • 专业定义:负责创建、配置、管理所有的 Agent 实例,包括 Agent 的类型(比如 ReAct Agent、CoT Agent、Acting-Only Agent)、Agent 使用的大模型(比如 OpenAI GPT-4o、Claude 3.5 Sonnet、Google Gemini 1.5 Pro)、Agent 使用的提示词模板、Agent 可以使用的工具列表、Agent 的状态存储方式(比如本地内存、Redis、PostgreSQL)。
    • 核心功能:
      • Agent 实例的创建和销毁;
      • Agent 配置的加载和更新;
      • Agent 任务的分配和调度;
      • Agent 提示词的动态生成和优化。
  2. State Manager(探险日志管理器)

    • 地图探险类比:负责管理所有探险家的探险日志本(State),比如给探险家发放新的日志本、保存探险家的日志记录、检索探险家的历史日志、备份探险家的日志记录。
    • 专业定义:负责管理 Agent 的所有状态信息,包括用户输入、任务目标、思考历史、工具调用历史、观察结果、临时变量、会话上下文等,支持多种状态存储方式(比如本地内存、Redis、PostgreSQL、MongoDB),支持状态的序列化和反序列化,支持状态的版本控制和历史回溯。
    • 核心功能:
      • 状态的创建和初始化;
      • 状态的读取和更新;
      • 状态的序列化和反序列化;
      • 状态的版本控制和历史回溯;
      • 状态的备份和恢复。
  3. Tool Manager(工具包管理器)

    • 地图探险类比:负责管理所有探险家的工具包(Tool),比如给探险家的工具包添加新工具、移除旧工具、检查工具是否可用、给工具编写使用说明书(工具描述和参数说明)。
    • 专业定义:负责管理 Agent 可以使用的所有工具,包括工具的注册和注销、工具的元数据管理(比如工具名称、工具描述、工具参数说明、工具返回值说明、工具权限要求)、工具的可用性检查、工具的分类和标签管理。
    • 核心功能:
      • 工具的注册和注销;
      • 工具的元数据管理;
      • 工具的可用性检查;
      • 工具的分类和标签管理;
      • 工具的版本控制。
  4. Executor Manager(行动执行者管理器)

    • 地图探险类比:负责管理所有探险家的行动执行者(Executor),比如给探险家配备专门的行动执行者、监督行动执行者的工作、处理行动执行者遇到的问题(比如工具坏了、手机没信号了)。
    • 专业定义:负责管理 Agent 的工具调用执行,包括工具调用的权限检查、参数验证、超时控制、错误重试、结果格式化、错误处理等,支持多种执行模式(比如同步执行、异步执行、批量执行),支持多种错误重试策略(比如固定间隔重试、指数退避重试、最大重试次数限制)。
    • 核心功能:
      • 工具调用的权限检查;
      • 工具调用的参数验证;
      • 工具调用的超时控制;
      • 工具调用的错误重试;
      • 工具调用的结果格式化;
      • 工具调用的错误处理;
      • 工具调用的日志记录。
  5. Observability Manager(监控调试管理器)

    • 地图探险类比:负责监控所有探险家的工作状态,比如查看探险家的实时探险日志、查看探险家的工具调用次数、查看探险家的任务完成率、查看探险家的失败原因,当探险家遇到问题时,及时干预和调试。
    • 专业定义:负责管理 Agent 的可观测性和调试,包括 Agent 的实时状态监控、Agent 的性能指标收集(比如响应时间、工具调用次数、失败率、成本)、Agent 的思考过程可视化、Agent 的错误告警、Agent 的调试会话管理等,支持多种监控数据存储方式(比如 Prometheus、Grafana、Elasticsearch),支持多种可视化方式(比如 Harness LLM Ops 控制台、自定义 Dashboard)。
    • 核心功能:
      • Agent 的实时状态监控;
      • Agent 的性能指标收集和分析;
      • Agent 的思考过程可视化;
      • Agent 的错误告警和通知;
      • Agent 的调试会话管理;
      • Agent 的成本监控和优化。

为了让你更直观地理解 Harness Agent Core 的架构,我们画一个简单的文本示意图

┌─────────────────────────────────────────────────────────────────────────────┐
│                           Harness LLM Ops 平台                                │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │                        Harness Agent Core(指挥中心)                    │ │
│  ├───────────────────────────────────────────────────────────────────────┤ │
│  │  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌─────────┐ │ │
│  │  │ Agent Manager│  │ State Manager│  │ Tool Manager │  │Executor │ │ │
│  │  │(探险家管理器)│  │(探险日志管理器)│  │(工具包管理器)│  │(执行者)│ │ │
│  │  └──────────────┘  └──────────────┘  └──────────────┘  └─────────┘ │ │
│  │  ┌───────────────────────────────────────────────────────────────────┐ │ │
│  │  │              Observability Manager(监控调试管理器)                 │ │ │
│  │  └───────────────────────────────────────────────────────────────────┘ │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐ │
│  │    Agent 1   │  │    Agent 2   │  │    Agent 3   │  │    Agent N   │ │
│  │(ReAct探险家1)│  │(CoT探险家2) │  │(Acting探险家3)│  │(自定义探险家N)│ │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐ │
│  │   大模型API   │  │   工具API    │  │  状态存储    │  │  监控存储    │ │
│  │(GPT4o等)   │  │(大众点评等) │  │(Redis等)   │  │(Prometheus)│ │
│  └──────────────┘  └──────────────┘  └──────────────┘  └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

接下来,我们再画一个Mermaid 架构图(架构节点中没有括号、逗号等特殊字符),让你更清晰地看到 Harness Agent Core 的各个组件之间的关系:

ExternalServices

HarnessLLMOpsPlatform

HarnessAgentCore

创建配置管理

创建配置管理

创建配置管理

读写更新状态

读写更新状态

读写更新状态

持久化状态

提供工具列表

提供工具列表

提供工具列表

注册检查工具

执行工具调用

执行工具调用

执行工具调用

调用工具

监控调试

监控调试

监控调试

持久化监控数据

调用大模型

调用大模型

调用大模型

AgentManager

StateManager

ToolManager

ExecutorManager

ObservabilityManager

Agent1

Agent2

AgentN

LLMAPIs

ToolAPIs

StateStorage

MonitoringStorage


核心概念三:Agent——地图探险的“专业向导”

讲完了 Harness Agent Core(指挥中心),接下来我们讲 Agent(专业向导)——这是你直接交互的组件,也是 ReAct 模式的核心载体。

我们还是用地图探险的类比来定义 Agent:

Agent 的本质:一个由「大模型大脑」「提示词培训手册」「工具包」「探险日志本」「行动执行指令」五大核心要素组成的「智能体」,它能够自主推理、调用工具、解决问题。

我们把这五大核心要素拆成5个小部分,每个部分都用地图探险的类比来解释:

  1. 大模型大脑(LLM Brain)

    • 地图探险类比:探险家的大脑,负责思考、决策、学习。
    • 专业定义:Agent 的核心推理引擎,通常是一个大语言模型(比如 OpenAI GPT-4o、Claude 3.5 Sonnet、Google Gemini 1.5 Pro),也可以是一个微调后的专用模型(比如专门用于医疗诊断的微调模型)。
    • 关键要求:大模型大脑必须具有较强的推理能力、工具调用能力、自然语言理解能力——通常来说,模型越大(比如 GPT-4o、Claude 3.5 Sonnet),这些能力越强,但成本也越高;模型越小(比如 GPT-3.5 Turbo、Claude 3 Haiku),成本越低,但能力也越弱,可能需要更多的提示工程优化。
  2. 提示词培训手册(Prompt Template)

    • 地图探险类比:探险家的培训手册,告诉探险家怎么思考、怎么用工具、怎么写探险日志、怎么判断任务是否完成。
    • 专业定义:Agent 的核心提示工程组件,是一个预定义的文本模板,里面包含了 Agent 的角色设定、任务目标、工具列表(包括工具名称、工具描述、工具参数说明、工具返回值说明)、思考格式要求、行动格式要求、观察格式要求、完成格式要求、示例对话(Few-Shot Examples)等内容。
    • 关键要求:提示词培训手册必须清晰、具体、可操作——示例对话(Few-Shot Examples)是最重要的部分,它能让大模型更快地学会如何按照要求思考、如何调用工具、如何写探险日志。
  3. 工具包(Toolkit)

    • 地图探险类比:探险家的背包,里面装着探险家解决问题需要的所有工具(比如地图、指南针、手机、手电筒)。
    • 专业定义:Agent 可以使用的所有工具的集合,每个工具都是一个独立的程序/API/数据库,能够执行特定的任务(比如天气查询、路线规划、数据库查询、文件读写)。
    • 关键要求:工具包必须精简、有用、可靠——不要给 Agent 太多没用的工具,否则大模型会“选择困难症”,不知道用哪个工具;每个工具都必须有清晰的描述和参数说明,否则大模型会不知道怎么用;每个工具都必须经过充分的测试,否则会经常出错,影响 Agent 的任务完成率。
  4. 探险日志本(State)

    • 地图探险类比:探险家的探险日志本,记录当前位置、已走路线、已发现的信息、剩余的任务、思考历史、工具调用历史、观察结果等内容。
    • 专业定义:Agent 在解决问题过程中积累的所有信息的集合,包括用户输入、任务目标、思考历史、工具调用历史、观察结果、临时变量、会话上下文等。
    • 关键要求:探险日志本必须完整、准确、可追溯——所有的思考过程、工具调用历史、观察结果都必须记录下来,用于调试和监控;状态信息必须及时更新,否则大模型会基于过时的信息做出错误的决策。
  5. 行动执行指令(Action Instructions)

    • 地图探险类比:探险家的行动执行手册,告诉探险家怎么操作工具、怎么处理工具返回的错误、怎么整理工具返回的结果。
    • 专业定义:Agent 的工具调用执行规则,包括工具调用的权限检查规则、参数验证规则、超时控制规则、错误重试规则、结果格式化规则、错误处理规则等。
    • 关键要求:行动执行指令必须安全、高效、可靠——工具调用前必须做权限检查,防止 Agent 调用敏感的工具(比如删除数据库的工具);工具调用时必须做超时控制和错误重试,防止 Agent 因为工具超时或偶尔出错而终止任务;工具调用后必须做结果格式化,把原始结果转换成大模型能看懂的格式。

为了让你更直观地理解 Agent 的核心要素,我们画一个简单的文本示意图

┌─────────────────────────────────────────────────────────────────────────────┐
│                                   Agent(专业向导)                            │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │                          大模型大脑(LLM Brain)                          │ │
│  │                    (GPT4o Claude35Sonnet Gemini15Pro等)               │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌──────────────────┐  ┌──────────────────┐  ┌──────────────────┐         │
│  │ 提示词培训手册   │  │    工具包        │  │  探险日志本      │         │
│  │(Prompt Template)│  │(Toolkit)       │  │(State)         │         │
│  └──────────────────┘  └──────────────────┘  └──────────────────┘         │
├─────────────────────────────────────────────────────────────────────────────┤
│  ┌───────────────────────────────────────────────────────────────────────┐ │
│  │                        行动执行指令(Action Instructions)                │ │
│  └───────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

接下来,我们再画一个Mermaid 交互关系图(交互节点中没有括号、逗号等特殊字符),让你更清晰地看到 Agent 的各个核心要素之间的交互关系:

渲染错误: Mermaid 渲染失败: Parse error on line 15: ...structions -->|整理结果 ----------------------^ Expecting 'SQE', 'DOUBLECIRCLEEND', 'PE', '-)', 'STADIUMEND', 'SUBROUTINEEND', 'PIPE', 'CYLINDEREND', 'DIAMOND_STOP', 'TAGEND', 'TRAPEND', 'INVTRAPEND', 'UNICODE_TEXT', 'TEXT', 'TAGSTART', got '1'
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐