Skip to content

fix(settings): make gateway auth cleanup configurable with compatible defaults - #464

Merged
qxcnm merged 2 commits into
qxcnm:mainfrom
MDX-Tom:codex/setting-preserve-requires-openai-auth
Oct 10, 2026
Merged

qxcnm merged 2 commits into
qxcnm:mainfrom
MDX-Tom:codex/setting-preserve-requires-openai-auth

Conversation

@MDX-Tom

@MDX-Tom MDX-Tom commented Sep 7, 2026 •

Copy link
Copy Markdown
Contributor

托管网关此前总是清理 cm provider 的 requires_openai_auth,无法满足需要保留旧配置的用户。本 PR 增加持久化开关,并保持当前主线的兼容默认值:默认开启清理,关闭时只保留已有值,不恢复曾删除的字段。

  • 已适配当前异步存储与 profile 应用/启动同步流程,保留 direct aggregate 的独立边界。
  • 桌面和 Web 共用现有 app settings RPC;后端、前端归一化与初始状态的默认值一致。
  • 设置界面四种语言及中英文说明明确提示:保留 true 可能禁用 Codex 图片/actor 扩展。
  • 覆盖缺省/true/false × 设置缺省/开/关的首次应用、重复应用和启动同步;检查其他 provider 与 bearer/actor header 保持正确。

验证:profile 43 项、app_settings 35 项、前端 runtime 250 项通过;build:desktop 静态构建及浏览器开关、RPC patch、刷新后状态保留回归通过;格式和最终 PR diff 检查通过。最新 CI 结果见维护者评论。

没有调用真实图片模型;默认行为与当前 main 一致,主动保留旧 true 的兼容限制已在界面和文档中说明。

@MDX-Tom

MDX-Tom commented Sep 7, 2026

Copy link
Copy Markdown
Contributor Author

审查结论:实现完成,建议进入 review。

这次改动的方向是把 config.toml 中 requires_openai_auth 的清理行为交给用户控制:

  • 应用设置「基础设置」新增「移除 requires_openai_auth」开关;
  • 默认关闭,未写入设置记录时也按关闭处理;
  • 关闭时保留现有 requires_openai_auth 值;
  • 开启时,在切换到 CodexManager 网关或同步 active gateway profile 时移除该字段;
  • 设置通过现有 app settings RPC 持久化,桌面端和 Web 设置页面共用同一字段;
  • 中、英、俄、韩界面文案已同步。

当前本地验证:

  • cargo fmt --all -- --check:通过
  • git diff --check:通过
  • cargo test -p codexmanager-service --lib codex_profile::tests --no-fail-fast:29 passed
  • cargo test -p codexmanager-service --test app_settings --no-fail-fast:35 passed
  • pnpm -C apps run test:runtime:216 passed
  • pnpm -C apps run build:desktop:通过

行为回归覆盖:

  1. 没有设置记录时,app settings 返回 removeRequiresOpenaiAuth = false;
  2. 设置开关可在 false / true 之间持久化往返;
  3. 清理开关关闭时,已有 requires_openai_auth = true 保留;
  4. 清理开关开启时,已有字段被移除;
  5. 网关 URL、平台密钥、WebSocket 与其他 provider 字段保持原有更新逻辑。

完整 service lib 串行验证结果为 1532 passed / 1 failed / 3 ignored。唯一失败是现有 codex_skills::tests::directory_import_detects_same_size_file_replacement_and_fifo_entries 的跨平台 FIFO/路径断言,profile 与 app settings 相关回归全部通过。

@qxcnm

qxcnm commented Oct 3, 2026

Copy link
Copy Markdown
Owner

审查结论:暂缓合并,保留配置的能力有价值,但需要适配当前 main 并验证图片扩展行为。 本次依据 head ec5b7d3bae8ba8771056d49d8cfa6b14a251fe20,对照 main 5e26cb398c952e6c8e6fa4d3e601af19489350ef。

目前有两个合入前需要解决的问题:

  1. crates/service/src/codex_profile.rs 和 apps/src/app/settings/components/general-basics-card.tsx 与当前 main 存在冲突。当前 profile 已包含异步存储同步和 direct aggregate 流程,旧 head 的 CI 不能替代合并到当前 main 后的验证。
  2. 默认保留旧 requires_openai_auth=true 会影响 actor 扩展能力判定。当前 main 的 codex_profile.rs:3017-3029 为网关写入图片扩展相关配置;官方 Codex 的 uses_openai_actor_authorization 明确要求 !requires_openai_auth。现有测试证明字段被保留/删除,但没有证明保留后图片流程仍可用。

这里并不是说该字段与 bearer token 必然冲突:官方 auth.rs 优先解析 experimental_bearer_token。需要验证的重点是图片扩展能力,而非笼统判定基础认证会失败。当前 set_provider_bearer_auth 也没有覆盖这个保留开关,因此 PR 确实提供了新控制能力。

建议修复路径:

  1. 更新到最新 main,解决 profile 冲突,沿用当前存储/设置接口;保持 gateway 与 direct aggregate 两条流程的边界。
  2. 先保持现有默认清理行为,再增加用户显式保留的能力;若仍希望默认保留,需要先给出支持的 Codex 版本、真实图片请求验证和兼容性说明。界面说明保留旧 true 对图片扩展可能产生的影响,双语文档与设置默认值同步。
  3. 补齐 requires_openai_auth 缺省/true/false × 开关状态的首次应用、重复应用、启动同步回归,并确认不改写其他 provider。
  4. 用实际 Codex 客户端验证普通文本、图片/actor 扩展以及 direct aggregate 访问;记录版本、配置组合与实际请求结果,敏感值脱敏。

建议验证:

cargo fmt --all -- --check
cargo test -p codexmanager-service --lib codex_profile::tests -- --test-threads=1
cargo test -p codexmanager-service --test app_settings -- --test-threads=1
pnpm -C apps run test:runtime
pnpm -C apps run build:desktop

以上兼容风险来自源码与官方版本对照,本次未运行该 PR 的真实图片链路。解决冲突、补齐实际链路证据并让最新 head 的 CI 通过后,可以重新评估合入。

@qxcnm qxcnm changed the title fix(settings): make Codex auth cleanup opt-in fix(settings): make gateway auth cleanup configurable with compatible defaults Oct 10, 2026
@qxcnm

qxcnm commented Oct 10, 2026

Copy link
Copy Markdown
Owner

已补齐修复并解决与当前 main 的冲突,提交 e6c280182cf8b85cc43de69a5b1592517485e420。最终实现保持主线的兼容默认值:清理开关默认开启,需要保留旧值时由用户主动关闭;不会恢复已经删除的字段。

  • 沿用当前异步 profile/存储流程,gateway 与 direct aggregate 边界保留;不改写其他 provider。
  • 后端设置、前端初始状态和归一化默认值一致。界面四种语言及中英文文档已说明保留 true 可能禁用图片/actor 扩展。
  • 缺省/true/false × 设置缺省/开/关共 9 种组合覆盖首次应用、重复应用和启动同步,同时检查 bearer/actor header 与其他 provider。
  • profile 43/43、app_settings 35/35、前端 runtime 250/250 通过;build:desktop 和浏览器默认状态、RPC 保存、刷新持久化回归通过;格式和最终 PR diff 检查通过,最新提交全部 CI 通过。

审查通过,可以合并。本次没有调用真实图片模型;选择保留旧 true 的已知限制已明确说明,默认图片扩展配置保持当前主线行为。

@qxcnm
qxcnm merged commit 7c22c7b into qxcnm:main Oct 10, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants