- 支持添加、编辑、删除 API 渠道
- 批量导入导出(JSON 格式)
- WebDAV 云同步(支持坚果云、NextCloud 等)
- 多密钥管理:每个渠道可配置多个 API Key
- 负载均衡:支持轮询(round_robin)和随机(random)策略
- 自动识别模型类型(Chat、Image、Claude、Gemini、Codex 等)
- 智能路由到对应的 API 端点进行检测
- 支持手动触发和定时自动检测
- 并发控制:可配置单渠道/全局并发数,避免触发限流
- 检测结果可视化,记录延迟和错误信息
- 统一代理入口直接暴露在根路径
/v1/* - 多密钥管理:支持创建多个代理密钥
- 权限控制:可限制密钥访问的渠道和模型
- 自动路由:根据请求的模型名自动选择可用渠道
- 可视化配置检测周期(Cron 表达式)
- 支持选择特定渠道或模型进行检测
- 自动清理过期日志
git clone https://github.com/chxcodepro/model-check.git
cd model-check
bash deploy.sh
# 更新
git pull
bash deploy.sh脚本会自动引导你完成配置,包括设置密码、数据库等。
deploy.sh主要面向 Linux / macOS。Windows 环境更建议按下面的“本地开发”方式启动,或者在 Git Bash / WSL 中运行脚本。
| 命令 | 说明 |
|---|---|
bash deploy.sh --local |
全本地模式(默认) |
bash deploy.sh --cloud-db |
云数据库 + 本地 Redis |
bash deploy.sh --cloud-redis |
本地数据库 + 云 Redis |
bash deploy.sh --cloud |
全云端模式 |
bash deploy.sh --quick |
快速模式,跳过可选配置 |
bash deploy.sh --update |
更新部署 |
bash deploy.sh --status |
查看服务状态 |
| 服务 | 推荐 |
|---|---|
| PostgreSQL | Supabase (免费)、Neon (免费) |
| Redis | Upstash (免费)、Redis Cloud |
# 克隆项目
git clone https://github.com/chxcodepro/model-check.git
cd model-check
# 配置环境变量
cp .env.example .envWindows PowerShell 可用:
Copy-Item .env.example .env修改 .env 中的数据库连接为 localhost:
DATABASE_URL="postgresql://modelcheck:modelcheck123456@localhost:5432/model_check"
REDIS_URL="redis://localhost:6379"启动服务:
# 启动数据库
docker compose up -d postgres redis
# 安装依赖
npm install
# 初始化数据库
npm run db:sync
# 启动开发服务器
npm run dev启动后可访问:
- 首页面板:
http://localhost:3000/ - 代理文档:
http://localhost:3000/docs/proxy - 系统状态:
http://localhost:3000/api/status
📦 其他命令
npm run db:studio # 打开数据库管理界面
npm run db:seed # 填充种子数据
npm test # 运行测试配置文件 .env,修改后需重启服务。完整配置参考 .env.example
| 变量 | 说明 |
|---|---|
ADMIN_PASSWORD |
管理员登录密码 |
JWT_SECRET |
JWT 签名密钥,openssl rand -base64 32 生成 |
| 变量 | 说明 |
|---|---|
COMPOSE_PROFILES |
Docker 部署模式:local=本地 PostgreSQL+Redis,redis=云数据库+本地 Redis,db=本地 PostgreSQL+云 Redis,不设置=全云 |
DATABASE_URL |
PostgreSQL 连接字符串(本地开发用 localhost) |
REDIS_URL |
Redis 连接字符串(本地开发用 localhost) |
DOCKER_DATABASE_URL |
Docker 容器内数据库连接(云端模式使用) |
DOCKER_REDIS_URL |
Docker 容器内 Redis 连接(云端模式使用) |
🔍 检测配置
| 变量 | 说明 | 默认值 |
|---|---|---|
AUTO_DETECT_ENABLED |
启用自动检测 | false |
AUTO_DETECT_ALL_CHANNELS |
检测全部渠道 | true |
DETECT_PROMPT |
检测提示词 | 1+1=2? yes or no |
CRON_SCHEDULE |
检测周期 (Cron) | 0 0,8,12,16,20 * * * |
CRON_TIMEZONE |
定时任务时区 | Asia/Shanghai |
CHANNEL_CONCURRENCY |
单渠道并发数 | 5 |
MAX_GLOBAL_CONCURRENCY |
全局最大并发数 | 30 |
DETECTION_MIN_DELAY_MS |
检测前最小随机延迟(毫秒) | 3000 |
DETECTION_MAX_DELAY_MS |
检测前最大随机延迟(毫秒) | 5000 |
🔧 可选配置
| 变量 | 说明 |
|---|---|
GLOBAL_PROXY |
全局代理地址,支持 HTTP/SOCKS5 |
PROXY_API_KEY |
代理接口密钥,不设置则自动生成 |
WEBDAV_URL |
WebDAV 服务器地址 |
WEBDAV_USERNAME |
WebDAV 用户名 |
WEBDAV_PASSWORD |
WebDAV 密码/应用密码 |
WEBDAV_FILENAME |
同步文件名 |
LOG_RETENTION_DAYS |
日志保留天数,默认 7 |
代理接口不是 /api/proxy/*,而是直接使用下面这些路径:
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/v1/models |
获取当前可用模型列表 |
POST |
/v1/chat/completions |
OpenAI Chat Completions 代理 |
POST |
/v1/responses |
OpenAI Responses / Codex 代理 |
POST |
/v1/images/generations |
OpenAI Images 代理 |
POST |
/v1/messages |
Claude Messages 代理 |
POST |
/v1beta/models/{model}:generateContent |
Gemini 代理 |
POST |
/v1beta/models/{model}:streamGenerateContent |
Gemini 流式代理 |
更多调用示例见:/docs/proxy
默认情况下,请求里的模型名使用:
- 普通模式:
渠道名/模型名 - 统一模型模式:直接用裸模型名
例如:
curl http://localhost:3000/v1/models `
-H "Authorization: Bearer YOUR_API_KEY"curl http://localhost:3000/v1/chat/completions `
-H "Authorization: Bearer YOUR_API_KEY" `
-H "Content-Type: application/json" `
-d "{\"model\":\"my-channel/gpt-4o\",\"messages\":[{\"role\":\"user\",\"content\":\"Hello\"}]}"docker logs -f model-check # 查看日志
docker compose restart # 重启服务
docker compose down # 停止服务
bash deploy.sh --update # 更新部署每次重启后需要重新登录?
设置固定的 JWT_SECRET 环境变量,不设置的话每次重启都会重新生成。
坚果云 WebDAV 连接失败?
- 使用应用密码,不是登录密码
- 先在坚果云网页端创建同步文件夹
WEBDAV_URL要包含文件夹路径,如https://dav.jianguoyun.com/dav/sync/
检测任务卡住怎么办?
- 检查 Redis 连接状态:
bash deploy.sh --status - 查看日志定位问题:
docker logs model-check - 重启服务:
docker compose restart
如何使用代理接口?
- 进入管理面板 → 代理密钥管理 → 添加密钥
- 使用生成的密钥调用
/v1/chat/completions、/v1/responses、/v1/messages或/v1beta/models/... - 也可以直接打开
/docs/proxy看完整示例
本地开发连不上数据库?
确保 .env 中 DATABASE_URL 和 REDIS_URL 使用 localhost 而不是容器名 postgres/redis。
如何配置渠道多密钥?
编辑渠道时可以添加多个 API Key,并选择负载均衡策略(轮询或随机)。
如果这个项目对你有帮助,欢迎 ⭐️ Star 支持一下!