Skip to content

HughesCuit/mimo-pool

Repository files navigation

小米 Mimo 号池

一个轻量的 Node.js/TypeScript Web 服务,用于批量管理小米 Mimo API key,并对外提供 OpenAI / Anthropic 兼容协议中转。

功能

  • OpenAI 兼容接口:
    • POST /v1/chat/completions
    • POST /v1/completions
    • POST /v1/responses
  • Anthropic 兼容接口:
    • POST /v1/messages
    • POST /anthropic/v1/messages
  • 三个预置服务组:CNSGPAMS
  • 按服务组顺序、组内 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_TOKENPROXY_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 用量登录浏览器模式:autoheadedheadless
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

一条命令启动(无需克隆仓库):

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。

登录流程:

  1. 在后台管理页面点击账号的「登录」按钮
  2. 浏览器自动打开 noVNC 窗口(http://localhost:6080/vnc.html
  3. 在 noVNC 中看到 Chromium 浏览器,完成小米账号登录
  4. 登录成功后 Cookie 自动回填,关闭 noVNC 窗口即可

Docker Compose

docker compose up --build

生产使用前请修改 docker-compose.yml 中的 ADMIN_TOKENPROXY_TOKENS

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors