厘清 Harness、Scaffold 及 AI Agent 关键术语
速览
本文深入解析了 Harness、Scaffold 以及 AI Agent 等当前热门的 AI 开发术语。文章旨在帮助开发者和从业者准确理解这些概念的定义与区别,避免混淆。这对于构建和维护高质量的 AI 应用具有重要指导意义。
AI 深度解读
Harness, Scaffold, 以及值得厘清的 AI Agent 术语
来源:Hugging Face Blog 标题:Harness, Scaffold, and the AI Agent Terms Worth Getting Right 发布日期:2026年5月25日
背景
在大型语言模型(LLM)时代,构建和扩展强化学习(RL)环境对于模型训练至关重要。然而,这一过程对新手乃至试图跟上最新进展的实践者来说都显得令人不知所措。
在 ICLR 2026 会议之后,Hugging Face 的工程师 @ariG23498 提出了一个极具代表性的问题,精准捕捉了当前的困惑:“在 Agent 的语境下,你们所说的 ‘Harness’(执行层/驾驭层)和 ‘Scaffold’(脚手架/支撑层)到底是什么意思?我在 ICLR 期间听到了很多解释,但无法理解为什么大家没有达成一个统一的定义。”
这并非个例。目前许多术语尚未有 universally accepted(普遍接受)的定义,不同的框架甚至对同一个词有着截然不同的用法。本文旨在提供一个实用的思维模型,帮助读者理清那些经常被混淆、以不同方式复用或被视为理所当然的概念,从而降低沟通成本。
核心内容
为了构建清晰的认知框架,我们将 Agent 相关的核心概念拆解为以下几个关键部分:
1. Model(模型)
模型即 LLM 本身:它接收文本输入并生成文本输出(例如 Claude、Qwen、GPT、Kimi、DeepSeek 等)。
- 特性:模型本身在调用之间没有记忆,也没有循环机制。
- 局限:虽然模型可以表达调用工具的意图,但它需要依靠 Harness 来实际执行。它回答一个提示(Prompt)后即停止。
- 转化:只有将模型包裹在 Scaffolding 和 Harness 之中,它才能成为一个真正的 Agent。
2. Scaffolding(脚手架/支撑层)
这是围绕模型的行为定义层。它决定了模型如何感知世界并在其中行动,无论是在训练阶段还是推理阶段。
- 构成:包括系统提示词(System Prompt)、工具描述、模型响应的解析方式,以及跨步骤的记忆管理(上下文管理)。
- 作用:它定义了模型工作的“规则”和“环境”。
3. Harness(执行层/驾驭层)
在 Agent 内部,Harness 是执行层。它是让 Agent 运行起来的关键。
- 功能:调用模型、处理工具调用、决定何时停止循环。
- 广义定义:像 Claude Code、Codex 和 Antigravity CLI 这样的产品通常将整个系统称为 Harness。Claude Code 的官方文档明确指出:“Claude Code 是围绕 Claude 的 Agentic Harness。” 在这个广义语境下,Harness 指的是除了模型本身之外的一切。
- 区别:当需要单独推理训练管道时,Scaffold 和 Harness 的区别变得重要。Scaffold 是模型工作的依据(指令、工具、格式),而 Harness 是驱动模型执行循环的引擎。
- Harness Engineering(驾驭层工程):这是一门设计该层的技术学科,涉及决定 Agent 何时停止、如何处理错误以及设置什么护栏(Guardrails)以确保其不偏离轨道。这不仅适用于推理,也适用于训练。
- Eval Harness:在评估阶段,同样的模式表现为 Eval Harness。它不再收集训练数据,而是在模型检查点(Checkpoint)上运行固定的一组场景,记录指标而不更新权重。
- 与 Orchestrator(编排器)的区别:有些框架使用 Orchestrator 作为更高级的控制器,协调多个 Agent 之间的工作。与驱动单个模型执行循环的 Harness 不同,Orchestrator 将 Agent 视为单元进行管理,每个 Agent 运行自己的 Harness。
4. Agent(智能体)
- RL 起源:在强化学习中,Agent 只是一个函数,接收观察(Observation)并返回动作(Action)。环境接收该动作并返回新的观察,循环往复。这个循环依然是 LLM Agent 的核心。
- LLM 语境:在 LLM 世界中,Agent 的定义扩展为“模型 + 允许其行动而非仅仅响应的一切”。它将原始文本生成转化为可以在循环中行动的事物:接收信息、决定做什么、并执行结果。
- 公式:社区中通常将其概括为 Agent = Model + Harness。如果你不是模型,那你就是 Harness。
- 产品层面:当人们谈论 Claude Code、Codex 或 Cursor 时,他们指的是构建在特定模型之上的特定 Harness,两者是协同设计和优化的。即使底层模型相同,不同的 Harness 选择也会导致完全不同的产品体验。因此,模型、Harness 和产品是三个不同的概念。
5. Context Engineering(上下文工程)
设计进入 Agent 上下文窗口(Context Window)的内容:模型在每个步骤看到什么,包括系统提示、工具描述、对话历史和检索到的知识。
- 动态性:这不是一次性决定。随着模型运行,之前的回合会影响未来的调用,Harness 会在整个运行过程中主动管理这一点。
- 成本差异:在训练阶段,模型看到的内容决定了它学到了什么,出错意味着需要重新训练;在推理阶段,这仅仅是文本,修改提示词并重新部署即可。
- 记忆:
- 短期记忆:在单次运行期间保留在上下文窗口中的内容(对话历史、工具结果、之前的推理)。
- 长期记忆:跨会话持久化,存储在外部的数据库中,按需检索并在相关时注入上下文。
6. Policy(策略)
- 定义:策略是 Agent 遵循的行为规范:给定任何情况,它定义了采取每种可能动作的概率。
- 构成:在 LLM 系统中,策略的一部分由模型权重学习而来,但行为也取决于周围的 Scaffolding 和 Harness。相同的模型在不同的提示、工具、记忆和执行循环下,行为可能截然不同。
- 辨析:策略不等于 Agent。策略定义行为,而 Agent 是在环境中行动的全套系统。将检查点包裹在 Scaffolding 和 Harness 中并部署,得到的 Agent 其行为即为该策略。
7. Tool Use(工具使用)
Agent 如何向外扩展:通过 API、代码解释器、数据库、网络搜索、文件系统等。
- 流程:模型以结构化格式表达使用工具的意图。现代推理 API 将此作为一等公民对象呈现:Harness 直接接收调用并将其路由到正确的函数。结果被反馈回上下文,循环继续。
8. Skills(技能)
- 定义:可复用的、结构化的知识包,用于启用多步骤任务。
- 与工具的区别:工具是一个动作(“运行此命令”),而技能捆绑了完成目标所需的一切(“调查此 Bug,形成假设,编写修复代码”)。
- 特性:它们可以在 Agent 之间移植,并按需加载。在不同框架中,工具、技能和子 Agent 之间的界限可能会发生变化。
9. Sub-agents(子 Agent)
- 定义:由另一个 Agent 调用以处理特定子任务的 Agent。
- 特性:它拥有自己的模型和 Scaffolding,独立进行推理,并返回结果。调用方 Agent 负责整合这些结果。
关键要点
- 术语混乱是常态:目前业界对 Harness 和 Scaffold 等术语没有统一标准,不同框架用法各异。本文提供的是一种实用的思维模型,而非强制性的字典定义。
- Agent 的架构公式:
- Agent = Model + Harness
- Model:纯文本生成器,无状态,无循环。
- Scaffold:行为定义层(Prompt、工具描述、解析逻辑)。
- Harness:执行层(循环控制、错误处理、停止条件)。
- 产品体验由 Harness 决定:即使底层模型相同,不同的 Harness 设计(如 Claude Code vs. Codex)会导致截然不同的用户体验。
- 上下文工程至关重要:它贯穿训练和推理阶段。训练时出错需重训,推理时出错需重新部署。短期记忆在窗口内,长期记忆在外部存储。
- **策略 vs. 行为
