跳转到内容

06 — Auto 模型路由:动态选择模型与推理级别

Auto 模型路由:动态选择模型与推理级别

学习目标

理解 CodeWhale 的 Auto 模式:通过一次廉价的 Flash 预调用动态选择模型与推理级别,以及路由失败时的回退策略。

前置知识

下文假设你已理解上述概念,直接聚焦 CodeWhale 的具体实现。

项目实践

工作原理

--model auto 是 CodeWhale 的默认模式。它在每轮实际请求前执行一次轻量路由:

路由决策

路由调用分析:

  • 最新请求的内容
  • 近期上下文中积累的 turn 状态

决策结果:

任务类型选择模型推理级别
短/简单问题deepseek-v4-flashoff
编码任务deepseek-v4-prohigh
调试/架构deepseek-v4-promax
安全审查deepseek-v4-prohigh
模糊多步任务deepseek-v4-prohigh

失败回退

如果路由调用失败(网络超时、API 错误)或返回无效答案:

  • 回退到本地启发式策略
  • 本地启发式基于请求长度和关键词复杂度判断
  • 子 Agent 继承父的 Auto 模式,除非显式指定模型

关键属性

  1. Auto 是本地概念:上游 API 从不收到 model: "auto"——只收到具体的模型和推理级别
  2. 成本追踪对实际模型计费:Flash 路由调用的成本独立计算,实际响应按实际模型计费
  3. TUI 显示路由路径:用户可以在 UI 中看到模型选择了什么以及为什么
  4. 手动覆盖Shift+Tab 在 TUI 中手动切换推理级别(off → high → max)
  5. 固定模型用于基准测试:需要可重复基准测试、严格成本上限或特定 provider/model 映射时,使用固定模型

实现入口

路由逻辑在 resolve_cli_auto_route() 函数中实现(crates/tui/src/main.rs),CLI 和 ACP 服务器都调用此函数。

问题与规避

陷阱:路由调用本身消耗成本

每次 turn 额外一次 Flash 调用,成本约 $0.14/M input × 几百 tokens ≈ $0.00005。

规避:对于高频简单查询(如”解释这行代码”),路由成本可能接近实际响应成本。CodeWhale 的路由调用极简——只发送最新请求和少量上下文,控制 token 消耗。

陷阱:路由决策不准确

Flash 模型的路由判断可能不如 Pro 准确,导致简单任务用了 Pro 或复杂任务用了 Flash。

规避:路由的代价是有限的——如果 Flash 不足以处理被升级的任务,用户可以在下一轮用 --model/model 手动覆盖。

陷阱:子 Agent 的成本累积

每个子 Agent 都继承 Auto 模式,如果父 Agent 同时打开 10 个子 Agent,每个都做一次路由调用。

规避:子 Agent 的路由调用使用 Flash(最低成本),且路由结果倾向于对子 Agent 使用更经济的配置。并发上限(10/20)也限制了累积成本。

设计取舍

Auto vs 固定模型

维度Auto 模式固定模型
成本优化——简单任务用便宜模型固定——每轮相同成本
可重复性低——路由决策可能变化高——每次相同模型
延迟略高——额外一次路由调用最低——直接调用
适合场景日常使用,任务类型多样基准测试、成本上限、调试

为什么选 Flash 做路由

Flash 的输入价格 $0.14/M tokens 是 Pro 的 1/3,且 thinking off 时延迟极低。一次几百 token 的路由调用成本不到 $0.0001,远低于 Pro 路由调用的成本。

为什么是两级模型而非三级

当前只有 deepseek-v4-flashdeepseek-v4-pro。未来如果增加中间级别(如 deepseek-v4-plus),路由逻辑需要扩展决策树,但核心架构(轻量预调用 + 动态选择)保持不变。

参考来源