<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>M3 on Svtter's Blog</title><link>https://svtter.cn/tags/m3/</link><description>Recent content in M3 on Svtter's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Mon, 01 Jun 2026 12:00:00 +0800</lastBuildDate><atom:link href="https://svtter.cn/tags/m3/index.xml" rel="self" type="application/rss+xml"/><item><title>OMP M3 模型补丁：为 pi-ai 添加 MiniMax M3 支持</title><link>https://svtter.cn/p/omp-m3-%E6%A8%A1%E5%9E%8B%E8%A1%A5%E4%B8%81%E4%B8%BA-pi-ai-%E6%B7%BB%E5%8A%A0-minimax-m3-%E6%94%AF%E6%8C%81/</link><pubDate>Mon, 01 Jun 2026 12:00:00 +0800</pubDate><guid>https://svtter.cn/p/omp-m3-%E6%A8%A1%E5%9E%8B%E8%A1%A5%E4%B8%81%E4%B8%BA-pi-ai-%E6%B7%BB%E5%8A%A0-minimax-m3-%E6%94%AF%E6%8C%81/</guid><description>&lt;img src="https://svtter.cn/p/omp-m3-%E6%A8%A1%E5%9E%8B%E8%A1%A5%E4%B8%81%E4%B8%BA-pi-ai-%E6%B7%BB%E5%8A%A0-minimax-m3-%E6%94%AF%E6%8C%81/cover.png" alt="Featured image of post OMP M3 模型补丁：为 pi-ai 添加 MiniMax M3 支持" /&gt;&lt;p&gt;MiniMax 在 2026-06-01 发布了 M3 模型（OpenRouter 上的 ID 是 &lt;code&gt;minimax/minimax-m3-20260531&lt;/code&gt;），但 &lt;code&gt;@oh-my-pi/pi-ai@15.7.3&lt;/code&gt; 自带的 &lt;code&gt;models.json&lt;/code&gt; 还没来得及更新。这篇文章记录了我手动给 M3 加支持的过程——给全部 5 个 provider 端点都加上了对应的模型条目。&lt;/p&gt;
&lt;h2 id="目标文件"&gt;目标文件
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.bun/install/global/node_modules/@oh-my-pi/pi-ai/src/models.json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="添加的-provider-条目5-个"&gt;添加的 Provider 条目（5 个）
&lt;/h2&gt;&lt;p&gt;所有条目都追加在各自 provider 对象的末尾，结构完全参照已有的 &lt;code&gt;MiniMax-M2.7&lt;/code&gt; 条目。&lt;/p&gt;
&lt;h3 id="1-minimax官方-anthropic-兼容-api"&gt;1. &lt;code&gt;minimax&lt;/code&gt;（官方 Anthropic 兼容 API）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;key&lt;/strong&gt;: &lt;code&gt;MiniMax-M3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;api&lt;/strong&gt;: &lt;code&gt;anthropic-messages&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;baseUrl&lt;/strong&gt;: &lt;code&gt;https://api.minimax.io/anthropic&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;contextWindow&lt;/strong&gt;: 204800, &lt;strong&gt;maxTokens&lt;/strong&gt;: 131072&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;费用&lt;/strong&gt;: input 0.3, output 1.2, cacheRead 0.06, cacheWrite 0.375&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;thinking&lt;/strong&gt;: budget 模式, minimal..xhigh&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-minimax-cn官方-anthropic-兼容-api国内"&gt;2. &lt;code&gt;minimax-cn&lt;/code&gt;（官方 Anthropic 兼容 API，国内）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;key&lt;/strong&gt;: &lt;code&gt;MiniMax-M3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;api&lt;/strong&gt;: &lt;code&gt;anthropic-messages&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;baseUrl&lt;/strong&gt;: &lt;code&gt;https://api.minimaxi.com/anthropic&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;上下文窗口、费用和 thinking 配置与 &lt;code&gt;minimax&lt;/code&gt; 相同&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-minimax-codecoding-计划openai-兼容"&gt;3. &lt;code&gt;minimax-code&lt;/code&gt;（Coding 计划，OpenAI 兼容）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;key&lt;/strong&gt;: &lt;code&gt;MiniMax-M3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;api&lt;/strong&gt;: &lt;code&gt;openai-completions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;baseUrl&lt;/strong&gt;: &lt;code&gt;https://api.minimax.io/v1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;费用&lt;/strong&gt;: 全部为 0（Coding 计划包月制）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;兼容性&lt;/strong&gt;: &lt;code&gt;supportsStore=false&lt;/code&gt;, &lt;code&gt;supportsDeveloperRole=false&lt;/code&gt;, &lt;code&gt;supportsReasoningEffort=false&lt;/code&gt;, &lt;code&gt;reasoningContentField=reasoning_content&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;thinking&lt;/strong&gt;: effort 模式, minimal..high&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-minimax-code-cn国内-coding-计划"&gt;4. &lt;code&gt;minimax-code-cn&lt;/code&gt;（国内 Coding 计划）
&lt;/h3&gt;&lt;p&gt;与 &lt;code&gt;minimax-code&lt;/code&gt; 镜像，&lt;code&gt;baseUrl&lt;/code&gt; 改为 &lt;code&gt;https://api.minimaxi.com/v1&lt;/code&gt;，provider 为 &lt;code&gt;minimax-code-cn&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="5-openrouteropenrouter-中转"&gt;5. &lt;code&gt;openrouter&lt;/code&gt;（OpenRouter 中转）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;key&lt;/strong&gt;: &lt;code&gt;minimax/minimax-m3-20260531&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;api&lt;/strong&gt;: &lt;code&gt;openai-completions&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;baseUrl&lt;/strong&gt;: &lt;code&gt;https://openrouter.ai/api/v1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;费用&lt;/strong&gt;: input 0.3, output 1.2, cacheRead 0.05, cacheWrite 0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;thinking&lt;/strong&gt;: effort 模式, minimal..high&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="验证"&gt;验证
&lt;/h2&gt;&lt;p&gt;在补丁文件中搜索 &lt;code&gt;&amp;quot;MiniMax-M3|minimax-m3&amp;quot;&lt;/code&gt; 恰好返回 5 个匹配——每个 provider 块一个。&lt;/p&gt;
&lt;h2 id="注意事项"&gt;注意事项
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;omp update&lt;/code&gt; 会覆盖这个补丁&lt;/strong&gt;。更新后需要重新打补丁，或者锁定包版本。&lt;/li&gt;
&lt;li&gt;如果上游后续发布了官方 M3 条目，本地副本可能会与官方版本产生差异（定价/上下文窗口不同），直到下次更新。&lt;/li&gt;
&lt;li&gt;M3 的定价数据是根据 M2.7 模板和 OpenRouter 列表（$0.30 / $1.20）推断的。如果对成本准确性有要求，请以 MiniMax 官方定价页面为准。&lt;/li&gt;
&lt;li&gt;上下文窗口（204800）和 maxTokens（131072）沿用了 M2.7 的参数——如果 M3 正式版有调整，请相应修改。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="补遗2026-06-02走-omp-用户配置的正规路线"&gt;补遗（2026-06-02）：走 OMP 用户配置的正规路线
&lt;/h2&gt;&lt;p&gt;上面的 pi-ai 补丁是 hack：&lt;code&gt;omp update&lt;/code&gt; 一执行，bun 重新拉包，patch 直接被冲掉。
OMP 推荐的正道是 &lt;code&gt;~/.omp/agent/models.yml&lt;/code&gt;——在用户目录下追加 provider，
OMP 启动时按「内置 → 自定义 merge」顺序加载，不依赖 bun 全局路径，
也不会被 &lt;code&gt;omp update&lt;/code&gt; 覆盖。&lt;/p&gt;
&lt;h3 id="最终配置"&gt;最终配置
&lt;/h3&gt;&lt;p&gt;在 &lt;code&gt;~/.omp/agent/models.yml&lt;/code&gt; 末尾追加：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# MiniMax M3 Code Plan&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="c"&gt;# 需先在 ~/.zshenv 配置 MINIMAX_API_KEY&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;minimax&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;https://api.minimaxi.com/anthropic&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;MINIMAX_API_KEY&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;api&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;anthropic-messages&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;authHeader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;disableStrictTools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;models&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;MiniMax-M3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;MiniMax M3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;reasoning&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;text, image]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;contextWindow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1000000&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;maxTokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16384&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;output&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cacheRead&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;cacheWrite&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;apiKey: MINIMAX_API_KEY&lt;/code&gt; 走 OMP 的解析约定：先当 env name 取值，取不到再当字面量。
我在 &lt;code&gt;~/.zshenv&lt;/code&gt; 里 &lt;code&gt;export MINIMAX_API_KEY=$MINIMAX_CODE_PLAN_KEY&lt;/code&gt;，所以 key
是从环境变量读的，dotfile 本身保持纯净，可以直接进 git。&lt;/p&gt;
&lt;h3 id="几个关键选择"&gt;几个关键选择
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;为什么选 &lt;code&gt;anthropic-messages&lt;/code&gt; 而不是 &lt;code&gt;openai-completions&lt;/code&gt;：&lt;/strong&gt;
M3 同时支持两套协议。先用 &lt;code&gt;openai-completions&lt;/code&gt; 试了一轮有两个小坑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OMP 在 &lt;code&gt;openai-completions&lt;/code&gt; 下对 reasoning 模型会发 &lt;code&gt;developer&lt;/code&gt; role + &lt;code&gt;reasoning_effort&lt;/code&gt;，MiniMax 这边的 schema 校验比 OpenAI 严格，reasoning 字段为空时会偶发 400&lt;/li&gt;
&lt;li&gt;切到 &lt;code&gt;anthropic-messages&lt;/code&gt; 后，工具调用、流式 reasoning 都直接走 Anthropic SDK 归一化路径，跟 kimi、claude 走同一条 promote 链路&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;为什么 &lt;code&gt;disableStrictTools: true&lt;/code&gt;：&lt;/strong&gt;
Anthropic SDK 默认会给所有 tool 发 &lt;code&gt;strict: true&lt;/code&gt;，第三方 Anthropic 兼容网关（MiniMax、kimi 等）通常不识别这个字段，会直接 400。同文件里 kimi provider 也开了这个 flag，是接入第三方 Anthropic 端点时基本必开的开关。代价是工具 schema 不会被服务端强校验，偶尔需要靠 prompt 兜底。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;上下文窗口 1M / maxTokens 16K：&lt;/strong&gt;
contextWindow 取 1M 是按 OpenRouter 上 &lt;code&gt;minimax/minimax-m3-20260531&lt;/code&gt; 的 spec 填的（M2.7 是 204800，M3 翻了 5 倍）。maxTokens 沿用 M2.7 的 16K，没找到 M3 官方精确数字。&lt;code&gt;cost&lt;/code&gt; 全 0 是因为 Code Plan 是包月制，按 token 计费为 0。&lt;/p&gt;
&lt;h3 id="切换使用"&gt;切换使用
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动时直接指定&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;omp --model minimax/MiniMax-M3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或在 TUI 内&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/model minimax/MiniMax-M3
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;切到 M3 后，&lt;code&gt;/status&lt;/code&gt; 里应该能看到 &lt;code&gt;ANTHROPIC_BASE_URL&lt;/code&gt;（OMP 内部字段名）指向 &lt;code&gt;api.minimaxi.com/anthropic&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="两条路的关系"&gt;两条路的关系
&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;pi-ai 内置 models.json 补丁&lt;/th&gt;
&lt;th&gt;models.yml 自定义 provider&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;持久性&lt;/td&gt;
&lt;td&gt;&lt;code&gt;omp update&lt;/code&gt; 覆盖&lt;/td&gt;
&lt;td&gt;持久&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;多机同步&lt;/td&gt;
&lt;td&gt;否（路径依赖 bun 全局）&lt;/td&gt;
&lt;td&gt;是（dotfile 走 git）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;升级成本&lt;/td&gt;
&lt;td&gt;重新打补丁&lt;/td&gt;
&lt;td&gt;OMP 自动 merge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;优先级&lt;/td&gt;
&lt;td&gt;与内置合并&lt;/td&gt;
&lt;td&gt;与内置合并，后写覆盖&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;两者是叠加关系，不冲突。&lt;code&gt;models.yml&lt;/code&gt; 加的 provider 走 OMP 的「自定义」通道，
pi-ai 后续合并的 M3 条目（如果官方补上）走「内置」通道。如果两条都对同一个
&lt;code&gt;provider/model&lt;/code&gt; 写了不同 &lt;code&gt;baseUrl&lt;/code&gt;，OMP 用 last-write-wins 规则——
所以 &lt;code&gt;models.yml&lt;/code&gt; 永远会赢内置。&lt;/p&gt;</description></item></channel></rss>