# ChatGPT Codex Router - 项目完成状态 ## 项目概述 一个 OpenAI 兼容的 API 路由器,通过 OAuth 认证将请求转发到 ChatGPT 后端。 **位置**: `/home/mars/project/chatgpt-codex-router` **状态**: ✅ 完成 **版本**: 1.0.0 --- ## ✅ 已完成功能 ### 核心功能 - [x] OpenAI 兼容 API (`/v1/chat/completions`, `/v1/responses`) - [x] OAuth 认证(PKCE 流程) - [x] **自动登录检查**(新增) - [x] GPT-5.x 模型支持(6 种模型变体) - [x] 流式传输(SSE 支持) - [x] 自动 Token 刷新 - [x] 详细日志系统 - [x] Docker 支持 ### 文件和文档 - [x] plan.md - 详细实施计划 - [x] README.md - 项目主文档 - [x] AUTO_LOGIN.md - 自动登录功能说明 - [x] QUICK_START.md - 快速开始指南 - [x] STATUS.md - 项目状态(本文件) --- ## 🚀 自动登录功能(新增) ### 功能说明 服务器启动时自动检查认证状态: 1. 检查是否存在 Token 文件 2. 验证 Token 是否过期 3. 如果未登录或 Token 过期,自动发起 OAuth 流程 ### 启动行为 **首次启动(无 Token):** ``` [WARN] No authentication token found. Initiating OAuth login... [INFO] Starting OAuth flow with state: xxx [INFO] Local OAuth server started on port 1455 [INFO] OAuth login initiated. [INFO] Please complete the OAuth flow in your browser. [INFO] OAuth URL: https://auth.openai.com/oauth/authorize?... [INFO] Browser should have opened automatically. [INFO] Server started on http://0.0.0.0:3000 ``` **已有有效 Token:** ``` [INFO] Authentication token found and valid. [INFO] Server started on http://0.0.0.0:3000 ``` **Token 过期:** ``` [WARN] Authentication token expired. Please login again. [INFO] Starting OAuth flow with state: xxx ... ``` ### 实现细节 **新增文件/修改:** - `src/index.ts` - 添加了 `checkAuthAndAutoLogin()` 和 `initiateOAuthLogin()` 函数 - `package.json` - 更新了 build 脚本,复制 oauth-success.html 到 dist/ **核心逻辑:** ```typescript async function checkAuthAndAutoLogin(): Promise { const tokenData = loadToken(); if (!tokenData) { logWarn(null, "No authentication token found. Initiating OAuth login..."); return await initiateOAuthLogin(); } if (isTokenExpired(tokenData)) { logWarn(null, "Authentication token expired. Please login again."); return await initiateOAuthLogin(); } logInfo(null, "Authentication token found and valid."); return true; } ``` --- ## 📁 项目结构 ``` chatgpt-codex-router/ ├── src/ │ ├── auth/ # OAuth 认证模块 │ │ ├── oauth.ts # OAuth 流程 │ │ ├── token-storage.ts # Token 存储 │ │ ├── token-refresh.ts # Token 刷新 │ │ ├── server.ts # OAuth 服务器 │ │ └── browser.ts # 浏览器工具 │ ├── request/ # 请求处理 │ │ ├── model-map.ts # 模型映射 │ │ ├── reasoning.ts # Reasoning 配置 │ │ ├── transformer.ts # 请求转换 │ │ ├── headers.ts # Header 生成 │ │ └── validator.ts # 请求验证 │ ├── response/ # 响应处理 │ │ ├── sse-parser.ts # SSE 解析 │ │ ├── converter.ts # 响应转换 │ │ ├── chat-completions.ts # Chat Completions 格式 │ │ └── handler.ts # 响应处理器 │ ├── prompts/ # Codex 系统提示 │ │ ├── gpt-5-1.md │ │ ├── gpt-5-2.md │ │ ├── gpt-5-1-codex.md │ │ ├── gpt-5-1-codex-max.md │ │ ├── gpt-5-1-codex-mini.md │ │ ├── gpt-5-2-codex.md │ │ └── index.ts │ ├── config.ts # 配置管理 │ ├── logger.ts # 日志系统 │ ├── constants.ts # 常量定义 │ ├── types.ts # TypeScript 类型 │ ├── router.ts # API 路由 │ ├── server.ts # 服务器配置 │ └── index.ts # 入口(含自动登录) ├── public/ │ └── oauth-success.html # OAuth 成功页面 ├── docker/ │ ├── Dockerfile # Docker 镜像 │ ├── docker-compose.yml # Docker Compose │ └── .dockerignore ├── dist/ # 编译输出 ├── data/ # 数据目录(Token 存储) ├── logs/ # 日志目录 ├── plan.md # 实施计划 ├── README.md # 主文档 ├── AUTO_LOGIN.md # 自动登录说明 ├── QUICK_START.md # 快速开始 ├── STATUS.md # 本文件 ├── package.json # 项目配置 ├── tsconfig.json # TypeScript 配置 └── .gitignore # Git 忽略规则 ``` --- ## 🎯 支持的模型 ### GPT-5.1 系列 - `gpt-5.1` (none/low/medium/high) - 通用模型 - `gpt-5.1-codex` (low/medium/high) - Codex 模型 - `gpt-5.1-codex-max` (low/medium/high/xhigh) - Codex Max 模型 - `gpt-5.1-codex-mini` (medium/high) - Codex Mini 模型 ### GPT-5.2 系列 - `gpt-5.2` (none/low/medium/high/xhigh) - 最新通用模型 - `gpt-5.2-codex` (low/medium/high/xhigh) - 最新 Codex 模型 --- ## 📝 快速使用 ### 1. 启动服务器(自动登录) ```bash cd /home/mars/project/chatgpt-codex-router npm start ``` ### 2. 完成 OAuth 登录 - 浏览器会自动打开(如果可能) - 登录 ChatGPT 账户 - 授权应用 - 看到"Authentication Successful"页面 ### 3. 发送请求 ```bash curl http://localhost:3000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.2-codex", "messages": [{"role": "user", "content": "Hello!"}] }' ``` --- ## 🔧 配置 ### 默认配置 ```json { "server": { "port": 3000, "host": "0.0.0.0" }, "oauth": { "clientId": "app_EMoamEEZ73f0CkXaXp7hrann", "redirectUri": "http://localhost:1455/auth/callback", "localServerPort": 1455 }, "backend": { "url": "https://chatgpt.com/backend-api", "timeout": 120000 }, "logging": { "level": "info", "dir": "./logs", "enableRequestLogging": false }, "codex": { "mode": true, "defaultReasoningEffort": "medium", "defaultTextVerbosity": "medium" } } ``` ### 环境变量 - `PORT` - 服务器端口(默认 3000) - `LOG_LEVEL` - 日志级别(error/warn/info/debug) - `ENABLE_REQUEST_LOGGING` - 启用请求日志(true/false) --- ## 🐳 Docker 使用 ```bash # 构建镜像 docker build -f docker/Dockerfile -t chatgpt-codex-router . # 运行容器 docker-compose -f docker/docker-compose.yml up -d # 查看日志 docker-compose -f docker/docker-compose.yml logs -f ``` --- ## 📊 项目统计 - **TypeScript 文件**: 24 个 - **总代码行数**: ~2000+ 行 - **API 端点**: 4 个 - **支持的模型**: 6 个系列 - **依赖包**: 15 个 - **文档文件**: 5 个 --- ## ✅ 测试验证 已测试的功能: - [x] TypeScript 编译通过 - [x] 服务器启动成功 - [x] 自动登录触发正常 - [x] OAuth 服务器启动 - [x] Token 存储和读取 - [x] 请求转换和转发 - [x] 响应格式转换 - [x] 流式和非流式响应 --- ## 📚 相关文档 - **完整计划**: `plan.md` - **项目主文档**: `README.md` - **自动登录详解**: `AUTO_LOGIN.md` - **快速开始指南**: `QUICK_START.md` --- ## 🎉 完成总结 所有计划的功能已实现,新增了自动登录检查功能。项目已经可以正常使用: 1. ✅ 启动时自动检查登录状态 2. ✅ 未登录时自动发起 OAuth 流程 3. ✅ Token 过期时提示重新登录 4. ✅ 所有 API 端点正常工作 5. ✅ Docker 支持完整 **项目已交付!** 🚀