一、架构设计
Hermes Agent 的系统架构、目录结构、数据流和入口点
系统总览
┌─────────────────────────────────────────────────────────────────────┐
│ Entry Points │
│ CLI (cli.py) Gateway (gateway/run.py) ACP (acp_adapter/) │
│ Batch Runner API Server Python Library │
└──────────┬──────────────┬───────────────────────┬───────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────┐
│ AIAgent (run_agent.py) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Prompt │ │ Provider │ │ Tool │ │
│ │ Builder │ │ Resolution │ │ Dispatch │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │
│ │ Compression │ │ 3 API Modes │ │ Tool Registry│ │
│ │ & Caching │ │ chat_compl. │ │ 47 tools │ │
│ │ │ │ codex_resp. │ │ 19 toolsets │ │
│ │ │ │ anthropic │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌───────────────────┐ ┌──────────────────────┐
│ Session Storage │ │ Tool Backends │
│ (SQLite + FTS5) │ │ Terminal (6 backends)│
│ hermes_state.py │ │ Browser (5 backends) │
│ gateway/session.py│ │ Web (4 backends) │
└───────────────────┘ │ MCP (dynamic) │
│ File, Vision, etc. │
└──────────────────────┘目录结构
| 目录/文件 | 说明 |
|---|---|
run_agent.py | AIAgent 核心对话循环(~10,700 行) |
cli.py | 交互式终端 UI(~10,000 行) |
model_tools.py | 工具发现、Schema 收集、分发 |
toolsets.py | 工具分组和平台预设 |
hermes_state.py | SQLite 会话/状态数据库(含 FTS5) |
agent/ | Agent 内部组件(Prompt 构建、上下文压缩、缓存等) |
hermes_cli/ | CLI 子命令和设置向导(~6,000 行) |
tools/ | 工具实现(每个工具一个文件) |
gateway/ | 消息平台网关(~9,000 行) |
gateway/platforms/ | 18 个平台适配器 |
cron/ | 定时任务调度器 |
skills/ | 内置技能 |
plugins/ | 插件系统(记忆、上下文引擎) |
acp_adapter/ | VS Code / Zed / JetBrains 适配器 |
tests/ | Pytest 测试套件(3,000+ 测试) |
数据流
CLI 会话流程
- 用户输入 → CLI 解析
- Prompt Builder 组装系统提示 + 记忆 + 上下文
- Provider Resolution 解析模型端点和 API 模式
- 调用 LLM → 获取响应和工具调用
- Tool Dispatch 执行工具 → 结果返回 LLM
- 循环直到完成 → 保存到 SQLite
网关会话流程
- 平台消息 → GatewayRunner 接收
- SessionStore 加载会话历史
- 调用 AIAgent 处理
- Delivery 发送响应到目标平台
入口点
| 入口 | 用途 |
|---|---|
hermes | 交互式 CLI 对话 |
hermes gateway start | 启动消息网关 |
hermes chat -q "任务" -Q | 单次非交互任务 |
hermes batch | 批量轨迹生成 |
hermes acp | ACP 服务器(IDE 集成) |