Skip to content

About

MiniMax Code desktop subscription → Anthropic / OpenAI Chat / OpenAI Responses compatible API gateway (zero-dependency Node.js). Powers Claude Code, Codex, ZCode and any OpenAI/Anthropic client.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

minimax-code2api

把 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
claude

OpenAI 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 需客户端全量回放,Codex store: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 与桌面端同为"每会话一个"——客户端带会话标识时(Anthropic metadata.user_id、x-session-id 头、OpenAI user 字段)稳定映射到同一 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 且未升级,旧条款继续适用,请自行核对当时条款。

致谢

License

MIT,详见 LICENSE 与 NOTICE。

About

MiniMax Code desktop subscription → Anthropic / OpenAI Chat / OpenAI Responses compatible API gateway (zero-dependency Node.js). Powers Claude Code, Codex, ZCode and any OpenAI/Anthropic client.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages