
PilotDeck 智能路由引擎全拆解难度识别、降级策略与 Token 节省的 3 大机制【免费下载链接】PilotDeckTask-oriented AI Agent productivity platform项目地址: https://gitcode.com/OpenBMB/PilotDeckPilotDeck 是一款任务导向的 AI Agent 生产力平台它的智能路由引擎会自动识别任务难度、在多模型之间降级容错并统计 Token 节省成本。本文带你零门槛读懂这套路由系统判定模型如何给任务打分、降级链路何时触发、省下的 Token 又是怎么算出来的。为什么需要智能路由引擎用过大模型的朋友都有同款烦恼大模型聪明但贵、小模型便宜但弱。人工逐个切换模型既麻烦又容易选错。PilotDeck 的解决方案是让路由器替你做决定——每条用户消息发送前路由引擎都会经过一次模型选型把请求派给最合适的模型。整套引擎位于 src/router/ 目录核心只有两句话decide决策这条消息该用哪个模型execute执行调用失败时如何降级、重试、兜底下面拆解它的 3 大机制。路由决策四步走从一条消息到一次模型请求打开 RouterRuntime.tsdecide()函数就是决策总入口一次完整决策按以下顺序进行步骤做什么对应模块① 场景判定用户显式指定模型 子智能体 默认场景decideScenario.ts② 难度分级判定模型给任务打 tier档位标签classifyAndRoute.ts③ 缓存感知切换读缓存比换模型重发便宜时保留当前模型RouterRuntime.ts④ 媒体能力改道消息带图片但模型不支持自动换到支持的模型mediaRequirements.ts其中第 ③ 步的粘性模型很实用会话中途换模型意味着整段上下文要重新计费路由器会算一笔账——继续用旧模型读缓存比切到新模型重新预填充更便宜吗不是的话果断切走。难度识别判定模型如何给任务分级这是 Token Saver 的核心。PilotDeck 内置了 4 个任务档位定义在 schema.ts 中档位典型任务simple打招呼、确认、单步问答、简单文件写入medium单次工具调用、短文本生成、1-2 个文件读写complex需要多子智能体并行编排、任务委派reasoning多文件操作、数据分析、多步工作流、调研报告每个档位在配置里绑定了不同的模型简单任务交给便宜的小模型深度推理才动用旗舰模型。判定是怎么做的路由器会调用一个便宜的小模型当裁判提示词由 generateJudgePrompt.ts 生成要求裁判只返回一个形如tiermedium/tier的档位标签。细节上有很多防翻车设计3 次重试 超时熔断裁判请求默认超时保护失败后回落到默认档位绝不让选型卡死主流程短消息继承机制像好的继续开始这类确认词isShortContinuation会直接继承上一轮的档位避免被误判成简单任务子智能体策略可配置为judge子任务也参与分级或skip跳过判定、继承主模型。一旦判定为complex还能触发AutoOrchestrate路由器把主智能体升格为只规划、不分身干活的编排者真正干活的原子步骤全部委派给子智能体执行见 applyOrchestration.ts 与 schema.ts 中的编排提示词。降级策略模型罢工时的三道保险模型调用失败是常态PilotDeck 用三层机制保证可用性1️⃣ Fallback 降级链在pilotdeck.yaml的router.fallback里按场景配置后备模型列表默认最多尝试 5 组。哪些错误值得降级由 runFallbackChain.ts 判定限流、服务端错误、欠费billing、模型不存在model_not_found都会触发换模型而上下文超长不会降级——它该走的是压缩而不是换模型。2️⃣ 智能重试零用量重试zeroUsageRetry.ts模型返回了空气0 Token就重发默认最多 2 次延迟递增瞬态重试网络抖动、超时类错误采用 LiteLLM 风格的指数退避 随机抖动避免雪崩式重连。3️⃣ 熔断器Circuit BreakerProviderHealthTracker.ts 为每个 provider 维护一套状态机healthy ──3次连续失败──▶ degraded ──5次连续失败──▶ open30秒内跳过该provider ▲ │ └──────────── 探测成功 ◀──── half_open ◀─ 30秒冷却 ──┘熔断器让路由远离正在着火的房子而半开探测又能第一时间发现它救活了。内容锁定规则一旦回复开始流式输出文字降级和重试就全部关闭——否则会向用户重复输出两段答案。这个权衡与 OpenAI/Anthropic 官方客户端一致。Token 节省省钱是怎么算出来的省了多少钱不能靠感觉得靠账本。TokenStatsCollector.ts 会记录每一次请求的实际成本按router.stats.modelPricing配置的输入/输出/缓存读取单价计算支持$或¥每百万 Token基准成本假设没有路由、一直用基准模型会花多少钱基准模型由router.stats.baselineModel指定节省额savedCost 基准成本 − 实际成本按小时、按会话、按档位、按模型多维汇总追加写入stats.jsonl。也就是说你不用猜路由有没有帮上忙——打开统计面板就能直接看到今天智能路由帮你省了多少钱。配置速查pilotdeck.yaml 中的关键路由字段所有路由行为都收敛在pilotdeck配置文件的router段字段一览如下功能YAML 路径说明总开关router.enabled关闭后所有请求直通agent.model默认场景模型router.scenarios.default路由兜底选用的provider/model裁判模型router.tokenSaver.judge负责难度分级的便宜小模型任务档位router.tokenSaver.tiers.name.model每个档位绑定一个模型降级链router.fallback按场景配置后备模型列表成本统计router.stats.modelPricing各模型单价用于节省计算Web 端也可以在智能体 → 路由设置页直接修改保存时会通过配置 API 做校验与热加载详见 53-router-settings-api.zh.md。小结一张图看懂三大机制机制解决的问题核心源码难度识别该用贵模型还是便宜模型tokenSaver/降级容错模型挂了/限流了怎么办fallback/、health/Token 节省省钱效果是否真实可见stats/PilotDeck 智能路由引擎的设计哲学一句话概括把选模型这件费心且烧钱的事变成一套可观测、可降级、可核算的自动化流水线。想深入细节建议从 RouterRuntime.ts 的decide()与execute()两个函数入手配合 tests/router/ 下的确定性测试可以快速建立完整心智模型。【免费下载链接】PilotDeckTask-oriented AI Agent productivity platform项目地址: https://gitcode.com/OpenBMB/PilotDeck创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考