跳到主要内容

查询编排

源码: query.ts (69KB) | query/ | query/config.ts

1. 查询编排核心

query.ts 负责将用户的输入编排成完整的对话回合(turn)。它是 main.tsxQueryEngine.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 系统 | 下一节:引擎循环