引言
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 Agent | Claude Code |
|---|---|---|
| 开源协议 | MIT(完全开源) | 专有(需API订阅) |
| 底层模型 | 多模型支持 | Claude 系列 |
| 多平台 | CLI + TUI + 微信/Telegram等 | 仅终端 |
| 技能系统 | 完善(SKILL.md) | 无 |
| 记忆系统 | 跨会话持久记忆 | 会话级 |
| MCP 支持 | 原生 | 原生 |
| 定制性 | 高度可定制 | 有限 |
vs DeepSeek-TUI
| 特性 | Hermes Agent | DeepSeek-TUI |
|---|---|---|
| 技能系统 | ✅ 完整技能框架 | ❌ 无 |
| 记忆系统 | ✅ 跨会话持久化 | ❌ 仅会话 |
| MCP 客户端 | ✅ 原生支持 | ❌ 不支持 |
| 多平台网关 | ✅ 支持6+平台 | ❌ 仅TUI |
| 看板系统 | ✅ 内置 | ❌ 无 |
| 插件系统 | ✅ 支持 | ❌ 无 |
vs LangChain Agent
| 特性 | Hermes Agent | LangChain 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 最新版本撰写,具体实现可能随版本更新而变化。