Agent工具 高级 Hermes Agent 架构设计 Agent框架 开源

Hermes Agent 架构剖析:开源全能Agent的设计之道

AIEng Hub
阅读约 20 分钟

引言

2024年末,Nous Research 发布了 Hermes Agent——一个开源的AI Agent CLI/终端工具,迅速在开发者社区引起广泛关注。不同于 LangChain 或 AutoGen 这类库级别的 Agent 框架,Hermes Agent 是一个 开箱即用的终端 Agent,用户只需 pip install 就能拥有一个功能完整的 AI 助手。

本文将深入剖析 Hermes Agent 的架构设计,解读其核心模块的设计理念与实现原理,并与其他主流 Agent 方案进行对比分析。

整体架构概览

Hermes Agent 采用 模块化分层架构,从上到下可分为四个层次:

┌─────────────────────────────────────────────────────┐
│                   用户交互层                          │
├──────────┬──────────┬──────────┬────────────────────┤
│   TUI    │   CLI    │ Telegram │ Discord │ 微信/飞书 │
│ (Ink/React) │        │  Gateway │ Gateway │ Gateway   │
└──────────┴──────────┴──────────┴────────────────────┘

┌───────────────────────┴─────────────────────────────┐
│                    网关层 (Gateway)                   │
│         消息路由 / 会话管理 / 平台适配                  │
└───────────────────────┬─────────────────────────────┘

┌───────────────────────┴─────────────────────────────┐
│                    核心引擎层                          │
├─────────────┬─────────────┬───────────┬─────────────┤
│  技能系统   │  记忆系统   │  工具系统  │  Kanban系统  │
│  (Skills)   │  (Memory)   │  (Tools)  │  (看板)      │
├─────────────┴─────────────┴───────────┴─────────────┤
│              LLM 适配层 (Provider)                     │
│  OpenAI │ Anthropic │ DeepSeek │ Ollama │ NVIDIA NIM │
└───────────────────────┬─────────────────────────────┘

┌───────────────────────┴─────────────────────────────┐
│                    扩展层                              │
├────────────────┬──────────────────┬─────────────────┤
│  MCP 客户端    │  插件系统         │  Cron/任务调度   │
│  (Model Context │  (Plugin)        │  (Scheduler)    │
│   Protocol)     │                  │                 │
└────────────────┴──────────────────┴─────────────────┘

双模式设计:TUI + CLI

Hermes Agent 提供了两种用户交互模式:

TUI 模式(终端用户界面) 基于 Ink 和 React 构建的漂亮终端界面,支持分屏、颜色高亮、消息历史浏览。用户只需运行 hermes 即可进入 TUI 交互界面。这种模式的独特优势在于:

  • 实时流式显示 LLM 响应
  • 内嵌技能/工具调用可视化
  • 文件拖拽上传支持
  • 会话历史侧边栏

CLI 模式(命令行模式) 适合脚本化和管道式使用场景:

hermes ask "翻译这段文字成英文"
hermes chat --file prompt.txt
hermes run-skill code-review

两种模式共享同一核心引擎,确保了体验的一致性。

核心引擎设计

1. 技能系统(Skills)

技能系统是 Hermes Agent 最独特的设计之一。它将可复用的工作流封装为”技能”,每个技能是一个遵循特定规范的目录/文件。

技能的结构

一个典型的技能目录:

~/.hermes/skills/
└── code-review/
    ├── SKILL.md          # 技能描述和配置
    ├── prompt.md         # 系统提示模板
    ├── tools.yaml        # 该技能专用的工具配置
    └── examples/         # 使用示例
        └── example1.md

SKILL.md 规范

---
name: code-review
description: 对代码进行自动化审查,检查潜在问题
author: AIEng Hub
version: 1.0.0
type: skill
trigger: 
  - "review code"
  - "code review"
parameters:
  language: python
  strictness: normal
tools:
  - file_read
  - bash
memory_required: true
---

技能注册与发现

技能通过 skill_manage 工具进行管理:

# 查看已安装技能
hermes skills list

# 安装技能
hermes skills install ~/my-skills/code-review

# 查看技能详情
hermes skills view code-review

# 运行技能
hermes run-skill code-review --param language=python

这套系统的设计思路非常清晰:将复杂任务分解为可复用的技能单元,每个技能封装了特定的 prompt、工具集合和参数。这比 LangChain 的 Agent 模板更加轻量和灵活。

2. 记忆系统(Memory)

大多数 Agent 框架的记忆仅仅停留在会话上下文层面,而 Hermes Agent 实现了跨会话持久记忆

记忆层次

