← 返回信息流
技术博客Hugging Face Blog·10 天前

Harness、Scaffold与值得厘清的AI智能体术语

原标题:Harness, Scaffold, and the AI Agent Terms Worth Getting Right

速览

本文深入探讨了AI智能体生态中的关键术语,重点解析了Harness和Scaffold的定义与区别。通过厘清这些易混淆的概念,帮助开发者更准确地理解智能体架构。这对于构建标准化的AI应用和避免技术误解具有重要意义。

AI 深度解读

Harness, Scaffold, 和 AI Agent 术语的正确理解

背景

对于初学者,甚至是试图跟上最新技术发展的从业者来说,AI Agent(智能体)领域的术语往往令人感到困惑。在 ICLR 2026 会议之后,Hugging Face 的一位作者(@ariG23498)提出了一个极具代表性的问题,精准地捕捉了这种混乱:

“在 Agent 的语境下,你们所说的 ‘Harness’(驾驭层/执行层)和 ‘Scaffold’(脚手架/支撑层)到底是什么意思?我在 ICLR 期间听到了很多解释,但我无法理解为什么大家没有达成一个统一的定义。”

这份术语表旨在为那些缺乏清晰、一致解释的术语提供 grounding(落地/锚定)。它并非旨在成为该领域每个术语的全面词典,而是聚焦于那些经常被混淆、以不同方式重复使用,或者被错误地认为是显而易见的概念。

无论你是正在构建 Agent、部署 Agent,还是仅仅在使用像 Claude Code、Codex 或 Hermes Agent 这样的工具,这些术语都会频繁出现。最后部分涵盖了特定于模型训练的概念,这更适用于从事模型训练工作的人群。

目前,许多术语尚未有 universally accepted(普遍接受)的定义,不同的框架对同一个词的使用方式也不尽相同。本文的目标不是强制推行一种“正确”的词汇表,而是提供一个实用的心智模型,使讨论更加顺畅易懂。

核心内容

为了理清这些概念,我们需要从基础组件开始,层层递进地构建对 AI Agent 的理解。

1. Model(模型)

模型即 LLM(大语言模型):它接收文本输入并生成文本输出(例如 Claude、Qwen、GPT、Kimi、DeepSeek 等)。

  • 特性:模型本身在调用之间没有记忆,也没有循环机制。
  • 局限:模型可以表达调用工具的意图,但需要 Harness(执行层)来实际执行。它回答一个 Prompt(提示词)后就停止。
  • 转化:只有将模型包裹在 Scaffold(支撑层)和 Harness(执行层)之中,它才成为一个 Agent。

2. Scaffold(支撑层/脚手架)

定义:这是围绕模型的行为定义层。

  • 构成:包括 System Prompt(系统提示词)、Tool Descriptions(工具描述)、模型响应的解析方式,以及跨步骤的记忆管理(Context Management)。
  • 作用:它塑造了模型如何看待世界以及如何行动,无论是在训练阶段还是推理阶段。
  • 广义用法:像 Claude Code、Codex 和 Antigravity CLI 这样的产品通常将整个非模型部分称为 Harness。Claude Code 的官方文档明确指出:“Claude Code 是围绕 Claude 的 Agentic Harness。” 在这种广义用法中,Harness 意味着除了模型以外的所有内容。
  • 细微差别:Scaffold 和 Harness 的区别主要在需要单独推理它们时(例如在训练管道中)才显得重要。此外,“Scaffold” 也常被更广泛地用于涵盖 Harness 所依赖的任何基础设施,如 Hooks(钩子)、运行时配置,甚至目录结构。
  • 耦合性:有些产品(如 Claude Code、Codex)与其提供商的模型紧密耦合;而其他产品(如 Antigravity CLI、Hermes Agent)则允许接入任意模型。

3. Harness(执行层/驾驭层)

