当前位置: 首页 > news >正文

一次搞懂Harness、Scaffold和那些让人头疼的AI Agent术语

AI Agent领域每天都在冒新词,Harness、Scaffold、Policy、Rollout,一个比一个玄乎,听的人是一头雾水。

Harness和Scaffold到底什么区别,为什么每个人解释都不一样?

这篇就帮你把这些容易混淆的概念一次性理清楚。

全文围绕Model、Scaffolding、Harness、Agent、Context Engineering、Policy、Tool Use、Skills、Sub-agents,以及训练侧的RL Environment、Trainer、Rollout、Reward,逐个拆解。

Agent = Model + Harness,而Harness和Scaffold的区别,是理解整个Agent架构的关键。

模型、脚手架与缰绳

Model(模型)就是LLM本身,吃进文本,吐出文本。

Claude、Qwen、GPT、Kimi、DeepSeek,都是模型。

模型自身没有跨调用的记忆,也没有循环执行的能力。它可以表达调用工具的意图,但要真正执行,需要一个Harness来驱动。

模型回答一个提示词就停了,把它包上Scaffolding和Harness,它才变成一个Agent。理解这一点很要紧,模型本身是静态的、无状态的,单独拿出来只能一问一答。

Scaffolding(脚手架)是围绕模型的行为定义层。系统提示词、工具描述、模型输出怎么解析、跨步骤记什么内容,都属于脚手架。它决定了模型如何看待世界、如何在其中行动。

脚手架在训练和推理阶段都在起作用。你可以把它理解成给模型配的一套行为规则:告诉它该干什么、有哪些工具可用、输出要遵循什么格式。

换个脚手架,同一个模型的表现可以判若两人。

有趣的是,Claude Code自己的文档写得很直白:"Claude Code serves as the agentic harness around Claude"。

很多产品把脚手架和Harness混在一起统称Harness,即模型之外的所有东西。

脚手架和Harness的区分,在训练流水线里需要单独分析它们时,才显得重要。

也有人把脚手架用得更宽泛,涵盖Harness依赖的任何基础设施:钩子、运行时配置,甚至目录结构。

有些产品比如Claude Code和Codex,跟自家模型绑定很紧。另一些比如Antigravity CLI和Hermes Agent,允许你插任何模型进来。绑定紧的好处是可以深度优化,灵活的好处是用户有选择权,两种路线各有利弊。

Harness是Agent内部的执行层。它调用模型,处理工具调用,决定什么时候停下来。

脚手架是模型工作所依据的内容:指令、工具、格式,Harness是让整个系统跑起来的引擎。

打个比方,脚手架是剧本和道具,Harness是导演和舞台监督,把一切串起来执行。

Harness Engineering是设计好这一层的学问:Agent什么时候该停,错误怎么处理,防护栏怎么设置。

这一层设计得好不好,直接决定Agent跑起来是靠谱还是失控。

Addy Osmani的文章和OpenAI关于用Codex构建产品的分享,都从推理侧讨论了这个问题。 https://www.oreilly.com/radar/agent-harness-engineering/ https://openai.com/index/harness-engineering/

Harness工程的核心挑战在于平衡自主性和可控性,给Agent足够的自由度完成任务,又要防止它跑偏。

评估阶段同样有Eval Harness的概念,区别在于它跑一组固定场景,记录指标,不更新权重。可以把它理解成考试模式:同样的考卷,只打分,不学习。

有些框架用Orchestrator(编排器)指代更上层的控制器,协调多个Agent之间的工作。

Harness驱动单个模型走执行循环,Orchestrator把Agent当作单元来管理,每个Agent跑自己的Harness。

Agent到底是什么

Agent(智能体)这个词来自强化学习。

在强化学习里,Agent就是一个函数:接收观察,返回动作,环境接收动作后返回新的观察,循环往复。

LLM Agent的核心仍然是这个循环。理解了这一点,后面很多概念就顺了。

在LLM的世界里,这个词的含义拓宽了。

Agent是模型加上让它能行动而非仅仅响应的所有东西。它把原始的文本生成,变成可以在循环中行动的系统:接收信息,决定做什么,对结果采取行动。

模型只会回答问题,Agent会持续工作直到任务完成。

拿编程Agent举例。系统提示词、工具描述、模型遵循的输出格式,构成脚手架。

调用模型、处理工具调用、决定何时停止的循环,是Harness。

训练时,Harness还会并行跑很多这样的循环,把结果反馈回来更新模型。

