Skip to content

fix(agent): 修复 Claude 鉴权、会话切换和品牌图标 - #1007

Open
Mucheen wants to merge 2 commits into
1lck:previewfrom
Mucheen:fix/agent-auth-switching-icons
Open

Mucheen wants to merge 2 commits into
1lck:previewfrom
Mucheen:fix/agent-auth-switching-icons

Conversation

@Mucheen

@Mucheen Mucheen commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Claude 使用支持 Anthropic Messages 的 API Key 服务商时,适配器的 gateway 模式会额外加入占位 Bearer acp-proxy,部分服务商因此返回 401;另外,Agent 选择已改变时,界面可能仍绑定旧连接,首次切到 Codex 还会短暂显示保存的旧模型。

本次修复使 Claude 新建和恢复会话走同一条原生 API Key 路由,Agent 切换立即更新界面,会话设置确认后再显示模型;同时参照 CC GUI 完善底栏和 Agent 菜单的品牌图标。

改动说明

  1. Claude 鉴权与历史恢复:复用固定版本适配器公开的 _meta.claudeCode.options,在 session/new、session/load 通过 ACP stdio 传递服务商、密钥和模型。SDK 环境与程序化 settings 使用同一路由,并清除冲突的 Bearer、OAuth、自定义请求头、云平台路由及 apiKeyHelper;缺少凭据直接报错。Codex 继续使用原有 gateway 鉴权。
  2. Agent / 模型切换:增加直接观察 AgentConversationFeatureModel 的视图,在选择变化时解析正确连接,并按 Agent ID 更新连接视图。保留各 Agent 已有的连接、历史与会话配置;模型仍等待上游确认再更新显示。
  3. 会话准备状态:连接、新建及历史加载期间显示“正在加载会话设置…”,等待包含默认模型修正的会话确认,避免先显示旧模型再跳变。等待期间同时阻止按钮和 Enter 提交;失败或上游不提供配置选项时结束等待。补齐中英文提示。
  4. 底栏与模型品牌图标:Claude 使用橙色星芒,Codex 使用随深浅主题变化的灰色结形标志;Agent 入口为 18 点图标、28 点点击区域,模型入口及模型列表同步品牌。复用既有 SVG,在内存中染色以保留原生菜单的颜色;缓存包含资源包、尺寸和颜色,共用模板保持原有行为。
  5. Agent 下拉菜单:Claude / Codex 名称前均显示 16 点品牌图标,使用原生单选菜单独立呈现选中勾选,勾选与品牌图标同时保留。为 Agent、模型、权限入口补充稳定的无障碍标识。
  6. 回归、契约与文档:新增真实 SwiftUI 宿主回归,覆盖选择观察、确认前后、过期响应、新建/历史加载、失败回退、连接复用和清理,以及四种品牌/主题组合的原生图标像素检查。Rust fixture 覆盖 Claude 冲突凭据清理和新建/恢复路由;真实集成测试支持选择 Claude,并要求切到不同模型后收到回复,后续选项取自最新确认目录。同步共享契约、中文 Agent Note 和两份生成的功能矩阵。

验证

  • macOS 相关 Agent 回归 87 项通过:test-stability-macos.sh -- --filter 'AgentConversation|AgentHistory|AgentFileReference|AgentProviderConfiguration|AgentBrandIconResource|AgentManagement'。最新原生品牌像素用例覆盖 4 个组合,合计 414 ms;逐测试 JSON、JUnit 和 HTML 已核对。
  • Rust Agent Host 74 项通过,3 项真实服务测试默认忽略;忽略项不计入通过。cargo fmt --manifest-path rust/Cargo.toml -p lithe-agent-host -- --check 通过。
  • 已单独完成真实 Claude 文件读取→修改→执行 Node 测试→追问(52.878 秒),取消与历史恢复(14.521 秒),以及 Sonnet→Haiku 切换后正常回复(8.791 秒)。
  • macOS 构建、打包和实际界面验收通过:Claude/Codex 切换、加载状态、模型菜单搜索/勾选、两个品牌菜单图标及选中勾选显示正常;真实 Codex 回复已通过。
  • 典型界面工作流及最新菜单验证前后,bundle 990 个文件清单及 SHA-256 一致。测试窗口、临时连接和旧应用进程已清理。
  • 测试稳定性、共享契约、Agent Note、Windows 静态边界、bundle 只读边界、功能矩阵及实际变更门禁、diff 空白检查通过。

平台与已知限制

  • Windows 复用共享 Rust 路由,本次没有完成 Windows 对话界面或实机验收;功能矩阵保留相应待完成状态。
  • 服务边界检查仍报告 macos/Sources/Lithe/Models/AppModel/AppModel+RunConfiguration.swift 为 616 行,超过 600 行。该文件与当前 preview 字节完全一致,本 PR 未修改;不将全部静态门禁标为通过。
  • 鉴权依赖固定适配器的公开扩展,升级适配器时须继续验证新建及历史恢复。该修改未改变 C ABI/应用 JSON 形状,未修改已安装第三方包,也未新增下载、磁盘缓存或可复用工作树资源。

同步 preview 与冲突处理(2026-10-01)

已同步最新 preview(7cb138b9),解决平台矩阵 Markdown 的统计区冲突。以自动合并后的 shared/platform-feature-matrix.json 为准重新生成 Markdown/CSV,逐项核对 119 条能力记录,保留最新 Windows Diff 能力和本 PR 的 Agent 记录。非重叠源码与测试改动逐字节保留,权限菜单与英文强度的独立工作继续由 #1008 跟踪。

  • 87 项 Swift Agent 回归通过,无性能警告;74 项 Rust Agent Host 回归通过,3 项真实服务测试仍按原规则默认忽略。
  • Agent Notes、共享契约、Windows 边界、测试稳定性、bundle 只读检查、平台矩阵及实际 base/head 变更门禁、diff 空白检查通过。
  • 测试进程正常退出;本轮未启动额外应用或发送模型请求。
  • 更新提交:9ebd0f52e3a1620379882c3aa19d95afa1d46bb2,使用普通快进推送,保留原 PR 提交历史。Windows 实机验收仍待完成;此前注明的全仓服务边界 616 行基线限制保持原状。

通过 Claude 适配器公开会话参数传递 API Key 路由,同时覆盖新建与历史恢复,清除冲突鉴权并保留 Codex gateway 行为。
直接观察所选 Agent 连接,等待会话设置确认后展示模型,防止旧配置闪现及准备期间提交。
统一底栏、模型入口与 Agent 菜单品牌图标,保留原生单选勾选,并补充回归、共享契约、Agent Note 与功能矩阵。
@ghfind-review ghfind-review Bot added the review: medium ghfind author score; see https://ghfind.com label Oct 1, 2026
xiaoyumuxi
xiaoyumuxi previously approved these changes Oct 1, 2026

@xiaoyumuxi xiaoyumuxi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

重点检查了 Claude API-key 路由、session/new 与 session/load 的一致性、gateway 登录分支、模型/Agent 切换准备态以及品牌图标缓存。凭据只通过 ACP session metadata 传入,Claude 不再走冲突的 gateway authenticate;新建和历史恢复都复用同一路由,相关 Rust/UI 回归测试覆盖到位,当前 CI 全绿。没有发现阻断项。

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

Labels

review: medium ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants