一个轻量的 Node.js/TypeScript Web 服务,用于批量管理小米 Mimo API key,并对外提供 OpenAI / Anthropic 兼容协议中转。
- OpenAI 兼容接口:
POST /v1/chat/completionsPOST /v1/completionsPOST /v1/responses
- Anthropic 兼容接口:
POST /v1/messagesPOST /anthropic/v1/messages
- 三个预置服务组:
CN、SGP、AMS - 按服务组顺序、组内 key 固定顺序转发
- quota / balance / insufficient / exhausted 类错误自动标记 key 耗尽并 fallback
- 429 / rate limit / 网络错误 / 5xx 会尝试 fallback,并对该 key 做短暂 cooldown,不会永久踢出 key
- SQLite 持久化,内置 Web 管理界面和 REST 管理 API
- 支持
stream: true事件流透传 - 支持多账号 Mimo 平台 Cookie 登录和 token plan 用量查询,API Key 可选绑定账号
npm.cmd install
npm.cmd run install:browsers
npm.cmd run build
npm.cmd start首次启动会读取 .env,如果 ADMIN_TOKEN 或 PROXY_TOKENS 缺失,会在终端引导你沿用、自动生成或手动输入,并写回 .env。打开 http://localhost:3100/admin,使用 ADMIN_TOKEN 登录后台。
调试模式会输出请求级代理日志,适合排查 Codex 中途停住、上游异常或 Responses 转换问题:
npm.cmd run debug默认写入 logs/mimo-pool-debug.log,控制台只显示日志文件位置。默认只输出元数据和脱敏后的 key。需要查看截断正文时可以额外设置:
$env:DEBUG_PROXY_BODY = "1"
npm.cmd run debug| 变量 | 默认值 | 说明 |
|---|---|---|
PORT |
3100 |
HTTP 端口 |
HOST |
0.0.0.0 |
监听地址 |
DB_PATH |
data/mimo-pool.sqlite |
SQLite 文件路径 |
ADMIN_TOKEN |
change-me-admin |
管理后台/API token |
PROXY_TOKENS |
change-me-proxy |
下游中转 token,多个用逗号分隔 |
UPSTREAM_TIMEOUT_MS |
120000 |
上游请求超时 |
UPSTREAM_STREAM_TIMEOUT_MS |
0 |
流式上游超时,0 表示不主动中断 |
UPSTREAM_STREAM_IDLE_TIMEOUT_MS |
300000 |
流式上游已连接但长时间无数据时的空闲超时,设为 0 可关闭 |
KEY_COOLDOWN_MS |
60000 |
普通限速、网络错误、5xx 后临时跳过该 key 的时间 |
MAX_BODY_BYTES |
20971520 |
请求体大小限制 |
ANTHROPIC_VERSION |
2023-06-01 |
Anthropic 请求默认版本头 |
RESPONSES_SESSION_TTL_MS |
3600000 |
Responses 兼容层记忆 previous_response_id 会话的时间 |
RESPONSES_TOOL_NUDGE |
1 |
有 tools 的 Responses 请求中追加工具调用提示;设为 0 可关闭 |
DEBUG_PROXY |
0 |
开启代理调试日志 |
DEBUG_PROXY_LOG_FILE |
空 | 调试日志文件路径,设置后不在控制台刷完整日志 |
DEBUG_PROXY_BODY |
0 |
输出截断后的请求/响应正文预览 |
DEBUG_PROXY_BODY_LIMIT |
2000 |
正文预览最大字符数 |
USAGE_BROWSER_MODE |
auto |
用量登录浏览器模式:auto、headed、headless |
USAGE_REFRESH_INTERVAL_MS |
3600000 |
后台自动刷新所有已登录账号用量的间隔,设为 0 可关闭 |
USAGE_LOGIN_TIMEOUT_MS |
300000 |
等待用户完成小米平台登录的超时时间 |
USAGE_LOGIN_URL |
小米 Mimo 控制台 | 用量登录抓 Cookie 的页面 |
USAGE_API_URL |
小米 Mimo 用量接口 | 查询 token plan 用量的接口 |
curl.exe http://localhost:3100/v1/chat/completions `
-H "Authorization: Bearer proxy-secret" `
-H "Content-Type: application/json" `
-d "{\"model\":\"mimo\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}"一条命令启动(无需克隆仓库):
docker run -d \
--name mimo-pool \
-p 3100:3100 \
-p 6080:6080 \
-e ADMIN_TOKEN=your-admin-token \
-e PROXY_TOKENS=your-proxy-token \
-v mimo-pool-data:/data \
ghcr.io/hughescuit/mimo-pool:latest数据持久化到 mimo-pool-data 卷,重启不丢失。打开 http://localhost:3100/admin 使用 ADMIN_TOKEN 登录后台。
开机自启(推荐):
docker run -d \
--name mimo-pool \
--restart always \
-p 3100:3100 \
-p 6080:6080 \
-e ADMIN_TOKEN=your-admin-token \
-e PROXY_TOKENS=your-proxy-token \
-v mimo-pool-data:/data \
ghcr.io/hughescuit/mimo-pool:latest常用参数:
-e PORT=3100- 自定义端口-e DB_PATH=/data/mimo-pool.sqlite- SQLite 文件路径-v ./data:/data- 挂载本地目录存储数据-e USAGE_LOGIN_URL=https://platform.xiaomimimo.com/console/plan-manage- 自定义登录页 URL-e USAGE_API_URL=https://platform.xiaomimimo.com/api/v1/tokenPlan/usage- 自定义用量查询 URL-e USAGE_BROWSER_MODE=headed- 登录浏览器模式:headed(默认,配合 noVNC)/headless-e USAGE_LOGIN_TIMEOUT_MS=300000- 登录等待超时(毫秒)
镜像已内置 Playwright + Chromium + noVNC。点击账号面板的「登录」按钮后,会自动打开 noVNC 浏览器窗口(http://localhost:6080),在其中完成小米登录即可自动回填 Cookie。
登录流程:
- 在后台管理页面点击账号的「登录」按钮
- 浏览器自动打开 noVNC 窗口(
http://localhost:6080/vnc.html) - 在 noVNC 中看到 Chromium 浏览器,完成小米账号登录
- 登录成功后 Cookie 自动回填,关闭 noVNC 窗口即可
docker compose up --build生产使用前请修改 docker-compose.yml 中的 ADMIN_TOKEN 和 PROXY_TOKENS。