Harness、Scaffold 以及值得厘清的 AI Agent 术语
摘要
这是一篇 Hugging Face 博客文章,旨在定义并厘清 AI Agent 领域的关键术语,如 scaffolding、harness、context engineering 和 tool use,力求在快速演进中实现词汇标准化。
查看缓存全文
缓存时间: 2026/05/25 18:29
Harness、Scaffold 以及那些值得厘清的 AI Agent 术语
来源:https://huggingface.co/blog/agent-glossary 返回文章列表 (https://huggingface.co/blog)
Sergio Paniego 的头像 (https://huggingface.co/sergiopaniego)
Aritra Roy Gosthipaty 的头像 (https://huggingface.co/ariG23498)
- 目录 (https://huggingface.co/blog/agent-glossary#table-of-contents)
- 模型 (https://huggingface.co/blog/agent-glossary#model)
- 脚手架 (https://huggingface.co/blog/agent-glossary#scaffolding)
- Harness (https://huggingface.co/blog/agent-glossary#harness)
- 智能体 (https://huggingface.co/blog/agent-glossary#agent)
- 上下文工程 (https://huggingface.co/blog/agent-glossary#context-engineering)
- 策略 (https://huggingface.co/blog/agent-glossary#policy)
- 工具使用 (https://huggingface.co/blog/agent-glossary#tool-use)
- 技能 (https://huggingface.co/blog/agent-glossary#skills)
- 子智能体 (https://huggingface.co/blog/agent-glossary#sub-agents)
- 训练 (https://huggingface.co/blog/agent-glossary#training)- RL 环境 (https://huggingface.co/blog/agent-glossary#rl-environment) - 训练器 (https://huggingface.co/blog/agent-glossary#trainer) - 运行轨迹 (https://huggingface.co/blog/agent-glossary#rollout) - 奖励 (https://huggingface.co/blog/agent-glossary#reward)
- 了解更多 (https://huggingface.co/blog/agent-glossary#learn-more)
当一个领域发展迅速时,其词汇表往往比人们对它们的共同理解演化得更快。术语开始变得模糊,在不同的语境中被重复使用,或者成为从未被充分解释的概念的速记。我们目前正看到这种情况发生在 AI Agent 领域:概念被混淆,有些被重新命名,另一些则被广泛使用几个月后悄然消失。
这对于新手,甚至对于努力跟上最新发展的从业者来说,都可能感到不知所措。在 ICLR 2026 之后,我们中的一位 (@ariG23498 (https://x.com/ariG23498/status/2049668725511737663)) 提出了一个问题,很好地捕捉了这种困惑:
“在智能体语境下,‘harness’ 和 ‘scaffold’ 这两个术语到底是什么意思?我在 ICLR 听到了很多解释,但我无法理解为什么它们没有收敛到一个统一的解释上。”
本词汇表是我们尝试厘清那些频繁出现但缺乏清晰、一致解释的术语。它并非旨在成为该领域每个术语的全面词典。相反,我们专注于那些经常被混淆、以不同方式重复使用,或者被默认视为显而易见但实际并非如此的术语。
无论你是在构建、部署 Agent,还是仅仅使用像 Claude Code、Codex 或 Hermes Agent 这样的工具,大部分这些术语都会出现。最后一节涵盖了模型训练特有的概念,如果你从事这方面的工作,这部分会更相关。
许多这些术语目前还没有普遍接受的定义,不同的框架对同一个词的使用方式也不同。这里的目标不是强制执行一套正确的词汇,而是提供一个实用的心智模型,使讨论更容易理解。
让我们开始吧。
https://huggingface.co/blog/agent-glossary#table-of-contents目录
- 模型 (https://huggingface.co/blog/agent-glossary#model)
- 脚手架 (https://huggingface.co/blog/agent-glossary#scaffolding)
- Harness (https://huggingface.co/blog/agent-glossary#harness)
- 智能体 (https://huggingface.co/blog/agent-glossary#agent)
- 上下文工程 (https://huggingface.co/blog/agent-glossary#context-engineering)
- 策略 (https://huggingface.co/blog/agent-glossary#policy)
- 工具使用 (https://huggingface.co/blog/agent-glossary#tool-use)
- 技能 (https://huggingface.co/blog/agent-glossary#skills)
- 子智能体 (https://huggingface.co/blog/agent-glossary#sub-agents)
- 训练 (https://huggingface.co/blog/agent-glossary#training)- RL 环境 (https://huggingface.co/blog/agent-glossary#rl-environment) - 训练器 (https://huggingface.co/blog/agent-glossary#trainer) - 运行轨迹 (https://huggingface.co/blog/agent-glossary#rollout) - 奖励 (https://huggingface.co/blog/agent-glossary#reward)
- 了解更多 (https://huggingface.co/blog/agent-glossary#learn-more)
https://huggingface.co/blog/agent-glossary#model模型
模型就是 LLM:它接收文本输入并产生文本输出(例如,Claude、Qwen、GPT、Kimi、DeepSeek…)。就其本身而言,它在调用之间没有记忆,也没有循环。模型可以表达调用工具的意图,但它需要一个 harness 来实际执行它。它回答一个提示然后停止。将其包装在脚手架和 harness 中,它就变成了一个智能体。
https://huggingface.co/blog/agent-glossary#scaffolding脚手架
模型周围的行为定义层:系统提示、工具描述、模型响应如何被解析、它在各步骤间记忆什么(上下文管理)。它塑造了模型如何看待世界并在其中行动,无论是在训练期间还是推理期间。
像 Claude Code、Codex 和 Antigravity CLI 这样的产品将整个东西称为 harness。Claude Code 自己的文档 (https://code.claude.com/docs/en/how-claude-code-works) 直接说明了这一点:“Claude Code 充当 Claude 周围的 agentic harness。” 这是广义上的用法:harness 意味着一系列组件中除模型之外的所有东西。脚手架/harness 的区别在需要分别推理它们时最为重要,例如在训练流程中。你还会听到“scaffold”被更广泛地用于涵盖 harness 所依赖的任何基础设施:钩子、运行时配置,甚至目录结构。
一些产品如 Claude Code 和 Codex 与其提供商的模型紧密耦合。其他产品如 Antigravity CLI 和 Hermes Agent 允许你插入任何模型。
https://huggingface.co/blog/agent-glossary#harnessHarness
智能体内部的执行层:它调用模型,处理模型的工具调用,决定何时停止。Harness 是让智能体运行起来的组件。如上定义的脚手架则是模型工作的依据:它的指令、它的工具、它的格式。
Harness 工程是设计好这一层的学科:决定智能体何时应该停止、如何处理错误、以及设置哪些护栏使其保持在正轨上。它同时适用于训练和推理。Addy Osmani 的文章 (https://www.oreilly.com/radar/agent-harness-engineering/) 和 OpenAI 关于使用 Codex 构建的说明 (https://openai.com/index/harness-engineering/) 都从推理角度涵盖了这一点。
在评估时,同样的模式表现为评估 harness:它不是收集训练数据,而是在模型检查点上运行一组固定的场景,并记录指标而不是更新权重。
https://huggingface.co/blog/agent-glossary#agent智能体
这个术语来自强化学习,其中智能体只是一个接收观察并返回动作的函数。环境接收该动作并返回一个新的观察,然后循环重复。这个循环仍然是 LLM Agent 工作的核心。
在LLM世界中,这个术语已经扩展。一个智能体是模型加上它周围所有使其能够行动(而不仅仅是响应)的东西。它将原始的文本生成转化为可以在循环中行动的能力:接收信息,决定做什么,并根据结果采取行动。
以一个编码智能体为具体例子。系统提示、工具描述以及模型遵循的输出格式构成了脚手架。调用模型、处理其工具调用并决定何时停止的循环是 harness。在训练时,harness 还并行运行许多这样的循环,并将结果反馈以更新模型。
智能体图表,显示 Harness、Scaffold 和 Model 作为智能体内部的组件,下方是 Sub-agent (https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/agent-glossary/agent-diagram.png)
在社区中,它通常被表述为智能体 = 模型 + Harness(参考 @Vtrivedy10 (https://x.com/Vtrivedy10/status/2031408954517971368) 和 Will Brown 的推文 (https://x.com/willccbb/status/2049844685095715289))。如果你不是模型,那你就是 harness。造成大部分混淆的微妙区别在于 harness 和 scaffold,上面两节已经讨论了这一点。
当人们谈论像 Claude Code、Codex 或 Cursor 这样的产品时,他们指的是构建在特定模型之上的、经过设计和联合优化的特定 harness。两个使用相同底层模型的产品,因其 harness 做出了不同的选择,感觉可以完全不同。而在同一个 harness 中更换更好的模型也会改变体验。模型、harness 和产品是三个不同的东西。
https://huggingface.co/blog/agent-glossary#context-engineering上下文工程
设计进入智能体上下文窗口的内容:模型在每个步骤看到的内容、系统提示、工具描述、对话历史、检索到的知识。这不是一次性的决定:随着模型运行,之前的轮次会塑造进入未来调用的内容,而 harness 在整个运行过程中主动管理这个过程。它同时适用于训练和推理,但搞错的成本天差地别。在训练时,模型看到的内容塑造了学习的内容。搞错了就得重新训练。在推理时,它只是文本:改变提示并重新部署。HF 上下文工程课程 (https://huggingface.co/learn/context-course/en/unit0/introduction) 对此进行了深入讨论。
记忆是其中的一部分。短期记忆是在单次运行期间保留在上下文窗口中的内容:对话历史、工具结果、先前的推理。长期记忆跨会话持久化,存储在外部并按需检索,然后在相关时注入回上下文中。
https://huggingface.co/blog/agent-glossary#policy策略
策略是智能体遵循的行为:给定任何情况,它定义了采取每个可能动作的概率。在 LLM 系统中,部分策略在模型权重中学习,但行为也依赖于周围的脚手架和 harness。同一个模型根据其提示、工具、记忆和执行循环,可以表现出截然不同的行为。策略不是智能体。策略定义了行为;智能体是在环境中行动的完整系统。将检查点包裹在脚手架和 harness 中并部署,你就得到了一个行为由其策略定义的智能体。
https://huggingface.co/blog/agent-glossary#tool-use工具使用
智能体如何与外部世界交互:API、代码解释器、数据库、网络搜索、文件系统。模型以结构化格式表达使用工具的意图。现代推理 API 将其作为一等对象呈现:harness 直接接收调用并将其路由到正确的函数。结果被反馈回上下文中,循环继续。
https://huggingface.co/blog/agent-glossary#skills技能
可重用的、结构化的知识包,用于实现多步骤任务。工具是一个动作(“运行此命令”),而技能则捆绑了实现一个目标所需的一切(“调查这个 bug,形成假设,编写修复方案”)。它们可跨智能体移植,并按需加载。工具、技能和子智能体之间的界限在不同框架中有所不同。HF 上下文工程课程 (https://huggingface.co/learn/context-course/en/unit1/introduction) 深入介绍了技能。
https://huggingface.co/blog/agent-glossary#sub-agents子智能体
由另一个智能体调用来处理特定子任务的智能体。它有自己的模型和脚手架,独立推理,并返回一个结果。调用它的智能体不需要知道它内部如何工作。这就是子智能体与工具(函数调用)或技能(打包的知识)的区别:子智能体本身可以推理、使用工具并调用进一步的子智能体。
https://huggingface.co/blog/agent-glossary#training训练
无论你是训练还是部署,上述术语都适用。以下四个是训练特有的,即智能体运行任务、获得评分、其模型权重被更新。每个用于 LLM 的 RL 训练系统都围绕着相同的流程构建:
RL 训练流程图,显示 RL 环境、训练器和奖励通过运行轨迹和更新的策略连接 (https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/blog/agent-glossary/rl-pipeline.png)
https://huggingface.co/blog/agent-glossary#rl-environmentRL 环境
环境是你能够与之交互的任何东西:一个有状态的对象,它接收一个动作作为输入,更新其内部状态,并返回一个观察。在 LLM 上下文中,动作通常是工具调用。文件系统是一个简单的例子:动作 touch foo.txt 通过创建文件来更新状态,观察可能是更新后的文件列表。不同框架的定义有所不同。
我们最近发布了一份专门的指南,所以这里不再压缩内容,请参阅《RL 环境终极指南》(https://huggingface.co/spaces/AdithyaSK/rl-environments-guide),了解类型、框架和示例的完整分解。
https://huggingface.co/blog/agent-glossary#trainer训练器
训练器是让智能体变得更好的组件:它运行多个智能体回合,对结果进行评分,并使用它们来更新内部模型的权重。TRL 的 GRPOTrainer (https://huggingface.co/docs/trl/main/en/openenv) 是一个具体的例子:一个处理回合生成、奖励评分和权重更新的单一类。
https://huggingface.co/blog/agent-glossary#rollout运行轨迹
一次运行轨迹是一次完整的智能体运行,从头到尾:智能体看到了什么,它做了什么,以及它在每一步得到了什么奖励。根据上下文,它也被称为轨迹或追踪。这是 RL 算法从中学习的原始数据。
https://huggingface.co/blog/agent-glossary#reward奖励
告诉训练算法模型是否在变得更好的分数。它可以是可验证的(测试通过/失败,答案匹配),或者学习的(人类偏好,LLM 作为评判者),稀疏的(在一个回合结束时给一个分数),或者密集的(在每一步给一个分数)。训练器使用它来实际更新内部模型的权重。关于每种类型的详细分解,请参阅 Adithya (https://huggingface.co/AdithyaSK) 指南中的奖励架构 (https://huggingface.co/spaces/AdithyaSK/rl-environments-guide#dimension-4-reward-architecture) 部分。
评分规则将奖励分解为带有权重的显式维度,而不是一个单一数字。OpenEnv (https://github.com/meta-pytorch/OpenEnv) 和 Verifiers (https://github.com/willccbb/verifiers) 将评分规则实现为你可以组合的对象(WeightedSum,Sequential,Gate)。
https://huggingface.co/blog/agent-glossary#learn-more了解更多
- @Vtrivedy10: Agent Harness 的解剖 (https://x.com/Vtrivedy10/status/2031408954517971368):对 harness 组件及其存在原因的详细分解
- Agent Harness 工程 (https://www.oreilly.com/radar/agent-harness-engineering/):关于 Agent = Model + Harness 的收敛性框架,包含编码智能体示例
- Harness 工程:在 Agent 优先的世界中利用 Codex (https://openai.com/index/harness-engineering/):完全使用 Codex Agent 构建产品的真实案例,涵盖推理时的脚手架、反馈循环和上下文管理
- 工具模式渲染图集 (https://huggingface.co/spaces/evalstate/tool-research) (evalstate):展示工具模式如何跨模型成为提示文本,显示在应用提供商模板后每个模型实际看到的内容
- Simon Willison 的“编码智能体如何工作”博客 (https://simonwillison.net/guides/agentic-engineering-patterns/how-coding-agents-work/):解释编码智能体如何作为 harness 工作
- AI Engineer 演讲:AI 中的 Harness 深度解析 (https://www.youtube.com/watch?v=C_GG5g38vLU):什么是 harness 以及如何构建它
相似文章
@yanhua1010: 你是不是也被AI Agent的很多概念(Harness, Scaffold, Context Engineering...)搞得晕头转向? 最近在 @teach_fireworks 老师社群看到Huggingface一篇文章,讲解Agen…
推荐Huggingface上一篇讲解AI Agent常见术语的文章,帮助理清Harness、Scaffold、Context Engineering等概念。
@akshay_pachaar: 从提示工程到上下文工程再到封装工程。三个术语在AI工程中反复出现,经常被混为一谈……
Akshay Pachaar阐释了三个不同的AI工程概念——提示工程(消息)、上下文工程(记忆)和封装工程(机器)——解释了它们在构建基于LLM的智能体中的角色与相互作用,并附有一篇关于智能体封装工程的深入文章链接。
Harness Handbook 将智能体行为映射到代码(28分钟阅读)
Harness Handbook 为AI智能体框架提供了行为级手册,将系统行为与可验证的代码证据关联,使框架可理解、可审计、可编辑。
@sairahul1: https://x.com/sairahul1/status/2063544956158185927
本文介绍了“Harness Engineering”这一概念,这是一门专注于设计约束和引导AI代理的系统,使其在生产中可靠的学科,并认为Harness(约束系统)比模型本身更重要。
关于Harness Engineering的许多讨论,它到底意味着什么?
围绕Harness Engineering和AI agent Harness的热议,质疑行业是否正在远离让LLM决定代理响应的做法。