元鉴
返回中文阅读流

Hugging Face Blog

Harness、Scaffold 以及值得正确理解的 AI Agent 术语

来自 Hugging Face Blog 的最新公开更新。

中文内容

已翻译official company source英文原文2026-05-25

Harness、Scaffold 与 AI Agent:值得准确理解的术语

发布于 2026年5月25日
Update on GitHub

目录 模型支架 编排框架 智能体 上下文工程 策略 工具使用 技能 子智能体 训练 强化学习 环境 训练器 推演 奖励 了解更多 当一个领域快速发展时,它的词汇往往比共同理解演进得更快。术语开始变得模糊,在不同语境中被重复使用,或成为一些从未被充分解释的想法的简写。我们目前正在 AI Agents 领域看到这种情况:概念被混在一起,有些被重新命名,另一些则在广泛使用几个月后悄然消失。

这对新入门者来说可能令人不知所措,即便是试图跟上最新进展的从业者也会如此。ICLR 2026 之后,我们中的一位(@ariG23498)发布了一个问题,很好地捕捉到了这种困惑:

“在智能体的语境中,你所说的 ‘harness’ 和 ‘scaffold’ 这些术语是什么意思?我在 ICLR 期间听到了很多解释,但我不明白为什么它们没有收敛到一个统一的解释。”

这份术语表是我们试图为那些不断出现、却缺乏清晰一致解释的术语奠定基础。它并不旨在成为涵盖该领域所有术语的完整词典。相反,我们聚焦于那些经常被混淆、以不同方式重复使用,或在并不显而易见时却被假定为显而易见的概念。

无论你是在构建智能体、部署智能体,还是只是在使用 Claude Code、Codex 或 Hermes Agent 等工具,这些术语中的大多数都会出现。最后一节涵盖了特定于模型训练的概念;如果你从事这方面的工作,它会更相关。

这些术语中有许多尚未有普遍接受的定义,不同框架对同一个词的用法也各不相同。这里的目标不是强制规定一套正确的词汇,而是提供一种实用的思维模型,让讨论更容易跟上。

我们开始吧。

目录

  • 模型
  • 脚手架
  • 框架
  • 智能体
  • 上下文工程
  • 策略
  • 工具使用
  • 技能
  • 子代理
  • 训练 强化学习 环境 训练器 推演 奖励
  • 了解更多

模型

模型就是 LLM:它接收文本并输出文本(例如 Claude、Qwen、GPT、Kimi、DeepSeek……)。单独来看,它在调用之间没有记忆,也没有循环。模型可以表达调用工具的意图,但需要一个运行框架来实际执行它。它回答一个提示后就停止。将其包裹在脚手架和运行框架中,它就会成为一个智能体。

脚手架

围绕模型的、定义行为的层:系统提示词、工具描述、模型响应如何被解析、模型在各步骤之间记住什么(上下文管理)。无论是在训练期间还是推理期间,它都会塑造模型如何看待世界并在其中行动。

Claude Code、Codex 和 Antigravity CLI 等产品把这一整套东西称为 harness。Claude Code 自己的文档直接写道:“Claude Code serves as the agentic harness around Claude.” 这是广义用法:harness 指除模型之外的一切。当你需要分别推理二者时,比如在训练流水线中,scaffold/harness 这一区分就最为重要。你也会听到“scaffold”被更广泛地用于涵盖 harness 所依赖的任何基础设施:钩子、运行时配置,甚至目录结构。

一些产品(如 Claude Code 和 Codex)与其提供商的模型紧密耦合。另一些产品(如 Antigravity CLI 和 Hermes Agent)则允许你接入任何模型。

正文:Harness

智能体内部的执行层:它调用模型,处理模型的工具调用,并决定何时停止。harness 是让智能体运行起来的部分。前文定义的 scaffolding 是模型所依托的内容:它的指令、工具和格式。

Harness engineering 是一门良好设计这一层的学科:决定智能体何时应停止、如何处理错误,以及哪些护栏能让它保持在正确轨道上。它同时适用于训练和推理。Addy Osmani 的文章以及 OpenAI 关于使用 Codex 构建的介绍,都从推理侧涵盖了这一点。

在评估时,同样的模式表现为 eval harness:它不是收集训练数据,而是在某个模型检查点运行一组固定场景,并记录指标,而不是更新权重。

一些框架使用 orchestrator 来指代更高层级的控制器,用于协调多个智能体之间的工作。与通过执行循环驱动模型的 harness 不同,orchestrator 将智能体作为单元进行管理,每个智能体都运行自己的 harness(见下文 Sub-agents)。

智能体

这个术语来源于强化学习,在强化学习中,智能体只是一个接收观察并返回动作的函数。环境接收该动作并返回一个新的观察,如此循环往复。这个循环仍然是 LLM 智能体工作方式的核心。

在 LLM 领域,这个术语的含义已经扩展。智能体是一个模型加上其周围让它能够行动、而不只是响应的一切。它把原始的文本生成转变为可以在循环中行动的东西:接收信息、决定要做什么,并根据结果采取行动。

以一个编码智能体为具体例子。系统提示词、工具描述以及模型遵循的输出格式构成了脚手架。调用模型、处理其工具调用并决定何时停止的循环就是运行框架。在训练时,运行框架还会并行运行许多个这样的循环,并将结果反馈回来以更新模型。

Agent diagram showing Harness, Scaffold, and Model as components inside Agent, with Sub-agent below

在社区里,通常会把它表述为 Agent = Model + Harness(可参考 @Vtrivedy10 和 Will Brown 的推文)。如果你不是模型,那你就是 harness。上面两个部分所讨论的,正是 harness 与 scaffold 之间造成大多数困惑的细微区别。

当人们谈论 Claude Code、Codex 或 Cursor 这类产品时,他们指的是构建在特定模型之上的特定 harness,并且二者是一起设计和优化的。两个使用相同底层模型的产品,体验可能完全不同,因为它们的 harness 做出了不同选择。而将同一个 harness 中的模型替换为更好的模型,也会改变体验。模型、harness 和产品是三种不同的东西。

上下文工程

设计进入 agent 上下文窗口的内容:模型在每一步看到什么、系统提示词、工具描述、对话历史、检索到的知识。这不是一次性的决策:随着模型运行,先前的轮次会影响未来调用中包含的内容,而 harness 会在整个运行过程中主动管理这一点。它同时适用于训练和推理,但出错的代价非常不同。在训练时,模型看到的内容会塑造其学习到的内容。弄错了就要重新训练。在推理时,它只是文本:修改提示词并重新部署即可。HF Context Engineering Course 对此进行了深入讲解。

记忆是这一图景的一部分。短期记忆是在单次运行期间保留在上下文窗口中的内容:对话历史、工具结果、先前推理。长期记忆则跨会话持续存在,存储在外部并按需检索,然后在相关时重新注入上下文。

策略

策略是代理所遵循的行为:给定任何情境,它定义了采取每种可能行动的概率。在 LLM 系统中,该策略的一部分是在模型权重中学习到的,但行为也取决于周围的脚手架和运行框架。同一个模型可能会因其提示、工具、记忆和执行循环的不同而表现得截然不同。

策略并不是代理。策略定义行为;代理是在环境中采取行动的完整系统。将一个检查点封装在脚手架和运行框架中并部署它,你就会得到一个其行为由该策略决定的代理。

工具使用

智能体如何触达自身之外的资源:API、代码解释器、数据库、网络搜索、文件系统。模型以结构化格式表达使用工具的意图。现代推理 API 将其作为一等对象呈现:运行框架直接接收调用,并将其路由到正确的函数。结果会被送回上下文,循环继续。

技能

可复用、结构化的知识包,用于支持多步骤任务。工具是一种动作(“运行这条命令”),而技能则捆绑完成某个目标所需的一切(“调查这个 bug,形成假设,编写修复方案”)。它们可在智能体之间移植,并按需加载。工具、技能和子智能体之间的界限会随不同框架而变化。HF Context Engineering Course 对技能进行了深入讲解。

