QueryEngine 主循环
模块存在意义
src/QueryEngine.ts 是这套系统最像“心脏”的地方。只要一次输入真的要进入模型,它大概率都会经过这里。
关键文件与入口
| 文件/目录 | 作用 |
|---|---|
src/QueryEngine.ts | 会话级查询引擎,负责消息、工具、权限反馈和状态持久。 |
src/query.ts | 更高层的调用入口,给不同调用场景提供统一接入面。 |
src/context.ts 与 src/context/ | 负责系统上下文、用户上下文与统计信息收集。 |
src/cost-tracker.ts | 跟踪 token、成本和相关计量。 |
对上游 / 下游的依赖关系
- 上游:输入解析、命令层、上下文构建。
- 下游:模型 API、工具系统、会话存储、AppState。
运行时扮演的角色
- 持有当前会话的消息历史。
- 发起模型调用并处理流式响应。
- 识别工具调用请求,交给工具层执行,再把结果送回模型。
- 记录权限拒绝、结构化输出、会话使用量和状态变更。
新读者建议的阅读顺序
src/QueryEngine.ts中的构造函数与submitMessagesrc/query.tssrc/context.tssrc/cost-tracker.ts
为什么它是阅读重点
- 它连接了“输入”“工具”“状态”“输出”四大方向。
- 它决定一次对话的节奏,而不是单个功能点。
- 你如果要理解 Claude Code 的执行模型,不看 QueryEngine 很难建立完整心智模型。