┌─────────────────────────────────────────┐
│           短期记忆 (会话上下文)            │
│   当前对话中的所有消息和工具调用记录        │
├─────────────────────────────────────────┤
│           长期记忆 (持久存储)              │
│   - 用户偏好和习惯                        │
│   - 重要事实和知识                        │
│   - 技能执行记录                          │
│   - 任务状态追踪                          │
├─────────────────────────────────────────┤
│           工作记忆 (Kanban看板)            │
│   当前进行中的任务和项目状态                │
└─────────────────────────────────────────┘

记忆的持久化

记忆存储在 ~/.hermes/memory/ 目录下,使用本地文件系统或可配置的向量数据库:

# config.yaml
memory:
  type: local    # 可选: local, chroma, qdrant
  path: ~/.hermes/memory
  vector_store: false
  max_context_messages: 50
  summarization:
    enabled: true
    threshold: 30   # 超过30条消息时进行摘要

这一设计使得 Hermes Agent 可以在长时间的使用中逐渐”了解”用户,而不是每次对话都从零开始。

3. 工具系统(Tools)

工具系统是 Agent 与外部世界交互的桥梁。Hermes Agent 内置了一套丰富的工具集,并支持自定义扩展。

内置工具

工具名称功能描述
bash执行 Shell 命令
file_read读取文件内容
file_write写入/修改文件
file_search搜索文件系统中的文件
web_search网络搜索(需配置搜索引擎)
web_fetch抓取网页内容
skill_view查看已安装的技能
skill_manage管理技能(安装/卸载)
skills_list列出所有可用技能
memory_set写入持久记忆
memory_get读取持久记忆
kanban_create创建看板任务
kanban_update更新看板任务状态

工具定义规范

每个工具都是一个 Python 函数 + 描述声明的组合:

@tool(
    name="web_search",
    description="搜索网络信息,返回相关链接和摘要",
    parameters={
        "query": {"type": "string", "description": "搜索关键词"},
        "max_results": {"type": "integer", "default": 5}
    }
)
async def web_search(query: str, max_results: int = 5) -> str:
    # 实现逻辑
    ...

这种声明式工具定义与 OpenAI Function Calling 的 schema 天然兼容,使得 Hermes Agent 可以灵活切换不同的 LLM 提供商而无需修改工具定义。

4. MCP 客户端集成

MCP(Model Context Protocol)是由 Anthropic 发起的开放协议,旨在标准化 LLM 与外部工具之间的通信。Hermes Agent 原生支持作为 MCP 客户端,可以连接任何 MCP 服务器。

MCP 架构

┌──────────────────────────────────────┐
│           Hermes Agent               │
│           (MCP Client)               │
└────────┬─────────────────┬───────────┘
         │                 │
    ┌────┴─────┐     ┌────┴─────┐
    │ MCP Server│     │ MCP Server│
    │ (文件系统) │     │ (数据库)  │
    └──────────┘     └──────────┘
         │                 │
    ┌────┴─────┐     ┌────┴─────┐
    │ MCP Server│     │ MCP Server│
    │ (GitHub)  │     │ (自定义)  │
    └──────────┘     └──────────┘

配置 MCP

# config.yaml
mcp:
  servers:
    filesystem:
      command: npx
      args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed"]
    github:
      command: npx
      args: ["-y", "@modelcontextprotocol/server-github"]
      env:
        GITHUB_TOKEN: "${GITHUB_TOKEN}"

MCP 的集成使得 Hermes Agent 的工具生态不再局限于自身内置的工具,而是可以接入整个 MCP 生态系统中日益增长的服务器资源。

5. 多平台网关

Hermes Agent 的一个显著特点是支持多个消息平台作为交互入口。

网关架构

                    ┌──────────────┐
                    │   Telegram   │◄── Telegram Bot API
                    └──────┬───────┘
                    ┌──────┴───────┐
                    │   Discord    │◄── Discord Bot API
                    └──────┬───────┘
                    ┌──────┴───────┐
  用户 ◄────────────► │    微信/企业微信│◄── WeCom API
                    └──────┬───────┘
                    ┌──────┴───────┐
                    │   飞书/Lark  │◄── Feishu API
                    └──────┬───────┘

                    ┌──────┴───────┐
                    │   Hermes     │
                    │   Core       │
                    └──────────────┘

每个网关都作为独立的模块运行,将各平台的协议转换为统一的内部消息格式:

# config.yaml
gateways:
  telegram:
    enabled: true
    bot_token: "${TELEGRAM_BOT_TOKEN}"
    allowed_users: ["user123", "user456"]
  discord:
    enabled: false
    bot_token: "${DISCORD_BOT_TOKEN}"
  wechat:
    enabled: true
    webhook_url: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=..."
  feishu:
    enabled: false
    webhook_url: "${FEISHU_WEBHOOK_URL}"

这种多平台网关设计让用户可以在自己习惯的聊天工具中使用 Hermes Agent,无需切换到终端。

6. Kanban 看板系统

一个独特的功能是内置的 Kanban(看板)任务管理系统。它实现了类似 Trello/Notion 的任务管理体验,但完全在终端中运行。

