feat(desktop): 支持使用当前 Codex CLI 账号 - #3858
Conversation
|
| Filename | Overview |
|---|---|
| apps/desktop/src/main/maker-host/auth-adapters.ts | 新增系统 Codex OAuth 探测与显式采用事务,包含链接复核、owner/cancel 边界和失败回滚。 |
| apps/desktop/src/main/maker-host/nativeProviderAuthBinding.ts | 扩展原生供应商绑定,使显式采用系统凭证时清除撤销状态并保留 inherited 来源。 |
| apps/desktop/src/main/maker-ipc/localCliDetect.ts | 在 Main 进程识别 Codex OAuth 可用性,并仅向 Renderer 返回布尔元数据。 |
| apps/desktop/src/main/maker-ipc/authHandlers.ts | 将 local-cli 纳入受运行时校验的 Codex 登录模式,并继续复用现有操作所有权与取消机制。 |
| apps/desktop/src/renderer/hooks/codexAuthLogin.ts | 将本机 CLI 采用接入 Renderer 登录单飞、模式切换和 owner lease 流程。 |
| apps/desktop/src/renderer/hooks/useCodexAuth.ts | 扩展认证状态机以承载 local-cli pending 状态和登录结果。 |
| apps/desktop/src/renderer/components/settings/ProvidersSection.tsx | 在 OpenAI 设置中增加 Codex CLI 采用入口,并在已连接状态显示账号标识。 |
| apps/desktop/src/shared/localCliDetect.ts | 为本机 CLI 检测结果新增 OAuth 可复用性元数据契约。 |
| packages/maker-core/src/interfaces/auth-adapter.ts | 将 local-cli 添加到共享登录模式接口,保持各层类型一致。 |
Sequence Diagram
sequenceDiagram
participant U as 用户
participant R as Renderer 设置页
participant P as Preload / IPC
participant M as Main 鉴权适配器
participant S as 系统 Codex auth.json
participant C as Cindy codex-home
R->>P: 检测 Codex CLI OAuth 可用性
P->>M: 请求非敏感登录元数据
M->>S: 读取并校验 OAuth 形态与账号 ID
M-->>R: oauthLoggedIn 布尔值
U->>R: 选择“使用 Codex CLI”
R->>P: triggerLogin(local-cli)
P->>M: 启动受跟踪的登录操作
M->>S: 复核账号与 OAuth 状态
M->>C: 建立共享 auth.json 链接
M->>M: 复核 owner generation 与链接拓扑
M->>M: 清除断开边界并记录继承来源
M-->>R: 返回认证状态并刷新供应商
Reviews (1): Last reviewed commit: "fix(desktop): roll back superseded Codex..." | Re-trigger Greptile
Signed-off-by: JupiterTheWarlock <84393202+JupiterTheWarlock@users.noreply.github.com>
Signed-off-by: JupiterTheWarlock <84393202+JupiterTheWarlock@users.noreply.github.com>
8fcdf16 to
e000a91
Compare
|
这个 PR 会在设置页增加「使用当前 Codex CLI 账号」的用户可见入口,并改变登录交互,需要先做维护者确认。 确认方式:直接在本 PR 上 Approve;若需要修改,请 Request Changes,作者改完后再 Approve 即放行。 讨论 issue:#3863 |
|
命中 UI 路径(apps/desktop/src/renderer/components/settings/ProvidersSection.tsx / apps/desktop/src/renderer/hooks/codexAuthLogin.ts / apps/desktop/src/renderer/hooks/useCodexAuth.ts)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范 |
|
@JupiterTheWarlock 👋 这个 PR 目前与 请在本地 merge 最新的 |
Signed-off-by: JupiterTheWarlock <84393202+JupiterTheWarlock@users.noreply.github.com>
MagicLizi
left a comment
There was a problem hiding this comment.
格式门未通过,请先补全 PR 描述后再继续。
本次缺的段落(对照仓库 PR 模板):
- 这次改了什么
- 怎么验证的
- 风险
请用 gh pr edit 或网页把这三段写进 Description。补齐并推送(或至少更新描述)后会重新走审查。UI 证据缺失不阻断,已另评论提醒。
这些问题已在当前 head 的后续 commit 中修复(格式门/安全门已通过),自动 dismiss 旧的 CHANGES_REQUESTED 以解除合并阻塞。
|
@JupiterTheWarlock 👋 这个 PR 现在在等维护者确认,确认之前流程不会合并它 —— 不是卡住了,也不是在等你再改一版(你推的改动流程都读到了,判的就是最新一版代码)。
这条是流程自动发的状态提醒(同一版代码只发一次),不用回复。 |
Closes #3857
这次改了什么
为内置 OpenAI 供应商增加“使用当前 Codex CLI 账号”操作。
当 Cindy 未连接,并且检测到本机存在有效的 Codex CLI ChatGPT OAuth 账号时,用户可以明确选择该账号,无需重新打开浏览器登录。
实现
local-cli登录模式,复用现有登录单飞、取消和状态刷新流程;auth.json链接机制,不复制 OAuth Token;native-harness-inherited凭证来源;API Key-only、格式损坏或缺少账号 ID 的 Codex 凭证不会显示为可复用的 OAuth 账号。
现有
reconnect-required恢复行为保持不变。安全边界
UI 变化
docs/design-rules/DESIGN.md§4 Component Stylings → Buttons:复用现有PillButton(共享Button variant="secondary");§10 Theme System & Token Reference:连接状态继续使用已有主题颜色变量。怎么验证的
自动化验证:
pnpm --filter desktop typecheckgit diff --check覆盖:
原 PR 记录的 Windows 桌面实机验证(本次仅更新描述,未重新执行):
非目标
本次改动不提供完整的多账号管理或账号切换界面。
风险
风险分类
影响与回滚