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 进入无状态的「喂消息→跑循环」节奏,不再回头改配置。