Agent Core & Loop

智能体对话主循环决策机理与并发控制

解密 run_agent.py 与 agent/conversation_loop.py 中 run_conversation() 的生命周期状态机
会话循环状态机
📊 图 2-1-1:AI Agent 决策流状态机与 API 锁死流转图

🔄 1. 会话主循环流程深度透视

agent/conversation_loop.py 中的 run_conversation() 函数里,智能体维持着一个状态机。它并非简单地执行单次 LLM 请求,而是进入自适应的工具调用循环。具体步骤包括:

  • 状态初始化:从数据库加载会话上下文和长时记忆,组装成原始的 messages
  • 中断预检:每次循环开始时检测 agent._interrupt_requested。用户发送新消息或在网关中发送取消信号均可触发中断。
  • LLM 协商:调用 client.chat.completions.create 发起请求,传入 api_messages 和工具集列表。
AIAgent 决策流与缓存优化
📊 图 2-1-2:AIAgent 决策流与缓存优化整体时序图

🛡️ 2. 并发限流与 grace_call 机制

系统应对 Token 预算消耗和多智能体失控并发的核心设计如下:

🚦 优雅退出 (grace_call)

iteration_budget.remaining 归零时,为了避免智能体突然“中断阻截”,系统会启动 _budget_grace_call。给予模型最后一次只读交互机会,此时系统清空 tools 定义,强制大模型只能面向用户生成最后的总结回复。

🛑 子智能体截断 (_cap_delegate_task_calls)

当大模型并行分派过多的 delegate_task 时,会造成大量本地资源消耗。系统会将并发子任务截断在 MAX_CONCURRENT_CHILDREN 限制内,并将溢出任务转换成警告格式反馈给大模型,避免失控。