Gemini-cli(Qwen-code)的 Agent 实践流程

Gemini-CLI Agent 是 ReAct 框架的一个具体、针对特定场景(主要是开发者工作流程)的实现。

graph TB A[开始sendMessageStream方法] --> B[检查是否为新提示] B --> C[增加会话轮次计数] C --> D{是否超过最大轮次?} D -->|是| E[yield最大轮次事件] D -->|否| F[确保轮次不超过MAX_TURNS] F --> G[尝试压缩聊天历史] G --> H{压缩是否成功?} H -->|是| I[yield压缩事件] H -->|否| J[继续处理] I --> J J --> K{会话令牌限制是否启用?} K -->|是| L[计算请求令牌数] L --> M{令牌数是否超过限制?} M -->|是| N[yield令牌超限事件] M -->|否| O[继续处理] N --> P[结束] O --> Q K -->|否| Q[继续处理] Q --> R{是否有待处理的工具调用?} R -->|否| S[添加IDE上下文到历史记录] R -->|是| T[跳过IDE上下文添加] S --> T T --> U[创建Turn对象] U --> V{是否跳过循环检测?} V -->|否| W[执行循环检测] W --> X{是否检测到循环?} X -->|是| Y[yield循环检测事件] X -->|否| Z[继续处理] Y --> AA[返回Turn对象] Z --> AB[继续处理] V -->|是| AB[继续处理] AB --> AC{是否为新提示?} AC -->|是| AD[添加系统提醒] AC -->|否| AE[继续处理] AD --> AE AE --> AF[执行turn.run方法] AF --> AG{循环处理流事件} AG --> AH[处理每个事件] AH --> AI{是否跳过循环检测?} AI -->|否| AJ[添加事件到循环检测器] AJ --> AK{是否检测到循环?} AK -->|是| AL[yield循环检测事件] AK -->|否| AM[继续处理] AL --> AN[返回Turn对象] AM --> AO[yield事件] AO --> AP{事件类型是否为错误?} AP -->|是| AQ[返回Turn对象] AP -->|否| AG AG -->|流结束| AR{是否有待处理的工具调用?} AR -->|否| AS{信号是否已中止?} AS -->|否| AT{是否发生配额错误?} AT -->|是| AU[返回Turn对象] AT -->|否| AV{是否跳过下一位发言者检查?} AV -->|是| AW[返回Turn对象] AV -->|否| AX[检查下一位发言者] AX --> AY[记录下一位发言者检查事件] AY --> AZ{下一位发言者是否为模型?} AZ -->|是| BA[递归调用sendMessageStream] AZ -->|否| AW BA --> AG AR -->|是| AW AS -->|是| AW AW --> BB[返回Turn对象]
posted @ 2025-11-05 14:13  JMCui  阅读(21)  评论(0)    收藏  举报