Harness、Scaffold 以及值得厘清的 AI Agent 术语

Hugging Face Blog 新闻

摘要

这是一篇 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) 将评分规则实现为你可以组合的对象(WeightedSumSequentialGate)。

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 以及如何构建它

相似文章