综合 magpie:一个 127.0.0.1:3425 的本地网关,让 Claude Code、Codex 共用同一批模型和订阅

2026-11-15 21:32:20

magpie:一个 127.0.0.1:3425 的本地网关,让 Claude Code、Codex 共用同一批模型和订阅

magpie 是 Go 写的本地网关加菜单栏应用,跑在 macOS、Windows、Linux 上(菜单栏、窗口、TUI、web UI、CLI 都有),也能进 Docker 和 Termux,MIT 许可。它要解决的事很具体:任意 agent 用上任意一家的模型或订阅,切换只需要在菜单栏点一下。

  • 仓库:https://github.com/yetone/magpie
  • 站点:https://usemagpie.ai
  • 文档:https://usemagpie.ai/docs/start
  • 插件:https://github.com/magpie-community/plugins
  • 发布:https://github.com/yetone/magpie-releases

每个 agent 一套配置,订阅只在一个 agent 里能用

Claude Code、Codex、Gemini CLI、OpenCode 各有一份配置文件,格式不同,base URL 和 key 各写各的。你花钱买的订阅,登录状态只属于某一个 agent,别的 agent 拿不到。同一批模型被拆成几份互不相通的配置,换一次模型要翻几个文件。

magpie 把这些配置收到自己后面:模型列表只有一份,选中之后它去改 agent 配置文件里真正起作用的那一个 key。

网关:一个端口,四套协议互转

核心是 127.0.0.1:3425 上的本地网关,同时讲 OpenAI Chat、OpenAI Responses、Anthropic Messages 和 Gemini 四套协议,并在它们之间互转,streaming、tool calls、reasoning 都在转换范围内。只认 Anthropic Messages 的客户端,因此可以打到只提供 OpenAI Chat 的上游。任何接受 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
export GOOGLE_GEMINI_BASE_URL=http://127.0.0.1:3425 GEMINI_API_KEY=magpie

改配置只动一个 key

Agents 页面点一下当前模型,弹出可搜索列表,模型按 provider/model 命名。magpie 写 agent 配置是原子的,保留原有注释、顺序和格式,不是整份重写。Profiles 把每个 agent 的选择打包成一个名字(比如 Budget、Focus),一次切换全部生效。

Providers 用预设加 key:Anthropic、OpenAI、Gemini、Bedrock、DeepSeek、Kimi、GLM、Qwen、Groq、xAI、OpenRouter、Ollama、LM Studio,外加任意 OpenAI / Anthropic 兼容 URL。模型列表来自厂商,名称和 reasoning 等级用 models.dev 补齐;可以从 CC Switch、Claude Code、Codex、Alma 导入;每个 key、每个账号可以走各自的 proxy。

订阅这边,已登录的 agent 本身就是一个 provider,反供给其他 agent:Claude 走本地真实的 claude 二进制并通过 MCP 桥接工具,Codex/ChatGPT 套餐模型,GitHub Copilot、Gemini(Code Assist)、Antigravity(经 agy CLI)、Grok(SuperGrok),以及任意 OpenCode auth 插件或 npm 上的 pi 包。同一订阅下可以挂多个账号,额度用完自动换下一个。

magpie provider add deepseek sk-…              # 预设只需 key
magpie claude deepseek/deepseek-v4-pro          # Claude Code 跑在 DeepSeek 上
magpie codex moonshot/kimi-k2.5                 # Codex 跑在 Kimi 上
magpie group add "Opus anywhere" models=claude/claude-opus-5-5,copilot/claude-opus-5.5 routing=smart
magpie claude group/opus-anywhere               # 在多个订阅间故障转移
magpie save work && magpie use work             # profiles
magpie quota                                    # 每个套餐还剩多少
magpie settings set theme dark
magpie tui

路由组:五个模式,以及对话粘性

group 是「一个名字背后放几个模型」,agent 把它当成一个模型来选,比如 group/daily-coding。网关在成员的 key 和账号之间分摊请求:

  • smart:在还有额度的订阅里,选最快续期的那个
  • order:先用第一个,答不了再下一个
  • rotate:每轮换下一个成员
  • usage:用得最少的优先
  • pace:每周剩余配额摊到重置前每小时最多的账号优先

另有一条粘性规则:只要厂商的 prompt cache 还值得保,一段对话就留在回答它的那个账号上。组里可以再套组;intent routing 会让一个小模型读每一轮,测试类请求去强模型,快问快答去便宜的。

订阅账号的发现是自动的——magpie 读 Claude Code 和 Codex 的登录文件以及 Keychain。不想被读:Settings → Privacy → Subscription accounts,或 magpie accounts discovery off(on 恢复);MAGPIE_NO_ACCOUNTS=1 只对单次运行生效,不改已保存的设置。API key 类型的 provider 不受影响。

隐私遮蔽:占位符的代价

在 Settings → Privacy 里打开(默认关闭)之后,prompt 里的 key、密码、邮箱会在离开本机前换成占位符,回复里再换回来,流式文本和 tool call 参数都包含。规则覆盖 API key、私钥、token、邮箱、校验和成立的卡号/证件号;可选一个 1.6 GB 的本地模型(CPU)去识别规则找不到的姓名、地址和密码。

一个值会变成 {{API_KEY_k3v9x2mq}} 这样的占位符,同一个值每次都是同一个占位符,prompt cache 和 thinking signature 因此仍然有效。这些值只在内存里,不落盘。遮蔽开着但跑不起来时,请求会被拦下(503),不会按原文发出去。Insights → Masking 列出每一条被改过的请求,可以按类型设 Mask/Warn/Block,加自定义词和模式,维护 Never mask 列表。

代价要直说:模型看到的是占位符而不是原值,所以「这个 token 为什么被拒」这类要处理值本身的任务做不了——得把值放进 Never mask。

插件、用量与遥测

插件跑在 Bun 上,第一次用到时自动下载:magpie plugin add opencode-gemini-auth、magpie plugin login google-plugin。插件也可以当网关中间件,写 onRequest / onEvent / onResponse:

// alias.middleware.js — magpie plugin add ./alias.middleware.js
export function onRequest(body, ctx) {
  if (body.model === "fast") return { ...body, model: "deepseek/deepseek-chat" };
}

现成的有 param-override、model-map、system-prompt、word-guard、think-tags。插件以你的账号权限运行,装之前自己看一眼代码。

用量侧记录 token、cache 读写、reasoning 与调用数、按 list price 的成本,magpie quota 看每个 key / 套餐 / 账号的余额,session 带成本,还有 context 占用、按账号和上游 key 的账单,支持 OTLP 导出。局域网共享用命名的 gateway key,各自带日/周/月 token 和成本上限。

每天一次匿名遥测:随机 id、版本和系统、在用的 agent/provider/model(自加的用自定义 id)、安装的 Discover 插件、partner add-sheet 计数;不含名字、URL、账号、key、prompt 和用量。Settings → Privacy 或 DO_NOT_TRACK=1 可以关。

它不适合谁

只用一个 agent、厂商自带套餐就够用的人不需要 magpie——一个账号、没有 group,额度用完没有可切换的对象,错误会照常抛给 agent。另外这个仓库不收 pull request,只有 maintainer 能开,修 bug 要去 Discord 描述。安装(curl -fsSL https://usemagpie.ai/install.sh | sh)、Linux 依赖(WebKitGTK 4.1)、Docker 镜像、卸载(--uninstall 把 agent 改回原样,~/.config/magpie 保留除非 --purge)这些细节以官方文档为准。

复制全文 生成海报 magpie AI编程工具 本地网关 Go 工具评测

推荐文章

程序员茄子在线接单