Skip to content

fix(codex): 修复桌面登录态下的图像生成路由 - #108

Open
MattLYT wants to merge 1 commit into
BigStrongSun:mainfrom
MattLYT:codex/fix-native-image-routing
Open

MattLYT wants to merge 1 commit into
BigStrongSun:mainfrom
MattLYT:codex/fix-native-image-routing

Conversation

@MattLYT

@MattLYT MattLYT commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

概述

修复 Codex Desktop 内置图像生成在 MultiRouter 中无法使用官方当前登录态的问题。

官方供应商选择 desktop_current_login 后,路由会物化为带有 codexNativeAuthPassthrough 的请求级供应商,而不会标记为托管 codex_oauth。原图片通道判定遗漏了这一身份;当目录只包含文本模型时,gpt-image-2 无法找到官方图片通道,生成请求报模型路由错误,编辑请求还可能回到本机代理并触发递归保护。

另外,生成请求原先经过文本 JSON 转发,可能将图片模型改成供应商配置的默认文本模型。

本次改动:

  • 复用已有的官方身份和原生认证判定,识别官方 Desktop 登录态;继续排除 xAI、Copilot 和非官方原生认证标记。
  • 仅对本地 Codex 客户端已选中的官方图片通道,复用原始字节转发,保留图片模型、请求内容和认证头。
  • 显式第三方图片路由、外部 API 客户端和普通文本路由保持原有行为;不改写模型目录、路由配置或数据库。

关联 Issue

暂无关联 Issue,来源于 Codex Desktop 内置图片工具的实际故障。

截图

不适用,本次没有界面改动。

验证

  • 新增官方 Desktop 登录态回归在修复前失败:只有文本目录时,图片通道解析返回空结果;修复后通过。
  • 覆盖常规文本模型探测和自定义别名身份兜底,并确认普通文本及通用原始端点仍严格按目录匹配、供应商数据库不变。
  • 本地 HTTP 模拟上游确认:官方路由只有文本目录、同时配置文本默认模型时,图片生成请求仍原样发送 gpt-image-2,JSON 字节、提示词、路径、查询参数和合成 Bearer 认证均保留,响应成功。
  • cargo test --manifest-path src-tauri/Cargo.toml --lib -j 1 proxy::handlers:: -- --test-threads=1:104 项通过。
  • cargo test --manifest-path src-tauri/Cargo.toml --lib -j 1 proxy::forwarder::tests::raw_ -- --test-threads=1:14 项通过,包含原生认证、固定 OAuth、账号池及第三方路由边界。
  • Rust 格式检查通过。前端源码、测试与配置相对最新基线无差异,已在现有依赖的主工作副本执行类型检查和格式检查,均通过。

测试使用隔离目录、内存数据库及合成请求。本次未重新执行真实官方 OAuth 图像调用、未运行完整 Rust 测试套件或 Clippy,也未构建、安装或替换桌面程序。

检查清单

  • pnpm typecheck 通过。
  • pnpm format:check 通过。
  • cargo clippy:本机未运行,交由 PR 的严格 CI 检查;本机已完成上述定向回归。
  • 已核对国际化范围:没有用户可见文本改动,无需更新国际化文件。

识别官方原生认证的请求级供应商,避免文本目录遗漏图片模型后丢失官方通道。官方本地图片生成复用原始字节转发,防止默认文本模型覆盖图片请求;保留第三方路由、外部 API 和文本严格匹配行为。

验证:新增回归先失败再通过;104 项处理器测试及 14 项原始转发测试通过;本地 HTTP 验证请求字节、图片模型及合成认证头;Rust 格式、前端类型和格式检查通过。未执行真实 OAuth 联调、完整 Rust 套件或 Clippy;未构建安装包或替换运行程序。
@MattLYT
MattLYT marked this pull request as ready for review September 30, 2026 10:34

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant