AI Agent领域术语混乱,Harness、Scaffold等概念常被误用。本文由Hugging Face发布,系统定义模型、脚手架、框架、智能体等核心术语,明确它们之间的关系与差异,帮助开发者精准沟通,避免概念混淆。
当一个领域快速演进时,词汇的变化往往比共识的形成更快。术语开始模糊、在不同语境中被复用,或者成为从未被充分解释的想法的代名词。我们在 AI Agent 领域正目睹这一现象:概念被混杂,有些被重新命名,有些被广泛使用几个月后悄然消失。
这对新手甚至试图跟上最新进展的从业者来说都令人困惑。在 ICLR 2026 之后,一位作者(@ariG23498)提出了一个问题,很好地捕捉了这种困惑:
“在 Agent 的语境下,你们说的 'harness' 和 'scaffold' 到底指什么?我在 ICLR 上听到很多解释,但我不明白为什么它们没有收敛成一个统一的说法。”
这份术语表是我们试图为这些不断出现但缺乏清晰一致解释的术语打下坚实根基的努力。它并非该领域所有术语的全面词典,而是聚焦于那些经常被混淆、在不同方式下被复用、或者被默认当成显而易见但其实并非如此的几个概念。
无论你是在构建 Agent、部署 Agent,还是仅仅使用像 Claude Code、Codex 或 Hermes Agent 这样的工具,这些术语大部分都会出现。最后一部分涵盖了训练模型特有的概念,如果你从事相关工作则会更加相关。
这些术语目前大多还没有公认的定义,不同框架对同一个词的使用也不同。这里的目标不是强制推行一套正确词汇,而是提供一个实用的思维模型,让讨论更容易跟进。
让我们开始吧。
模型就是大语言模型(LLM):接受文本输入,生成文本输出(例如 Claude、Qwen、GPT、Kimi、DeepSeek……)。单独来看,它在调用之间没有记忆,也没有循环。模型可以表达调用工具的意图,但需要一个框架(harness)来实际执行。它回答一个提示就停止。将它包裹进脚手架和框架,它就变成了一个 Agent。
脚手架是模型周围的行为定义层:系统提示、工具描述、模型响应如何被解析、它在各步骤之间记住什么(上下文管理)。它塑造了模型观察世界并在其中行动的方式,无论是训练期间还是推理期间。
像 Claude Code、Codex 和 Antigravity CLI 这样的产品将整个东西称为框架(harness)。Claude Code 的官方文档直接写道:“Claude Code 充当 Claude 的智能体框架。”这是广义的用法:框架指除模型之外的一切。当需要单独推理脚手和框架时,比如在训练管道中,两者的区分最为重要。你还会听到“scaffold”被更广泛地用来覆盖框架所依赖的任何基础设施:钩子、运行时配置、甚至目录结构。
有些产品(如 Claude Code 和 Codex)与其提供商的模型紧密耦合。其他产品(如 Antigravity CLI 和 Hermes Agent)则允许你插入任何模型。
框架是 Agent 内部的执行层:它调用模型、处理其工具调用、决定何时停止。框架是让 Agent 运行起来的部件。上面定义的脚手架是模型工作的基础:它的指令、它的工具、它的格式。
框架工程是设计好这一层的学科:决定 Agent 何时应该停止、错误如何处理、以及哪些护栏让它保持在正轨上。它在训练和推理时都适用。Addy Osmani 的文章和OpenAI 关于使用 Codex 构建的说明都从推理方面涵盖了这一点。
在评估时,相同的模式表现为评估框架:它不是收集训练数据,而是在模型检查点上运行固定的一组场景并记录指标,而不是更新权重。
该术语来自强化学习,其中 Agent 只是一个接受观察并返回动作的函数。环境接受该动作并返回新观察,循环重复。这个循环仍然是 LLM Agent 工作的核心。
在 LLM 世界中,该术语已经扩展。Agent 是模型加上它周围允许它行动的一切,而不仅仅是回应。它将原始文本生成转化为可以在循环中行动的东西:接收信息、决定做什么、并根据结果采取行动。
以编码 Agent 为例。系统提示、工具描述和模型遵循的输出格式构成了脚手架。调用模型、处理其工具调用并决定何时停止的循环就是框架。在训练时,框架还并行运行许多这样的循环并将结果反馈回去以更新模型。
在社区中,通常表述为 Agent = Model + Harness(参考 @Vtrivedy10 和 Will Brown 的推文)。如果你不是模型,你就是框架。框架和脚手架之间造成大部分混淆的细微区别,由上面两个部分阐述。
当人们谈论像 Claude Code、Codex 或 Cursor 这样的产品时,他们指的是构建在特定模型之上的特定框架,两者协同设计和优化。使用相同底层模型的两个产品可能因为不同框架的选择而感觉截然不同。而将更好的模型换入相同的框架也会改变体验。模型、框架和产品是三个不同的东西。
设计进入 Agent 上下文窗口的内容:模型在每一步看到什么、系统提示、工具描述、对话历史、检索到的知识。这不是一次性决定:随着模型运行,前几轮的内容会塑造后续调用中的内容,框架在整个运行过程中主动管理这些内容。它在训练和推理中都适用,但出错成本截然不同。在训练中,模型看到的内容塑造了学习的内容。搞错了就要重新训练。在推理中,它只是文本:修改提示并重新部署。HF 上下文工程课程对此进行了深入介绍。
记忆是其中一部分。短期记忆是在单次运行中保留在上下文窗口内的内容:对话历史、工具结果、先前的推理。长期记忆跨会话持久存储,外部存储并按需检索,然后在相关时注入回上下文。
策略是 Agent 遵循的行为:给定任何情况,它定义每个可能动作的概率。在 LLM 系统中,部分策略是在模型权重中学习的,但行为也依赖于周围的脚手架和框架。同一个模型根据其提示、工具、记忆和执行循环可能表现迥异。策略不是 Agent。策略定义行为;Agent 是在环境中行动的整体系统。将一个检查点包裹进脚手架和框架并部署,你就得到了一个 Agent,其行为就是策略。
Agent 如何接触外界:API、代码解释器、数据库、网络搜索、文件系统。模型以结构化格式表达使用工具的意图。现代推理 API 将其作为一流对象呈现:框架直接接收调用并将其路由到正确的函数。结果被反馈到上下文中,循环继续。
可复用的、结构化的知识包,支持多步骤任务。工具是一项动作(“运行此命令”),而技能则捆绑完成一个目标所需的一切(“调查此 bug、形成假设、编写修复”)。它们可在 Agent 之间移植,并按需加载。工具、技能和子智能体之间的界限在不同框架中有所不同。HF 上下文工程课程深入介绍了技能。
由另一个 Agent 调用以处理特定子任务的 Agent。它有自己的模型和脚手架,独立推理,并返回结果。调用 Agent 不需要知道其内部工作方式。这就是子智能体与工具(函数调用)或技能(打包的知识)的区别:子智能体本身可以推理、使用工具并调用进一步的子智能体。
上述术语在训练或部署时都适用。以下四个是训练特有的,其中 Agent 运行任务、得到评分,其模型权重被更新。LLM 的每个 RL 训练系统都围绕同一个管道构建:
环境是你可以交互的任何东西:一个有状态的对象,将动作作为输入,更新其内部状态,并返回观察。在 LLM 语境中,动作通常是工具调用。文件系统是一个简单例子:动作 touch foo.txt 通过创建文件更新状态,观察可能是更新后的文件列表。定义因框架而异。
我们最近发布了专门的指南,因此不在此时压缩:RL 环境终极指南 提供了类型、框架和示例的完整分解。
训练器是让 Agent 变得更好的部件:它运行多个 Agent 回合,对结果进行评分,并使用它们更新内部模型的权重。TRL 的 GRPOTrainer 是一个具体例子:一个处理回合生成、奖励评分和权重更新的单一类。
展开是 Agent 从开始到结束的一次完整运行:Agent 看到了什么、做了什么、以及在每一步获得了什么奖励。它也被称为_轨迹_或_追踪_,取决于语境。这是 RL 算法学习的原始数据。
奖励是告诉训练算法模型是否在变好的分数。它可以是_可验证的_(测试通过/失败、答案匹配),或_学习的_(人类偏好、LLM-as-judge),稀疏的(在回合结束时一个分数),或_密集的_(每一步一个分数)。这就是训练器实际用来更新内部模型权重的依据。关于每种类型的详细分解,请参见 Adithya 指南中的奖励架构部分。
评分准则将奖励分解为具有权重的显式维度,而不是单一数字。OpenEnv 和 Verifiers 将评分准则实现为可以组合的对象(WeightedSum、Sequential、Gate)。
原文链接:Hugging Face
本文由前途科技编辑整理
免费获取企业 AI 成熟度诊断报告,发现转型机会
关注公众号

扫码关注,获取最新 AI 资讯
3 步完成企业诊断,获取专属转型建议
已有 200+ 企业完成诊断