定义:这是 Agent 内部的执行层。

  • 功能:它调用模型,处理模型的 Tool Calls(工具调用),并决定何时停止。Harness 是让 Agent 运行起来的关键。
  • 关系:上文定义的 Scaffold 是模型工作的基础(指令、工具、格式);而 Harness 是驱动模型执行循环的引擎。
  • Harness Engineering(执行层工程):这是一门设计该层级的学科,涉及决定 Agent 何时停止、如何处理错误,以及使用哪些 Guardrails(护栏)使其保持在正确轨道上。这适用于训练和推理两个阶段。Addy Osmani 的文章和 OpenAI 关于使用 Codex 构建产品的经历都从推理角度涵盖了这一点。
  • 评估时的表现:在评估阶段,同样的模式表现为 Eval Harness(评估执行层):它不收集训练数据,而是在模型检查点运行一组固定的场景,记录指标而不是更新权重。
  • 与 Orchestrator(编排器)的区别:某些框架使用 Orchestrator 作为协调多个 Agent 工作的高级控制器。与驱动单个模型通过执行循环的 Harness 不同,Orchestrator 将 Agent 作为单元进行管理,每个 Agent 运行自己的 Harness(详见 Sub-agents 部分)。

4. Agent(智能体)

起源:该术语源自强化学习(Reinforcement Learning),其中 Agent 仅仅是一个函数,接收观察(Observation)并返回动作(Action)。环境接收该动作并返回新的观察,循环重复。这个循环仍然是 LLM Agent 工作的核心。

在 LLM 世界的扩展

  • 定义:Agent 是模型加上周围所有让它能够“行动”而非仅仅“回应”的东西。它将原始文本生成转化为可以在循环中行动的事物:接收信息、决定做什么、并对结果采取行动。
  • 具体示例(Coding Agent)
    • Scaffold:系统提示词、工具描述、模型遵循的输出格式。
    • Harness:调用模型、处理工具调用、决定何时停止的循环。
    • 训练时:Harness 还并行运行许多这样的循环,并将结果反馈以更新模型。
  • 社区共识:通常表述为 Agent = Model + Harness(参考 @Vtrivedy10 和 Will Brown 的推文)。如果你不是模型,那你就是 Harness。
  • 产品 vs. 技术组件:当人们谈论 Claude Code、Codex 或 Cursor 等产品时,他们指的是构建在特定模型之上的特定 Harness,这两者是共同设计和优化的。使用相同底层模型的两个产品可能感觉完全不同,因为它们的 Harness 做出了不同的选择。同样,将更好的模型换入相同的 Harness 也会改变体验。模型、Harness 和产品是三个不同的东西。

5. Context Engineering(上下文工程)

定义:设计进入 Agent 上下文窗口(Context Window)的内容:模型在每个步骤看到什么,包括系统提示词、工具描述、对话历史、检索到的知识。

  • 动态性:这不是一次性的决定。随着模型运行,之前的回合会塑造未来调用中的内容,Harness 会在整个运行过程中主动管理这一点。
  • 影响差异
    • 训练时:模型看到的内容塑造了学习的内容。如果出错,需要重新训练。
    • 推理时:这仅仅是文本:更改 Prompt 并重新部署即可。
  • 记忆(Memory)
    • 短期记忆:在单次运行期间保留在上下文窗口中的内容:对话历史、工具结果、之前的推理。
    • 长期记忆:跨会话持久存在,存储在外部并按需检索,然后在相关时注入上下文。

6. Policy(策略)

定义:策略是 Agent 遵循的行为:给定任何情况,它定义了采取每个可能动作的概率。

  • 构成:在 LLM 系统中,策略的一部分由模型权重学习而来,但行为也取决于周围的 Scaffold 和 Harness。相同的模型根据其 Prompt、工具、记忆和执行循环的不同,可以表现出截然不同的行为。
  • 策略 vs. Agent:策略不是 Agent。策略定义行为;Agent 是在环境中行动的完整系统。将检查点包裹在 Scaffold 和 Harness 中并部署,你得到的就是一个行为体现该策略的 Agent。

7. Tool Use(工具使用)

定义:Agent 如何向外延伸:APIs、代码解释器、数据库、网络搜索、文件系统。

  • 流程:模型以结构化格式表达使用工具的意图。现代推理 API 将此作为一等公民对象(first-class object)呈现:Harness 直接接收调用并将其路由到正确的函数。结果被反馈到上下文中,循环继续。

8. Skills(技能)

定义:可重用的、结构化的知识包,用于启用多步骤任务。

  • 区别:工具是一个动作(“运行此命令”),而技能捆绑了
查看原文 →huggingface.co