Hermes

关注公众号 jb51net

关闭
AI > Hermes >

Hermes Agent 架构设计与目录结构解析

jiayong23

Hermes Agent 架构与目录详解

1. 总体架构

从主执行链来看,这个项目可以概括成下面这条主线:

用户入口
  -> hermes / hermes_cli.main
  -> 选择 CLI / TUI / Gateway / ACP / Dashboard / 其他子命令
  -> 构造或恢复 AIAgent
  -> AIAgent.run_conversation()
  -> model_tools.get_tool_definitions()
  -> tools.registry + tools/*
  -> 模型返回 tool calls / text
  -> 工具执行结果回灌消息历史
  -> 会话/记忆/日志/状态落盘

关键架构分层:

2. 核心执行链说明

2.1 统一入口

2.2 Agent 核心

2.3 工具调度

2.4 多入口交互

3. 顶层目录作用

下表覆盖仓库顶层主要目录:

目录作用
.github/CI、Issue/PR 模板、GitHub 工作流配置。
.idea/本地 IDE 配置,不属于核心业务代码。
.plans/内部计划文档,偏研发过程资料。
acp_adapter/ACP 协议适配器,给 VS Code / Zed / JetBrains 等编辑器集成使用。
acp_registry/ACP 相关元数据与图标。
agent/Agent 内部能力模块,负责提示词、压缩、记忆、模型元数据、显示等。
assets/README 或产品展示图片等静态资源。
cron/定时任务与调度器。
datagen-config-examples/数据生成/训练相关配置样例。
docker/Docker 运行支持文件。
docs/开发文档、设计文档、迁移文档、计划文档。
environments/RL/训练环境,不是普通运行时 tools/environments/
gateway/消息网关主系统。
hermes_cli/CLI 命令、配置、安装向导、状态管理、dashboard 启动等。
nix/Nix/NixOS 打包与环境定义。
optional-skills/可选技能库,按领域拆分。
packaging/包管理与发布支持,当前可见 Homebrew 打包。
plans/计划文档、实现方案。
plugins/插件机制相关内容,如 memory provider、dashboard 插件等。
scripts/安装、测试、发布、桥接等脚本。
skills/内置技能库。
tests/pytest 测试。
tinker-atropos/RL 训练相关子模块。
tools/Agent 工具实现层。
tui_gateway/TUI 的 Python JSON-RPC 后端。
ui-tui/TUI 前端,React + Ink。
web/Web Dashboard 前端,Vite + React。
website/Docusaurus 文档站,不是运行时产品 UI。

4. 根目录关键文件说明

文件作用
README.md对外总说明,包含安装、能力、快速开始。
AGENTS.md仓库级开发/协作说明,给 AI 助手和开发者使用。
pyproject.tomlPython 包定义、依赖、extras、脚本入口。
package.json根 Node 依赖,主要服务浏览器工具。
hermes轻量启动器。
run_agent.pyAIAgent 核心逻辑。
model_tools.py工具发现、过滤与统一派发。
toolsets.py工具分组定义。
cli.py传统交互式 CLI 主逻辑。
hermes_state.pySQLite 会话数据库。
hermes_constants.py统一常量和 HERMES_HOME 路径逻辑。
hermes_logging.py集中式日志初始化。
batch_runner.py批量运行 Agent,偏研究/数据生成。
mcp_serve.pyMCP 相关服务入口。
mini_swe_runner.py更轻量的 SWE/任务运行器。
setup-hermes.shUnix/WSL/macOS 开发安装脚本。
requirements.txt辅助依赖列表。

5.agent/目录详解

agent/ 是把原本塞在 run_agent.py 的辅助能力拆出来后的核心模块集。

关键文件:

文件作用
prompt_builder.py组装系统提示词,注入身份、技能、上下文文件、平台提示等。
context_compressor.py长会话压缩器,避免上下文超限。
context_engine.py上下文引擎抽象层。
memory_manager.py统一调度内置记忆和外部记忆 provider。
memory_provider.py记忆 provider 抽象。
prompt_caching.pyAnthropic prompt caching 支持。
model_metadata.py模型上下文长度、token 估算、模型元数据探测。
models_dev.pyprovider-aware 模型目录/上下文支持。
smart_model_routing.py智能模型路由策略。
auxiliary_client.py辅助模型调用,如视觉、摘要等。
display.pyCLI 展示、spinner、tool preview。
skill_commands.py技能相关 slash command 逻辑。
skill_utils.py技能扫描、frontmatter、索引辅助。
trajectory.py轨迹保存与转换。
usage_pricing.py使用量和成本估算。
retry_utils.pyAPI 重试与退避。
error_classifier.pyAPI 错误分类与回退依据。
credential_pool.py多凭证池管理。
title_generator.py会话标题生成。
redact.py脱敏。

整体作用:

6.tools/目录详解

tools/ 是项目执行能力的真正落地点。

6.1 核心基础设施文件

文件作用
registry.py工具注册中心。
terminal_tool.py终端执行工具,支持多后端。
file_tools.py读写/搜索/patch 文件。
process_registry.py后台进程管理。
tool_result_storage.py工具结果落盘与预算控制。
approval.py危险命令检测与审批。
interrupt.py中断信号。
path_security.py路径安全控制。
patch_parser.pypatch 解析。
tool_backend_helpers.py工具后端选择与公共逻辑。

6.2 主要能力型工具

文件作用
web_tools.pyWeb 搜索/提取/爬取。
browser_tool.py浏览器自动化。
vision_tools.py图像理解。
image_generation_tool.py图片生成。
code_execution_tool.py在沙箱里执行可调用工具的 Python。
delegate_tool.py生成子代理执行子任务。
mcp_tool.py外部 MCP server 工具接入。
memory_tool.py记忆工具。
todo_tool.py待办/计划工具。
session_search_tool.py历史会话搜索。
send_message_tool.py跨平台消息发送。
cronjob_tools.py定时任务管理。
tts_tool.py文本转语音。
transcription_tools.py语音转文本。
homeassistant_tool.pyHome Assistant 集成。
skills_tool.py / skill_manager_tool.py技能列表、查看、管理。
mixture_of_agents_tool.py高级推理/多代理融合能力。
rl_training_tool.pyRL 训练相关工具。

6.3tools/environments/

这是终端后端实现,不要和仓库根目录 environments/ 混淆。

文件作用
local.py本地执行。
docker.pyDocker 环境。
ssh.pySSH 远程环境。
modal.py / managed_modal.pyModal 云环境。
daytona.pyDaytona 环境。
singularity.pySingularity 环境。
file_sync.py跨环境文件同步。
base.py终端后端抽象。

7.gateway/目录详解

gateway/ 是一个完整子系统,作用是把 Hermes 暴露到聊天平台。

关键文件:

文件作用
run.py网关主循环与生命周期管理。
config.py平台配置模型。
session.py平台会话上下文与会话路由。
session_context.py会话变量和上下文注入。
delivery.py消息投递路由。
status.py网关状态。
pairing.py配对和权限控制。
hooks.py网关事件钩子。
restart.py平滑重启逻辑。
stream_consumer.py流式输出消费。
channel_directory.py平台频道/房间目录解析。

7.1gateway/platforms/

这里是一组平台适配器。

代表性文件:

8.hermes_cli/目录详解

这是“命令与配置中枢”,偏控制面。

关键文件:

文件作用
main.pyCLI 统一主入口与命令树。
config.py配置默认值、迁移、配置文件路径。
setup.py交互式安装向导。
commands.pyslash 命令注册表。
auth.pyProvider 凭证解析。
gateway.pyCLI 对网关管理命令的包装。
doctor.py诊断命令。
status.py状态汇总命令。
model_switch.py模型切换流程。
models.py模型目录。
skills_hub.py技能 Hub 命令面。
skills_config.py技能启用/禁用配置。
tools_config.py工具启用/禁用配置。
skin_engine.py皮肤/主题系统。
web_server.pyWeb Dashboard 的 FastAPI 服务。
profiles.py多 profile 支持。
plugins.py插件发现与调用。
memory_setup.py记忆后端安装与配置。
logs.py日志查看命令。
backup.py备份与恢复。

9.ui-tui/与tui_gateway/

这两个目录共同组成新的 TUI 体系。

9.1ui-tui/

这是前端界面层,React + Ink。

ui-tui/src/ 主要子目录:

子目录作用
app/TUI 主状态机、事件处理、slash 处理。
components/Ink 组件。
domain/领域对象与纯逻辑。
hooks/输入、队列、补全、历史等 hooks。
lib/RPC、消息、文本、OSC52 等工具函数。
protocol/与后端交互协议辅助。
types/类型定义。
__tests__/TUI 单元测试。

关键文件:

9.2tui_gateway/

这是 TUI 的 Python 后端。

文件作用
entry.pystdio JSON-RPC 入口。
server.py请求处理、session 管理、Agent 调用。
render.py可选 ANSI 渲染桥。
slash_worker.py持久化 slash 命令子进程。

10.acp_adapter/

作用:

关键文件:

文件作用
entry.pyACP 入口。
server.pyACP Agent 服务器实现。
session.pyACP 会话管理。
tools.pyACP 可暴露的工具。
permissions.py权限控制。
events.py事件处理。
auth.py认证。

11.cron/

作用:

关键文件:

文件作用
jobs.py定时任务存取。
scheduler.py周期性扫描并执行 due jobs。

12.environments/

这个目录是研究/RL 环境,不是普通用户日常 CLI 的终端后端。

关键文件:

文件作用
hermes_base_env.pyRL 环境基类。
agent_loop.py面向环境的 Agent 循环。
tool_context.py工具上下文桥接。
web_research_env.pyWeb Research 环境。
agentic_opd_env.py代理型 OPD 环境。
README.md训练环境说明。

子目录:

13.skills/、optional-skills/、plugins/

13.1skills/

内置技能库,按领域划分,例如:

每个技能通常包含:

13.2optional-skills/

可选技能包,说明这些技能不一定默认启用,偏扩展或专业领域。

13.3plugins/

当前可见主要是:

14.web/与website/的区别

这两个目录容易混淆。

web/

website/

15.tests/

tests/ 数量很多,说明项目工程化程度较高。

特点:

16. 架构总结

这个项目的目录结构体现出 3 个非常鲜明的事实:

  1. 它不是一个单体 CLI,而是一个多入口代理平台。
  2. 其核心价值不在 UI,而在 AIAgent + Tools + Session + Gateway
  3. 它已经具备“平台型代码库”特征,因此理解时必须按子系统切分,而不能按单文件线性阅读。

到此这篇关于Hermes Agent 架构设计与目录结构解析的文章就介绍到这了,更多相关Hermes Agent 架构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!