面向 monkeycode-ai.com(长亭百智云 MonkeyCode)的 OpenAI 兼容反向代理。 把 MonkeyCode 账号的 每日免费额度(免费用户每日 1000 万基础模型 Token)包装成标准的
POST /v1/chat/completions(流式 / 非流式)+GET /v1/models接口,让你可以用任何 OpenAI SDK / 客户端(ChatGPT-Next-Web、LobeChat、cursor 等)直接调用 MonkeyCode 的账号额度。
纯 Go 标准库、零第三方依赖,架构与 qoderwork2api、 traework2api 一致。
- OpenAI 兼容 API:
POST /v1/chat/completions(流式 SSE + 非流式)、GET /v1/models、GET /status、GET /healthz - 动态模型目录:
/v1/models与对话启动时从models/available运行时拉取你的全部可用模型(跟随账号/订阅实时变化),无需硬编码模型白名单 - 多账号池:按「剩余每日免费额度」优先选号;额度耗尽自动长冷却等隔日刷新;429 / 401 / 5xx 自动短冷却、禁用、轮转(防雪崩)
- 每日额度到账检查:调度器每天自动拉取
GET /api/v1/users/wallet,确认daily_token_balance / daily_token_limit(免费用户 = 1000 万)已生效,即「当日额度已到账」,结果写回auths/快照并在/status、signin.sh、credit.sh中可视化 - 每日自动签到(得积分):调度器每天在
checkin_hours(默认 9:05 与 21:00 两个窗口)各执行一次「尽力签到」——每个账号先查今日是否已签,已签自动跳过(不会重复拿积分),未签的才自动签(+100 积分);所需的 Cap.js PoW 验证码(FNV-1a + xorshift32 派生,SHA-256 工作量证明)已内置、自动求解。 - Cookie 会话认证:浏览器登录后在
login.sh粘贴 Cookie 即可落盘,无需写死密钥 - Docker 一键部署:
docker compose up即起,内置 healthcheck 常驻
git clone https://github.com/ZFXing-lite/monkeycode2api.git
cd monkeycode2api
# 1. 配置 API Key(Bearer 鉴权;只走 env,绝不落盘 git)
export MC2A_API_KEY=$(openssl rand -hex 32)
# 2. 添加 MonkeyCode 账号(粘贴浏览器 Cookie)
./login.sh
# 3. 启动服务(日志常驻)
docker compose up -d --build
curl http://127.0.0.1:7887/healthz # ok
curl http://127.0.0.1:7887/v1/models # 动态模型列表
# 4. 每日额度到账检查(1000 万/日)+ 自动签到
./signin.sh # 或日报 ./credit.sh完整部署(Docker/本机、多账号、验证)见下方 🛠 部署。
git clone https://github.com/ZFXing-lite/monkeycode2api.git
cd monkeycode2api
# 1. 生成 API Key(只走环境变量,绝不落盘 git)
export MC2A_API_KEY=$(openssl rand -hex 32)
# 2. 添加账号(可反复执行,支持多账号入库)
./login.sh # 粘贴浏览器 Cookie
# 3. 构建并常驻(内置 healthcheck;restart 自动拉起)
docker compose up -d --build
# 4. 验证
curl http://127.0.0.1:7887/healthz # ok
curl http://127.0.0.1:7887/v1/models # 动态模型列表
docker-compose.yml把./auths(Cookie)和./data(状态)挂载进容器并持久化, 监听宿主7887;KEY 由MC2A_API_KEY环境注入。
export MC2A_API_KEY=$(openssl rand -hex 32)
./login.sh # 添加账号
go build -o mc2api ./cmd/server
./mc2api # 默认监听 :7887
# 停止:Ctrl+C重复 ./login.sh 即可把多个 MonkeyCode 账号全放进 auths/;服务会将请求轮询摊到
有额度的账号上(额度耗尽自动长冷却等隔日刷新,429/5xx 短冷却,cookie 失效自动禁用)。
# 健康检查
curl http://127.0.0.1:7887/healthz
# 到账检查(每日 1000 万额度是否到账 + 自动签到)
./signin.sh
# 钱包/额度日报
./credit.sh
# 全部账号状态(额度/冷却/禁用)
curl -H "Authorization: Bearer ${MC2A_API_KEY}" http://127.0.0.1:7887/status# 非流式
curl -X POST http://127.0.0.1:7887/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${MC2A_API_KEY}" \
-d '{
"model": "kimi-k2.5",
"messages": [{"role": "user", "content": "你好,请介绍一下你自己"}],
"stream": false
}'
# 流式(SSE)
curl -N -X POST http://127.0.0.1:7887/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${MC2A_API_KEY}" \
-d '{
"model": "minimax-m2.5",
"messages": [{"role": "user", "content": "写一段快速排序的 Go 代码"}],
"stream": true
}'任意 OpenAI 兼容客户端只需配置:
| 配置项 | 值 |
|---|---|
| Base URL | http://127.0.0.1:7887/v1 |
| API Key | 你设置的 MC2A_API_KEY |
| Model | 见 GET /v1/models(如 kimi-k2.5、deepseek-pro-flash) |
不再硬编码模型列表:GET /v1/models 与任务创建都会启动时从平台
GET /api/v1/users/models/available 动态拉取,跟随你的订阅实时变化。
你可以在 OpenAI 客户端直接选下面这些可见模型(需用 /v1/models 返回的精确模型名):
| 常见基础模型 | 单价(积分/厘) | 说明 |
|---|---|---|
kimi-k2.5 |
200 | 免费额度可用 |
minimax-m2.5 |
200 | 免费额度可用 |
qwen3.5-plus |
100 | 免费额度可用 |
monkeycode-basic/deepseek-v4-flash |
200 | 基础 agent |
deepseek-v4-pro / glm-5 / minimax-m2.7 |
400 | 基础升级档(折积分) |
qwen3.7-max / minimax-m3 |
600 | 支持图片 |
gpt-5.4 / glm-5.1 / kimi-k2.6 |
800 | 旗舰档 |
gpt-5.5 |
1000 | 更高 |
基础档(
access_level=basic)模型在你的免费每日 1000 万 Token 额度内;部分较贵模型会 折消耗积分。实际可用列表以你实例GET /v1/models返回为准(会动态跟随平台变化)。 专业档(pro)/旗舰档(ultra)模型若账号订阅不含,models/available不会返回,不可请求。
config.json(参考 config.example.json):
{
"listen": ":7887",
"api_key": "your-api-key-here",
"auth_dir": "./auths",
"state_file": "./data/state.json",
"cooldown": {
"hard_credit": "12h",
"soft_rate": "60s",
"err_threshold": 5,
"err_cooldown": "10m"
},
"schedule": {
"checkin_hours": [9, 21],
"quota_check_hour": 0
},
"upstream": {
"timeout_seconds": 180
}
}全部项均可用 MC2A_* 环境变量覆盖:MC2A_LISTEN / MC2A_AUTH_DIR / MC2A_STATE_FILE /
MC2A_SOFT_RATE / MC2A_ERR_THRESHOLD / MC2A_QUOTA_CHECK_HOUR /
MC2A_CHECKIN_HOURS(逗号分隔的签到时刻,如 9,21)。
MC2A_API_KEY 只能从环境变量读取,不落盘 config 与 git。
| 字段 | 含义 |
|---|---|
hard_credit |
额度耗尽后的长冷却(隔日刷新后自动恢复) |
soft_rate |
429 限流的短冷却 |
err_threshold / err_cooldown |
连续错误达阈值后的冷却 |
checkin_hours |
每日自动签到时刻(小时列表,多个时段都尽力签;已签自动跳过不重复) |
quota_check_hour |
每日额度到账检查时间(小时) |
| 脚本 | 用途 |
|---|---|
./login.sh |
粘贴浏览器 Cookie → 校验 /users/me + /users/wallet → 落盘 auths/monkeycode-<uid>.json |
./signin.sh |
批量「到账检查 + 每日签到」(含额度到账报告) |
./credit.sh |
钱包 / 额度日报(美化输出);./credit.sh -json 输出原始 JSON |
cmd/server/ OpenAI 兼容 HTTP 服务(入口)
cmd/signin/ 批量签到 + 额度到账检查工具
cmd/credit/ 钱包 / 额度日报工具
internal/cred/ Cookie 会话凭证 + auth 文件原子读写
internal/upstream/ MonkeyCode 上游客户端(wallet / checkin / models / task+WS)
internal/pool/ 账号池(额度优先轮转、冷却、禁用)
internal/scheduler/ 定时签到 + 每日到账检查
internal/server/ OpenAI 兼容路由(鉴权 / 流式转换)
login.sh / signin.sh / credit.sh 运维脚本
auths/ (gitignored)monkeycode-<uid>.json 凭证
data/ (gitignored)state.json 账号池状态
- 认证:MonkeyCode 走长亭百智云 OAuth 授权 + same-origin Cookie(
credentials: same-origin), 无公开设备授权接口,因此以浏览器 Cookie 作为会话凭证,存于auths/(已 gitignore)。 - 对话通道:MonkeyCode 是 Agent 任务平台,对话正文经
POST /api/v1/users/tasks创建任务 + WebSocket 安全通道/api/v1/users/tasks/stream?id=<task_id>拉取。 任务创建需传model_id(UUID)、image_id、host_id:"public_host",缺参会400。 本项目将其调度为 OpenAI chunk;流式帧事件做了容错解析并全量打日志便于排障(详见SPEC.md)。 - 到账检查:额度每日自动发放(无需手动领取)。系统每日按
quota_check_hour对每个账号 执行GET /api/v1/users/wallet,确认daily_token_balance / daily_token_limit(免费 = 1000 万) 生效状态,作为「今日额度已到账」的依据。
- 逆向结论、端点清单、限额语义与已知限制 →
SPEC.md
本项目仅供学习和研究使用。使用者需遵守 monkeycode-ai.com 及长亭百智云的服务条款,自行承担使用风险。作者不对因使用本项目产生的任何直接或间接损失负责。 请勿将本项目用于违反目标平台服务条款的用途。