Skip to content
目录

核心对话循环

对话由 async function* query() 驱动:每轮组装消息 → 流式 callModel → 解析 tool_use → 走工具管线 → 决定继续或 end_turn


1. query() 职责

步骤说明
收集上下文CLAUDE.md、git、环境、memory(见 07)
组装 system规则、工具列表、输出风格
消息准备紧凑化、折叠、token 预算
API 调用yield 流式 chunk 给 UI
工具回合权限 + hooks + tool.call
循环控制仍有 tool_use 则继续

2. 单轮与多轮

  • 用户消息进入 history。
  • 模型返回 text + tool_use blocks
  • 工具结果以 tool_result 消息回灌,直至模型不再请求工具。

3. 工具执行编排

03 一致:validateInputcheckPermissions → PreToolUse → call → PostToolUse → yield 结果。


4. 消息类型

Human / Assistant(含 tool_use)/ Tool result;流式阶段用 chunk 聚合为完整 block。


5. Coordinator 模式

多 Agent/Task 时由 coordinator 分配子任务、汇总结果,仍汇入同一 query 事件流供 UI 展示。


6. 历史管理

  • 超预算触发 压缩(四层策略,见 07、12)。
  • 可选持久化到磁盘供跨会话恢复。

7. 总结

query = 产品心脏;所有 UX 与成本行为都挂在这条生成器链上。

MIT License.