┌───────────────┬───────────────┬───────────────┐
│   待办 (Todo)   │  进行中 (Doing)│  已完成 (Done) │
├───────────────┼───────────────┼───────────────┤
│ • 重构API接口   │ • 编写文档     │ • 项目初始化    │
│ • 添加单元测试   │ • 代码审查     │ • 数据库设计    │
│ • 部署监控      │               │               │
└───────────────┴───────────────┴───────────────┘

看板任务与记忆系统联动,Agent 可以主动追踪任务进度、提醒截止日期,甚至根据任务状态调整回复优先级。

7. 插件系统

插件系统为 Hermes Agent 提供了扩展能力,允许开发者添加自定义功能。

# config.yaml
plugins:
  - name: my-plugin
    path: ~/.hermes/plugins/my-plugin
    enabled: true
  - name: time-tracker
    path: ~/.hermes/plugins/time-tracker
    enabled: false

每个插件是一个包含 plugin.yaml 和 Python 模块的目录,可以注册新的工具、技能或网关。

配置系统

所有配置集中在 ~/.hermes/config.yaml 中:

# ─────────────────────────────────────────────
# Hermes Agent 配置示例
# ─────────────────────────────────────────────

# 模型提供商配置
provider:
  default: deepseek
  openai:
    api_key: "${OPENAI_API_KEY}"
    model: gpt-4o
  anthropic:
    api_key: "${ANTHROPIC_API_KEY}"
    model: claude-sonnet-4-20250514
  deepseek:
    api_key: "${DEEPSEEK_API_KEY}"
    model: deepseek-chat
  ollama:
    base_url: http://localhost:11434
    model: llama3.2

# 界面配置
interface:
  mode: tui           # tui / cli
  theme: dark         # dark / light
  language: zh-CN     # 界面语言

# 行为配置
behavior:
  max_tool_calls: 25
  auto_approve: false   # 自动批准工具调用
  sudo_mode: false      # 超级管理员模式

# 其他配置...

配置使用 YAML 格式,支持环境变量引用(${VAR_NAME}),适合在 CI/CD 或多环境部署中使用。

与其他 Agent 方案的对比

vs Claude Code

特性Hermes AgentClaude Code
开源协议MIT(完全开源)专有(需API订阅)
底层模型多模型支持Claude 系列
多平台CLI + TUI + 微信/Telegram等仅终端
技能系统完善(SKILL.md)
记忆系统跨会话持久记忆会话级
MCP 支持原生原生
定制性高度可定制有限

vs DeepSeek-TUI

特性Hermes AgentDeepSeek-TUI
技能系统✅ 完整技能框架❌ 无
记忆系统✅ 跨会话持久化❌ 仅会话
MCP 客户端✅ 原生支持❌ 不支持
多平台网关✅ 支持6+平台❌ 仅TUI
看板系统✅ 内置❌ 无
插件系统✅ 支持❌ 无

vs LangChain Agent

特性Hermes AgentLangChain Agent
定位终端应用开发库
开箱即用✅ 是的❌ 需要开发
部署方式pip install集成到代码中
用户界面TUI/CLI/多平台无内置UI
学习曲线中-高
灵活性中等

技术栈

组件技术选型
编程语言Python
TUI 框架Ink + React
配置管理YAML
数据库SQLite / 向量数据库
MCP 协议原生支持
消息协议WebSocket / HTTP
插件机制Python 模块导入

设计理念总结

Hermes Agent 的架构设计体现了以下几个核心原则:

1. 开箱即用 用户只需 pip install 和简单配置就能获得完整的 Agent 体验,无需编写任何代码。

2. 渐进式增强 从简单的 CLI 对话开始,逐步启用技能、记忆、MCP、多平台网关等高级特性。

3. 技能驱动 将复杂任务封装为可复用的技能单元,形成”技能-工具-记忆”三位一体的工作流抽象。

4. 平台无关 通过网关层抽象,同一套核心引擎可以对接终端、IM 平台、Web 等多种交互界面。

5. 开放生态 通过 MCP 协议和插件系统,Hermes Agent 可以接入不断增长的第三方工具和模型生态。

总结

Hermes Agent 代表了一类新兴的 Agent 范式——终端原生、开箱即用、多平台互通。它的架构设计既有对传统 Agent 框架(规划-记忆-工具)的继承,也有诸多创新(技能系统、看板、多平台网关)。

对于开发者来说,Hermes Agent 是一个优秀的参考实现——展示了一个生产级 Agent 系统应该具备哪些模块,以及它们之间如何协作。对于普通用户来说,它是一个强大的 AI 助手,可以融入日常工作流。

在下一篇文章中,我们将详细介绍如何安装、配置和使用 Hermes Agent。


本文基于 Hermes Agent 最新版本撰写,具体实现可能随版本更新而变化。