QueryEngine 主循环

模块存在意义

src/QueryEngine.ts 是这套系统最像“心脏”的地方。只要一次输入真的要进入模型,它大概率都会经过这里。

关键文件与入口

文件/目录作用
src/QueryEngine.ts会话级查询引擎,负责消息、工具、权限反馈和状态持久。
src/query.ts更高层的调用入口,给不同调用场景提供统一接入面。
src/context.tssrc/context/负责系统上下文、用户上下文与统计信息收集。
src/cost-tracker.ts跟踪 token、成本和相关计量。

对上游 / 下游的依赖关系

  • 上游:输入解析、命令层、上下文构建。
  • 下游:模型 API、工具系统、会话存储、AppState。

运行时扮演的角色

  • 持有当前会话的消息历史。
  • 发起模型调用并处理流式响应。
  • 识别工具调用请求,交给工具层执行,再把结果送回模型。
  • 记录权限拒绝、结构化输出、会话使用量和状态变更。

新读者建议的阅读顺序

  1. src/QueryEngine.ts 中的构造函数与 submitMessage
  2. src/query.ts
  3. src/context.ts
  4. src/cost-tracker.ts

为什么它是阅读重点

  • 它连接了“输入”“工具”“状态”“输出”四大方向。
  • 它决定一次对话的节奏,而不是单个功能点。
  • 你如果要理解 Claude Code 的执行模型,不看 QueryEngine 很难建立完整心智模型。