一、产品架构分析
1.1 产品定位
Hermes Agent 是由 Nous Research 开发的自进化 AI 代理,核心特色是具备内置学习循环:
- 从经验中创建技能
- 在使用过程中自我改进
- 主动持久化知识
- 搜索历史对话
- 跨会话建立用户模型
1.2 产品核心能力
| 能力域 | 说明 |
|---|---|
| 多端接入 | CLI、TUI(终端UI)、Telegram、Discord、Slack、WhatsApp、Signal、邮件等 |
| 模型无关 | 支持 200+ 模型(OpenAI、Anthropic、Nous Portal、OpenRouter、NVIDIA NIM、HuggingFace 等) |
| 工具生态 | 40+ 内置工具,支持 MCP(Model Context Protocol)扩展 |
| 技能系统 | 内置技能 + 可选技能库 + 用户自定义技能(兼容 agentskills.io 标准) |
| 记忆系统 | 持久化记忆、Honcho 用户建模、FTS5 会话搜索 |
| 调度系统 | 内置 cron 调度器,支持自然语言配置定时任务 |
| 多环境 | 本地、Docker、SSH、Modal、Daytona、Singularity 六种终端后端 |
| 研究能力 | 批量轨迹生成、Atropos RL 训练环境、轨迹压缩 |
1.3 产品架构分层
┌─────────────────────────────────────────────────────────────┐
│ 用户交互层 │
│ CLI (prompt_toolkit) │ TUI (React/Ink) │ 消息平台 Gateway │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ Agent 核心层 │
│ AIAgent (run_agent.py) → 工具调用循环 → 记忆管理 │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ 能力扩展层 │
│ 工具系统 (tools/) │ 技能系统 (skills/) │ 插件系统 (plugins/) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ 基础设施层 │
│ SessionDB (SQLite+FTS5) │ 配置系统 │ 日志系统 │ Profiles │
└─────────────────────────────────────────────────────────────┘
二、技术架构分析
2.1 技术栈
| 层面 | 技术 |
|---|---|
| 后端 | Python 3.11+,核心框架:OpenAI SDK、Anthropic SDK、Pydantic、Rich、Jinja2 |
| 前端 (TUI) | TypeScript + React (Ink)、Node.js |
| 消息 Gateway | Python asyncio、python-telegram-bot、discord.py、aiohttp |
| 数据存储 | SQLite (FTS5 全文搜索) |
| 进程通信 (TUI) | stdio JSON-RPC |
| 依赖管理 | uv (Python)、npm (TypeScript) |
| 测试 | pytest (Python)、vitest (TypeScript) |
2.2 核心模块架构
hermes-agent/
├── run_agent.py ← AI Agent 核心循环 (~12k LOC)
├── cli.py ← CLI 交互编排 (~11k LOC)
├── model_tools.py ← 工具编排 & 调度
├── toolsets.py ← 工具集定义
├── agent/ ← Agent 内部(提供商适配、记忆、缓存、压缩)
├── tools/ ← 工具实现(自动发现 via registry)
│ └── environments/ ← 终端后端(local/docker/ssh/modal/daytona)
├── gateway/ ← 消息网关
│ └── platforms/ ← 各平台适配器(15+ 平台)
├── hermes_cli/ ← CLI 子命令、皮肤引擎、插件加载器
├── plugins/ ← 插件系统(记忆、上下文引擎、图像生成)
├── skills/ ← 内置技能
├── optional-skills/ ← 可选技能库
├── ui-tui/ ← React TUI 前端
├── tui_gateway/ ← TUI 的 Python JSON-RPC 后端
├── acp_adapter/ ← ACP 服务器(IDE 集成)
└── cron/ ← 定时调度器
2.3 Agent 循环(核心算法)
# run_agent.py 中的核心循环
while (api_call_count < max_iterations && budget_remaining > 0) or grace_call:
if interrupt_requested: break
response = LLM.chat.completions.create(
model=model,
messages=messages,
tools=tool_schemas
)
if response.tool_calls:
for tool_call in response.tool_calls:
result = handle_function_call(tool_call.name, tool_call.args)
messages.append(tool_result_message(result))
else:
return response.content
2.4 工具自动发现机制
tools/registry.py (无依赖,被所有工具文件导入)
↑
tools/*.py (每个文件在导入时调用 registry.register())
↑
model_tools.py (导入 tools/registry + 触发工具发现)
↑
run_agent.py, cli.py, batch_runner.py
设计亮点:无需手动维护导入列表,任何 tools/*.py 文件只要调用 registry.register() 就会被自动发现。
2.5 插件系统架构
两类插件接口:
| 类型 | 位置 | 说明 |
|---|---|---|
| 通用插件 | plugins/<name>/ | 注册生命周期钩子(pre/post tool/LLM call)、注册工具、注册 CLI 子命令 |
| 记忆插件 | plugins/memory/<name>/ | 实现 MemoryProvider ABC,可插拔的记忆后端(honcho、mem0、supermemory 等 8 种) |
插件发现:从 ~/.hermes/plugins/、./.hermes/plugins/ 和 pip 入口点自动发现。
2.6 TUI 进程模型
hermes --tui
└─ Node (Ink 渲染) ←──stdio JSON-RPC──→ Python (tui_gateway)
│ └─ AIAgent + tools + sessions
└─ 渲染转录、编辑器、提示、活动状态
TypeScript 负责屏幕渲染,Python 负责会话、工具调用、模型调用和斜杠命令逻辑。
2.7 配置系统
| 文件 | 用途 |
|---|---|
~/.hermes/config.yaml | 所有设置项 |
~/.hermes/.env | 仅存储 API Key 等密钥 |
三个配置加载器:
load_cli_config()— CLI 模式load_config()—hermes tools/setup等子命令- 直接 YAML 加载 — Gateway 运行时
2.8 Profiles 多实例隔离
HERMES_HOME=/Users/xu/.hermes/profiles/coder
每个 profile 拥有独立的 config、API keys、memory、sessions、skills、gateway,通过 get_hermes_home() 统一访问,避免硬编码 ~/.hermes。
三、浏览器操作和本地系统操作能力分析
3.1 浏览器操作能力
核心模块:tools/browser_tool.py (102 KB)
支持三种浏览器后端:
| 后端 | 说明 |
|---|---|
| Browser Use | 云端执行(Nous Portal 订阅者默认) |
| Browserbase | 云端执行(需要 API Key) |
| 本地 Chromium | 无成本无头浏览器(通过 agent-browser CLI) |
主要功能
# 导航到页面
browser_navigate("https://example.com", task_id="task_123")
# 获取页面快照(基于 accessibility tree,适合 LLM 理解)
browser_snapshot(task_id="task_123")
# 点击元素(通过 ref 选择器 @e1, @e2)
browser_click("@e5", task_id="task_123")
# 其他操作:输入、滚动、后退、按键等
其他浏览器相关模块
| 文件 | 功能 |
|---|---|
browser_cdp_tool.py | 原始 Chrome DevTools Protocol 直通 |
browser_supervisor.py | 浏览器监控/管理 |
browser_camofox.py | 反检测本地浏览器后端 |
browser_providers/ | 浏览器提供商抽象层(支持 Browser Use、Browserbase、Firecrawl) |
3.2 操作系统本地操作能力
核心模块:tools/terminal_tool.py (85 KB)
支持六种终端后端:
# 通过环境变量 TERMINAL_ENV 选择后端
TERMINAL_ENV="local" # 直接在主机上执行(默认,最快)
TERMINAL_ENV="docker" # 在 Docker 容器中执行(隔离)
TERMINAL_ENV="ssh" # 通过 SSH 执行
TERMINAL_ENV="modal" # Modal 云沙箱
TERMINAL_ENV="daytona" # Daytona 云环境
TERMINAL_ENV="singularity" # Singularity 容器
本地执行环境:tools/environments/local.py
class LocalEnvironment(BaseEnvironment):
"""直接在主机上运行命令。
Spawn-per-call: 每次 execute() 生成一个新的 bash 进程。
Session snapshot 跨调用保留环境变量。
CWD 通过文件持久化。
"""
特性:
- 支持后台任务(
background=True) - 自动清理闲置环境
- VM/容器生命周期管理
- 支持中断信号(Ctrl+C)
其他本地操作工具
| 模块 | 功能 |
|---|---|
code_execution_tool.py | 代码执行(60 KB) |
file_tools.py | 文件操作(44 KB) |
file_operations.py | 文件操作辅助(49 KB) |
process_registry.py | 进程注册/管理(48 KB) |
3.3 安全设计
从 tools/environments/local.py 可以看到安全设计:
-
环境变量隔离:阻止 Hermes 管理的密钥泄露到子进程
_HERMES_PROVIDER_ENV_BLOCKLIST = frozenset({ "OPENAI_API_KEY", "ANTHROPIC_TOKEN", ... }) -
Profile 隔离:子进程可设置独立的
HOME目录from hermes_constants import get_subprocess_home _profile_home = get_subprocess_home() if _profile_home: sanitized["HOME"] = _profile_home -
URL 安全检测:浏览器工具集成 URL 安全检查
from tools.url_safety import is_safe_url
四、架构设计亮点
-
Prompt Caching 感知:禁止在对话中途修改上下文/工具集/记忆,避免破坏缓存导致成本激增
-
皮肤引擎:纯数据驱动(YAML),无需改代码即可添加新皮肤
-
斜杠命令中央注册:
COMMAND_REGISTRY一处定义,自动同步到 CLI、Gateway、Telegram 菜单、Slack 路由、自动补全 -
测试隔离:
scripts/run_tests.sh确保本地与 CI 环境一致(清除 API Key、UTC 时区、固定 worker 数) -
ACP 适配:支持 VS Code / Zed / JetBrains 通过 ACP 协议集成
-
工具自动发现:无需手动维护导入列表,通过 registry 模式实现自动注册
-
多环境支持:支持 6 种终端后端,可在本地/容器/云端执行任意命令
五、总结
Hermes Agent 具备完整的浏览器和操作系统控制能力:
- ✅ 浏览器自动化:导航、点击、输入、截图、DOM 操作(支持本地和云端)
- ✅ 本地命令执行:支持 6 种后端环境,可在本地/容器/云端执行任意命令
- ✅ 文件操作:读写、搜索、编辑文件
- ✅ 进程管理:后台任务、进程监控、生命周期管理
这些能力使 Hermes Agent 可以作为一个全功能的 AI 操作系统助手,不仅能对话,还能实际操作浏览器和本地系统。