Q1 - 什么是 Agent Harness,跟 Agent System 有什么区别?
Agent Harness(智能体运行框架)是让 AI 模型真正成为一个能够持续执行任务的 Agent 的运行与控制机制。
它与 Agent System 的关系非常密切,但两者的抽象层级不同:
- Agent Harness:关注 Agent 如何运行、如何调用模型和工具、如何管理上下文,以及如何控制执行过程。
- Agent System:关注一个或多个 Agent 如何与其他软件组件共同构成完整系统,实现特定目标。
可以简单理解为:Harness 是 Agent 的运行与控制核心,而 Agent System 是包含这一核心的完整软件系统。
不过,Harness 的行业用法还没有完全统一。有些框架将它定义为 Agent Runtime 的一种封装,有些则将上下文、记忆、工具、权限和运行治理都纳入 Harness。下面结合本站正在整理的全栈地图来解释。
一、什么是 Agent Harness?
Microsoft Agent Framework 将 Agent Harness 描述为一种运行时支撑结构,负责模型调用、工具执行、上下文管理、审批策略和多步骤任务推进。
Google Cloud 也采用类似定义,强调 Harness 是包围 AI 模型的运行基础设施和控制层,使模型能够使用工具、维护状态、执行多步骤任务。
假设你有一个大语言模型,并希望它帮你完成公司调研。
模型本身能够理解问题、推理和生成内容,但要让它真正执行任务,还需要一套程序负责:
- 将用户任务、系统指令和上下文发送给模型。
- 接收模型返回的决策。
- 判断模型是否请求调用工具。
- 执行搜索、文件读取或其他工具。
- 将工具结果重新发送给模型。
- 保存执行状态,并判断任务是否继续。
- 在必要时处理错误、权限审批或执行终止。
负责组织这一过程的运行机制,就是 Agent Harness。
其典型结构可以表示为:
Agent Harness
┌──────────────────────────────────┐
│ │
│ Context Management │
│ ↓ │
│ Model Calling │
│ ↓ │
│ Decision Handling │
│ ↓ │
│ Tool Execution │
│ ↓ │
│ Result Processing │
│ ↓ │
│ State Management │
│ ↓ │
│ Continue / Stop │
│ │
└──────────────────────────────────┘
│ │
▼ ▼
AI Model External Tools模型负责产生决策,Harness 负责让决策能够被执行,并维护整个执行过程。
二、Agent Harness 包含哪些核心部分?
一个典型的 Harness 可以从以下八个方面理解:
| 组成部分 | 英文名称 | 主要职责 |
|---|---|---|
| 1. 执行循环 | Agent Loop | 控制模型调用、工具执行和反馈循环 |
| 2. 模型调用 | Model Interface | 连接模型服务,组织请求和响应 |
| 3. 上下文管理 | Context Management | 构建 Prompt、管理上下文窗口和信息压缩 |
| 4. 工具管理 | Tool Management | 注册工具、分发调用、处理执行结果 |
| 5. 状态管理 | State Management | 维护会话、任务进度和执行状态 |
| 6. 记忆机制 | Memory | 读取和保存需要跨步骤或跨会话使用的信息 |
| 7. 执行控制 | Execution Control | 管理停止条件、超时、重试和错误处理 |
| 8. 安全与监控 | Guardrails & Observability | 权限审批、执行追踪、日志和运行监控 |
这些是常见职责的归纳,并不是所有 Harness 都必须包含八个独立模块。
其中,Agent Loop 是最核心的部分。其他能力可以根据系统需求逐渐增加。
例如,Cloudflare Agents 文档将 Harness 主要描述为负责 Agent 行为的执行循环,同时将持久化基础设施、网络连接等能力放在更底层的 Runtime 中。这说明 Harness 与 Runtime 的具体边界取决于框架设计。
三、Agent Harness 与 Agent System 有什么区别?
我们从技术职责、组成范围和架构层级三个角度比较。
| 对比维度 | Agent Harness | Agent System |
|---|---|---|
| 核心定义 | Agent 的运行与控制机制 | 围绕 Agent 构建的完整软件系统 |
| 主要关注 | Agent 如何执行任务 | 系统如何实现整体目标 |
| 核心职责 | 模型调用、工具执行、上下文、状态、执行循环 | Agent 执行、任务组织、外部集成、系统运行与治理 |
| 技术范围 | 主要集中于 Agent Runtime 及其周边能力 | 涉及模型、基础服务、Agent 引擎、编排、应用等 |
| Agent 数量 | 可以运行一个或多个 Agent | 可以是 Single-Agent 或 Multi-Agent |
| 多 Agent 编排 | 部分 Harness 支持 | 根据系统需求决定 |
| 用户界面 | 通常不属于 Harness 核心 | 可以包含 Web、App、API 等 |
| 基础设施 | 通常依赖外部运行环境 | 需要相应基础设施支持,但不一定自行部署 |
| 关系 | 可以作为 Agent System 的核心运行组件 | 可以包含一个或多个 Harness |
这里有一个值得注意的区别:
Harness 主要关注执行机制,System 主要关注完整的软件系统边界。
例如,一个 Agent Harness 可以负责运行 Research Agent,但如果要将它变成一个完整的自动化研究系统,还可能需要增加任务数据库、报告存储、用户界面、调度服务和业务流程管理。
这些共同构成 Agent System。
四、Agent Harness 在六层技术架构中的什么位置?
这是与正在建立的全栈地图最相关的问题。
目前采用的六层架构是:
| 层级 | 名称 |
|---|---|
| L6 | Application · 应用 |
| L5 | Orchestration & Collaboration · 编排与协作 |
| L4 | Agent Engine · 执行引擎 |
| L3 | Model Services · 模型服务 |
| L2 | Platform Services · 基础软件服务 |
| L1 | Infrastructure · 基础设施 |
在这套参考架构中,Agent Harness 的核心职责主要位于 L4 Agent Engine,但可能延伸到 L5 和多个横向工程能力域。
可以这样理解:
┌────────────────────────────────────┐
│ L6 Application │
│ 用户界面 / API / 业务应用 │
├────────────────────────────────────┤
│ L5 Orchestration & Collaboration │
│ 工作流 / 多 Agent 协作 │
│ ▲ │
│ │ 部分 Harness 涉及 │
├──────────┼─────────────────────────┤
│ L4 Agent Engine │
│ │
│ ┌────────────────────────┐ │
│ │ Agent Harness │ │
│ │ │ │
│ │ Agent Loop │ │
│ │ Model Interface │ │
│ │ Context Management │ │
│ │ Tool Management │ │
│ │ Execution Control │ │
│ └────────────────────────┘ │
│ │
├────────────────────────────────────┤
│ L3 Model Services │
├────────────────────────────────────┤
│ L2 Platform Services │
├────────────────────────────────────┤
│ L1 Infrastructure │
└────────────────────────────────────┘这里要特别注意:Agent Harness 并不是 Agent Engine 之外必须额外增加的第七层。
Agent Harness 是一种运行机制或运行组件的概念,Agent Engine 则是我们在全栈地图中定义的逻辑技术层级。
两者不是同一种分类维度。
在一些框架中,Harness 可能直接就是 Agent Engine 的核心实现;在另一些框架中,Agent Engine 可能包含 Harness、工具执行器、状态管理器和其他运行组件。
五、Agent Harness、Agent Runtime、Agent Framework 有什么区别?
这三个概念很容易混淆。
| 概念 | 主要含义 | 关注重点 |
|---|---|---|
| Agent Framework | 用于开发 Agent 的软件框架、库和抽象 | 如何开发和组织 Agent |
| Agent Runtime | 支持 Agent 实际运行的软件环境与机制 | Agent 如何运行 |
| Agent Harness | 组织模型决策、工具调用、上下文与执行循环的控制机制 | Agent 的行为如何被驱动和控制 |
它们之间存在大量重叠。
例如:
- Framework 可能提供 Harness 的实现。
- Runtime 可能直接包含 Harness。
- Harness 可能使用 Runtime 提供的状态持久化、调度和执行环境。
- 某些产品直接将 Harness 和 Runtime 作为近义词使用。
因此,不建议在知识体系中强行规定三者必须对应三个独立的软件组件。
更适合的处理方式是:
Framework 是开发工具层面的概念,Runtime 是运行能力层面的概念,Harness 是运行控制层面的概念。
这一划分有助于理解职责,但具体技术产品可能将这些职责封装在一起。
六、一个具体例子:自动化公司调研系统
假设你要开发一个 Agent System,能够根据公司名称自动完成企业信息调研。
系统包含三个 Agent:
- Research Agent:收集公司信息。
- Analysis Agent:分析公司业务。
- Report Agent:生成研究报告。
那么可以这样划分:
1. Agent
每个 Agent 都有自己的任务目标、模型配置、指令和工具权限。
Research Agent 负责寻找资料,Analysis Agent 负责分析,Report Agent 负责撰写。
2. Agent Harness
Harness 负责让每个 Agent 实际运行。
例如,Research Agent 的 Harness 会执行:
接收调研任务
↓
准备上下文
↓
调用 LLM
↓
模型决定搜索公司官网
↓
Harness 调用搜索工具
↓
获取搜索结果
↓
Harness 更新上下文
↓
再次调用 LLM
↓
模型决定继续搜索
↓
...
↓
任务完成3. Orchestration
编排层负责组织三个 Agent 的执行关系。
Research Agent
↓
Analysis Agent
↓
Report Agent
↓
最终研究报告如果 Research Agent 没有找到足够的信息,编排层可以要求其补充调研。
4. Agent System
完整的 Agent System 还需要处理:
- 用户如何提交研究任务。
- 如何管理任务状态。
- 如何保存调研资料。
- 如何协调三个 Agent。
- 如何审核最终报告。
- 如何处理失败任务。
- 如何向用户展示研究结果。
因此,Harness 解决 Agent 如何运行的问题,Orchestration 解决任务和 Agent 如何协作的问题,Agent System 则涵盖整个任务执行与交付过程。
不过,具体框架可以把 Harness 和 Orchestration 放在同一套软件中。OpenAI Agents API 架构文档就明确区分了 Harness、执行环境与应用服务器的职责。