Skip to content

Agent 循环

Agent 循环是驱动每个 PRX Agent 会话的核心执行周期。每次迭代处理 LLM 响应、调度工具调用、管理记忆,并决定是继续循环还是返回最终答案。

循环生命周期

用户消息


┌─────────────┐
│  构建上下文  │──── 记忆回忆
└──────┬──────┘

┌─────────────┐
│  LLM 推理   │──── 流式响应
└──────┬──────┘

┌─────────────┐
│  解析输出    │──── 工具调用 / 文本
└──────┬──────┘

   有工具调用?
   ├── 是 ──→ 执行工具 ──→ 继续循环
   └── 否 ──→ 返回响应

工具调度

当 LLM 响应包含工具调用时,循环会:

  1. 根据安全策略验证每个工具调用
  2. 执行批准的调用(可能并行执行)
  3. 收集结果并反馈给 LLM
  4. 继续循环进行下一步推理

流式传输

PRX 逐 token 流式传输 LLM 响应给客户端,同时缓冲用于工具调用检测。流式管道支持:

  • 实时 token 转发到 CLI 或 WebSocket 客户端
  • 客户端慢速时的背压处理
  • 通过 Ctrl+C 或 API 信号优雅取消

记忆回忆

每次 LLM 调用前,循环从记忆系统检索相关上下文:

  • 最近的对话轮次(滑动窗口)
  • 嵌入存储的语义搜索结果
  • 固定的事实和用户偏好

上下文压缩

当对话超过模型的上下文窗口时,循环触发压缩:

  1. 将较早的轮次总结为压缩表示
  2. 保留仍被引用的工具调用结果
  3. 保持系统提示词和固定记忆不变

配置

toml
[agent.loop]
max_iterations = 50
parallel_tool_calls = true
compaction_threshold_tokens = 80000
compaction_strategy = "summarize"  # 或 "truncate"

相关页面

Released under the Apache-2.0 License.