Claude Code 核心循环 queryLoop

Claude Code 核心循环 queryLoop

queryLoop方法是 Claude Code 的核心循环,其代码经历多次迭代,但是我们仍然可以提取出其核心逻辑,主要精炼之后,就是以下两点:

7+ 个 continue 站点

Continue Site 1: Proactive Compaction
触发: token 超过阈值
动作: autocompact → 新消息 → continue

Continue Site 2: Prompt Too Long
触发: API 返回 prompt-too-long 错误
动作: context-collapse → reactive compact

Continue Site 3: Max Output Tokens
触发: 模型输出截断
动作: 升级 8k→64k → 多轮重试(最多3次)

Continue Site 4: Fallback Model
触发: FallbackTriggeredError
动作: 切换模型 → 重试请求

Continue Site 5: Stop Hook Blocking
触发: 用户 Hook 要求额外轮次
动作: 注入 Hook 消息 → continue

Continue Site 6: Image/Media Errors
触发: ImageSizeError / ImageResizeError
动作: 反应式压缩(移除图片)→ continue

Continue Site 7: Tool Execution
触发: 正常工具执行完成
动作: 收集结果 → 更新状态 → continue

return Terminal — 唯一的退出点
条件: 无工具调用 + Stop Hook 不阻止

4 级压缩管道

Level 1: Snip
历史截断成本: 极低 | 延迟: ~0ms

释放少量 token

Level 2: Microcompact
老化工具结果缩减
成本: 低 | 延迟: ~1ms

边界消息延迟

Level 3: Context-Collapse
读时投射(不修改数组)
成本: 中 | 延迟: ~5ms

如果仍超阈值                            如果低于阈值

Level 4: Autocompact                   跳过 Autocompact
LLM 全对话摘要                          保留粒
成本: 高 | 延迟: ~2s