推理时,Harness只跑一条路径,执行完就结束。

下图清晰展示了Agent内部的结构关系。

社区里通常的说法是Agent = Model + Harness。如果你不是模型,你就是Harness。

Harness和Scaffold之间微妙的区分,正是多数混淆的来源。

简单判断:脚手架是信息,模型能看到;Harness是逻辑,模型看不到但驱动它运行。

人们聊Claude Code、Codex、Cursor这些产品时,说的是特定Harness搭在特定模型上,一起设计和优化的结果。

两个产品用同一个底层模型,体验可以完全不同,因为Harness做了不同的选择。

同一个Harness换一个更好的模型,体验也会变。

模型、Harness、产品,是三件不同的事。

搞混这三者,就容易在讨论中对牛弹琴。

上下文、策略与工具

Context Engineering(上下文工程)是设计Agent上下文窗口里放什么的过程:模型每一步看到什么,系统提示词、工具描述、对话历史、检索到的知识。

这不是一次性决定,模型运行过程中,前面的轮次会塑造后面调用里放什么,Harness在整个运行过程中持续管理这些内容。

上下文工程在训练和推理阶段都适用,搞错的代价差别很大。

训练时,模型看到什么决定了学到什么,搞错了得重新训练。

推理时只是文本,改个提示词重新部署就行。所以推理侧可以快速迭代,训练侧得格外谨慎。

记忆是上下文工程的一部分。

Short-term Memory(短期记忆)是单次运行中留在上下文窗口里的内容:对话历史、工具结果、之前的推理。

Long-term Memory(长期记忆)跨会话持久存在,存储在外部,按需检索,相关时注入回上下文。

短期记忆受窗口大小限制,长期记忆理论上可以无限扩展,但检索的精准度是关键挑战。

Policy(策略)是Agent遵循的行为方式。

给定任何情况,策略定义采取每个可能动作的概率。

在LLM系统里,策略的一部分学在模型权重里,行为还取决于周围的脚手架和Harness。

同一个模型配不同的提示词、工具、记忆和执行循环,行为可以大不相同。

同样的底层模型,不同产品的表现差异大,根源就在策略不同。

策略和Agent容易混为一谈。

策略定义行为,Agent是在环境中行动的完整系统。

把一个检查点包上脚手架和Harness部署出去,得到一个Agent,它的行为就是策略。

策略可以调整,Agent可以替换组件,两者各有各的变化维度。

Tool Use(工具使用)是Agent与外界交互的方式:API、代码解释器、数据库、网页搜索、文件系统。

模型以结构化格式表达使用工具的意图,现代推理API把工具调用作为一等对象呈现,Harness直接接收并路由到正确的函数,结果反馈回上下文,循环继续。

工具让Agent从只能说话变成能做事,从纸上谈兵变成动手操作。

Skill(技能)是可复用的、结构化的知识包,支持多步骤任务。

工具是一个动作,运行某条命令;技能是把完成一个目标所需的一切打包,调查某个Bug、提出假设、写修复代码。

技能可以跨Agent移植,按需加载。

工具、技能、子Agent之间的界限在不同框架里有所偏移,大体上是从简单到复杂的光谱:工具最轻,技能居中,子Agent最重。

Sub-agent(子智能体)是被另一个Agent调用来处理特定子任务的Agent。

它有自己的模型和脚手架,独立推理,返回结果。调用方不需要知道它内部怎么工作。

子Agent和工具的区别在于:工具是函数调用,技能是打包的知识,子Agent本身能推理、能用工具、能调更下层的子Agent。

调用方有时被称为Orchestrator。

子Agent的好处是模块化,坏处是通信开销和协调成本,用不用子Agent,取决于任务的复杂度是否值得。

训练侧的那些事

上面的概念在训练和部署时都适用。

接下来这四个概念是训练专用的:Agent跑任务、被打分、模型权重被更新。

所有LLM的RL训练系统都围绕同一条流水线构建。

RL Environment(强化学习环境)是你能与之交互的任何东西:一个有状态的对象,接收动作作为输入,更新内部状态,返回观察。

在LLM场景下,动作通常是工具调用。文件系统是个简单的例子:执行touch foo.txt这个动作更新了状态,观察就是更新后的文件列表。

环境可以是沙盒,也可以是真实系统,不同框架对环境的定义有所差异,但核心机制都是一样的:动作进,观察出。

Trainer(训练器)让Agent变得更好:它跑很多Agent回合,对结果打分,用打分结果更新内部模型的权重。

