LECTURE · AGENT INFRASTRUCTURE · ~30 MIN
Harness 是类目,Hermes Agent 是这个类目下的一只具体物种 —— 跟小龙虾无关。
路线图
先把 harness 当作类别讲清楚(它是包住 LLM 让其变成 agent 的运行时基础设施),再澄清 Hermes 这个词在 Nous Research 周边的两个所指(一个模型系列、一个 2026 年发布的具体 agent 产品),然后把 Hermes Agent 放进 harness 的坐标系里跟 Claude Code 做四轴对比,最后给一张图把"类别 / 实例 / 引擎"的关系压平。先类别后实例,顺序不能反 —— 否则你会把 Hermes Agent 跟 harness 当成并列概念,实际上前者是后者的一个具体物种。
问题里的"小龙虾"跟 harness、Hermes Agent 没有任何已知的技术或语义关联。希腊神 Hermes 是奥林匹斯十二神之一,信使,与甲壳类毫无关系;Nous Research 选这个名字多半是因为它在 Hacker / Hermeticism 传统里指代知识与边界的传递者。下文不再提小龙虾。
Harness 是什么
一句话:harness 是包住 LLM 的运行时框架,负责把"一个文本补全 API"变成"一个能干活的 agent"1。LLM 本身是无状态的 —— 你给它一段 prompt,它给你一段回应,完事。但你不能让用户每问一次都自己手动喂上下文、解析模型输出里的工具调用 JSON、自己去执行那个 bash 命令、再把结果塞回去循环。这一整套"喂、解析、执行、回塞、判断要不要再来一轮"的胶水,就是 harness。
更细一点,一个像样的 harness 至少要管这几件事2:
- 主循环(agent loop) —— 决定什么时候继续调模型,什么时候停下来等用户,什么时候算"完成了"。
- 工具调用 —— 从模型输出里识别出"我要调 X 工具",真的去执行,把结果格式化塞回下一次 prompt。
- 上下文管理 —— 当对话变长,做总结、压缩、滑动窗口、子任务剥离(subagent)。这是 harness 的真正硬功夫。
- 记忆系统 —— 跨会话的持久化:文件、向量库、procedural memory、用户画像。
- 权限与守门 —— 哪些工具不需要问、哪些需要用户点同意、哪些直接禁止。
- Hook / lifecycle —— 在工具调用前后、prompt 提交时、agent 停下时,插入用户自定义脚本。
- 系统 prompt 与 skill 注入 —— 决定模型每次看到哪些指令、哪些被动加载的能力包。
你正在用的 Claude Code 就是 harness 的一个例子。Cursor、Aider、Cline、Codex、OpenHands 都是3。它们背后的模型可以是同一个(比如都用 Claude Sonnet),但用户体验、agent 行为、能干多大的活,差异主要来自 harness 的工程质量 —— 这就是为什么"harness engineering"在 2025-2026 年成了一个独立讨论的方向。
用户说"看一下这个目录有什么文件"。harness 内部干的事:① 把用户消息加进 conversation;② 加上 system prompt 和当前 cwd / 工具清单;③ 调 LLM API;④ LLM 输出 {"tool":"bash","cmd":"ls"};⑤ harness 解析出 tool call,检查权限(读目录免询问),执行,拿到 stdout;⑥ 把 stdout 包成 tool_result,加进 conversation;⑦ 再次调 LLM,模型输出"目录里有 a.py / b.md ...";⑧ harness 检测到模型没再发起 tool call,跳出循环,把答复给用户。LLM 本身只看到 ④、⑦ 两次的视角 —— 中间所有调度、执行、错误处理、上下文拼接都是 harness 在干。
"harness 就是 SDK 或者 framework,比如 LangChain。" 不对。SDK / framework 是建 harness 的工具,不是 harness 本身。LangChain 给你 chain 和 agent 抽象,但你拿它做出的某个产品(比如公司内部的 agent 平台)才是 harness。Claude Code 不是用 LangChain 做的,Cursor 也不是,但它们都是 harness。
Hermes 这个词的双重身份
在 Nous Research 的语境里,"Hermes" 指代两个不同的东西,经常被混用。不区分,你就会在网上读到自相矛盾的描述。
2.1 Hermes 模型系列(一组开源 LLM)
Nous Research 是一个偏开源、偏"自由对齐"(less aggressive RLHF refusal)的研究组织。Hermes 是他们旗舰的微调线4:
| 版本 | 发布 | 基底 | 规模 | 卖点 |
|---|---|---|---|---|
| Hermes 2 / OpenHermes | 2023 | Mistral 7B / Llama 2 | 7B-13B | 早期开源指令微调 |
| Hermes 3 | 2024-08 | Llama 3.1 | 8B / 70B / 405B | 稳定 function calling、可控人格 |
| Hermes 4.3 | 2025-08 | ByteDance Seed 36B 🟡 | 36B | 离开 Llama 谱系 |
这一支属于引擎层(model layer)。你可以把任何 Hermes 模型挂到任何 harness 里用。"Hermes 模型" 和 "用 Hermes 模型组装的 agent",在 Nous 自己出 Hermes Agent 之前,经常被人简称为 "Hermes agent",这就是混淆的源头。
2.2 Hermes Agent(一个具体的 agent 产品)
2026 年 Nous Research 单独发布了一个产品,就叫 Hermes Agent,仓库 NousResearch/hermes-agent,MIT 协议,Python 主体,当前 v0.13.05。官方广告语是"The Agent That Grows With You"。关键定位:
- Server-resident —— 部署在你自己的服务器 / VPS / Docker / Modal / Daytona 里长期运行,不是终端临时拉起的 CLI。
- Model-agnostic 🟢 —— 重点。README 原文:"Use any model you want — Nous Portal, OpenRouter, NovitaAI, NVIDIA NIM, Xiaomi MiMo, z.ai/GLM, Kimi/Moonshot, MiniMax, Hugging Face, OpenAI, or your own endpoint. Switch with
hermes model— no code changes, no lock-in." 也就是说 Hermes Agent 不绑 Hermes 模型,理论上你完全可以让它跑在 GPT-5 上、或 Claude 上6。 - 多平台接入 —— Telegram / Discord / Slack / WhatsApp / Signal / Email / CLI,单 gateway 进程多接入。
- 自学习 —— agent-curated memory + 自动从复杂任务里 distill 出新 skill,旧 skill 在使用中自己改进。基于 Honcho 做用户画像建模,FTS5 + LLM summarization 做跨会话搜索。
- 子 agent —— spawn 隔离的并行 subagent。
你在 Telegram 上让 Hermes Agent 帮你做一个复杂研究流程:搜资料、做对比表、生成报告。完成后它会:① 把这次的成功 trace 抽象成一个 "research-and-compile" skill;② 写进 procedural memory;③ 下次你说"帮我研究 X",它会自动复用这个 skill —— 你不需要再写一遍指令。这就是它跟 Claude Code"每次都要手写 SKILL.md"工作流的差异化抓手。
"Hermes Agent 就是用 Hermes 模型做的 agent。" 错。Hermes Agent 是 model-agnostic 的 harness 产品,跟 Hermes 模型只是同一个组织出品、共享命名,技术上完全解耦。你甚至可以用 Hermes Agent 跑 OpenAI 的 GPT。
Hermes Agent vs Claude Code:两种 harness 哲学
因为你大概率在 Claude Code 这条线工作,把 Hermes Agent 跟 Claude Code 直接比对,信息量最大。两者都是 harness,但代表的设计哲学几乎站在对立面。
| 维度 | Claude Code | Hermes Agent |
|---|---|---|
| 主战场 | 软件工程 / 代码任务 | 通用自治助理 |
| 运行位置 | 用户终端(CLI / 桌面 / IDE 插件) | 常驻 server,后台进程 |
| 模型耦合 | 绑 Anthropic 模型(Claude 4.X) | Model-agnostic,任意 endpoint |
| 记忆模式 | 手写 CLAUDE.md / memory 文件,用户主导 | 自动学习,Honcho 用户画像,自动 skill 生成 |
| 入口 | CLI / VS Code / JetBrains / Web | Telegram / Discord / Slack / WhatsApp / Signal / Email / CLI |
| 许可 | 闭源(产品) | MIT(代码开源) |
| 会话模式 | 每个项目一个会话,人在场 | 常驻 + 异步,可调度自动任务 |
表面看是功能差异,底层是两种 agent 哲学的分歧。
3.1 Claude Code 的哲学:Copilot-style
人是主导者,agent 是放大器7。每次对话有明确开始结束,agent 在你的工作流里出现、帮你干一段、消失。记忆是显式的 —— 你写 CLAUDE.md,你写 skill,你管理 memory 文件。优点是可预测、可审计、不会偷偷长出你不知道的能力;代价是 agent 不会自己变聪明,每个新会话起点差不多。它假设"用户清楚自己要 agent 做什么"。
3.2 Hermes Agent 的哲学:Autonomy-first
Agent 是一个独立的、长期存在的实体,会自己在 Telegram / Slack 找你说话,会自己从一次任务里抽出 skill,会自己建你的用户画像。NVIDIA 在它的博客里把 Hermes Agent 形容为"自我改进的 AI agent"8,卖点就是跨会话累积。优点是用得越久越懂你、越省事;代价是不透明 —— 它学了什么、画了你什么像、为什么这次行为变了,普通用户难以审计。它假设"用户希望 agent 自己想办法"。
这两种哲学不是哪种"更先进"的问题,而是适配什么场景。开发者在 IDE 里写代码 → copilot 哲学更合理(你不想代码里偷偷出现 agent 学会的模式)。一个全家共用的家庭助理 → autonomy-first 哲学更合理(它该记得奶奶喜欢吃辣)。Claude Code 在场景一里赢,Hermes Agent 在场景二里赢。把哪个产品当"通用 AI agent 的下一代",都是误读。
三者关系最简图
把"harness 是类别 / Hermes Agent 是实例 / Hermes 模型是引擎"画成一张图,90% 的混淆就消失:
- harness 和 Hermes Agent 不是平行概念。Hermes Agent 是 一个具体 harness。说"harness vs Hermes Agent"就像说"水果 vs 苹果"。
- Hermes 模型 vs Hermes Agent 才是真正的平行关系:前者在引擎层,后者在 harness 层。它们都姓 Nous,但住在不同楼层。
- Hermes Agent 内部不强制用 Hermes 模型。你可以用 Hermes Agent 套 GPT-5,这跟你可以用 Tesla 充非超充桩,是同一种 model-agnostic。
- Claude Code 内部强制用 Anthropic 模型。这是 Anthropic 的商业选择,不是技术限制。
综合判断
harness 是 2025-2026 年从 agent 工程实践里收敛出来的术语,指包住 LLM 的整套运行时基础设施 —— 主循环、工具调度、上下文管理、记忆、权限、hook、子 agent。被业界普遍认为与"模型本身"同等重要的工程方向。Claude Code、Cursor、Aider、Cline、Hermes Agent 都是 harness 的具体实例。Hermes Agent 是 Nous Research 在 2026 年发布的一个具体 harness 产品,MIT 协议、Python 主体、server-resident、model-agnostic,主打自主学习与跨会话生长(自动生成 skill、Honcho 用户画像、procedural memory)。它跟你正在用的 Claude Code 同属 harness 类别,但代表相反的设计哲学:Claude Code 是 copilot-style(人主导、显式记忆、闭源、绑 Anthropic 模型),Hermes Agent 是 autonomy-first(agent 主导、隐式自学、开源、任意模型)。两者不是替代关系,是不同生态位的产品。"Hermes" 这个词在 Nous 周边出现时务必看上下文 —— Hermes 3 / 4.3 是模型,Hermes Agent 是 harness,前者可以跑在任意 harness 里,后者可以跑任意模型,两者技术上完全解耦,只是同一组织共享品牌。"小龙虾" 跟以上任何一者都没有已知关联,从希腊神话词源到 Nous 命名传统到 agent 工程术语,都查不到对应。
关键不确定性
- Hermes 4.3 的基底 🟡:报道基于 ByteDance Seed 36B,来自单一搜索结果(Nous release tracker),没在 arXiv / HuggingFace 直接交叉。Hermes 4 与 4.3 是同一代还是 4.3 为后续小版本,也未确证。引用前请查 Nous 官网 / HuggingFace 页面。
- Hermes Agent 在 OSWorld 上 66.3% 🟡:来自单一搜索结果,未对原始 benchmark 报告做交叉。可能真实也可能营销材料,用作技术决策依据请单独 verify。
- "Claude Code 是 harness" 的定位 🟢 业界共识但非官方:Anthropic 自己没在公开材料里把 Claude Code 明确定性为 "harness";这个词更多是 LangChain、Martin Fowler、Addy Osmani 等社区在外部观察时给的归类。准确的描述,但不是 Anthropic 的官方自我标签。
- Hermes Agent 的成熟度:当前 v0.13.0(小于 1.0),官方文档里有"快速迭代中"痕迹。本讲稿基于 2026-05 的快照,过 3 个月接口可能已经变化。
- 是否还有第三种叫 "Hermes" 的 agent 产品:不排除其他组织也用了 Hermes 命名(希腊神名字使用率高),但 LLM agent 周边,Nous 这两个所指(模型 + Agent 产品)是主流提及。
引用
- LangChain — The Anatomy of an Agent Harness — langchain.com/blog/the-anatomy-of-an-agent-harness
- Parallel.ai — What is an agent harness in the context of large-language models? — parallel.ai/articles/what-is-an-agent-harness
- Martin Fowler — Harness Engineering for Coding Agent Users — martinfowler.com/articles/harness-engineering.html
- Nous Research — Hermes 3 — nousresearch.com/hermes3
- Teknium et al. — Hermes 3 Technical Report (arXiv 2408.11857) — arxiv.org/pdf/2408.11857
- Hermes Agent 2026 Release Tracker(单一来源,采信前请交叉验证)— petronellatech.com/blog/hermes-agent-ai-guide-2026
- Hermes Agent 官网 — hermes-agent.nousresearch.com
- GitHub — NousResearch/hermes-agent — github.com/nousresearch/hermes-agent
- NVIDIA Blog — Hermes Unlocks Self-Improving AI Agents, Powered by NVIDIA RTX PCs and DGX Spark — blogs.nvidia.com/blog/rtx-ai-garage-hermes-agent-dgx-spark