文档 · 指南

让 Shelley 用任意模型

Shelley(boldsoftware/shelley)是 exe.dev 的编程 Agent,一个由 shelley serve 运行的 Web 应用。它的模型存在自己的数据库里,不在 magpie 能改的文件里,所以 magpie 通过 Shelley 自己的模型页和 Profile 页用的同一套 API 告诉它:加一个指向 magpie 网关的自定义模型,并设为默认。这样 Shelley 的新对话就能用 DeepSeek、GLM、Kimi、Qwen、GPT 或 ChatGPT 订阅等 magpie 里的任意模型。

接入 Shelley

  1. 先启动 Shelleymagpie 要连上正在运行的 Shelley。没运行时 magpie 会提示:先 shelley serve 再试。
  2. 在 magpie 的 Agent 页选模型Shelley 一行的列表里有 Shelley 自己能用的模型,也有 via magpie 的模型。选后者。
  3. 开一个新对话新对话从默认 profile 的模型开始,也就是你刚选的模型。
终端
shelley serve                              # Shelley must be running
magpie shelley deepseek/deepseek-v4-pro

magpie 怎么告诉 Shelley

Shelley 给自己的命令行开了一个 Unix socket:$SHELLEY_SOCKET,否则是 $XDG_CONFIG_HOME/shelley/shelley.sock(默认 ~/.config/shelley,Mac 上也是);第二个服务器占了它时是 shelley-2.sock 等。magpie 按 Shelley 命令行的顺序找这些 socket,然后调用 /api/custom-models 和 /api/profiles:

终端
POST /api/custom-models   (over ~/.config/shelley/shelley.sock)
{
  "display_name": "deepseek/deepseek-v4-pro (magpie)",
  "provider_type": "openai",
  "endpoint": "http://127.0.0.1:3425/v1",
  "api_key": "…",
  "model_name": "deepseek/deepseek-v4-pro",
  "reasoning_support": "yes",
  "image_support": "no",
  "max_tokens": …
}

每个你在 magpie 里选过的模型是一个 openai 类型的自定义模型,指向网关的 /v1(Shelley 自己补上 /chat/completions),密钥是 magpie 给 Shelley 单独发的。Shelley 平时按端点和模型名从 models.dev 判断是否支持推理和图片,magpie 的模型查不到,所以 magpie 直接告诉它。然后 magpie 把默认 profile 的 model 设成这个模型;不支持推理的模型会清空 thinking_level,免得 Shelley 拒绝。

magpie 记下自己建的模型 id,所以你在 Shelley 里手动指向网关建的模型仍然是你的。网关地址变了,magpie 会更新自己的模型。

哪些对话会换模型

新对话用新模型;已经打开的对话保留原来的模型,直到你在它的模型菜单里换一个。magpie 接入后会提示这一点。

切回

切回默认时,magpie 把默认 profile 的模型和 thinking level 还原成接入前的值(原来的模型已经不能用时,交给 Shelley 服务器的默认值),再删掉 magpie 建的所有自定义模型。也可以在 magpie 里直接选 Shelley 自己的某个模型。Shelley 已卸载时,magpie 记下待删,Shelley 再运行时删掉。

终端
magpie shelley default

常见问题

Shelley 怎么用 DeepSeek、GLM 或 ChatGPT 订阅?

先运行 shelley serve,再在 magpie 的 Agent 页给 Shelley 选一个 via magpie 的模型。magpie 在 Shelley 里加一个指向 magpie 网关的 openai 自定义模型,并设为默认 profile 的模型。

为什么提示 Shelley isn't running?

Shelley 的模型在它的数据库里,magpie 只能通过正在运行的 Shelley 的 socket 修改。先 shelley serve 再试。

打开的对话为什么还是旧模型?

默认 profile 只影响新对话。已打开的对话在它自己的模型菜单里换。

会删掉我自己建的自定义模型吗?

不会。magpie 只删自己建的模型 id,即使你也手动建了一个指向网关的模型,它也是你的。

更多 Agent 用同样的模型:让 AtomCode 用任意模型、让 Reasonix Studio 用任意模型、让 jcode 用任意模型。遇到报错?见 常见错误排查,或到 Discord 提问。