查询编排
源码:
query.ts(69KB) |query/|query/config.ts
1. 查询编排核心
query.ts 负责将用户的输入编排成完整的对话回合(turn)。它是 main.tsx 和 QueryEngine.ts 之间的中间层。
// source/src/query.ts
export async function runQuery(
engine: QueryEngine,
input: string,
config: QueryConfig
): Promise<void> {
// 1. 收集上下文
const ctx = collectContext()
// 2. 构建 System Prompt
const systemPrompt = buildSystemPrompt(ctx)
// 3. 调用引擎执行
await engine.execute(systemPrompt, input, config)
// 4. 处理结果
handleQueryResult(engine.result)
}
2. 查询配置
query/config.ts 定义了查询的行为配置:
interface QueryConfig {
maxTurns: number // 最大回合数
tokenBudget: number // Token 预算
stopHooks: StopHook[] // 停止钩子
// ...
}
3. 停止钩子
query/stopHooks.ts 允许在特定条件下提前终止查询循环:
- 用户取消(Ctrl+C)
- Token 预算耗尽
- 达到最大回合数
- 收到特定工具结果
4. Token 预算
query/tokenBudget.ts 实现 Token 使用量的跟踪和限制:
- 追踪每轮的 Token 消耗
- 预算不足时发出警告
- 支持动态调整预算
上一节:02 Prompt 系统 | 下一节:引擎循环