Post

二、Agent 循环引擎

二、Agent 循环引擎

关键点:Agent 循环引擎 + ReAct 模式

工作原理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1. 任务 ID生成:若未提供任务 ID 则生成一个
2. 追加历史消息:将用户消息添加到对话历史记录中
3. 构建 system prompt:构建或复用缓存的系统提示
4. 检查压缩:检查是否需要预压缩(超过 50% 的上下文)
5. 构建 LLM API 协议:从对话历史记录构建 API 消息
   - chat_completions:保持 OpenAI 格式不变
   - codex_responses:转换为 Responses API 输入项
   - anthropic_messages:通过 anthropic_adapter.py 进行转换
6. 提示:注入临时提示层(预算警告、上下文压力)
7. Anthropic适配:若在 Anthropic 上则应用提示缓存标记
8. 封装可中断 API 调用:发起可中断的 API 调用(_interruptible_api_call)
9. 解析响应:
   - 若有工具调用:执行它们,添加结果,循环回到步骤 5
   - 若为文本响应:保存会话,如有必要清空内存,返回

消息格式

内部 message 遵循 OpenAI 协议

1
2
3
4
{"role": "system", "content": "..."}
{"role": "user", "content": "..."}
{"role": "assistant", "content": "...", "tool_calls": [...]}
{"role": "tool", "tool_call_id": "...", "content": "..."}

可中断 API 调用

思想是:事件注册 + 事件监听

1
2
3
4
5
6
7
8
┌────────────────────────────────────────────────────┐
│  Main thread                  API thread           │
│                                                    │
│   wait on:                     HTTP POST           │
│    - response ready     ───▶   to provider         │
│    - interrupt event                               │
│    - timeout                                       │
└────────────────────────────────────────────────────┘
This post is licensed under CC BY 4.0 by the author.