入口與啟動流程
源码版本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:588CLI 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 才是裝配中心。理解這條鏈路後,後面的Agent 主迴圈就是「被餵訊息後做什麼」。