AIAgent / init_agent
源码版本v2026.7.20
職責
init_agent 是 agent 的「裝配工廠」:把 provider、toolsets、壓縮閾值、自訂 provider extra_body、記憶與學習元件等設定注入到 agent 實例,使其具備執行一輪對話所需的全部依賴。AIAgent 類別本身只是它產物的薄殼。
關鍵檔案
class AIAgent:400-497— 類別定義,欄位即設定__init__ 轉發:497-560—from agent.agent_init import init_agent; init_agent(...)def init_agent:276— 裝配主函式入口自訂 provider extra_body 輔助:183-275—_normalized_custom_base_url/_custom_provider_model_matches/_merge_custom_provider_extra_body_resolve_compression_threshold:93-127— 壓縮閾值解析輔助函式區:62-91—_ra、autoraise notice 等
資料流
AIAgent.__init__(run_agent.py:423)把建構參數原樣收集。- 呼叫
init_agent:276,依次:- 解析 provider 名與 base_url(
agent/agent_init.py:183) - 合併自訂 provider 的
extra_body(agent/agent_init.py:257) - 解析壓縮閾值(
agent/agent_init.py:93) - 注入 toolsets、記憶管理器、學習圖等
- 解析 provider 名與 base_url(
- 裝配完成的 agent 暴露
run_conversation方法(run_agent.py:6350),轉發到模組級agent/conversation_loop.py:588。 - 網關
GatewayRunner(gateway/run.py:3029)持有裝配好的 agent,把入站訊息交給它。
小結
init_agent 是設定→執行時的翻譯層,所有啟動期決策(provider 選擇、壓縮策略、toolsets 開關)都在這裡一次性落定。之後 agent 進入無狀態的「餵訊息→跑迴圈」節奏,不再回頭改設定。