💎 Hermes Agent
1. 概述
Hermes Agent 是由 Nous Research 开发的开源通用智能Agent框架。 它的核心理念是"技能化"(Skill-based)——将Agent的每一项能力封装为独立的技能模块(SKILL.md), 通过统一的工具系统、记忆系统和子Agent委托机制,构建出高度可扩展的智能体。
"模块化、可组合、可扩展" —— 不像其他框架将能力硬编码在Agent内部,Hermes Agent通过技能系统将能力外置化,每个技能独立定义、独立维护、按需加载。
2. 整体架构
🏗️ Hermes Agent 架构分层
| 层级 | 组件 | 职责 |
|---|---|---|
| 🎯 交互层 | 多平台连接器 | 对接 WeChat、Discord、Telegram、Terminal 等平台,统一消息收发 |
| 🧠 核心层 | Agent Core | LLM推理引擎、对话管理、任务路由、子Agent调度 |
| 🔧 能力层 | 技能系统 + 工具系统 | 技能按需加载,工具统一注册与调度 |
| 💾 记忆层 | Honcho记忆集成 | 短期会话记忆 + 长期持久化记忆 + 用户画像 |
| ⚙️ 基础设施层 | 配置管理、模型路由、日志监控 | 底层支撑:模型切换、成本控制、可观测性 |
🔄 请求处理流程
- 消息接入:用户消息通过连接器进入系统
- 上下文组装:从Honcho加载用户记忆和会话历史
- 技能匹配:根据用户意图匹配相关技能,注入 SKILL.md 到System Prompt
- 工具注册:加载技能关联的工具定义,注入到LLM的工具列表中
- LLM推理:模型根据System Prompt + 工具列表 + 记忆上下文进行推理和决策
- 工具执行:LLM决定调用的工具被执行,结果返回模型
- 子Agent委托:复杂任务可创建子Agent委托执行
- 记忆更新:对话结束后更新Honcho中的用户记忆
- 响应返回:最终回复通过连接器返回用户
3. 技能系统(SKILL.md)
技能系统是Hermes Agent最核心的创新。每个技能由一个SKILL.md文件定义, 包含了该技能的元信息、使用说明、关联工具和示例。Agent启动时扫描技能目录,按需加载。
📝 SKILL.md 结构
| 字段 | 说明 | 示例 |
|---|---|---|
| name | 技能唯一标识 | "file-manager" |
| description | 技能描述,用于Agent自动匹配 | "Manage files and directories: read, write..." |
| tools | 该技能提供的工具列表 | [read_file, write_file, search_files] |
| instructions | 注入System Prompt的详细指令 | 文件操作的最佳实践、安全限制等 |
| examples | 使用示例 | 展示典型任务的处理方式 |
| dependencies | 依赖的其他技能 | ["system-monitor"] |
- 热插拔:新增技能只需创建目录和SKILL.md,无需修改Agent核心代码
- 按需加载:只有当任务匹配时才将对应技能注入到上下文,节省Token
- 可组合:技能可以声明依赖,Agent自动加载依赖链
- 社区友好:技能可以像插件一样分享和复用
- 版本管理:每个技能独立维护,互不干扰
4. 工具系统
Hermes Agent的工具系统采用统一注册-动态发现模式。工具定义遵循标准的 Function Calling 规范(JSON Schema),支持从多个来源注册工具:
🔧 技能内置工具
技能SKILL.md中声明的工具,由技能模块自动注册。如文件操作技能提供的 read_file、write_file、search_files 等。
🔌 MCP协议工具
通过Model Context Protocol接入的外部工具服务,支持标准的MCP客户端连接。
🛠️ 自定义工具
开发者通过简单的API注册自定义函数,自动生成JSON Schema并注入到工具列表。
🔧 核心内置工具一览
| 工具名 | 功能 | 所属技能 |
|---|---|---|
| read_file | 读取文件内容,支持分页和行号 | file-manager |
| write_file | 写入文件(覆盖模式),自动创建父目录 | file-manager |
| patch | 精确的查找替换编辑,支持9种匹配策略 | file-manager |
| search_files | 文件内容搜索(ripgrep)和文件名查找 | file-manager |
| terminal | 执行Shell命令,支持前台/后台/PTY模式 | terminal |
| process | 管理后台进程(启动/轮询/终止/写入stdin) | terminal |
| vision_analyze | 图像分析和视觉理解 | vision |
| web_search | 联网搜索最新信息 | web-search |
5. 记忆系统(Honcho集成)
Hermes Agent集成了 Honcho —— 一个专门为AI Agent设计的记忆管理系统。 它支持多层次的记忆存储和检索:
🧠 Honcho 记忆层次
| 层次 | 存储内容 | 生命周期 | 检索方式 |
|---|---|---|---|
| 💬 会话记忆 | 当前对话的完整历史 | 单次会话 | 直接上下文注入 |
| 📝 短期记忆 | 用户最近的关键信息和偏好 | 数天到数周 | 按时间衰减检索 |
| 📚 长期记忆 | 用户画像、知识、重要事件 | 持久化 | 语义向量检索 |
| 🏷️ 情景记忆 | 特定事件和经验的完整记录 | 持久化 | 关键词+语义混合检索 |
每次对话结束后,Hermes Agent自动将关键信息写入Honcho。下次对话时,Agent从Honcho检索相关记忆注入到上下文。用户可以随时查看、编辑或删除自己的记忆数据,完全掌控隐私。
6. 多平台连接
Hermes Agent支持通过统一的连接器接口接入多个消息平台, 使得同一个Agent可以同时服务不同平台的用户。
💬 WeChat / 微信
支持公众号和个人微信接入,适配微信消息格式限制(Markdown渲染、图片发送、消息长度限制处理)。
🎮 Discord
通过Discord Bot API接入,支持频道消息、私信、Slash命令等交互形式。
📱 Telegram
通过Telegram Bot API接入,支持富文本消息、内联按钮、文件收发。
🖥️ Terminal
原生终端CLI支持,适合开发和调试场景。
7. 子Agent委托
当任务过于复杂或需要特定领域知识时,Hermes Agent可以创建子Agent(Sub-agent) 来委托执行子任务。这是Hermes Agent实现多Agent协作的核心机制。
🔀 子Agent委托模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 🎯 任务委派 | 主Agent将子任务分派给子Agent,子Agent独立完成后返回结果 | 代码审查、数据分析、文档生成 |
| 🔄 迭代协作 | 主Agent与子Agent多轮交互,子Agent持续反馈进展 | 复杂研究、多步调试 |
| 👥 并行委派 | 同时创建多个子Agent并行处理不同子任务,汇总结果 | 大规模代码重构、批量文件处理 |
| 🌐 层级委派 | 子Agent可以再创建子Agent,形成任务分解树 | 超大型复杂项目 |
- Token消耗:每个子Agent都有独立的上下文窗口,复杂委派会显著增加Token消耗
- 错误传播:子Agent的错误可能被主Agent误信并放大
- 收敛控制:需要设置最大委派深度和总Token预算,防止无限递归
- 结果验证:主Agent应对子Agent的输出进行合理性检查
8. 配置与扩展
8.1 模型配置
Hermes Agent支持多模型后端,通过配置文件灵活切换:
🤖 支持的模型后端
- OpenAI 兼容 API:GPT-4o、GPT-4、o3/o4-mini 等
- Anthropic API:Claude 3.5/4 系列
- DeepSeek API:DeepSeek-V3、DeepSeek-R1 等
- OpenRouter:统一的模型路由,支持80+模型
- 本地模型:通过Ollama接入本地运行的模型
8.2 扩展开发
开发者可以通过以下方式扩展Hermes Agent:
- 创建新技能:编写 SKILL.md + 实现工具函数,放入技能目录即可
- 注册自定义工具:通过工具注册API添加业务特定工具
- 接入新平台:实现平台连接器接口,支持新的消息平台
- 配置模型策略:按任务类型路由到不同模型(简单任务用小模型,复杂任务用大模型)
- 技能化架构:能力外置,热插拔,易于维护和扩展
- 真正的记忆系统:Honcho集成提供短期+长期+情景记忆,而非简单的滑动窗口
- 原生多平台:同一Agent无缝服务多个平台
- 子Agent委派:灵活的多Agent协作,支持任务分解和并行执行
- 模型无关:支持多家厂商和本地模型,避免供应商锁定
- 开源透明:完全开源,代码可审计,数据可自主控制
9. 与其他框架的对比
| 维度 | Hermes Agent | LangChain | CrewAI | OpenAI Assistants |
|---|---|---|---|---|
| 核心理念 | 技能化模块化 | 抽象层组合 | 角色驱动 | 托管服务 |
| 扩展方式 | SKILL.md 技能 | 自定义Chain/Agent | 自定义Agent/Tool | API配置 |
| 记忆系统 | Honcho(分层记忆) | 多种Memory类 | 内置记忆 | Thread托管 |
| 多Agent | 子Agent委派 | 需自行编排 | 顺序/层级流程 | 不支持原生多Agent |
| 模型支持 | 多厂商+本地 | 多厂商(集成多) | 多厂商 | 仅OpenAI |
| 多平台 | 原生支持 | 需自行开发 | 需自行开发 | 需自行开发 |
| 学习曲线 | 中(概念清晰) | 高(抽象层多) | 低(直觉化) | 低(API简单) |
| 开源 | ✅ 完全开源 | ✅ 开源 | ✅ 开源 | ❌ 闭源服务 |