pi-shift-router
v1.3.0原版。一条命令装进 pi,在 Fast 与 Smart 之间路由每一轮,复杂任务还会委派给 Fast 子代理来编排执行。
- 零运行时依赖 · 约 409 kB
- 任务级编排默认开启
- 369 个单元测试
重要的事它是 CTO,跑量的活它是工程师。
日常编码用便宜快速的模型,复杂问题交给聪明模型。服务商掉线或限流?自动切换 —— 任务不中断。任务真的复杂时,Smart 层还会亲自规划、委派给 Fast 子代理 —— 在 pi 和 DeepSeek Harness 上通用。
同样的 LLM 裁判路由、同样的回退链、同样的任务级编排 —— 适配你实际在用的 agent。
原版。一条命令装进 pi,在 Fast 与 Smart 之间路由每一轮,复杂任务还会委派给 Fast 子代理来编排执行。
DSH 版本。通过 cordis.patch.yml 接入 harness,走它自己的 agent 管线,配置可以在 GUI 的 “Shift-Router” 卡片或 /router config 里实时改。
一晚上就能读完的代码库,两个版本。挑匹配你那个 agent 的就行。
装完什么都不变 —— 只有你选好模型后路由才开始工作。随时可卸载,没有任何绑定。
一条命令。pi 会写入你的设置,下次启动自动加载 —— 不用重新编译,也不用改任何配置。
运行 /router config,选一个 fast 模型和一个 smart 模型 —— 就用你已经在用的那两个。可以存到用户级或项目级。
/router status 显示你的配置;下一轮就完成第一次分类。之后全自动 —— 想控制时用 /router quiet 和 /route-force 调整。
每个任务有难度,每个模型有价格。Shift Router 自动把两者匹配起来。
就像一支团队:工程师又快又便宜地把日常活干了;CTO 在关键时刻亲自接管整轮。同一件事,两种脑力 —— 你还没打完字,路由器就已经决定该用谁。而 CTO 的任务足够大时,它也不只会单打独斗:它会把实现委派给 Fast 子代理,再逐个审查。
只有任务真的需要深度时,judge 才升级 —— 日常编码一直跑在你的平价模型上,昂贵的前沿模型只留给真正重要的事。
一次微型分类调用 —— 按 fast 档价格计费几千 token,耗时 200ms–2s。相比避免误用 Smart 省下的钱,这点开销不值一提。
如果某个模型 429 或超时,它进入短暂冷却,同层下一个健康模型自动接管 —— 就在同一轮内,你什么都不用做。
你的日常工程师。日常活又快又稳 —— 写代码、跑测试、修 bug,不会为一次重命名或重构浪费前沿模型。
CTO —— 定方向、纠偏差、审结果,硬问题自己上手:架构、设计 review、安全、多步规划、不可逆的改动。高风险的轮次不会被敷衍。
一次轻量分类 —— 由 fast 层模型自己完成 —— 读你的请求,选出 fast 或 smart。没有重推理,也没有你能察觉的延迟。
judgeTimeout: 5000
需要深度时升级立即生效。降级要等明确趋势 —— 最近 5 轮分类中多数是 fast —— 路由绝不中途在两个模型间来回跳。
window: { size: 5, threshold: 0.6 } provider 限流或报错时,那个模型进入指数退避冷却(5xx 从 1m 起步;429/配额 从 16m 起步,封顶 6h),同层下一个健康模型接管 —— 你全程无感,继续干活。
cooldown: 1m → 4m → 16m → 1h → 4h → 6h
当 Judge 判定任务复杂且编排处于 auto 模式(默认)时,Smart 层以 CTO 身份运行:规划工作、把实现委派给 Fast 工程师子代理、逐个审查结果并迭代,直到活干干净。简单任务永不编排 —— 它们留在普通路由器上。
选最贴近你的那个 —— 随时可调。
每层混 2–3 个 provider。某个限流或挂掉,同层下一个健康模型就在这一轮接管。
一个 provider、两档、一份账单、一个额度池。最简配置 —— 日常用平价模型,硬活交给同一家的旗舰。
Fast 档跑你机器上的量化模型,Smart 档走云端前沿。日常活隐私在本地;关键时刻云端出手。
内容直接取自 README。
什么都不变。两层默认都为空 —— 路由器不做任何事,pi 继续用你的默认模型。只有运行 /router config 选好模型后,路由才开始工作。
能。日常任务继续用你快速、高性价比的模型,而不是每个请求都烧旗舰。judge 本身按 fast 层价格计费几千 token —— 省下的钱远超这点开销。
完全安全。配置前路由器什么都不做;纯 TypeScript、零运行时依赖;/router off 可立即停用。没有任何绑定。
它是 CTO 角色 —— 定方向、纠偏差、审结果,硬问题自己上手:架构、设计 review、安全、多步规划、不可逆的改动。高风险的轮次不会被敷衍。它不只是给建议或审查,它自己动手写代码、把活干完。
不会。分类调用只需几千 token、约 200ms–2s。调用期间状态栏显示 🧭 judging… —— 大多数用户根本感觉不到。
你继续干活就行。失败的模型进入指数退避冷却 —— 5xx 从 1m 起步(1m → 4m → 16m → 1h → 4h… 封顶 6h);值得故障转移的 4xx(429 限流 / 配额)跳过前几档、从 16m 起步,因为客户端限流通常比服务端闪断活得更久。同层下一个健康模型自动接管 —— 甚至在同一轮内。请求成功就立即清除冷却。
当 Judge 判定任务复杂时,Smart 层以 CTO 身份运行:规划工作、把实现委派给 Fast 工程师子代理(fresh context,模型取自你的 Fast 层)、逐个审查结果、用具体反馈迭代,最后做一次终验。简单任务永不编排 —— 它们留在普通路由器上。编排默认开启(auto 模式),/router orchestrate off 可关闭。它需要 pi-subagents 扩展 —— 没有它,复杂任务直接在 Smart 层运行,和以前完全一样。
不会 —— 这正是它的意义。Smart 层负责规划和审查,实现交给 fresh-context 的 Fast 子代理,每个都很小很便宜:窄任务约 $0.004,对比继承 176k-token fork 的约 $0.06。硬上限把花费锁在范围内:maxRounds 3、escalationThreshold 2。如果任务其实很简单,编排机制根本不会启动。
两道保险。收敛协议要求每次重新委派都必须带上结构化的失败报告 —— 哪里失败、在哪、要重跑的确切验收检查 —— 并且禁止原样重发同样的反馈(此时 CTO 会自己接管该阶段)。之上还有一轮验收审计(v1.3.0):每次编排轮次结束后,确定性检查必定运行(所有子代理都已回报、最终消息带 CTO 总结、是否撞上硬上限),外加一个可选的小型 fast 档 LLM 审计,对照你最初的目标检查三个维度:落地性(验收声明有实际结果支撑)、目标对齐(交付回答了请求)、交付质量(没有拿占位符当完成)。审计结果绝不回退已完成的轮次 —— 它通过 console.warn + 提示以及 /router status 的 “Last audit” 呈现。可用 orchestration.audit.enabled 开关(默认开)。
可以。/route-force <tier> 为下一轮锁定 Smart 或 Fast;/route-force <provider>/<model> 锁定具体模型。/route-force auto 清除覆盖。
可以 —— 随便混。每层是一个按优先级排序的 {provider, model, priority} 列表,fast 层用 DeepSeek、smart 层用 Kimi,一份配置全搞定。
可以。/router stats 显示每档花费与节省、窗口大小、置信度分布(高/中/低/无)、累计升级/降级次数、tokens-per-second。它还会报告成本遥测:每档花了多少,以及一个基线 —— 如果每一轮都跑你的 Smart 模型(即不装路由器)会花多少钱。例如 Spend: fast $0.045 (9 calls) · smart $0.42 (3 calls) · total $0.465,基线 $3.21,省下 $2.74。状态栏也会显示实时吞吐:[🧠 kimi-k3 • 23 tok/s]。
两个阈值:`threshold`(默认 0.6)控制最近 5 轮分类中要多大比例倾向 Fast 才触发降级;`minConfidence`(默认 0.5)设了一个门槛,低于它的票直接忽略。把 `threshold` 调到 0.8 能让 Smart 档停留更久。升级始终是即时的 —— 只有降级会等。
两者都是同类 pi 路由器。@tenchi4u/pi-bifrost 用 7 步规则 + 历史技巧、4 个档位决策 —— 覆盖更多场景,但更难推演;它省的是订阅额度而不是钱,故障时断路器还可能跨档切换。pi-smart-router 跑一条 12 步本地管线(无 LLM),3 个档位还带本地档,用公式估算成本,需要本地 DB + ML 模型(约 2.5 MB 加下载)和 15+ 个环境变量。Shift Router 把决策收敛到一份可读的 LLM prompt(纯文本可审计、JSON 模式强制)、两档一个心智模型、任务级编排(Smart CTO 委派给 Fast 子代理)、省了多少钱的成本遥测、与 Judge 共用冷却的同档故障转移,以及零依赖约 409 KB。CC-Switch 是另一个类别:桌面应用,在会话之间手动切换 provider 配置 —— 可以和逐轮路由共存。
有 —— dsh-shift-router(v0.5.0),同一个路由器的 DSH 适配版。通过 cordis.patch.yml 接入 harness,走它自己的 agent/request 管线,配置有两种实时方式:完整的 GUI 卡片(Settings → Plugins → Plugin configuration 里的 “Shift-Router” 卡片,两档模型链都能直接编辑)和交互式 /router config 编辑器(get / set / unset / diff)。能力和 pi 版一致:LLM 裁判、缓存感知路由、运行时故障转移、任务级编排、成本遥测 —— 而且编排硬上限由插件强制,不只是提示。109 个单元测试加一个免凭据的 headless e2e。安装:git clone https://github.com/green-dalii/dsh-shift-router && npm install && npm run build,然后 dsh plugin --profile web add <路径>。
不会。subagent 工具派生的子代理带有 origin === 'subagent' 标记,保持它们被钉住的模型 —— 路由器只驱动顶层 agent。编排时 CTO 委派给 Fast 子代理,其模型由部署配置钉住(tool-subagent 的 agentOptions),所以子代理永远按 Fast 层的价格运行。