文档 · 开发者

接入你的应用

写给 AI 应用、Agent 或客户端的开发者:想让自己的应用和 magpie 配合好,有三个层次,从 magpie 这边什么都不用改,到在 Agents 页面拥有自己的一行。

你想要做法magpie 需要改动
应用的请求由 magpie 提供服务,并在用量里以自己的名字统计直接调用网关无
Agents 页面上的一行:自动检测、在那里选模型、断开时还原Agent 适配器一个 PR
新的模型来源(订阅、厂商),或改写请求插件无

1. 直接调用网关

magpie 在本机运行一个 LLM 网关。用户在 magpie 里有的所有模型(订阅、API key、本地模型、路由组)都以各自的 id 在那里提供,所以你的应用只需要一个供应商条目,而不是每个厂商一个。

找到它

网关监听 127.0.0.1:3425,或 magpie 的 settings.json 里 port 指定的端口(~/.config/magpie/settings.json,Windows 上是用户目录下的同一路径;设置了 $XDG_CONFIG_HOME 时为 $XDG_CONFIG_HOME/magpie)。GET /api/hello 在是 magpie 时返回 {"name":"magpie","version":"…"}。这个文件只读、不要写。magpie 需要在运行(应用本身或 magpie serve);找不到时,你的应用照常提供它自己的供应商即可。

Shell
curl -s http://127.0.0.1:3425/api/hello
curl -s http://127.0.0.1:3425/v1/models -H "Authorization: Bearer magpie-acme"

端点

厂商本身支持你的 API 时请求原样转发,否则会被转换,流式、工具调用、图片和推理都包括在内。OpenAI 客户端的 base URL 是 http://127.0.0.1:<port>/v1,Anthropic 或 Gemini 客户端是 http://127.0.0.1:<port>。

路径API
/v1/chat/completionsOpenAI Chat Completions
/v1/responsesOpenAI Responses
/v1/messages、/v1/messages/count_tokensAnthropic Messages
/v1beta/models/{model}:generateContent(以及 :streamGenerateContent)Google Gemini
/v1/models模型目录

用 key 标明你的应用

在本机,网关接受任意 key。发送 magpie-<你的应用 id>(Authorization: Bearer magpie-acme,或 x-api-key),每次调用都会在用量、请求记录以及按 Agent 匹配的路由规则里记为 acme。不带它时,magpie 按 User-Agent 的第一个词统计(Acme/1.4 (darwin) 记为 Acme);SDK 自带的 User-Agent(OpenAI/JS …、ai-sdk/…)会被记成那个 SDK。从另一台电脑访问时(设置 → 局域网共享),key 必须是用户的网关密钥之一,应用名就靠 User-Agent。

模型

GET /v1/models 列出用户打开的模型:id(provider/model,或路由组的名字,原样发送即可)、display_name、owned_by(供应商)、reasoning 与 supported_reasoning_levels([{"effort":"low"},…]),已知时还有 context_window、max_output_tokens,以及 magpie 知道是否支持图片时的 modalities。请从这里读取,而不是内置一份列表:用户会在 magpie 里增删供应商。推理强度用你所用 API 自己的字段传(reasoning_effort、reasoning.effort、Anthropic 的 thinking 或 output_config.effort)。?format=text 每行一个 id。

可选

在同一会话的请求里带上 X-Magpie-Session: <id>,GET /v1/magpie/route?session=<id> 就能在第一个 token 之前告诉你路由组为这一轮选了哪个模型、尝试过哪些后备(用 after=<seq>&wait=<s> 长轮询)。GET /v1/magpie/quotas 列出用户各订阅的额度。两者只回答本机,或带网关密钥的其他机器。细节见参考文档。

保留用户自己的供应商。把 magpie 作为又一个供应商(名为 Magpie)加在用户已有的供应商旁边,而不是替换它们,这样关掉 magpie 就只是换选另一个供应商。

2. 在 Agents 页面占一行

magpie 列出的 Agent(Claude Code、Codex、OpenCode、dsh、Alma、Cindy……)都是 internal/agent 里的适配器,每个一个文件。有了这一行,你的应用会显示自己的名字和图标,安装后自动出现,用户可以从 magpie 的目录里为它选模型(和推理强度),供应商变化时跟着更新,断开时还原你的应用原来的设置。目前没有运行时注册:这一行通过给 magpie 提 PR 加入,随下一个版本发布。

适配器是一个 Agent 值,形态取决于你的应用提供什么:

一个 PR 需要:适配器及其在 agents.go 里的注册;UA(你的 User-Agent 开头,小写),让用量认得你的调用;internal/gui/assets/icons 里的图标;在临时 HOME 下运行的测试(连接、切换、断开后原文件还原);参考文档 Agents 表里的一行。最有帮助的是一个稳定、有文档的配置格式或导入链接,以及它在各系统上的位置。

3. 插件

插件是 magpie 运行的 npm 包,由用户在 设置 → 插件 里或用 magpie plugin add <package> 安装。供应商插件(OpenCode 的 auth 钩子或 pi 扩展包)添加一个模型来源,比如 magpie 自己不登录的订阅。网关中间件在请求和回复经过时改写它们。见插件开发。插件不能在 Agents 页面加一行,也不能写别的应用的配置,所以它不是应用注册自己的方式。

目前没有的

有问题,或想先讨论一个适配器:提一个 issue,或来 Discord 聊。