一个人装好几个 Agent——Claude Code、Codex、Gemini CLI——是很常见的事。问题是每个 Agent 都把模型配置存在自己的文件里,格式各异、密钥独立、订阅互不相通。你在 Claude 里付费的订阅,没法在 Codex 里用;想换个模型,得手动去改配置文件。magpie 就是来解决这件事的:一个本地网关,把所有这些收拢到一个地方管。
解决什么问题
magpie 的口号是"每个 Agent 的模型,一个地方管"。它的做法是让所有 Agent 的请求都走本地网关,网关统一管模型列表、Provider、密钥,Agent 无感知。
接入方式就是改几个环境变量,把 Agent 的 base URL 指到本地网关:
export OPENAI_BASE_URL=http://127.0.0.1:3425/v1 OPENAI_API_KEY=magpie
export ANTHROPIC_BASE_URL=http://127.0.0.1:3425 ANTHROPIC_API_KEY=magpie
网关同时支持 OpenAI Chat、OpenAI Responses、Anthropic Messages、Gemini 四种协议,还能互相翻译,流式、工具调用、推理内容都兼容。所以 Claude Code 可以跑 DeepSeek,Codex 可以跑 Kimi,都是把请求翻译一下的事。
三个关键设计
第一个是配额耗尽自动切换。多个模型可以打包成一个路由组,网关在成员间分发请求。路由模式有几种:smart 在还有额度的订阅里选最先续期的,order 用一个直到不能答再换下一个,rotate 每轮换一个,usage 用用得最少的,pace 按每小时预算用剩余最多的。会话会粘在应答的那个账户上,好让厂商的 prompt cache 继续生效。
第二个是订阅复用。把已经登录的 Agent 当订阅用:本机的 Claude 订阅能共享给其他 Agent,ChatGPT 订阅、GitHub Copilot、Gemini、Grok 同理。它还带一个 daily warm-up,按你选的时间自动启动各账户的 5 小时窗口。
第三个是隐私掩码。请求离开本机前,把密钥、密码、邮箱替换成占位符,回复里再还原。这个功能默认关闭,得在设置里开。
命令一览
CLI 用起来很直接:
magpie provider add deepseek sk-… # 加一个 provider,预设只需 key
magpie claude deepseek/deepseek-v4-pro # 让 Claude Code 用 DeepSeek
magpie codex moonshot/kimi-k2.5 # 让 Codex 用 Kimi
magpie group add "opus" models=claude/claude-opus-5-5,copilot/claude-opus-5-5 routing=smart
magpie claude group/opus-anywhere # 订阅间自动故障转移
magpie save work && magpie use work # 保存/切换配置集
magpie quota # 看各计划剩余额度
三个关键设计之外
除了路由和订阅,还有几处设计值得一提。
Profiles 是一键保存、切换整套 Agent 配置的能力,比如存一个"Budget"省钱档、一个"Focus"性能档,用完一句 magpie save work && magpie use work 切走。它解决的是"不同任务该用不同模型组合"这件事——省得每次手动改一堆 Agent。
Intent routing 是用一个选定的小模型预读每轮请求,判断该走强模型还是便宜模型:测试、快问走便宜的,重活走强的。这比固定路由更省,但代价是多一次预读的调用和延迟。
Library 把指令、MCP 服务器、技能、子 Agent 写一次,自动转成各个 Agent 各自的格式。对同时用多个 Agent 的人来说,这部分省的是"同一份指令要往四个地方抄"的重复劳动。Web search 则给本身没有搜索能力的模型补上搜索,支持多种搜索后端、可以多 key 轮换。
这些能力凑在一起,magpie 就不只是一个"切换模型的小工具",而是把"模型、额度、指令、工具"这些本该统一管理的东西都收进了一个网关。
可复用与局限
可复用的点很清晰:本地网关加协议翻译,把"模型选择"从 Agent 配置里抽出来,这是多 Agent 场景下很省心的一层抽象;路由组和订阅复用,则是把"额度"当成了一等公民来管理。更底层的思路是——不要试图统一各个 Agent,而是在它们之上加一层网关,让差异在网关这一层被翻译掉。这个思路换到任何"多个工具、多套配置"的场面都成立。
局限也要说清。隐私方面,提示词、回复、密钥会发往你配置的 Provider,只有开了掩码,机密才对 Provider 不可见;掩码开启但模型运行不了时请求会被拦下(返回 503),不会原样发出。项目不接受外部 PR,有需求只能去社区描述、由维护者实现——想自己改点东西是不行的。另外它每天会发一次遥测,虽然声称不含密钥和提示词,介意的话用环境变量 DO_NOT_TRACK=1 关掉。
magpie 的价值在于:当你手上有好几个 Agent、好几个订阅,模型和额度的切换不该靠手动改配置文件。它把这层收口到一个本地网关,思路是干净的。