代码库归属地图

Hermes 是一个大型仓库,多数贡献只触及恰好一个子系统。本页把每个子系统映射到它的源码目录,以及改动它之前你应先读的文档入口。用它找到正确的起始文档、改动该放的位置,以及正确的测试目录(测试镜像源码:tools/ 中的代码测于 tests/tools/,插件测于 tests/plugins/<type>/,依此类推)。

子系统源码目录文档入口
Agent 核心(循环、传输、压缩)agent/、run_agent.pyAgent 循环、上下文压缩与缓存
提示词组装agent/prompt_builder.py、agent/system_prompt.py提示词组装
模型 provider 与传输agent/transports/、plugins/model-providers/、hermes_cli/models.py添加 Provider、模型 Provider 插件、Provider 运行时
内置工具tools/添加工具、工具运行时
消息 gatewaygateway/、plugins/platforms/Gateway 内部机制、添加平台适配器
CLIhermes_cli/扩展 CLI
插件系统plugins/构建 Hermes 插件
Skill(内置与可选)skills/、optional-skills/创建 Skill
Cron / 定时任务cron/Cron 内部机制
会话存储hermes_state.py、hermes_state_*.py会话存储
浏览器栈tools/browser_tool.py、tools/browser_supervisor.py、tools/browser_cdp_tool.pyBrowser Supervisor
出口防火墙agent/proxy_sources/iron_proxy.py出口内部机制
ACP(IDE 集成)acp_adapter/ACP 内部机制
桌面应用apps/desktop/桌面插件 SDK、Worktree UI 开发
TUIui-tui/、tui_gateway/Worktree UI 开发
文档站website/贡献
测试tests/、tests-js/贡献 → 提交前

从这张地图得出的几条约定:

  • 改动应留在其所属子系统内。 一个需要改核心文件的插件是设计坏味道——应转而拓宽通用插件面(见仓库 AGENTS.md 中的贡献准则)。
  • 对你触及的每个源码目录,都跑它对应的镜像测试目录。 改了 plugins/platforms/telegram/ 就要 tests/plugins/platforms/ 全绿,而不只是你碰巧想到的那个测试文件。
  • 涉及两个子系统时,较窄的那个拥有改动。 优先在适配器或插件里修,而不是在 agent 核心里开分支;核心是窄腰,那里每加一点都会在每次 API 调用上付出代价。