01 · Agent Harness入门:从后端服务到Agent
通过同一任务对比传统后端与Agent,理解模型、工具、ReAct循环和执行框架的职责。
内容同步:2026年10月25日 · 文档版本 10
1. Agent、模型与Harness,分别是什么?
AI Agent通常译为“智能体”。在这套课程里,它是一种围绕目标完成任务的应用:模型根据目标和已有信息选择下一步,程序执行,再根据实际结果继续推进。
比如,你提出“分析昨晚直播的成交额为什么下降”。Agent可以先查成交额,再根据结果补查流量或商品,最后整理分析。用户给出目标,具体步骤可以在执行中调整。
模型提供理解、推理和生成内容的能力。Agent Harness是围绕模型构建的一整套工程能力:决定模型能看到什么、怎样调用工具、遇到异常如何处理,以及如何记录和观察执行过程。
在系统里,Harness连接用户任务、模型和实际业务能力。它组织模型参与工作,让模型提出的操作在程序控制下执行,并把结果交付给用户。
Agent指面向用户完成任务的整体应用;Harness是其中负责组织与管理模型的工程部分。已有订单系统、商品系统仍是业务服务,可以被Agent复用。实际项目中,Harness的能力可能分布在应用代码、框架或平台里。
2. 先认识几个会反复出现的词
| 名词 | 先这样理解 | 在直播分析里是什么 |
|---|---|---|
| Prompt,提示词 | 告诉模型要做什么、遵守什么要求 | 比较哪两场直播,缺少证据时不要下定论 |
| Context,上下文 | 模型这一轮能看到的整体信息 | 任务要求、对话、已查到的数据和可用工具说明 |
| Tool,工具 | 应用提供给模型使用的一项能力 | 查成交额、查流量、生成分析文件 |
| ReAct | 推理与行动交替进行的一种方法 | 判断还缺什么,调用工具,读到反馈后再判断 |
Prompt是Context的一部分;查回来的数据也会进入Context,但它们属于事实资料,不能自动变成应用指令。
Tool让模型能够借助程序获取信息或执行操作;ReAct解释这些操作怎样随着反馈往前推进。后面会用同一个任务把它们串起来。
3. Harness到底管哪些事?
先从四个问题理解它的职责:
“模型能看到什么”,包括挑选任务需要的数据、带上必要的对话、控制输入规模。把整库订单和所有历史日志都交给模型,可能使重点被淹没,还会增加费用。
“模型能做什么”,包括开放哪些工具、检查参数和用户权限。模型提出查询订单,不代表它获得了访问任意店铺的权限。
“任务怎样继续或停止”,包括保存执行进展、处理失败、限制次数和耗时。接口持续故障时,程序需要让任务停止或转交处理,不能任由模型反复尝试。
“怎样看清执行过程”,叫可观测性:通过日志、调用轨迹和指标,知道任务查过什么、慢在哪里、为什么失败。任务完成后,还需要评测,检查结果是否正确、是否满足要求。
这些能力共同影响任务能否可靠完成。即使程序一直正常运行,模型也可能解释错数据,因此执行成功与结论正确需要分别检查。
4. 同一个问题,传统后端和Agent有什么区别?
继续看“昨晚直播的成交额为什么下降”。传统后端可以先比较成交额,再按规则检查观看人数、支付转化和商品构成,输出报表或诊断结果。
传统服务也能有复杂分支:观看人数下降就查流量来源,流量正常再查转化。后续步骤由开发者预先编写。
Agent可以让模型根据问题和已取得的结果,提出下一步查询。用户追问“只看新品”“和上周同一天比”,模型可以相应调整查询条件与步骤,程序负责检查并执行。
这种灵活性也会带来问题:模型可能选错接口、漏查信息,或者反复查询。固定报表用现成接口或工作流就很好;需要根据问题与反馈调整步骤时,才更值得引入Agent。
实际系统也可以混合使用:金额计算、权限检查等由确定的代码完成,需要灵活判断的分析步骤交给模型。
5. Tool怎样把已有接口接进来?
模型不知道店铺昨晚的真实数据,也不会凭空拥有订单系统的访问权限。应用需要向它提供一个“对比两场直播成交额”的工具,并说明用途、输入和返回内容。
| 工具说明 | 示例 |
|---|---|
| 能做什么 | 对比两场直播的已支付订单金额 |
| 需要什么 | 两场直播的标识、比较时间范围 |
| 返回什么 | 两场金额、差额、统计口径和数据来源 |
Tool背后可以是本地函数,也可以调用已有API;一个Tool还可以组合多个接口,完成筛选、聚合和计算。
工具参数通常用Schema描述,也就是字段、类型和约束的结构约定。参数怎么设计、返回多少数据,后面的工具调用篇会展开。
模型生成工具名和参数,程序校验后执行,再把实际结果交回模型。 这个过程叫Tool Calling,即工具调用。
比如订单接口返回“上一场10万元,昨晚8万元”。程序把这些结果放入后续模型请求,模型才有依据继续分析。只在服务器日志里打印“查询成功”,模型看不到实际金额。
这里展示的是只读查询。发通知、修改订单等会改变外部系统的操作,还需要单独控制执行权限和确认方式。
6. 步骤怎么安排?把ReAct与其他方式放在一起看
Tool解决“有哪些能力可以用”,执行方式解决“谁来安排步骤,什么时候调整”。Harness负责把这种安排落实为实际调用,并控制权限、次数和停止条件。
6.1 同一个直播分析任务,三种安排方式
| 方式 | 步骤怎样确定 | 直播分析怎么做 | 适合什么,注意什么 |
|---|---|---|---|
| 预设工作流(Workflow) | 开发者提前定义步骤、分支和规则 | 按既定流程查成交额、流量、转化,再生成报告 | 范围清楚、口径稳定;新需求可能要改流程 |
| ReAct,推理与行动交替 | 模型根据目标与最新反馈,继续决定下一步 | 先查成交额,发现下降后决定补查流量;读到结果再决定查什么 | 需要边查边判断;可能多查、走偏或反复尝试 |
| 先规划再执行(Plan-and-Execute) | 模型先拆出任务计划,执行后按需要修订 | 先列出成交额、流量、转化、商品几个分析项,再组织查询与汇总 | 子任务较多、希望先有全局安排;错误计划也可能漏项,需要检查与重规划 |
预设工作流也可以调用模型、包含分支和循环。区别在于,哪些步骤与分支由开发者预先规定,哪些选择留给模型在运行中决定。
6.2 ReAct的关键,是让实际反馈影响下一次判断
ReAct由Reasoning(推理)与Acting(行动)组合而来。模型判断要做什么,程序执行获准操作,取得Observation(观察结果),再把反馈交给模型继续判断。
仍用虚构数据看一次过程:两场直播时长相同,成交额均按已支付订单金额计算,暂不扣退款。
| 环节 | 发生什么 |
|---|---|
| 模型判断 | 先确认成交额是否真的下降、下降多少,提出查询请求 |
| 程序执行与反馈 | 检查后查询,返回上一场10万元、昨晚8万元,下降20% |
| 模型再次判断 | 已确认金额变化,接着提出查询观看人数,核查流量方向 |
| 程序执行与反馈 | 返回上一场1万人、昨晚8000人,同样下降20% |
| 模型继续判断 | 流量变化值得核查,但还要结合转化、客单价等证据,不能直接确定原因 |
后一次操作利用了前一次的实际结果。 如果工具超时,模型收到的应是查询失败,而不是“观看人数没变化”。模型可以调整查询、说明资料不足,程序也可以因超时或超限结束任务。
ReAct也可以有阶段计划;先规划再执行的某个子任务,也可以用ReAct完成。前者强调判断、行动和反馈的交替,后者把整体规划与具体执行分开,两者可以组合。先有计划也不保证更快、更省钱或更正确,要看实际任务。
6.3 Reflection:完成一版以后,再检查和改进
Reflection通常译为反思。这里先理解为:检查已有结果,给出反馈,再修改。例如报告说“流量下降导致成交额下降”,检查环节发现证据不足,要求补查转化数据,或把结论改成待验证方向。
它关注结果怎样改进,可以叠加在工作流、ReAct或规划执行之后。模型自己检查也可能漏错,因此仍要结合真实数据、程序校验或人工审核,并限制修改次数。
对这个直播分析Agent,可以把必查指标写成固定流程,让模型用ReAct补查异常,最后检查报告中的来源与结论。无须为了使用某个模式,把所有步骤都交给模型。
7. 后面的课程,都在补哪部分能力?
回到Harness的系统位置,后续课程逐步展开输入、工具、状态、执行环境和验证。它们共同组成一个系统,有些能力贯穿整个任务。
| 模块 | 先知道它是什么、负责什么 |
|---|---|
| Prompt与Context | 提示词表达要求,上下文工程选择、组织和压缩本轮需要的信息 |
| Tool与Data for AI | 工具开放能力;Data for AI处理供模型使用的数据,关注口径、权限与规模 |
| MCP与Skill | MCP是连接外部工具和资源的协议;Skill是可复用的任务说明及配套资源 |
| Session与Run | Session表示会话归属;Run表示一次任务执行,分别管理对话和任务状态 |
| 长任务稳定性 | 保存与恢复进展,处理暂停、取消、超时和重试;Workspace是任务文件、依赖和产物所在的工作空间,端云协同处理不同设备与云端之间的执行衔接 |
| RAG与记忆 | RAG是在生成前检索相关资料;记忆保存可供后续任务使用的信息,两者用途有交集但不相同 |
| 沙箱与多Agent | 沙箱限制代码或工具的执行环境;多Agent拆分协作职责,处理任务依赖与结果汇总 |
| 模型网关 | 统一模型接入,管理路由、限流和调用费用 |
| 可观测性与评测 | 前者记录实际过程,后者判断结果是否达标、改动是否有效 |
这些是能力划分,不要求每个模块都部署成独立服务。先让一个小任务跑通,再根据真实问题补能力。
8. 有后端经验,可以从哪里接上?
已有的接口设计、数据库查询、权限、超时和故障处理经验,都能继续使用。接入模型以后,还要考虑模型反复做决定带来的影响。
| 熟悉的后端机制 | Agent里多考虑什么 |
|---|---|
| 参数与权限校验 | 模型生成的参数也要检查,工具说明不能代替授权 |
| 超时、有限重试、熔断 | 单次接口调用受控,整个任务也要限制重复尝试和总耗时 |
| 返回大小控制 | 必要摘要和来源交给模型,海量明细按需查询 |
| 幂等与结果对账 | 防止一次业务操作因重试而重复生效;超时后先确认是否已经执行 |
这一篇先能说清三件事就够了:Agent怎样完成任务,Harness负责哪些工程工作,以及Tool、ReAct和后续模块在其中处于什么位置。
下一篇从Prompt开始,讲任务要求怎样进入模型。






