Files
AgentMessage/Openclaw-Herems/02-Hermes-Harness.md

15 KiB
Raw Permalink Blame History

Hermes AgentHarness 完整架构与创新模式

资料来源Hermes Agent 官方文档、Pyshine Orange Book、dev.to 技术深度解析、Nous Research GitHub 及 ArXiv 相关研究 整理时间2026-05-06


一、总体架构

1.1 核心理念:从 Harness 到 Agent

Hermes Agent 源自 Nous Research 的 Harness 工程框架,完成了一次从"开发者工具"到"自主智能体平台"的根本性转变。这不是简单的重命名,而是 AI 工程第三范式转移的体现:

范式 核心 特点
Prompt Engineering 优化提示词 手工调试,易出错
Context Engineering 管理上下文 复杂,仍是被动的
Harness Engineering 自我进化的控制基础设施 主动学习,持续改进

核心洞察:模型提供智能,但 Harness 提供控制。没有 Harness将 LLM 部署到生产环境就像"把喷气发动机直接连到方向盘上"——有动力但无控制系统。

1.2 三层架构概览

┌────────────────────────────────────────────────────────────┐
│                     ENTRY POINTS                           │
│  CLI / TUI / Gateway (TG, Discord, Slack) / Cron / Batch  │
└─────────────────────┬──────────────────────────────────────┘
                      │ 每个入口构建一个 AIAgent
                      ▼
┌────────────────────────────────────────────────────────────┐
│              AIAgent (核心循环 ~13,700 行)                   │
│  build_system_prompt → call model → dispatch tools → loop │
└──────┬─────────────┬──────────────┬───────────┬───────────┘
       │             │              │           │
       ▼             ▼              ▼           ▼
┌──────────┐  ┌──────────┐  ┌────────────┐ ┌─────────────┐
│  Tools   │  │  Skills  │  │  Memory    │ │  Providers  │
│ Registry │  │  Loader  │  │  Manager   │ │ (model API) │
└──────────┘  └──────────┘  └────────────┘ └─────────────┘
                                                        │
       ┌────────────────────────────────────────────────┘
       ▼
┌────────────────────────────────────────────────────────────┐
│     Execution Environments: local / Docker / SSH / Modal  │
└────────────────────────────────────────────────────────────┘

三层语义

  • 第一层Surfaces:人/系统如何与 Agent 对话CLI、聊天平台、Cron
  • 第二层Agent Core:循环 + 四个可插拔子系统(工具、技能、记忆、模型)
  • 第三层ExecutionShell/代码执行的实际运行环境

1.3 核心组件

组件 文件 功能
AIAgent run_agent.py 核心对话循环,同步编排引擎
HermesCLI cli.py 交互式终端 UI
Gateway gateway/run.py 消息平台网关
Tool Registry tools/registry.py 61 个注册工具52 个工具集
SessionDB hermes_state.py SQLite + FTS5 全文本搜索
Prompt Builder agent/prompt_builder.py 系统提示组装
Skill Manager agent/skill_commands.py 技能生命周期管理

1.4 Agent 循环(核心执行流程)

1. 接收输入 ── CLI / gateway / cron / ACP / web
2. 构建系统提示 ── persona + memory + skills + tools会话期间仅一次
3. 解析 Provider ── 选择哪个 API key + endpoint
4. 调用模型 ── 支持 4 种 API 模式:
   chat_completions | codex_responses | anthropic_messages | bedrock_converse
5. 解析响应:
   ├─ 存在 tool_calls → 分发到 registry → 追加结果 → 回到步骤 4
   └─ 否则 → 最终回复 → 展示 → 持久化 → 完成
6. 持久化 ── SQLite SessionDBWAL 模式 + FTS5 索引)

二、Harness 的定义与作用

2.1 什么是 Harness

Harness 是围绕模型的基础设施层,它将 LLM 转化为可控的、可审计的、可投入生产使用的智能体。具体包括:

Harness 职责 Hermes 实现
工具中介 (Tool Mediation) 61 个内置工具 + 动态 MCP 集成
上下文管理 (Context Management) 三层记忆 + FTS5 检索 + 上下文压缩
委托分发 (Delegation) 最多 3 个并发子 Agent
安全控制 (Safety Control) 四层防护Tirith 扫描 / Regex 检测 / LLM 风险评级 / 审批范围
编排调度 (Orchestration) AIAgent 单一类服务所有入口

2.2 五大子系统

Central Orchestration Core
         │
    ┌────┼────┬────┬────┐
    ▼    ▼    ▼    ▼    ▼
 ┌────┐┌────┐┌────┐┌────┐┌──────┐
 │Skill││Memory│ │Tool│ │Gateway││Learning│
 │System││System│ │Eco-│ │Layer │ │  Loop │
 │   │ │   │ │system│ │   │ │      │
 └────┘└────┘└────┘└────┘└──────┘

