将小米 MiMo AI 转换为 OpenAI / Anthropic 兼容 API 的代理服务。支持多账号负载均衡、会话保持、Tool Calling,可直接对接各类 AI 编程客户端。
API 兼容
- OpenAI
v1/chat/completions(流式 & 非流式) - Anthropic
v1/messages(流式 & 非流式) - 多模态图片理解(自动上传至小米 OSS)
客户端兼容
- Cline / Kilo Code / Roo Code / Cursor 等 AI 编程工具
- 任何支持 OpenAI 或 Anthropic API 的客户端
核心能力
- 多账号负载均衡 — 自动选择最空闲账号,提升并发
- 会话保持(Context Replay)— 减少 token 消耗,维持对话连贯
- Tool Calling — XML 工具调用自动转换为 OpenAI/Anthropic 原生格式
- 推理内容三种模式:
passthrough/strip/separate - 会话隔离:
auto(按 IP+UA)/manual/per-request
管理
- Web 管理面板(账号、API 密钥、请求日志、统计图表)
- REST 管理 API
- JSON 文件持久化存储
# 克隆项目
git clone https://github.com/GoblinHonest/mimo2api_mimoapi.git
cd mimo2api_mimoapi
# 安装依赖
npm install
# 启动
npm start # 生产模式
npm run dev # 开发模式(热重载)服务默认运行在 http://localhost:8080。
管理面板默认密码:
admin,登录后可修改。首次使用需在管理面板创建 API 密钥供客户端调用。
docker compose up -ddocker compose logs -fdocker compose down数据目录会挂载到宿主机:
./data- 应用数据目录./logs- 日志目录
默认端口是 8080,可以在 docker-compose.yml 中修改:
ports:
- "3000:8080" # 宿主机端口:容器端口# 拉取最新代码
git pull
# 重新构建并启动
docker compose up -d --build# 构建镜像
docker build -t mimo-proxy .
# 运行容器
docker run -d \
--name mimo-proxy \
-p 8080:8080 \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
mimo-proxy- 浏览器打开 MiMo AI Studio,登录后进入对话
- 打开 DevTools → Network,找到
chat请求 - 右键 → Copy as cURL
- 打开管理面板
http://localhost:8080,粘贴导入
curl -X POST http://localhost:8080/admin/accounts \
-H "X-Admin-Key: <admin-key>" \
-H "Content-Type: application/json" \
-d '{
"service_token": "...",
"user_id": "...",
"ph_token": "...",
"alias": "备注名"
}'在管理面板创建 API 密钥后,将 base_url 指向本服务即可。
curl http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer <api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "mimo-v2-pro",
"messages": [{"role": "user", "content": "你好"}],
"stream": true
}'curl http://localhost:8080/v1/messages \
-H "x-api-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "mimo-v2-pro",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "你好"}]
}'curl http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer <api-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "mimo-v2-pro",
"messages": [{"role": "user", "content": "帮我读取 package.json 文件"}],
"tools": [{
"type": "function",
"function": {
"name": "Read",
"description": "读取文件内容",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string", "description": "文件路径"}
},
"required": ["file_path"]
}
}
}],
"stream": true
}'配置通过 Admin Web UI(http://localhost:8080/)或 Admin API 管理,持久化存储在 JSON 文件中。
| 配置项 | 默认值 | 说明 |
|---|---|---|
adminKey |
admin |
管理面板密钥,务必修改 |
maxReplayMessages |
20 |
会话回放消息数上限 |
maxQueryChars |
100000 |
单次请求最大字符数 |
contextResetThreshold |
150000 |
超过此 token 数重置会话(0=不限) |
maxConcurrentPerAccount |
99999 |
单账号最大并发数 |
thinkMode |
separate |
推理内容模式 |
sessionTtlDays |
7 |
会话保留天数 |
sessionIsolation |
auto |
会话隔离模式 |
| 值 | 行为 |
|---|---|
passthrough |
原样返回 <think>...</think> 标签 |
strip |
移除推理内容,只返回最终答案 |
separate |
推理内容放入独立字段(Anthropic 格式为 thinking block) |
| 值 | 行为 |
|---|---|
auto |
按 IP + User-Agent 自动隔离,不同客户端互不干扰(推荐) |
manual |
仅在客户端提供 x-session-id 时隔离 |
per-request |
每次请求创建新会话(禁用记忆) |
src/
├── adapters/ # API 协议适配层
│ ├── openai.ts # OpenAI 兼容接口
│ └── anthropic.ts # Anthropic 兼容接口
├── mimo/ # MiMo 客户端交互
│ ├── client.ts # API 调用 & 流式响应
│ ├── serialize.ts # 消息序列化(对话历史 → MiMo 格式)
│ ├── session.ts # 会话管理(指纹匹配 & 上下文保持)
│ └── upload.ts # 图片上传至小米 OSS
├── tools/ # Tool Calling 处理
│ ├── parser.ts # XML/JSON 工具调用解析
│ ├── format.ts # OpenAI/Anthropic 格式转换
│ └── prompt.ts # 工具定义注入系统提示词
├── admin/ # 管理面板 & REST API
├── middleware/ # 认证、限流等中间件
├── web/ # 管理面板前端资源
│ ├── index.html
│ ├── style.css
│ ├── input.css
│ └── chart.js
├── config.ts # 配置加载(JSON → 内存)
├── db.ts # JSON 文件存储工具
├── accounts.ts # 多账号管理 & 负载均衡
├── api-keys.ts # API 密钥管理
└── index.ts # 入口
本项目仅供学习和研究目的使用,与小米公司无任何关联。
使用前请阅读并遵守 MiMo AI 服务条款。使用本项目可能导致账号限制,请自行承担风险。
请勿将本项目用于商业牟利、DDoS 攻击或大规模滥用等违规活动。作者不对因使用本项目导致的任何损失承担责任。
ISC