--- title: Cursor-To-OpenAI-Nexus emoji: 🚀 colorFrom: blue colorTo: green sdk: docker app_port: 3010 --- # Cursor-To-OpenAI-Nexus [English](README.en.md) | 中文 将Cursor的API请求转发到OpenAI,支持多个API Key轮询。 ## 项目特点 - 🔑 **多Key轮询**: 配置多个API Key轮询,提高可用性 - 🚀 **简易配置**: 一键配置脚本,快速搭建环境 - 📊 **状态监控**: 查看API Key使用情况 - 🔧 **易于维护**: 便捷的维护脚本,简化日常操作 ## 🚀 基础安装 ### 克隆项目 ``` git clone https://github.com/liuw1535/cursor-to-openai-nexus.git ``` ### 进入项目 ``` cd cursor-to-openai-nexus ``` ### 安装依赖 ``` npm install ``` ## ⚙️ 配置项目 ``` npm run setup ``` - 只需填写自定义密钥和是否启用TLS伪造代理服务器 - 其他选项可直接回车跳过或随意填写 - 🛡️ 如频繁遇到封号问题,建议启用TLS服务器 - 配置不满意可重新执行此命令修改 ## 🏃 启动服务 ``` npm start ``` ## 🔍 使用方法 1. 访问管理界面: `http://127.0.0.1:3010` 2. 使用页面底部蓝色按钮获取cookie 3. 在酒馆页面配置: - API地址: `http://127.0.0.1:3010/v1` - 密钥: `sk-text` (如果配置时输入的是"text") ## 📧 账号注册建议 - 推荐使用域名邮箱(子域名邮箱更佳) - 搜索"cloudfare 域名邮箱"获取配置教程 - ⚠️ 每次注册账号不超过2个,避免被封 ## 🛠️ 常用命令 ``` npm start # 启动项目 npm run setup # 修改配置 ``` ## 环境配置 在`.env`文件中配置以下关键参数: - `API_KEYS`: API Key与Cookie的映射关系(JSON格式) - `USE_TLS_PROXY`: (true)启用tls服务器,可以避免阻止请求(block)的问题 - `PROXY_PLATFORM`: 启用tls服务器时对应的平台,默认auto自动检测 系统启动时会自动合并`.env`中的API Keys和`data/api_keys.json`中的API Keys,确保数据一致性。 ## 部署方式 ### 使用Docker Compose ```bash # 创建配置文件 cp .env.example .env mkdir -p data cp data/admin.example.json data/admin.json # 创建管理员账户 node scripts/create-admin.js # 启动服务 docker compose up -d --build # 查看日志 docker compose logs -f # 停止服务 docker compose down ``` ### 部署到 Hugging Face Spaces 本项目包含 `Dockerfile`,可以直接部署到 Hugging Face Spaces。 1. 在Hugging Face上创建一个新的Space,并选择 **Docker** 作为SDK。 2. 将此仓库克隆到您的Space中。 3. 在Space的 **Settings -> Repository secrets** 中设置您的环境变量(如 `API_KEYS` 等)。这些secrets会作为环境变量注入到容器中,作用等同于 `.env` 文件。 4. Hugging Face会自动构建并运行应用。 **注意**: 部署后,请将文档中所有的 `http://127.0.0.1:3010` 替换为您的Space URL,例如 `https://your-space-name.hf.space`。 ## API使用示例 ### Python示例 ```python from openai import OpenAI # 使用自定义API Key client = OpenAI(api_key="your_custom_api_key", base_url="http://localhost:3010/v1") # 或直接使用Cookie # client = OpenAI(api_key="user_...", # base_url="http://localhost:3010/v1") response = client.chat.completions.create( model="claude-3-7-sonnet", messages=[ {"role": "user", "content": "Hello."}, ], stream=False ) print(response.choices) ``` ## 注意事项 - 请妥善保管你的WorkosCursorSessionToken - 本项目仅用于学习和研究目的,请遵守Cursor的使用条款 ## 致谢 - 本项目基于[cursor-api](https://github.com/zhx47/cursor-api)(by zhx47) - 整合了[cursor-api](https://github.com/lvguanjun/cursor-api)(by lvguanjun)的提交内容 # 日志系统 项目集成了统一的日志系统,可以通过以下方式配置: ## 日志级别配置 1. 在 `.env` 文件中设置环境变量 ``` LOG_LEVEL=INFO LOG_FORMAT=colored LOG_TO_FILE=true LOG_MAX_SIZE=10 LOG_MAX_FILES=10 ``` 2. 在启动命令中指定环境变量,例如:`LOG_LEVEL=DEBUG npm start` 支持的日志级别有: - ERROR:只显示错误信息 - WARN:显示警告和错误信息 - INFO:显示一般信息、警告和错误信息(默认) - DEBUG:显示调试信息、一般信息、警告和错误信息 - TRACE:显示所有日志信息 ## 日志格式 日志格式为:`[级别] 时间戳 日志内容`,不同级别使用不同颜色显示,方便区分: - ERROR:红色 - WARN:黄色 - INFO:绿色 - DEBUG:蓝色 - TRACE:青色 - HTTP:青色(专用于HTTP请求日志) ## HTTP请求日志 项目使用 Morgan 中间件记录 HTTP 请求,并集成到统一日志系统中: 1. 在 `.env` 文件中设置 HTTP 日志格式: ``` # 选项: tiny, combined, common, dev, short MORGAN_FORMAT=tiny ``` 2. HTTP 日志会以 `[HTTP]` 前缀显示,使用青色高亮,便于识别 3. Morgan 格式选项说明: - `tiny`: 最简洁的格式,仅包含方法、URL、状态码、响应时间 - `combined`: 标准的 Apache 组合日志格式,包含 IP、时间、请求、状态码、响应大小、referrer、user-agent - `common`: 标准的 Apache 通用日志格式,类似 combined 但不包含 referrer 和 user-agent - `dev`: 开发友好的彩色格式,包含方法、URL、状态码(带颜色)、响应时间 - `short`: 更短的格式,包含方法、URL、状态码、响应时间、响应大小 ## 文件日志 项目支持将日志同时输出到控制台和文件,可以通过以下配置启用: 1. 在 `.env` 文件中设置:`LOG_TO_FILE=true` 2. 可选配置: - `LOG_MAX_SIZE`: 日志文件最大大小,单位MB,默认10MB - `LOG_MAX_FILES`: 保留的历史日志文件数量,默认10个 日志文件存储在项目根目录的 `logs` 文件夹下: - 当前日志文件: `app.log` - 历史日志文件: `app-2023-05-05T12-45-30-000Z.log` 文件日志会自动轮转,当日志文件大小超过设定值时,会创建新的日志文件并保留最近的N个文件。 ## 代码中使用 在代码中可以按需使用不同级别的日志: ```javascript const logger = require('./utils/logger'); logger.error('这是错误信息'); logger.warn('这是警告信息'); logger.info('这是一般信息'); logger.debug('这是调试信息'); logger.trace('这是跟踪信息'); logger.http('这是HTTP请求日志'); ```