エントリと起動フロー
源码版本v2026.7.20
職務
「hermes コマンド / ゲートウェイのメッセージ一つ」を「メモリ上で動く agent」に変える。エントリ層は意図的に薄く作ってある——run_agent.py は転送と CLI 組み立てしか扱わず、本当の依存注入は agent_init.py にある。これによりゲートウェイ、TUI、CLI、ACP、cron が同じ初期化パスを共有できる。
主要ファイル
ゲートウェイ main:22965— ゲートウェイプロセス入口main()AIAgent クラス:400-497— 薄い入口クラス、__init__は引数を格納するだけAIAgent.__init__ 転送:497-560— コメントに "Forwarder — see agent.agent_init.init_agent" と明記run_conversation メソッド:6350—AIAgent.run_conversationインスタンスメソッド、モジュールレベル run_conversation:588を呼ぶCLI main:6434— CLI 入口init_agent:276-400— 依存注入メイン関数_resolve_compression_threshold:93-127— 起動期設定解析の例hermes_bootstrap.py— 最初期の環境/パス調整(リポジトリルート)
データフロー
- ユーザーが
hermes(CLI)またはゲートウェイmain()を起動(run_agent.py:22965)。 - プロセスは
hermes_bootstrap.pyでパス/環境を修正してから、CLI main:6434またはゲートウェイループに入る。 AIAgent:400インスタンスを生成、__init__はinit_agent:276に転送。init_agentは provider、toolsets、圧縮閾値、カスタム provider の extra_body などを解析し、実行可能な agent オブジェクトを組み立てる。- ゲートウェイは
gateway/run.pyのGatewayRunnerでこの agent を保持し、入站メッセージごとにrun_conversation:588に渡す。
まとめ
エントリ層は「転送 + 組み立て」であり、業務ロジックを持たない。AIAgent は薄い殻、init_agent こそが組み立ての中心。この流れを理解すれば、次のエージェント主ループは「メッセージを投げられた後何をするか」に過ぎない。