为 pi-coding-agent 打造的开源扩展

每一轮对话, 都用对的模型。

日常编码用便宜快速的模型,复杂问题交给聪明模型。某个服务商掉线或限流?自动切换到下一个 —— 任务不中断。

多 Provider 自动切换,任务不中断 无第三方服务器 跑在你的 Pi 进程里 MIT 开源 零运行时依赖
pi-shift-router — 在 pi 中
状态栏 · toast · 自动
router: MiniMax-M3
档位: fast
mode: auto
judge ⚖ judging…
窗口 4/5 fast
🦾 [MiniMax-M3] → 修这个失败的测试
judging…
🧠 [kimi-k3] ← 架构问题自动升级到 Smart
⚠️ MiniMax-M3 429 → 切换到 deepseek-v4-flash — 1 分钟后重试
🦾 [deepseek-v4-flash] ← 同层 failover(v0.6.0)
See how
快速上手

三步就能跑起来

装完什么都不变 —— 只有你选好模型后路由才开始工作。随时可卸载,没有任何绑定。

  1. 01 / 03

    安装

    一条命令。pi 会写入你的设置,下次启动自动加载 —— 不用重新编译,也不用改任何配置。

    安装命令
    pi install npm:pi-shift-router
  2. 02 / 03

    选好你的模型

    运行 /router config,选一个 fast 模型和一个 smart 模型 —— 就用你已经在用的那两个。可以存到用户级或项目级。

    配置
    /router config
  3. 03 / 03

    看它自己工作

    /router status 显示你的配置;下一轮就完成第一次分类。之后全自动 —— 想控制时用 /router quiet 和 /route-force 调整。

    验证
    /router status
工作原理

一个简单的想法

每个任务有难度,每个模型有价格。pi-shift-router 自动把两者匹配起来。

就像一支团队:程序员又快又便宜地把活干了,CTO 在关键时刻把关。同一件事,两种脑力 —— 你还没打完字,路由器就已经决定该用谁。

日常活保持便宜

只有任务真的需要深度时,judge 才升级 —— 日常编码一直跑在你的平价模型上,昂贵的前沿模型只留给真正重要的事。

判断本身几乎免费

一次微型分类调用 —— 按你最低价计费几千 token,耗时 200ms–2s。相比避免误用 Smart 省下的钱,这点开销不值一提。

provider 掉线也不停

如果某个模型 429 或超时,它进入短暂冷却,同层下一个健康模型自动接管 —— 就在同一轮内,你什么都不用做。

Fast 🦾 你的日常帮手

程序员

你的日常码农。日常活又快又稳 —— 写代码、跑测试、修 bug,不会为一次重命名或重构浪费前沿模型。

  • 日常编码与修 bug
  • 测试与重复性改动
  • 简单、低风险的任务
Smart 🧠 专治难题

CTO

处理难题的架构师 —— 架构、设计 review、安全、多步规划、不可逆的改动。它不只是给意见,它亲自把活干完。

  • 架构与设计决策
  • 需要真判断的 review
  • 高风险、模糊、要深度的任务
LLM Judge

一个小调用就决定

一次轻量分类 —— 由 fast 层模型自己完成 —— 读你的请求,选出 fast 或 smart。没有重推理,也没有你能察觉的延迟。

judgeTimeout: 5000
降级门

不来回抖

需要深度时升级立即生效。降级要等明确趋势 —— 最近 5 轮分类中多数是 fast —— 路由绝不中途在两个模型间来回跳。

window: { size: 5, threshold: 0.6 }
运行时故障转移

故障,自动处理

provider 限流或报错时,那个模型进入冷却(1m → 30m),同层下一个健康模型接管 —— 你全程无感,继续干活。

cooldown: 1m → 2m → 4m → 30m
常见问题

几个常见问题

内容直接取自 README。

不配置任何模型会怎样?

什么都不变。两层默认都为空 —— 路由器不做任何事,pi 继续用你的默认模型。只有运行 /router config 选好模型后,路由才开始工作。

真的能省钱吗?

能。日常任务继续用你最便宜的模型,而不是每个请求都烧旗舰。judge 本身按 fast 层价格计费几千 token —— 省下的钱远超这点开销。

试一下安全吗?

完全安全。配置前路由器什么都不做;纯 TypeScript、零运行时依赖;/router off 可立即停用。没有任何绑定。

Smart 层到底做什么?

它是架构师角色 —— 复杂工作由它驱动整轮:架构、设计 review、安全、多步规划、不可逆的改动。它不只是给建议或审查,它自己动手写代码、把活干完。

Judge 会增加明显延迟吗?

不会。分类调用只需几千 token、约 200ms–2s。调用期间状态栏显示 ⚖ judging… —— 大多数用户根本感觉不到。

Primary 模型 429 或超时怎么办?

你继续干活就行。失败的模型进入短暂冷却(1m → 2m → 4m … 封顶 30m),同层下一个健康模型自动接管 —— 甚至在同一轮内。请求成功就立即清除冷却。

能强制指定某一轮用某个模型吗?

可以。/route-force <tier> 为下一轮锁定 Smart 或 Fast;/route-force <provider>/<model> 锁定具体模型。/route-force auto 清除覆盖。

能混用不同 provider 的模型吗?

可以 —— 随便混。每层是一个按优先级排序的 {provider, model, priority} 列表,fast 层用 DeepSeek、smart 层用 Kimi,一份配置全搞定。

和 pi-model-router、pi-smart-router 有什么区别?

它们解决不同问题,可以叠加使用:pi-shift-router 是 LLM 分类器 + 零依赖 + 运行时故障转移;pi-model-router 增加三层路由、USD 预算与关键词规则;pi-smart-router 做本地 ONNX ML 推理。