2.3 从 Harness 进化到 Hermes 的五层映射

Harness 层 Hermes 进化
指令层 技能系统:静态提示模板 → 动态可进化技能
约束层 工具权限:刚性执行边界 → 粒度化权限模型
反馈层 学习循环Harness 将反馈当日志 → Hermes 闭合循环
记忆层 三层记忆:临时上下文 → Session/Persistent/Skill 三层结构
编排层 子 Agent 委托:单线程 → 最多 3 个并发子 Agent

三、创新点(核心差异化)

3.1 学习循环飞轮(最核心创新)

Hermes 区别于其他 Agent 框架的根本在于五步学习循环,形成自我强化飞轮:

┌─────────────┐
│ 1. 记忆管理  │ ── 评估对话,筛选值得保留的信息
└──────┬──────┘
       ▼
┌─────────────┐
│ 2. 技能创建  │ ── 重复模式 → 自动蒸馏为新 Skill
└──────┬──────┘
       ▼
┌─────────────┐
│ 3. 技能自改进│ ── 达尔文压力:表现好的技能存活并传播
└──────┬──────┘
       ▼
┌─────────────┐
│ 4. FTS5 召回│ ── 全量历史语义检索,不只依赖当前上下文
└──────┬──────┘
       ▼
┌─────────────┐
│ 5. 用户建模  │ ── 通过 Honcho 构建用户画像(风格/专业/偏好)
└──────┬──────┘
       │
       └────── "更好记忆 → 更好技能 → 更好结果 → 更丰富反馈 → 更精确用户模型 → 更相关记忆"飞轮闭环

关键Agent 通过 skill_manage 工具自己编写 Skills自己编辑 MEMORY.md——不是人类在改代码而是 Agent 在自我进化。

3.2 三层记忆架构(类人认知)

层级 类型 内容 存储 回答问题
Session Memory 情景记忆 单次对话全内容、工具调用结果、推理步骤 SQLite "这次对话发生了什么?"
Persistent Memory 语义记忆 身份、关系、长期知识 MEMORY.md + USER.md纯文本 "我是谁?用户是谁?"
Skill Memory 程序记忆 如何执行任务的步骤 ~/.hermes/skills/ 的 Markdown "我怎么做这件事?"

这三重结构直接对应人类认知架构(情景/语义/程序记忆),是有意为之的设计哲学,而非偶然。

3.3 技能系统Skills as Runbooks

Skills 不是代码,也不是配置,而是Agent 可读取和增长的 Markdown 运行手册

---
name: article-summarizer
description: 以结构化格式总结文章
triggers:
  - summarize
  - tl;dr
tools:
  - web_search
  - web_scraper
  - file_write
---

# Article Summarizer

你是一个善于提炼文章为清晰结构化摘要的专家。

## Instructions
1. 使用 web_search 或 web_scraper 获取文章内容
2. 识别核心论点、支撑论据和结论
3. 格式化摘要为:
   - **论点**:一句话核心论点
   - **关键点**3-5 个要点
   - **结论**:影响和收获
4. 如有需要保存摘要

三种来源

  1. 内置技能40+:开箱即用
  2. Agent 自创技能:重复模式 → 自动蒸馏 → 存放本地 → 可继续改进
  3. 社区 Skills Hub:遵循 agentskills.io 标准,可分享安装

3.4 渐进式加载Progressive Disclosure

Hermes 不一次性加载所有技能、记忆和工具文档,而是分层加载:

层级 内容 时机
Level 0 Skills 索引(名称+描述) 始终在系统提示中
Level 1 实际技能内容 Agent 真正需要时才注入
Level 2 引用的外部文件 技能自己请求时才加载

这就是为什么 Hermes 可以携带 47 个工具和数十个技能,而不会超出上下文限制。

3.5 平台无关核心One Agent, Many Surfaces

单个 AIAgent 类服务所有入口,平台差异只存在于薄薄的适配层:

入口 说明
CLI / TUI 交互式终端
Gateway 20 个消息平台Telegram/Discord/Slack/WhatsApp/飞书/微信等)
ACP VS Code / Zed / JetBrains IDE 集成
Cron 定时任务JSON 配置,支持绑定技能)
Batch Runner 批量轨迹生成(训练数据管道)
Web UI 网页界面
API Server REST API

跨平台对话连续性:用户可以在 Telegram 开始对话,切换到 Discord 继续,全程共享同一上下文。

3.6 自注册模式Self-Registration

