把 MiniMax Code 桌面端的订阅额度(M Plan / Coding Plan),转成 Anthropic、OpenAI Chat、OpenAI Responses 三协议兼容 API 的本地反向代理。让你能在 Claude Code、Codex、ZCode、Cherry Studio、LobeChat、OpenWebUI 等任何支持这两种协议的客户端里复用 MiniMax M3 / M2.7 / M2.5 系列模型。
⚠️ 仅供个人学习研究:请勿将本项目用于转售、多用户共享或任何违反 MiniMax 服务条款的场景。你的账号、你的责任。
零依赖 —— 纯 Node.js(≥18.17)标准库实现,无需 npm install。
Claude Code / Codex / ZCode / Cherry Studio / 任意客户端
│ Anthropic 协议 │ OpenAI Chat │ OpenAI Responses
│ POST /v1/messages │ POST /v1/chat/ │ POST /v1/responses
│ │ completions │ (Codex CLI)
▼ ▼ ▼
┌──────────────────── minimax-code2api (127.0.0.1:8045) ───────────────────┐
│ Anthropic 透传 · OpenAI⇄Anthropic 转换 · Responses 转换 · 鉴权 · 状态页 │
└──────────────────────────────┬───────────────────────────────────────────┘
│ ① 命名管道租约 token(桌面端负责刷新)
▼
MiniMax Code 桌面端(必须运行且已登录)
│ ② Bearer 转发
▼
https://agent.minimax.cn/mavis/api/v1/llm/v1/messages
MiniMax Code 桌面端内置一个凭证 broker:它通过本地命名管道
(\\.\pipe\mcode-auth-lease-<hash>)向同机的其他进程"出租"有效的 access token,
官方 CLI 就是这么共享登录态的。本项目实现了同一租约协议(自官方开源仓库
oauth-lease-protocol 包移植,MIT):
- 代理只租用 token,从不读取/写入凭证文件,从不主动刷新 token;
- token 刷新完全由桌面端串行管理,代理和官方 CLI 地位相同,属于协议设计的正常多客户端场景;
- 桌面端退出或未登录时,代理返回明确的错误提示,不会碰任何持久化状态。
前置条件:MiniMax Code 桌面端正在运行且已登录(本机已装即可)。
# Windows(任意目录)
node src/server.js
# 或者指定配置文件
node src/server.js path/to/config.json启动后:
- 状态面板:http://127.0.0.1:8045/
- Anthropic 端点:
POST http://127.0.0.1:8045/v1/messages - OpenAI 端点:
POST http://127.0.0.1:8045/v1/chat/completions - Responses 端点:
POST http://127.0.0.1:8045/v1/responses(Codex CLI 等使用) - 模型列表:
GET http://127.0.0.1:8045/v1/models - 健康检查:
GET http://127.0.0.1:8045/health
Claude Code(模型名随意填,会自动映射到 MiniMax-M3):
set ANTHROPIC_BASE_URL=http://127.0.0.1:8045
set ANTHROPIC_AUTH_TOKEN=any-string
claudeOpenAI SDK / Codex CLI 等:
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:8045/v1", api_key="any-string")
resp = client.chat.completions.create(
model="MiniMax-M3", # 或 MiniMax-M3.1-Flash-Preview / MiniMax-M2.7 / MiniMax-M2.7-highspeed
messages=[{"role": "user", "content": "你好"}],
)ZCode / 其他 Anthropic 协议客户端:把 API 地址设为 http://127.0.0.1:8045,API Key 随意(未配置 apiKeys 时)。
Codex CLI(新版 Codex 只支持 Responses 协议,本网关已实现)。在独立的 CODEX_HOME 里写 config.toml(不影响全局配置):
model = "MiniMax-M3"
model_provider = "minimax"
[model_providers.minimax]
name = "MiniMax via minimax-code2api"
base_url = "http://127.0.0.1:8045/v1"
wire_api = "responses"
env_key = "M2A_KEY"M2A_KEY=any CODEX_HOME=/path/to/that/dir codex exec "你的任务"复制 config.example.json 为 config.json(或用环境变量覆盖):
| 字段 | 默认 | 说明 |
|---|---|---|
host |
127.0.0.1 |
监听地址。对外暴露时建议配 apiKeys |
port |
8045 |
监听端口(环境变量 PORT) |
apiKeys |
[] |
代理自身的 API Key 列表;为空则不鉴权(环境变量 API_KEYS,逗号分隔) |
region |
cn |
cn(国内 agent.minimax.cn)或 io(国际 agent.minimax.io,配桌面端登录的区域一致) |
upstreamBaseUrl |
空 | 覆盖上游 origin(调试用) |
dataDir |
~/.minimax |
桌面端数据目录;多 profile 时指向 ~/.minimax-<profile> |
defaultModel |
MiniMax-M3 |
客户端发送未知模型名(如 gpt-4o、claude-sonnet-*)时映射到的模型 |
modelAlias |
{} |
额外的模型名映射,如 {"gpt-5": "MiniMax-M3.1-Flash-Preview"} |
logLevel |
info |
debug / info / warn / error |
- Anthropic 协议:
/v1/messages透传(含 SSE 流式、anthropic-beta/accept头透传)、/v1/messages/count_tokens(本地估算)、/v1/files/upload透传 - OpenAI 协议:
/v1/chat/completions(流式/非流式)、/v1/models - Responses 协议:
/v1/responses(Codex CLI 线路)——message/function_call/function_call_output/reasoning 输入项、function 与 custom 工具、推理力度映射、完整流式事件序列(output_text.delta / function_call_arguments.delta / reasoning_summary_text.delta / completed / incomplete / failed),无状态设计(previous_response_id需客户端全量回放,Codexstore:false默认如此) - 模型直通:
MiniMax-*形态的模型名原样发往上游(上游对 Plan 未含的模型会自动降级到最接近的型号,如 H3→M3.1-Flash),只对外来名(gpt-*、claude-*等)做别名/默认映射——上游新增模型无需升级本网关即可使用 - 工具调用:OpenAI tools/function ↔ Anthropic tool_use/tool_result 双向转换(含流式 tool_call 增量)
- 多模态:图片输入(base64 data URL 与 http URL)
- 思维链:
thinking字段透传;OpenAI 客户端的reasoning_effort映射为 thinking 开关(仅对支持关闭思维的 M3 生效),思维增量以reasoning_content下发 - 会话粒度:
X-Mavis-Session-Id与桌面端同为"每会话一个"——客户端带会话标识时(Anthropicmetadata.user_id、x-session-id头、OpenAIuser字段)稳定映射到同一 id,否则按客户端每 30 分钟空闲轮换 - 401 自愈:上游返回 401 时自动作废缓存 token、重新租约并重试一次
- 用量统计:流式响应的
usage(MiniMax 在message_delta中回传完整 input/output tokens)正确映射
报 "Cannot reach auth broker" / "Cannot read capability file"
桌面端没在运行或没登录。启动并登录 MiniMax Code 桌面端即可,无需重启代理。
(细节:broker 管道名是数据目录小写路径的 sha256 前 16 位,路径已按官方方式
做 win32 归一化,正斜杠/反斜杠混用均可;若仍连不上,确认 dataDir 指向的是
真实数据目录。)
上游 401 且重试后仍失败 桌面端的登录态已过期,请在桌面端里重新登录。
想代理另一个账号 / 区域
用 dataDir 指向对应的 profile 数据目录(如 ~/.minimax-work),或切 region。
和桌面端同时用会不会抢配额 / 冲突? 配额是账号级的,代理和桌面端共享同一账号池,用量都会计入 Plan。token 刷新由桌面端 broker 串行管理,协议层面无竞争。
本项目与 MiniMax 官方无关,仅供个人学习研究。它复用的是你自己已登录账号的订阅额度,上游请求均以该账号身份发起,使用 MiniMax 服务请遵守其服务条款。逆向接口可能随官方版本变动失效。
条款现状(核查于 2026-10-23):订阅计划现名 M Plan(Coding Plan → Token Plan → M Plan 三代演进)。当前版官方 FAQ(国内外站一致)中没有"禁止 API 调用"类条款,明确支持"任何支持 OpenAI 或 Anthropic 兼容协议的工具"接入;定位为"个人开发者交互式使用",治理手段以限流为主(5 小时/每周窗口 + 账号维度速率调控)。桌面端内嵌的《MiniMax 用户协议》仍保留对异常使用(异常登录、账号共享等)冻结/封禁的通用权力。若你持有旧 Token Plan 且未升级,旧条款继续适用,请自行核对当时条款。
- MiniMax-AI/minimax-code —— 租约协议与模型目录的移植来源(MIT,见 NOTICE)
- TriDefender/zcode-api、router-for-me/CLIProxyAPI、Wei-Shaw/sub2api —— 架构设计参考