magpie
yetone/magpie加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
凌晨两点,你同时开着 Claude Code 写后端、Codex 做代码审查、OpenCode 做辅助编码。三个窗口、三套订阅、三套 API Key 管理——而你想把 Claude Code 的 Opus 换成 DeepSeek 最新模型试试效果。
你打开 Claude Code 的配置文件,找到 model 字段,修改,保存,关掉 IDE 重启。三个窗口都要重复这套流程。一个月后,你发现 Codex 还在用 GPT-4,Claude Code 切到了 Sonnet,但 OpenCode 的配置被另一个工具覆盖了。
这不是一个工程问题,这是多 Agent 时代的基础设施缺失。每个 Agent 各自为政,模型配置互相孤立,订阅配额无法共享——magpie 就是来解决这个问题的。
Magpie 由独立开发者 yetone 用 Go 语言开发(MIT 许可证),定位是一个本地网关 + 配置管理器,运行在 macOS 菜单栏(Windows/Linux 也有托盘图标和 TUI 界面),让你在一个界面里管理所有 AI Agent 的模型配置。
核心逻辑很优雅:
Agent 配置层:magpie 认识 27 种主流 AI Agent(Claude Code、Codex、Claude Desktop、OpenCode、Pi、Goose、Cursor CLI、Copilot CLI、Gemini CLI、Mimo Code、OmO、Crush、Devin、Hermes Agent……),知道每个 Agent 的配置文件路径和字段结构,只改你需要改的那一个字段,原子写入,不碰其他内容,注释和格式全部保留。
本地网关层:magpie 在 127.0.0.1:3425 启动一个本地 HTTP 服务,充当"协议翻译官"。Codex 只认识 OpenAI Responses API,Claude Code 只认识 Anthropic Messages API,magpie 接收任何格式的请求,翻译成对应 vendor 的 API 格式,转发到 DeepSeek、Anthropic、OpenAI 等后端,再把响应翻译回来——流式输出、工具调用、推理过程全部保留。
Provider 共享层:你添加一个 Provider(DeepSeek、OpenRouter、Ollama 等),填入 API Key,magpie 从 vendor 实时拉取模型列表(通过 models.dev 目录做补充),这个 Provider 立即出现在所有 Agent 的模型选择器里,你的 Claude 订阅也变成一个 Provider,其他 Agent 都能用。
Magpie 的架构分为三个层次,每个层次职责清晰:
入口层(main.go) 根据命令行参数启动不同界面:GUI 模式(magpie)加载 Wails 框架的菜单栏应用,TUI 模式(magpie tui)启动 Charm 的 bubbletea 终端界面,Web 模式(magpie web)通过 WebView 提供浏览器访问。
核心引擎层(internal/agent/) 是所有 Agent 配置的统一抽象,agents.go 定义了 27 种 Agent 的配置文件路径、支持的字段、别名,claude.go、codex.go、opencode.go 等文件分别实现每种 Agent 的配置读写逻辑,全部通过 internal/edit/ 中的 JSON/TOML/YAML 专用编辑器完成原子写入。
网关层(internal/gateway/) 是整个系统的技术核心:接收来自各 Agent 的 HTTP 请求,通过 internal/gateway/ir.go 的中间表示(IR)层统一协议无关的请求结构,由 internal/gateway/routing.go 的路由引擎决定请求发给哪个 Provider 的哪个 Key/账号(支持 smart/order/rotate/usage 四种路由模式),再由 internal/provider/provider.go 解析 provider/model 名称并找到对应的实际 endpoint,最终转发并翻译响应。
数据层(internal/catalog/) 负责模型目录管理,live.go 从各 Provider 实时拉取可用模型列表,public.go 整合 models.dev 公开目录,fresh.go 做缓存失效管理,codexcat.go 专门处理 Codex 的模型缓存。
项目基于 Go 1.26.3,主要依赖:
tea.Msg 消息循环Magpie 本身不是一个 AI 模型或训练框架,而是一个 AI 模型路由和消费层。它原生集成的 AI 相关功能包括:
internal/claudebridge/mcp.go 实现 MCP 桥接,让 Claude Code 的订阅可以被其他 Agent 工具调用internal/sessions/claude.go 驱动真实的本地 claude 二进制处理 Anthropic 请求,避免第三方调用被识别为"非官方客户端"导致的 prompt 分类问题internal/gateway/decide.go 用分类模型决定用户意图,将请求路由到合适的模型(group + auto effort 模式)internal/catalog/public.go 接入 models.dev 公开模型目录,实时获取模型元数据(推理 effort、上下文长度、定价等)internal/usage/ledger.go 和 internal/stats/stats.go 统计每个 Agent、每个模型的 token 消耗和成本Magpie 提供多平台、多形态的交付方式:
macOS 用户:下载 DMG 安装包后,magpie 自动出现在菜单栏(右上角鸟图标),点击即弹出模型配置面板。magpie tray 模式只显示托盘图标,适合加入登录项。
Windows/Linux 用户:提供系统托盘图标(systray)、纯 TUI 模式(magpie tui),以及 Web 模式(magpie web --lan)——在远程服务器上运行,通过浏览器访问 GUI。
Docker 用户:仓库内置多阶段 Dockerfile,基于 golang:1.26-alpine 编译 + gcr.io/distroless/static-debian12:nonroot 运行镜像,输出二进制订约 7MB(无 GUI 版本),CI/CD 完整(.github/workflows/docker.yml 包含 smoke test 和多架构构建),支持 amd64/arm64。
快速部署(推荐):
# 添加一个 Provider
magpie provider add deepseek sk-your-key
# 让 Claude Code 切换到 DeepSeek
magpie claude deepseek/deepseek-v4-pro
# 让 Codex 切换到 Kimi
magpie codex moonshot/kimi-k3
# 查看当前所有 Agent 状态
magpie ls
# 一键快照所有配置,切换到"工作模式"
magpie save work && magpie use work
Magpie 的设计哲学是"不碰 Agent 的核心逻辑,只管模型切换",但这带来了几个值得注意的问题:
Claude Code 订阅必须本地安装:由于 Magpie 通过驱动本地 claude 二进制来使用 Claude 订阅(避免被识别为第三方客户端),Claude Code 必须已经安装并完成 OAuth 登录。这对纯云端使用场景不适用。
Provider Key 安全:API Key 存储在 Magpie 本地配置中(~/.config/magpie),而非系统 Keychain。虽然 Magpie 文档明确说"从不从环境变量读取 Key",但对于高度敏感的生产环境,本地明文存储存在一定风险。
Provider 稳定性依赖:Magpie 的模型列表和路由逻辑高度依赖各 Provider 的 API 可用性。如果 DeepSeek API 限流,配置了 DeepSeek 的 Agent 会在 magpie 路由重试期间经历可感知的延迟。
Gateway 监听端口:本地网关默认监听 127.0.0.1:3425,虽然只有本机进程可访问,但如果其他本地应用(如恶意软件)也在同一台机器上运行,理论上可以向该端口发送请求。
Magpie 出现的背景是 2024-2025 年 AI Agent 工具的爆发式增长。Claude Code、Codex、OpenCode、Devin、Cursor……每个工具都自带一套订阅体系,用户被锁定在单一生态里。Magpie 的价值在于打破这个锁定——它不改变 Agent 本身的行为,只是让模型选择变得更灵活。
从增长曲线看,GitHub Stars 超过 3700+,活跃的 releases 更新(v0.1.464),以及持续扩大的 Agent 支持列表(最近加入了 Hermes Agent、Droid/Kimi Code 等),说明项目仍在快速迭代。
Magpie 代表了一种趋势:随着 Agent 工具越来越多,对"Agent 配置管理"工具的需求会像早年"SSH Key 管理"一样成为刚性需求。在模型即商品的年代,谁能让用户更方便地组合不同供应商的模型,谁就占据了这个中间层。