ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Roo Code 接入 ChatGPT Plus/Pro 订阅:OpenAI Codex OAuth 提供商完整指南

Roo Code 接入 ChatGPT Plus/Pro 订阅:OpenAI Codex OAuth 提供商完整指南 Roo Code 接入 ChatGPT Plus/Pro 订阅OpenAI Codex OAuth 提供商完整指南【免费下载链接】Roo-CodeRoo Code gives you a whole dev team of AI agents in your code editor.项目地址: https://gitcode.com/GitHub_Trending/ro/Roo-Code本文围绕 Roo Code 的OpenAI – ChatGPT Plus/Pro提供商展开说明如何用 ChatGPT Plus/Pro 订阅而非 API Key通过 OAuth 登录直接使用 OpenAI Codex 模型并深入解析其底层实现OAuth 令牌管理、Codex 后端请求路由、模型目录与订阅计费逻辑以及该方案的能力边界。读完本文你将掌握从设置界面完成 OAuth 登录、选择模型、处理订阅限流到理解令牌存储原理的完整实战能力。一、这是什么用 ChatGPT 订阅替代 API KeyRoo Code 是一个运行在代码编辑器中的 AI Agent 扩展它支持接入多家模型提供商。其中OpenAI – ChatGPT Plus/Pro是一个特殊的提供商它不要求你申请 OpenAI API Key也不按 token 计费而是通过OAuth 登录你的 ChatGPT 账号将使用量计入 ChatGPT Plus/Pro 订阅本身。该提供商的官方入口文档位于 apps/docs/docs/providers/openai-chatgpt-plus-pro.md其核心定位与底层实现一一对应OAuth 签名登录而非 API Key登录凭证由 OAuth 流程产生请求携带 Bearer Token 而非 API Key请求路由到 Codex 后端请求发往https://chatgpt.com/backend-api/codex而非 OpenAI 的标准 API 端点订阅计费无 token 单价通过订阅覆盖用量不产生独立 API 费用受限的模型子集只能使用 Roo Code 内置的 Codex 模型目录中的模型。从源码结构看这一能力由 src/api/providers/openai-codex.ts 中的OpenAiCodexHandler、src/integrations/openai-codex/oauth.ts 中的OpenAiCodexOAuthManager以及 src/integrations/openai-codex/rate-limits.ts 中的限流信息查询共同实现并在 webview-ui/src/components/settings/providers/OpenAICodex.tsx 中呈现设置界面。二、快速上手六步完成订阅接入在 Roo Code 面板中点击齿轮图标打开设置按以下步骤操作打开 Roo Code 设置点击 Roo Code 面板中的齿轮图标在API ProviderAPI 提供商下拉框中选择OpenAI – ChatGPT Plus/Pro点击Sign in to OpenAI Codex登录 OpenAI Codex按钮在浏览器中完成登录授权流程返回 Roo Code 设置从模型下拉框中选择一个模型保存设置。登录成功后设置界面会显示Sign Out退出登录按钮并展示限流仪表盘见下文订阅限流与用量一节。整个签名/登出流程由 src/core/webview/webviewMessageHandler.ts 中的openAiCodexSignIn/openAiCodexSignOut消息处理完成前者调用startAuthorizationFlow()生成授权 URL 并通过vscode.env.openExternal在浏览器打开随后以非阻塞方式等待回调后者调用clearCredentials()清除令牌。三、OAuth 登录的底层实现PKCE、固定回调端口与令牌存储从源码可以还原完整的 OAuth 登录链路这也解释了登录时浏览器与编辑器之间发生了什么。3.1 授权端点与回调端口src/integrations/openai-codex/oauth.ts 中定义了固定的 OAuth 配置配置项值授权端点https://auth.openai.com/oauth/authorize令牌端点https://auth.openai.com/oauth/token回调地址http://localhost:1455/auth/callback回调端口1455请求的 Scopeopenid profile email offline_access由于使用了固定的本地回调端口如果 1455 端口被其他程序占用登录将失败——源码中当本地服务器监听报EADDRINUSE时会提示你关闭占用该端口的应用后重试见 src/integrations/openai-codex/oauth.ts。3.2 PKCE 与 CSRF 防护登录流程采用 PKCERFC 7636增强授权码模式generateCodeVerifier()使用crypto.randomBytes(32)生成随机码验证器并以 base64url 编码generateCodeChallenge()对验证器做 SHA-256 哈希生成码挑战generateState()生成随机 state 参数用于 CSRF 防护回调时若state不匹配则直接拒绝判定为潜在的 CSRF 攻击。授权 URL 中还携带了 Codex 特定的参数codex_cli_simplified_flowtrue与originatorroo-code见 src/integrations/openai-codex/oauth.ts。3.3 令牌交换与刷新浏览器授权完成后本地回调服务器捕获授权码用application/x-www-form-urlencoded格式向令牌端点发起交换注意state 参数不能放进令牌交换请求体否则 OpenAI 会拒绝。令牌响应中解析出access_token、refresh_token、过期时间并尝试从id_token/access_token的 JWT claims 中提取ChatGPT 账号 IDaccountId——该 ID 会通过ChatGPT-Account-Id请求头发送给 Codex 后端对组织订阅organization subscription是必需的。令牌的过期判断带有 5 分钟提前量isTokenExpired到期前会自动用 refresh_token 刷新刷新请求做了去重refreshPromise并发请求共享同一次刷新。如果刷新令牌被判定为无效/吊销invalid_grant等管理器会主动清除已存储的凭证此时需要重新登录见 src/integrations/openai-codex/oauth.ts 与 src/integrations/openai-codex/oauth.ts。3.4 为什么设置导出不包含登录状态原文档明确指出OAuth 令牌存储在 VS Code SecretStorage 中不会被包含进 Roo 的设置导出。这正对应saveCredentials/loadCredentials的实现——凭证通过context.secrets.store/context.secrets.get读写存储键为openai-codex-oauth-credentials而 VS Code SecretStorage 由系统级凭据库保护不属于 Roo 可导出的设置 JSON 范围。因此登录状态不能通过设置导入/导出来迁移到另一台机器换机器或重装后需要重新走一遍 OAuth 登录你的访问令牌不会因导出设置而被泄露到文件里从安全角度反而是加分项。四、请求如何到达 Codex 后端OpenAiCodexHandlersrc/api/providers/openai-codex.ts与常规的 OpenAI Native 提供商的关键差异在文件头部注释中列得很清楚使用 OAuth Bearer 令牌而非 API Key请求路由到 Codex 后端https://chatgpt.com/backend-api/codexCODEX_API_BASE_URL基于订阅计费无 token 单价模型子集受限携带 Codex 后端专用的自定义请求头。4.1 自定义请求头每次请求都会附带以下 Codex 专用头src/api/providers/openai-codex.ts请求头说明originator: roo-code标识请求来源session_id使用当前任务 ID无任务时回退到 handler 生命周期内的会话 ID由 uuidv7 生成User-Agent形如roo-code/{版本} ({平台} {版本}; {架构}) node/{node版本}ChatGPT-Account-Id从 JWT 提取的账号 ID存在时才附加4.2 双重请求路径executeRequest优先使用 OpenAI SDK 的 Responses API 流式接口若 SDK 路径抛错例如某些参数被 Codex 后端拒绝则回退到makeCodexRequest通过原生fetch对https://chatgpt.com/backend-api/codex/responses发起 SSE 流式请求src/api/providers/openai-codex.ts。值得注意的请求体细节会主动省略max_output_tokens与prompt_cache_retention因为按实现指南Codex 后端可能拒绝这两个参数当设置推理强度reasoning effort时会附带include: [reasoning.encrypted_content]与reasoning: { effort, summary: auto }工具参数 schema 会被归一化普通工具强制所有属性为必填并禁止额外属性additionalProperties: false以满足 Responses API 的 strict function callingMCP 工具只做additionalProperties: false处理store: false即不在 ChatGPT 侧持久化本次响应。4.3 认证失败自动重试如果请求因未授权 / 无效令牌 / 401 失败handler 会强制刷新一次 access token并自动重试若刷新也拿不到令牌则抛出请重新走 OpenAI Codex OAuth 登录流程的错误src/api/providers/openai-codex.ts。4.4 计费与用量上报订阅计费在代码中有多处印证模型目录中所有模型的inputPrice/outputPrice均为0normalizeUsage生成用量块时totalCost: 0注释明确Subscription-based: no per-token costs用量中的缓存读写 token、推理 token 仍会被解析上报用于界面展示但不会折算成费用。五、可用的模型目录与选择建议该提供商不能使用任意 OpenAI API 模型只能用 Roo 内置的 Codex 模型目录。目录定义在 packages/types/src/providers/openai-codex.ts默认模型为gpt-5.3-codex。以下是目录中的模型及其关键参数均为订阅计费价格 0模型 ID上下文窗口最大输出推理强度可选值默认推理强度图片输入说明gpt-5.51,050,000128,000none/low/medium/high/xhighnone支持订阅下最强通用模型gpt-5.41,050,000128,000none/low/medium/high/xhighnone支持曾经的旗舰通用模型gpt-5.4-mini400,000128,000none/low/medium/high/xhighnone支持更低成本的 5.4 版本gpt-5.3-codex默认400,000128,000low/medium/high/xhighmedium支持OpenAI 旗舰编码模型gpt-5.3-codex-spark128,0008,192low/medium/high/xhighmedium不支持仅文本快速文本编码模型gpt-5.2-codex400,000128,000low/medium/high/xhighmedium支持编码优化模型gpt-5.1-codex400,000128,000low/medium/highmedium支持GPT-5.1 编码优化版gpt-5.1-codex-max400,000128,000low/medium/high/xhighxhigh支持最高能力编码模型gpt-5.1-codex-mini400,000128,000low/medium/highmedium支持更快的小型编码模型gpt-5.2/gpt-5.1/gpt-5/gpt-5-codex/gpt-5-codex-mini400,000128,000见源码medium支持通用 / 编码系列模型目录中所有 Codex 系列模型都遵循同一工具约束内置工具仅开放apply_patch明确排除了apply_diff与write_to_file即文件修改统一走 apply_patch 模式所有模型均不支持 temperature 参数supportsTemperature: false依赖模型自身的确定性采样支持提示词缓存supportsPromptCache: true。选择建议追求最快响应如短小重构可选gpt-5.3-codex-spark复杂多文件改动可选gpt-5.1-codex-max默认 xhigh 推理强度需要超长上下文约 100 万 token 级时选gpt-5.5或gpt-5.4。六、订阅限流与用量可视化ChatGPT 订阅并非无限使用Codex 后端会对订阅账号做速率限制。Roo Code 提供了限流查询与可视化限流信息来自 WHAM 用量接口https://chatgpt.com/backend-api/wham/usage见 src/integrations/openai-codex/rate-limits.ts请求同样携带 Bearer 令牌与可选的ChatGPT-Account-Id返回的rate_limit包含**主窗口primary_window与次窗口secondary_window**两个维度每个维度给出已用百分比、窗口时长分钟与重置时间plan_type标识当前订阅计划类型已用百分比会被钳制在 0–100 之间展示clampPercent。该数据在设置界面由OpenAICodexRateLimitDashboard组件在登录后展示见 webview-ui/src/components/settings/providers/OpenAICodex.tsx。日常使用时如果遇到 429rateLimitExceeded或用量超限类错误说明订阅窗口额度已用尽通常需要等待窗口重置重置时间会在仪表盘中显示或考虑切换到更低强度的模型。七、注意事项与已知边界综合原文档 apps/docs/docs/providers/openai-chatgpt-plus-pro.md 与源码实现使用该提供商时有以下要点7.1 必须拥有有效订阅需要有效的 ChatGPT Plus 或 Pro 订阅免费版 ChatGPT 账号无法使用本提供商订阅状态由 OpenAI 侧校验登录成功不代表后续请求一定通过——若账号订阅过期Codex 后端会返回 403accessDenied或 401使用量计入订阅配额不产生独立的按 token API 费用。7.2 能力边界不能使用任意 OpenAI API 模型模型选择被严格限制在 Roo 的 Codex 模型目录内见第五节不能通过设置导出/导入迁移登录状态OAuth 令牌存放在 VS Code SecretStorage不随设置 JSON 导出换机器需重新登录固定回调端口 1455该端口被占用会导致登录失败Codex 系列模型的工具受限文件写入仅通过 apply_patch这会在 Agent 实际执行文件修改时体现出来不支持 temperature 配置模型设置中的温度项对该提供商无效。7.3 出错时的常见表现对应源码中的错误映射makeCodexRequest对 Codex 后端响应码做了如下映射src/api/providers/openai-codex.tsHTTP 状态码含义400请求无效invalid request401认证失败authentication failed403访问被拒绝access denied常与订阅状态有关404端点不存在endpoint not found429超过速率限制rate limit exceeded500 / 502 / 503Codex 服务错误其他通用错误遇到 401 时handler 会自动尝试强制刷新令牌并重试一次若失败则提示重新登录。八、小结OpenAI – ChatGPT Plus/Pro 提供商为已持有 ChatGPT 订阅的 Roo Code 用户提供了一条零 API 成本接入 OpenAI Codex 模型的路径OAuth 登录PKCE 固定回调端口 SecretStorage 令牌存储替代 API Key请求路由到 Codex 后端计费归入订阅配额。它的实现证据集中在 src/api/providers/openai-codex.ts、src/integrations/openai-codex/oauth.ts 与 src/integrations/openai-codex/rate-limits.ts 三个文件中如果你需要更宽泛的模型选择、temperature 控制或独立按量计费则应改用 apps/docs/docs/providers/openai.md 所描述的 OpenAI原生提供商。【免费下载链接】Roo-CodeRoo Code gives you a whole dev team of AI agents in your code editor.项目地址: https://gitcode.com/GitHub_Trending/ro/Roo-Code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表