Skip to content

chxcodepro/model-check

Repository files navigation

🔍 Model Check

AI 模型可用性检测与管理平台

快速开始 · 功能特性 · 配置说明 · 常见问题


✨ 功能特性

📡 渠道管理

  • 支持添加、编辑、删除 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 .env

Windows 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 连接失败?
  1. 使用应用密码,不是登录密码
  2. 先在坚果云网页端创建同步文件夹
  3. WEBDAV_URL 要包含文件夹路径,如 https://dav.jianguoyun.com/dav/sync/
检测任务卡住怎么办?
  1. 检查 Redis 连接状态:bash deploy.sh --status
  2. 查看日志定位问题:docker logs model-check
  3. 重启服务:docker compose restart
如何使用代理接口?
  1. 进入管理面板 → 代理密钥管理 → 添加密钥
  2. 使用生成的密钥调用 /v1/chat/completions/v1/responses/v1/messages/v1beta/models/...
  3. 也可以直接打开 /docs/proxy 看完整示例
本地开发连不上数据库?

确保 .envDATABASE_URLREDIS_URL 使用 localhost 而不是容器名 postgres/redis

如何配置渠道多密钥?

编辑渠道时可以添加多个 API Key,并选择负载均衡策略(轮询或随机)。

📄 许可证

MIT


如果这个项目对你有帮助,欢迎 ⭐️ Star 支持一下!

Star History Chart

About

检测模型可用性和代理映射模型

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages