s03
查询引擎
核心引擎层LLM API 调用与工具循环
流式响应 → 工具调用提取 → 执行 → 结果注入 → 继续推理QueryEngine 是整个系统的心脏,管理消息历史、token 预算和多轮工具调用循环
LLM API 调用与工具循环
流式响应 → 工具调用提取 → 执行 → 结果注入 → 继续推理QueryEngine 是整个系统的心脏,管理消息历史、token 预算和多轮工具调用循环
LLM 单次调用只能生成文本和工具调用请求。要完成一个真实的编程任务(如修改代码、运行测试、修复错误),需要多轮「调用 → 工具执行 → 结果注入 → 继续推理」循环。QueryEngine 是这个循环的核心引擎,管理消息历史、流式输出、token 预算、错误重试和成本追踪。
查询引擎核心 — 管理 LLM 调用和工具循环
// QueryEngine 核心职责:
// 1. 构建消息历史(system + user + assistant + tool_result)
// 2. 调用 Anthropic API(流式响应)
// 3. 从响应中提取 tool_use 块
// 4. 分发工具执行并收集结果
// 5. 将 tool_result 注入消息历史
// 6. 循环直到 LLM 输出 end_turn
import { query } from './query.js';
import { loadMemoryPrompt } from './memdir/memdir.js';
import { fetchSystemPromptParts } from './utils/queryContext.js';自动紧凑阈值计算 — 基于上下文窗口动态调整
const MAX_OUTPUT_TOKENS_FOR_SUMMARY = 20_000;
export function getEffectiveContextWindowSize(model: string): number {
const reservedTokensForSummary = Math.min(
getMaxOutputTokensForModel(model),
MAX_OUTPUT_TOKENS_FOR_SUMMARY,
);
let contextWindow = getContextWindowForModel(model, getSdkBetas());
return contextWindow - reservedTokensForSummary;
}
export const AUTOCOMPACT_BUFFER_TOKENS = 13_000;
export const WARNING_THRESHOLD_BUFFER_TOKENS = 20_000;