Skip to content

fix: 适配 agent 最新配置并收口清理边界#29

Open
SaulgoodMan-C wants to merge 1 commit into
mainfrom
codex/fix-codex-env-key-secret-handling
Open

fix: 适配 agent 最新配置并收口清理边界#29
SaulgoodMan-C wants to merge 1 commit into
mainfrom
codex/fix-codex-env-key-secret-handling

Conversation

@SaulgoodMan-C

Copy link
Copy Markdown
Collaborator

问题

这轮主要修复多 agent 配置适配与供应商清理链路中的几个连带问题:

  • Codex 仍可能沿用旧的 experimental_bearer_token 路径,导致密钥残留、编辑态回流,且与最新 env_key 配置方式不一致。
  • Claude / Codex / Gemini / OpenClaw 等供应商在“清除配置 / 移除配置 / 删除”上的语义与行为不够统一,用户容易误解。
  • 确认弹窗打开后切换 app,再执行确认时存在串 app 操作风险。
  • live config 清理边界不够保守,可能误删用户手改过的配置值或误清当前 provider 标记。
  • 相关测试输出夹杂了 baseline-browser-mappinglocalStorage getter warning 和故意构造的 broken config 日志,影响回归判断。

这些问题叠加后,会让用户在编辑、切换和清理供应商配置时遇到不一致行为,也会让后续回归验证成本变高。

根因

根因集中在两类:

  1. 配置模型演进后,Codex 的旧 token 字段、前端编辑态、后端 live config 清理逻辑没有完全一起迁移到最新配置方式。
  2. 供应商动作语义和确认流在前后端边界上没有完全收口,测试环境里又存在几条与真实故障无关的固定噪音。

修复

本 PR 做了以下收口:

  • Codex 统一按最新 env_key 方式处理配置与密钥写入,迁移并清理 legacy experimental_bearer_token
  • 新增并强化 provider live config 清理入口,Claude / Gemini / Codex 清理时改为按值匹配保守删除,避免误删用户手改值。
  • 将当前 provider 清理拆成更精确的条件判断,避免误清整类 current provider 状态。
  • 前端统一“清除配置 / 移除配置 / 删除”语义与按钮展示,并让确认动作绑定原始 appId,防止切 app 串操作。
  • 补齐对应 i18n、API、MSW mock、Vitest 集成测试与 Rust 服务测试覆盖。
  • 仅在测试环境精确过滤 baseline-browser-mapping 固定 warning,移除 localStorage getter 触发 warning 的探测方式,并局部静音故意构造的 broken config 日志输出。
  • 补充本轮交接文档与人工测试文档,便于后续继续维护。

影响

用户侧可见变化:

  • Codex 供应商配置保存与编辑会按最新配置方式一致运行,不再回写旧 token 路径。
  • 清除配置、移除配置、删除的行为更符合预期,不会因切换 app 造成错操作。
  • 对用户手工改过的 live 配置更保守,不会因为同 key 被程序误删。

工程侧收益:

  • provider 配置清理链路的边界更清晰;
  • 测试输出更干净,回归时更容易识别真实失败;
  • 文档与手测步骤齐全,便于交接。

验证

已执行:

  • pnpm typecheck
  • pnpm vitest run tests/integration/App.test.tsx tests/components/ProviderActions.test.tsx tests/utils/providerConfigUtils.codex.test.ts
  • pnpm vitest run tests/components/ProviderActions.test.tsx
  • pnpm vitest run tests/integration/App.test.tsx tests/utils/providerConfigUtils.codex.test.ts
  • cargo test --manifest-path src-tauri/Cargo.toml codex_env --lib
  • cargo test --manifest-path src-tauri/Cargo.toml clear_ --tests
  • cargo test --manifest-path src-tauri/Cargo.toml provider_service_clear_ --test provider_service
  • cargo fmt --manifest-path src-tauri/Cargo.toml --check
  • git diff --check

文档

  • 新增交接文档:docs/2026-06-24-agent最新配置适配与清理边界修复-交接文档.md
  • 新增人工测试文档:qa/2026-06-24-agent最新配置适配与清理边界修复-人工测试文档.md

问题描述:Codex 旧 token 路径仍可能残留,多个 agent 的清理动作语义与边界不一致,确认弹窗在切换 app 后存在串操作风险,测试输出还混有多类噪音。

修复思路:统一按最新 env_key 配置方式处理 Codex;将清除配置、移除配置、删除的前后端语义收口;确认动作绑定发起时 appId;Claude、Gemini、Codex 的 live config 清理按值匹配保守删除;测试环境精确清理 baseline-browser-mapping、localStorage getter 和 broken config 输出噪音。

复现路径:编辑或清理 Codex、Claude、Gemini、OpenClaw 等供应商配置,切换 app 后确认动作,并运行相关 Vitest / Rust 测试。

更新代码架构:补充 provider clear_live_config 入口、DAO current provider 条件清理、Codex legacy token 迁移与清理、前端 Provider 动作语义与确认流、配套 i18n、MSW、Vitest 与 Rust 测试,以及交接文档和人工测试文档。
@SaulgoodMan-C SaulgoodMan-C marked this pull request as ready for review June 24, 2026 10:15
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.

1 participant