子代理

由另一个代理调用以处理特定子任务的代理。它有自己的模型和脚手架,能够独立推理并返回结果。调用它的代理不需要知道其内部如何工作。这正是子代理与工具(函数调用)或技能(封装的知识)的区别所在:子代理本身可以进行推理、使用工具,并调用更多子代理。发起调用的代理有时被称为编排器。

训练

无论是在训练还是部署中,上述术语都适用。以下四个术语专门用于训练阶段,在该阶段,代理会执行任务、获得评分,其模型权重会被更新。每个面向 LLM 的 RL 训练系统都围绕同一条流水线构建:

RL training pipeline showing RL Environment, Trainer, and Reward connected by rollout and updated policy

RL 环境

环境是你可以与之交互的任何事物:一个有状态对象,它以动作为输入,更新其内部状态,并返回一个观察结果。在 LLM 语境中,动作通常是工具调用。文件系统是一个简单示例:动作 touch foo.txt 通过创建文件来更新状态,而观察结果可能是更新后的文件列表。不同框架中的定义各不相同。

我们最近发布了一篇关于这一主题的专门指南,因此这里不再压缩概述;如需完整了解类型、框架和示例,请参阅 The Ultimate Guide to RL Environments。

训练器

训练器是让智能体变得更好的关键:它运行多个智能体回合,对结果进行评分,并利用这些结果更新内部模型的权重。TRL 的 GRPOTrainer 就是一个具体示例:它是一个单一类,负责处理回合生成、奖励评分和权重更新。

正文:Rollout

一次 rollout 指的是智能体从开始到结束的一次完整运行:智能体看到了什么、做了什么,以及在每一步获得了什么奖励。根据上下文,它也被称为轨迹(trajectory)或跟踪(trace)。这是强化学习算法用于学习的原始数据。

奖励

用于告知训练算法模型是否在变好的分数。它可以是可验证的(测试通过/失败、答案匹配),也可以是学习得到的(人类偏好、LLM-as-judge);可以是稀疏的(在一次 episode 结束时给出一个分数),也可以是密集的(每一步给出一个分数)。这就是训练器实际用于更新内部模型权重的内容。关于每种类型的详尽拆解,请参阅 Adithya 指南中的 Reward Architecture 部分。

Rubrics 将奖励拆分为带有权重的显式维度,而不是单一数字。OpenEnv 和 Verifiers 将 rubrics 实现为可组合的对象(WeightedSum、Sequential、Gate)。

了解更多

  • @Vtrivedy10:The Anatomy of an Agent Harness:详细拆解 harness 组件及其存在的原因
  • 智能体框架工程:围绕“智能体 = 模型 + 框架”的趋同表述,并配有编码智能体示例
  • 框架工程:在智能体优先的世界中利用 Codex:一篇关于完全使用 Codex 智能体构建产品的真实经历,涵盖脚手架、反馈循环以及推理时的上下文管理
  • 工具 Schema 渲染图谱(evalstate):工具 schema 如何在不同模型中变成提示文本,展示在应用提供商模板后每个模型实际看到的内容
  • Simon Willison 的博客《How coding agents work》:编码智能体如何作为一种框架运作
  • AI Engineer 讨论 AI 中的 Harnesses:深入解析:什么是 harness,以及如何构建一个 harness。
  • RL Environments 终极指南:逐框架对比与术语转换
  • 持续改进我们的 agent harness:Cursor 如何将其 harness 作为产品进行迭代。
  • lm-evaluation-harness:标准评估 harness

如果任何定义让你觉得不够准确,或者你遇到了我们遗漏的术语,我们很乐意听取你的意见。

感谢 Pedro Cuenca、Quentin Gallouédec、Shaun Smith 和 Adithya S Kolavi 对本文的审阅。

原文标题

Harness, Scaffold, and the AI Agent Terms Worth Getting Right