代码库归属地图
Hermes 是一个大型仓库,多数贡献只触及恰好一个子系统。本页把每个子系统映射到它的源码目录,以及改动它之前你应先读的文档入口。用它找到正确的起始文档、改动该放的位置,以及正确的测试目录(测试镜像源码:tools/ 中的代码测于 tests/tools/,插件测于 tests/plugins/<type>/,依此类推)。
| 子系统 | 源码目录 | 文档入口 |
|---|---|---|
| Agent 核心(循环、传输、压缩) | agent/、run_agent.py | Agent 循环、上下文压缩与缓存 |
| 提示词组装 | agent/prompt_builder.py、agent/system_prompt.py | 提示词组装 |
| 模型 provider 与传输 | agent/transports/、plugins/model-providers/、hermes_cli/models.py | 添加 Provider、模型 Provider 插件、Provider 运行时 |
| 内置工具 | tools/ | 添加工具、工具运行时 |
| 消息 gateway | gateway/、plugins/platforms/ | Gateway 内部机制、添加平台适配器 |
| CLI | hermes_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.py | Browser Supervisor |
| 出口防火墙 | agent/proxy_sources/iron_proxy.py | 出口内部机制 |
| ACP(IDE 集成) | acp_adapter/ | ACP 内部机制 |
| 桌面应用 | apps/desktop/ | 桌面插件 SDK、Worktree UI 开发 |
| TUI | ui-tui/、tui_gateway/ | Worktree UI 开发 |
| 文档站 | website/ | 贡献 |
| 测试 | tests/、tests-js/ | 贡献 → 提交前 |
从这张地图得出的几条约定:
- 改动应留在其所属子系统内。 一个需要改核心文件的插件是设计坏味道——应转而拓宽通用插件面(见仓库
AGENTS.md中的贡献准则)。 - 对你触及的每个源码目录,都跑它对应的镜像测试目录。 改了
plugins/platforms/telegram/就要tests/plugins/platforms/全绿,而不只是你碰巧想到的那个测试文件。 - 涉及两个子系统时,较窄的那个拥有改动。 优先在适配器或插件里修,而不是在 agent 核心里开分支;核心是窄腰,那里每加一点都会在每次 API 调用上付出代价。