コードベース所有マップ
Hermes は大きなリポジトリですが、たいていの貢献はちょうど 1 つのサブシステムにしか触れません。このページでは、それぞれのサブシステムを、そのソースディレクトリと、変更する前に読んでおきたいドキュメントの入口に対応づけます。正しい出発点のドキュメント、変更を置くべき場所、そして正しいテストディレクトリを見つけるために使ってください(テストはソースと同じ構造になっています。tools/ のコードは tests/tools/ で、プラグインは tests/plugins/<type>/ で、といった具合です)。
| サブシステム | ソースディレクトリ | ドキュメントの入口 |
|---|---|---|
| エージェントの中核(ループ、トランスポート、圧縮) | agent/, run_agent.py |
エージェントループ, コンテキスト圧縮とキャッシュ |
| プロンプトの組み立て | agent/prompt_builder.py, agent/system_prompt.py |
プロンプトの組み立て |
| モデルプロバイダとトランスポート | agent/transports/, plugins/model-providers/, hermes_cli/models.py |
プロバイダの追加, モデルプロバイダプラグイン, プロバイダのランタイム |
| 組み込みツール | tools/ |
ツールの追加, ツールのランタイム |
| メッセージングのゲートウェイ | gateway/, plugins/platforms/ |
ゲートウェイの内部構造, プラットフォームアダプタの追加 |
| CLI | hermes_cli/ |
CLI を拡張する |
| プラグインの仕組み | plugins/ |
Hermes プラグインを作る |
| スキル(同梱・任意) | skills/, optional-skills/ |
スキルを作る |
| cron / 定期実行ジョブ | cron/ |
cron の内部構造 |
| セッションの保存 | hermes_state.py |
セッションの保存 |
| ブラウザ関連 | tools/browser_tool.py, tools/browser_supervisor.py, tools/browser_cdp_tool.py |
ブラウザスーパーバイザ |
| 送信ファイアウォール | agent/proxy_sources/iron_proxy.py |
送信制御の内部構造 |
| ACP(IDE 連携) | acp_adapter/ |
ACP の内部構造 |
| デスクトップアプリ | apps/desktop/ |
デスクトッププラグイン SDK, ワークツリー UI の開発 |
| TUI | ui-tui/, tui_gateway/ |
ワークツリー UI の開発 |
| ドキュメントサイト | website/ |
貢献の手引き |
| テスト | tests/, tests-js/ |
貢献の手引き → 提出する前に |
このマップから自然に導かれる決まりごとがいくつかあります。
- 変更はそのサブシステムの内側に収めます。 中核のファイルを書き換えないと成立しないプラグインは、設計が怪しいサインです。代わりに汎用のプラグイン面を広げてください(リポジトリの
AGENTS.mdにある貢献の評価基準を参照)。 - 触ったソースディレクトリごとに、対応するテストディレクトリを走らせます。
plugins/platforms/telegram/を変更したなら、たまたま思いついたテストファイルだけでなくtests/plugins/platforms/全体が緑になっている必要があります。 - 2 つのサブシステムがからむときは、狭いほうがその変更を持ちます。 エージェントの中核に分岐を足すより、アダプタやプラグイン側で直すほうを選んでください。中核はくびれの部分であり、そこへの追加はすべての API 呼び出しで代償を払うことになります。