工具和插件在导入时通过 registry.register(...) 自注册,而不是维护中心列表:

  • 新增工具 = 新增一个 .py 文件,无需修改其他代码
  • MCP 服务器即插即用
  • 插件通过 ~/.hermes/plugins/ 自动发现

3.7 提示缓存友好设计Prompt Stability

系统提示在会话启动时组装,会话期间不改变。原因:

  • Anthropic / OpenAI 的提示缓存要求稳定前缀才能命中
  • 会话中改变工具集、重新加载记忆会破坏缓存,成本可能增加 10 倍
  • 新记忆在磁盘写入,但系统提示不变——下次会话生效

3.8 四层安全防护

第1层TirithRust 外部扫描器)
  └─ 同形异义词 URL、终端注入ANSI 转义隐藏命令)

第2层Regex 危险命令检测
  └─ 归一化后检测(忽略大小写/空格),防止 RM -RF 绕过

第3层Smart ApprovalLLM 风险评级)
  └─ 低风险自动批准,中/高风险需人工确认

第4层Approval Scopes信任累积
  └─ Once / Session / Permanent 三级,逐步建立信任

3.9 执行环境抽象

同一工具可在不同执行环境中运行Agent 本身无感知:

环境 用途 隔离级别
local 开发笔记本,最快,零隔离
docker 共享开发机,每个会话一个容器 容器级
ssh 远程 VM VM 级
daytona / modal Serverless 沙箱,按需启动 强隔离
singularity HPC 集群 集群级

四、设计原则汇总

原则 实践
提示稳定性 系统提示会话期间不变,不破坏缓存
可观察执行 每个工具调用通过 callbacks 对用户可见
可中断 API 调用和工具执行可在中途取消
平台无关核心 一个 AIAgent 服务所有入口,平台差异在适配层
松耦合 MCP、插件、记忆提供者使用注册模式不硬依赖
Profile 隔离 每个 profile-p <name>)拥有独立 HERMES_HOME、配置、记忆、会话和 Gateway PID

五、技术规格速览

指标 数值
GitHub Stars 47K+42天内
AIAgent 代码行数 ~13,700 行
HermesCLI 代码行数 ~11,500 行
GatewayRunner 代码行数 ~12,200 行
内置工具数 61 个
工具集数 52 个
消息平台适配器 20 个
支持 Provider 18+OpenRouter/OpenAI/Anthropic/Ollama 等)
记忆存储 SQLiteWAL+FTS5
技能存储 ~/.hermes/skills/Markdown + YAML frontmatter
MCP 集成 支持,可连接 6,000+ 外部应用
并发子 Agent 最多 3 个
测试覆盖 3,000+ 测试用例

六、与其他框架的对比

维度 Hermes Agent OpenClaw Claude Code
架构哲学 自我进化 + 记忆连续性 模块化 + 可组合性 Anthropic 生态深度集成
记忆模型 三层Session/Persistent/Skill+ Honcho 用户建模 可配置记忆后端,无结构化分层 Session 级上下文 + CLAUDE.md
技能系统 最成熟(内置+自创+社区),支持自动蒸馏 插件系统,无自动技能蒸馏 紧耦合生态,无社区分享
工具生态 40+ 内置 + 6,000+ MCP 可比内置规模MCP 较小 主要终端+文件系统MCP 较新
多平台 14 平台 + 跨平台连续性 支持但连续性较弱 主要 CLI网页访问通过 API
自我改进 飞轮学习循环,真正的自动进化 实验性功能,未生产就绪 依赖 CLAUDE.md 手工更新
最适合场景 需要随时间变强的 Agent跨平台使用 追求模块化定制的用户 Anthropic 生态深度用户

七、关键洞察总结

Hermes 的核心创新不是某一个功能,而是一个范式:将 Agent 视为一个认知系统,而非一个 API 包装器。

  1. Harness 是控制层模型是引擎Harness 是控制系统。没有 Harness 的 LLM 生产部署是危险的。
  2. 记忆即知识:三层记忆架构(情景/语义/程序)使 Agent 拥有真实的跨会话连续性。
  3. 技能即进化Agent 自己编写 Skills不是人类工程师在维护——这是真正的自我改进。
  4. 平台无关是工程纪律:一个核心,多个表面,所有平台差异在适配层消失。
  5. 提示缓存是经济问题Mid-session 的"聪明"改动可能让你的 API 成本增加 10 倍。

整理自Hermes Agent 官方架构文档hermes-agent.nousresearch.com、PyShine Orange Book、dev.to 技术深度解析、ArXiv 研究论文 "Architectural Design Decisions in AI Agent Harnesses"2604.18071v1)等多个来源。