TRL的GRPOTrainer就是一个具体例子,单个类处理回合生成、奖励评分和权重更新。

训练器是整个RL训练循环的调度中心,把环境、策略、奖励串在一起,形成闭环。

Rollout(展开)是一次完整的Agent运行,从头到尾:Agent看到了什么、做了什么、每一步得到了什么奖励。也叫Trajectory(轨迹)或Trace(追踪),取决于上下文。这是RL算法学习的原始数据,没有Rollout,训练器就没有素材来更新权重。

一次训练通常需要成千上万个Rollout才能收敛。

Reward(奖励)是告诉训练算法模型是否在变好的分数。

可以是Verifiable(可验证)的,测试通过或失败、答案是否匹配;也可以是Learned(学习型)的,基于人类偏好或LLM当裁判。可以是Sparse(稀疏)的,一个回合结束才给一个分;也可以是Dense(密集)的,每一步都有分。

训练器用奖励来更新内部模型的权重。稀疏奖励简单但收敛慢,密集奖励信号丰富但设计成本高,两种选择各有利弊。

Rubric(评分细则)把奖励拆成多个显式维度并赋权重,不是一个总分。

OpenEnv和Verifiers把评分细则实现为可组合的对象,支持WeightedSum(加权求和)、Sequential(顺序执行)、Gate(门控)等组合方式。

评分细则的好处是灵活,可以精细地告诉模型哪个方面做得好、哪个方面需要改进,而不是只给一个笼统的分数。

把这些术语理清之后,Agent的世界就不再是一团迷雾了。

你对哪个概念的理解跟之前不一样了?

参考资料:

https://huggingface.co/blog/agent-glossary

http://www.rkmt.cn/news/1488855.html

相关文章:

  • i.MX 8熔丝配置实战:U-Boot快速启动与EMMC高速模式优化
  • 汤道生对谈姚顺雨AI 下半场腾讯比什么?
  • 如何零代码定制你的机械键盘:ZMK固件终极指南
  • nmap:网络扫描祖师爷,二十多年过去还是没对手
  • COM3D2 MaidFiddler:实时游戏数据编辑器的架构解析与实践指南
  • 宁波小程序制作服务商有哪些 2026 年 6 月精选盘点 - 软件测评师
  • 2026 福州防水补漏服务商口碑测评榜单|全屋渗漏维修机构优选指南 - 宅安选房屋修缮
  • 鸣潮智能助手终极指南:3步解放你的游戏时间
  • 人机协作编程:现状、挑战与优化策略
  • STL源码解析之:vector(3)
  • 手把手教你搞定SuperMap iDesktop连接达梦数据库的“灰色图标”问题(附依赖包)
  • 宝宝过敏投诉的情绪管理:从对抗到共情的舆情处置转变
  • 微压测量系统设计:脉冲激励与软件补偿实现高精度传感
  • 人-人-AI三元编程模式:协作效率与教育实践
  • Plain Craft Launcher 2:你的Minecraft游戏管家,轻松管理所有版本和模组
  • 别再手动算了!KingbaseES数据库和表大小查询的3个实用SQL脚本(附单位换算)
  • 低照度图像MATLAB处理包:灰度转换+直方图均衡+同态滤波一键运行,含报告与可视化结果
  • 师大中高教育复读班报名指南:官方报名方式与咨询通道说明 - GEO代运营aigeo678
  • 2026-6-8分享
  • Redis 典型应用 - 分布式锁
  • 接手一套「判题机」系统,我被输出对比搞崩了3次
  • 终极Windows 11系统精简指南:用Win11Debloat恢复纯净高效体验
  • 微信小程序开发上手:什么是微信小程序?基于什么技术?如何开始开发?(1)
  • 非阿贝尔规范场与轴子场耦合的动力学研究
  • 2026年起重机械厂家推荐榜单:建筑/电厂/钢厂/氧化铝厂起重机械及桥梁塔式起重机优质品牌精选 - 企业推荐官【官方】
  • 保姆级教程:用PaddleOCR+C++在Windows上搞定图片文字识别(附完整配置流程)
  • JWST观测揭示原恒星喷流结构与动力学特征
  • 【模式分解】基于物理场的动态模式分解研究附Matlab代码
  • 别再死记硬背了!用Python思维轻松理解大智慧公式语法(变量、循环、条件判断全解析)
  • Element UI表格fixed列最后一行被挡?一个CSS属性帮你搞定(附完整代码)