← 返回文章列表

看仔细,Harness和Hermes不一样

AI
  • # ai
  • # agent
  • # harness
  • # hermes

Harness 和 Hermes 长得很像,在讨论 AI Agent 时也经常出现在同一段话里。不过它们不是两个同类的产品名,更不能直接互换。

先把最重要的区别说清楚:

  • harness 是一个通用概念,指围绕模型搭建的运行系统。
  • Hermes Agent 是 Nous Research 开发的一个具体 Agent 项目。

两者更接近“类别”和“实现”的关系。Hermes Agent 本身包含 agent harness 常见的组成部分,但不能因此把所有 harness 都叫作 Hermes。

Harness 是模型外面的运行层

单独调用大模型时,我们通常给它一组消息,然后等待它返回文本或工具调用。要让模型持续完成一个真实任务,还需要在外面补上不少东西:准备上下文、提供工具、执行工具调用、把结果交还给模型,并判断任务应该继续还是结束。

这套围绕模型运行的系统通常就叫 agent harness。它可能包括:

  • 系统提示词和上下文管理
  • 模型与 Provider 的适配
  • 文件、终端、浏览器等工具
  • 工具权限与沙箱
  • Agent 循环和任务状态
  • 会话、记忆、验证与人工确认

不同项目对 harness 的边界并不完全一致。有些只做很薄的工具调用循环,有些会把记忆、任务调度、子 Agent 和用户界面也算进去。因此,harness 更适合用来描述一层工程能力,而不是指向唯一的软件。

可以先用一个简化结构理解:

用户
  ↓
Harness:上下文、工具、循环、权限、状态
  ↓
模型

模型负责理解和生成,harness 负责让这些输出能够在真实环境里执行。两者会一起影响最终效果。同一个模型放进不同的 harness,或者只使用不同的 harness 配置,也可能因为系统指令、上下文、工具接口、环境反馈和循环策略不同而产生不同表现。

Hermes 是一个具体实现

Hermes Agent 是 Nous Research 开源的 Agent 软件。它把模型接入、Agent 循环、工具调用、会话、持久记忆和 Skills 等能力组合在一起,让模型能够在终端或消息平台中持续工作。

所以 Hermes Agent 不是与 harness 对立的另一种东西。更准确地说,Hermes Agent 是一个具备 harness 主要能力的具体 Agent 项目。按这种功能归类,当有人问“你用什么 harness”时,Hermes 可以是答案之一;当有人讨论“怎样设计 harness”时,他谈的则不一定是 Hermes。

这里还有一层容易忽略的命名问题。Nous Research 同时使用 Hermes 命名模型系列,例如 Hermes 3 和 Hermes 4。Hermes Agent 是运行 Agent 的软件,Hermes 3/4 是模型。一个项目和一组模型也不能因为名字相同就混为一谈。

为什么要分清

如果只是把单词拼错,影响可能只是搜索不到正确文档。更麻烦的是把模型、harness 和 Agent 产品混成一个概念,最后连问题出在哪一层都判断不了。

模型不会调用工具,可能是模型本身不支持对应的 tool calling,也可能是 harness 生成了错误的工具定义;长任务做到一半丢失信息,可能受模型上下文窗口影响,也可能是 harness 的压缩和记忆策略出了问题。一次失败不足以判断责任在哪一边,但只有先分清层次,排查和比较工具时才知道自己真正面对的是什么。

以后再看到这两个词,可以先停一下:harness 说的是模型外面的运行层,Hermes 在 Agent 语境里通常说的是一个具体项目。它们确实有关,但不是一回事。