架构概览

🧠

AIAgent 核心

主引擎(~10,700 行),处理消息路由、工具调用、上下文管理、会话状态

🖱

HermesCLI

终端界面(~10,000 行),TUI 渲染、命令解析、快捷键、会话管理

📦

Prompt Builder

动态提示词构建,组装系统提示、工具定义、上下文、技能指令

🔨

Context Compressor

有损摘要压缩,可配置阈值,保护关键对话轮次

💬

Messaging Gateway

统一消息网关,管理 17+ 平台的消息收发

🛡

Security Layer

纵深防御:DM 配对、容器隔离、SSRF 防护、Tirith 扫描

🔧

Tool System

47 种工具的注册、调度、执行和结果处理

🎯

Skill Engine

技能加载、注册、触发、执行和生命周期管理

🔗

MCP Integration

Model Context Protocol 客户端和服务器实现

🎤

Voice Pipeline

STT/TTS 管道,多提供商支持,自动降级

Scheduler

Cron 定时任务调度,技能附加,暂停/恢复管理

核心组件

run_agent.py — AIAgent 核心

系统的主要入口点和核心逻辑,约 10,700 行代码:

HermesCLI — 终端界面

全功能 TUI 实现,约 10,000 行代码:

Prompt Builder

动态构建发送给 LLM 的完整提示词:

目录结构

text
hermes-agent/
├── run_agent.py           # AIAgent 核心引擎
├── hermes_cli.py          # CLI 界面
├── prompt_builder.py      # 提示词构建器
├── context_compressor.py  # 上下文压缩器
├── tools/                 # 工具实现
│   ├── browser.py
│   ├── terminal.py
│   ├── file_ops.py
│   ├── search.py
│   └── ...
├── platforms/             # 消息平台适配器
│   ├── telegram.py
│   ├── discord.py
│   ├── slack.py
│   └── ...
├── skills/                # 技能引擎
├── memory/                # 记忆系统
├── mcp/                   # MCP 集成
├── security/              # 安全模块
├── voice/                 # 语音管道
│   ├── stt/
│   └── tts/
├── gateway/               # 消息网关
├── config/                # 配置管理
└── tests/                 # 测试

数据流

text
用户输入
   │
   ▼
[消息平台 / CLI]
   │
   ▼
[AIAgent 核心] ─────→ [Prompt Builder] ─────→ [LLM API]
   │                       │                        │
   │                       │                        ▼
   │                       │                  [LLM 响应]
   │                       │                        │
   │                       ▼                        ▼
   │                  [工具调用解析] ←───────────────┘
   │                       │
   │                       ▼
   │               [工具执行引擎]
   │                /    |    \
   │               ▼     ▼     ▼
   │          [终端]  [文件]  [搜索] ...
   │                       │
   │                       ▼
   │               [结果返回 AIAgent]
   │                       │
   ▼                       ▼
[上下文管理] ←── [会话状态更新]
   │
   ▼
[响应输出到用户]

上下文压缩机制

当对话历史超过配置阈值时,自动触发压缩:

后台会话

后台会话在独立的守护线程中运行: