文章目录
- Hermes Agent 技术解析:Nous Research 自进化多平台 AI 智能体架构深度剖析
- 一、引言
- 二、整体架构:四层解耦设计
- 三、Agent 主循环:感知 → 规划 → 行动 → 进化
- 四、工具系统:70+ 工具的自注册体系
- 4.1 工具分类全景
- 4.2 并行安全的批量执行
- 五、技能系统:程序性记忆的工程实现
- 5.1 技能文件结构
- 5.2 渐进式加载(Progressive Disclosure)
- 5.3 内置技能体系
- 六、内存与持久化:跨会话学习的基础设施
- 6.1 SQLite 会话数据库
- 6.2 内存插件体系
- 七、多平台网关:真正的"无处不在"
- 八、执行环境:六种沙箱后端
- 九、横向竞品对比
- 十、总结
Hermes Agent 技术解析:Nous Research 自进化多平台 AI 智能体架构深度剖析
一、引言
亲爱的朋友们,创作不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:funian.gm@gmail.com
2026 年,AI Agent 的战场已不再只是"能不能用",而是"能在哪里用、用完会不会变聪明"。大多数 Agent 框架解决的是"单次任务"问题——给它一个指令,它跑完,结束。而Hermes Agent,Nous Research 推出的开源 AI 智能体平台,走的是另一条路:跨会话自我进化,无处不在地运行。
它不依赖固定工具集,不锁死在某个模型,不限制只能在终端或某个 IDE 里用——它同时活在你的 Terminal、Telegram、Discord、WeChat、iMessage,乃至一台远程 Modal 无服务器容器里。更关键的是,它在每次任务结束后会主动提炼新技能,让自己下次更快、更准。
本文从架构设计、工具系统、技能体系、内存持久化、多平台网关五个维度,对 Hermes Agent v0.9.0(2026 年 4 月 13 日发布)进行深度技术剖析。
二、整体架构:四层解耦设计
Hermes Agent 的代码库包含 856 个 Python 文件,但核心逻辑高度内聚,可以归纳为四层:
┌────────────────────────────────────────────────────┐ │ 接入层(Interface) │ │ CLI 终端 · Telegram · Discord · Slack · WeChat │ │ Signal · Matrix · iMessage · WhatsApp · DingTalk │ ├────────────────────────────────────────────────────┤ │ Agent 执行层(Core Loop) │ │ AIAgent 主循环 · 工具调度 · 上下文压缩 · 错误分类 │ ├────────────────────────────────────────────────────┤ │ 能力层(Capabilities) │ │ 70+ 工具 · 技能系统 · 内存系统 · 沙箱环境 │ ├────────────────────────────────────────────────────┤ │ 模型层(Model Abstraction) │ │ Anthropic · OpenAI · OpenRouter · Kimi · Qwen │ │ z.ai/GLM · MiniMax · xAI/Grok · 200+ 模型 │ └────────────────────────────────────────────────────┘| 层次 | 核心文件 | 职责 |
|---|---|---|
| 接入层 | gateway/run.py、cli.py | 多平台消息收发、会话隔离、并发管理 |
| Agent 执行层 | run_agent.py(10,829 行) | 主循环、工具调用链、迭代预算控制 |
| 能力层 | tools/、skills/、plugins/ | 工具注册、技能加载、内存同步、沙箱调度 |
| 模型层 | agent/anthropic_adapter.py、agent/model_metadata.py | 多供应商适配、Token 估算、故障转移 |
这种解耦设计的好处是:更换模型不影响工具;新增平台不影响 Agent 逻辑;技能更新无需重新部署代码。
三、Agent 主循环:感知 → 规划 → 行动 → 进化
Hermes 的核心是run_agent.py中的AIAgent类,实现了一个最多 90 次迭代的闭合学习循环:
用户消息/平台事件 │ ▼ [构建系统 Prompt] • 身份文件(SOUL.md) • 技能索引(名称 + 描述,按需加载全文) • 上下文引用(@file: / @git: / @url:) • 内存上下文(<memory-context> 标签隔离) │ ▼ [调用 LLM,传入 70+ 工具 Schema] │ ├── 无工具调用 → 直接回复 │ └── 有工具调用 ──▶ [并行执行工具批次(8 workers)] │ ▼ [收集结果,追加消息历史] │ ├── 迭代 < 90 → 继续循环 │ └── 完成 → 持久化会话 + 检查是否生成新技能关键设计:
| 机制 | 实现 | 作用 |
|---|---|---|
| 迭代预算 | IterationBudget(线程安全计数器,默认 90) | 防止无限循环,兼顾复杂任务深度 |
| 上下文自动压缩 | agent/context_compressor.py | 接近 Token 上限时自动摘要旧消息,无感续航 |
| 错误分类故障转移 | agent/error_classifier.py | 区分限速/鉴权/过载/上下文超长,采取不同恢复策略 |
| 中断处理 | 全局interrupt事件 | CLI / Gateway Ctrl+C 即时打断长任务 |
| 技能自生成 | 任务结束后 LLM 自评 | 若发现可复用模式,自动提议写入新 Skill |
四、工具系统:70+ 工具的自注册体系
Hermes 的工具不是硬编码在主循环里的,而是自注册的——每个工具文件import时向tools/registry.py注册自身,主循环通过registry.get_all_tools()动态获取。
4.1 工具分类全景
| 类别 | 工具数 | 代表工具 | 典型场景 |
|---|---|---|---|
| Web 检索 | 6 | web_search, web_extract, web_crawl | 联网调研、信息提取 |
| 终端执行 | 3 | terminal, process, delegate_task | 运行命令、管理进程 |
| 文件操作 | 6 | read_file, write_file, patch, search_files | 代码读写、内容搜索 |
| 浏览器自动化 | 10 | browser_navigate, browser_click, browser_screenshot | GUI 操作、表单填写 |
| 视觉理解 | 3 | vision_analyze, image_generate, vision_compare | 图片分析、生成 |
| 技能管理 | 4 | skills_list, skill_view, skill_manage, skill_create | 技能浏览与更新 |
| 内存管理 | 3 | memory, session_search, todo | 跨会话记忆与任务管理 |
| 消息通信 | 2 | send_message, cronjob | 主动推送、定时任务 |
| 智能家居 | 4 | ha_list_entities, ha_get_state, ha_call_service | Home Assistant 集成 |
| 扩展工具 | 20+ | MCP、TTS、代码执行、RL 训练 | 专项场景 |
4.2 并行安全的批量执行
工具调用支持最多 8 个并发 Worker,但在并行前会做两项安全检查:
| 安全检查 | 机制 | 说明 |
|---|---|---|
| 路径重叠检测 | 对比所有文件操作目标路径 | 防止同一文件被并发写入 |
| 交互工具串行 | clarify等工具不参与并行 | 需要用户确认的操作必须串行 |
危险命令(如rm -rf、git reset --hard)会触发用户审批门控,支持once / session / always / deny四档授权粒度。
五、技能系统:程序性记忆的工程实现
如果说工具是 Hermes 的"手",技能(Skills)就是它的"经验库"。Hermes 没有把每个新功能都实现为一个新工具(那样会导致工具膨胀),而是用Markdown 技能文件封装可复用的操作流程。
5.1 技能文件结构
每个技能是一个目录,核心是SKILL.md:
---name:arxiv-searchdescription:Search and summarize academic papers from arXiv by topic or paper IDversion:1.0.0license:MITplatforms:[macos,linux]prerequisites:commands:[curl,jq]metadata:hermes:tags:[research,academic]related_skills:[web-search,literature-review]---# arXiv Search Skill## InstructionsWhen the user asks about a paper or research topic...5.2 渐进式加载(Progressive Disclosure)
Hermes 不会把所有技能的完整内容一次性塞进 System Prompt,而是分三层按需加载:
| 层级 | 内容 | 加载时机 | Token 消耗 |
|---|---|---|---|
| 元数据层 | 名称(≤64字符)+ 描述(≤1024字符) | 每次对话启动时 | 极低 |
| 指令层 | SKILL.md 完整内容 | 模型判断需要使用该技能时 | 中等 |
| 引用层 | 关联文件(模板、示例、API文档) | 技能执行时按需注入 | 按需 |
这个设计解决了一个真实问题:如果有 100 个技能,把所有技能全文塞入 Prompt 会消耗数万 Token;但只传名字和描述,模型能根据语义判断该调用哪个,再按需加载全文。
5.3 内置技能体系
| 大类 | 典型技能方向 |
|---|---|
| 软件开发 | Git 工作流、Docker 操作、K8s 部署、代码审查 |
| 学术研究 | arXiv 检索、文献综述、论文摘要 |
| MLOps | 模型训练脚本、评估流水线、实验管理 |
| 创意生产 | 内容生成、图文排版、多语言翻译 |
| 安全审计 | 漏洞扫描、依赖检查、合规分析 |
| 可选扩展 | 区块链、医疗数据、HPC 作业管理(13个可选类别) |
六、内存与持久化:跨会话学习的基础设施
6.1 SQLite 会话数据库
Hermes 使用 SQLite(WAL 模式)存储所有对话历史,通过 FTS5 全文索引实现跨会话语义搜索:
| 表 | 内容 | 关键设计 |
|---|---|---|
sessions | 会话元数据(模型、Token 消耗、费用估算、标题) | 按平台来源分组 |
messages | 完整对话记录(含工具调用与结果) | 支持父子会话链(压缩用) |
messages_fts | FTS5 虚拟表 | 跨 1000+ 会话全文检索 |
为什么选 SQLite 而非 JSONL?跨文件搜索需要全量扫描,而 FTS5 可以在毫秒级内检索所有历史会话,同时 WAL 模式保证了 Gateway 多平台并发写入的安全性。
6.2 内存插件体系
| 插件 | 核心机制 | 特点 |
|---|---|---|
| Builtin | 本地 MEMORY.md / USER.md | 始终激活,零依赖 |
| Honcho AI | 辩证式用户建模,记录推理过程 | 最强的用户偏好建模 |
| Mem0 | 向量嵌入检索 | 语义相似度召回 |
| Supermemory | 长期记忆存储服务 | 托管方案,开箱即用 |
| Holographic | 多尺度记忆表示 | 实验性,适合复杂用户模型 |
内存读写时机:每轮对话前预取,每轮响应后同步,内容以<memory-context>标签包裹注入 Prompt,防止模型将其误解为指令。
七、多平台网关:真正的"无处不在"
Gateway 是 Hermes 作为独立守护进程运行的消息总线,支持 25+ 平台适配器:
| 平台类别 | 支持列表 |
|---|---|
| 即时通讯 | Telegram、Discord、Slack、Signal、WhatsApp、Matrix(端对端加密) |
| 国内平台 | 微信(Weixin)、企业微信(WeCom)、钉钉、飞书、Mattermost |
| 苹果生态 | iMessage(via BlueBubbles) |
| 开发工具 | Webhook、API Server、Home Assistant |
| 语音/邮件 | 邮件(Email)、SMS |
Gateway 作为独立进程的设计解耦了三件事:CLI 会话崩溃不影响 Telegram 消息;Slack 限速不阻塞 Discord 响应;Gateway 可水平扩展而无需重启 Agent 核心。
八、执行环境:六种沙箱后端
| 后端 | 适用场景 | 关键特性 |
|---|---|---|
| Local | 默认,最快 | 直接在宿主机执行 |
| Docker | 隔离执行 | 容器化,文件系统持久化 |
| SSH | 远程服务器 | 密钥认证,端口转发 |
| Modal | 无服务器 GPU | 自动扩缩容,适合 ML 工作负载 |
| Daytona | 云开发环境 | 批量文件同步,工作区管理 |
| Singularity | HPC 集群 | 共享计算资源上的容器执行 |
所有后端都支持文件状态持久化(mtime跟踪 + 删除检测),沙箱重建后工作状态不丢失。
九、横向竞品对比
Hermes Agent 的定位是"无处不在的自进化 Agent",与三类竞品存在差异:
| 维度 | Hermes Agent | Claude Code | AutoGen / CrewAI | Devin |
|---|---|---|---|---|
| 运行方式 | CLI + 25+ 平台消息 | CLI + IDE 插件 | Python SDK 调用 | Web 平台 |
| 模型绑定 | 无绑定,200+ 模型 | 深度绑定 Claude | 可配置多模型 | 专有模型 |
| 技能/知识积累 | ✅ 自动生成并沉淀技能 | ❌ 无跨会话技能 | ⚠️ 需手动配置 | ⚠️ 有限 |
| 多平台接入 | ✅ 25+ 平台原生支持 | ❌ 仅终端/IDE | ❌ 纯 API | ❌ 仅 Web |
| 沙箱执行 | ✅ 6 种后端 | ⚠️ 本地为主 | ❌ 依赖用户配置 | ✅ 托管云沙箱 |
| 部署成本 | 开源,自托管免费 | 订阅制 API 费用 | 开源,自托管 | 高(商业产品) |
| 目标用户 | 重度 Power User / 开发者 | 软件工程师 | AI 应用开发者 | 企业研发团队 |
Hermes 的差异化优势在于三个组合:多模型无绑定 + 跨平台原生 + 技能自进化。这三件事任意一件做到极致都能形成壁垒,三者同时做到是当前同类工具中罕见的。
明显短板:文档和社区成熟度不及 Claude Code,上手曲线较陡(配置文件 1400+ 行),面向普通用户的引导体验有待改善。
十、总结
| 维度 | 核心要点 |
|---|---|
| 架构设计 | 四层解耦:接入层 / Agent 层 / 能力层 / 模型层,各层独立演进 |
| 工具体系 | 70+ 自注册工具,8 并发 Worker,路径安全检测,危险操作审批门控 |
| 技能系统 | Markdown 驱动的程序性记忆,渐进式加载,任务后自动提炼新技能 |
| 内存持久化 | SQLite + FTS5 全文检索,8 种内存插件,跨会话知识积累 |
| 多平台网关 | 25+ 平台适配,独立守护进程,会话隔离与并发安全 |
| 执行环境 | 6 种沙箱后端,从本地到 GPU 无服务器,文件状态持久化 |
| 模型无锁定 | 支持 200+ 模型,供应商故障自动转移,推理预算可控 |
Hermes Agent 代表了 AI Agent 设计的一个重要方向:工具不是终点,技能积累才是护城河。它把每次任务都视为学习机会,让 Agent 随时间变得更懂用户、更高效。随着多模态、多模型协作能力的成熟,这类"会成长的 Agent"平台将在企业和个人生产力领域占据重要位置。
参考资料:
- Hermes Agent GitHub 仓库 — Nous Research(v0.9.0,2026-04-13)
- OpenRouter 多模型 API 文档
- Anthropic Tool Use 文档
- agentskills.io 技能规范