feat(desktop): support system Claude Code runtime - #3827
Conversation
Signed-off-by: WEIWEICurry <2728306174@qq.com>
|
| Filename | Overview |
|---|---|
| apps/desktop/src/main/agent-binaries/system-claude-code.ts | 新增跨平台系统 Claude Code 探测与版本校验;PATH 多候选搜索会被首个版本异常候选提前终止。 |
| apps/desktop/src/main/agent-binaries/index.ts | 将持久化来源选择接入二进制准备流程,并记录实际来源和回退原因。 |
| apps/desktop/src/main/maker-ipc/claude-code-runtime-settings.ts | 新增受信任 renderer 限定的设置读写、重置及探测 IPC,并验证枚举和绝对路径。 |
| apps/desktop/src/main/claude-code-runtime-settings-store.ts | 在 Electron userData 中以原子覆盖设置文件持久化 Claude Code 运行来源。 |
| apps/desktop/src/renderer/components/settings/ClaudeCodeRuntimeCard.tsx | 新增来源选择、可选路径、安装探测、重启状态及恢复默认的 About 设置卡片。 |
| apps/desktop/src/renderer/App.tsx | 环境检查通过后读取最终运行决策,并对系统来源回退显示一次性提示。 |
| apps/desktop/src/shared/claudeCodeRuntimeSettings.ts | 定义跨 main、preload 和 renderer 使用的设置、探测结果及运行决策契约。 |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[About 页面选择来源] --> B[Preload 固定 IPC]
B --> C[Main 校验并持久化设置]
C --> D[重启后 prepare Claude Code]
D --> E{来源为 system?}
E -- 否 --> F[准备 Cindy 管理版本]
E -- 是 --> G[从自定义路径或 PATH 探测]
G --> H{版本兼容且可执行?}
H -- 是 --> I[使用系统 Claude Code]
H -- 否 --> F
F --> J[记录实际来源与回退原因]
I --> J
J --> K[About 展示并按需提示用户]
Prompt To Fix All With AI
### Issue 1
apps/desktop/src/main/agent-binaries/system-claude-code.ts:134-142
**PATH 探测被首个版本阻断**
当用户选择系统来源并留空自定义路径时,如果 PATH 前部的 `claude` 可执行但版本无法读取或低于最低版本,这里会立即返回失败,不再检查后续目录中的兼容安装,导致 Cindy 错误回退到受管版本并显示误导性警告。请仅对显式自定义路径立即失败;自动探测时应继续检查剩余候选,并在全部候选都失败后返回最合适的失败原因。
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "feat(desktop): support system Claude Cod..." | Re-trigger Greptile
|
本 PR 命中维护者确认门(产品 / UI:设置页新增 Claude Code 运行来源卡片,启动探测与回退对用户可见)。 请维护者直接在本 PR 上 Approve;如果要求修改,请 Request Changes,作者改完后再 Approve。讨论 issue:#3828 作者侧无需再操作,除非维护者提出修改要求。 |
|
命中 UI 路径(apps/desktop/src/renderer/App.tsx / apps/desktop/src/renderer/components/settings/AboutSection.tsx / apps/desktop/src/renderer/components/settings/ClaudeCodeRuntimeCard.tsx)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范。这不是合并阻断。 |
Signed-off-by: WEIWEICurry <2728306174@qq.com>
|
Windows CI 中 3 项失败均为与本 PR 改动无关的时序/超时测试;Linux CI 与本地完整相关测试均通过。当前账号没有重跑 Actions 的权限,麻烦维护者协助 Re-run failed jobs,谢谢。 |
|
@WEIWEICurry 👋 这个 PR 目前与 请在本地 merge 最新的 |
Signed-off-by: WEIWEICurry <2728306174@qq.com>
|
已在本地合并最新的 upstream/main,解决冲突并推送至当前分支(643567b9b)。本地相关单测与 Desktop typecheck 均已通过。 |
|
@WEIWEICurry 👋 这个 PR 目前与 请在本地 merge 最新的 |
Signed-off-by: WEIWEICurry <2728306174@qq.com>
|
已在本地合并最新的 upstream/main,解决冲突并推送至当前分支。 |
|
@WEIWEICurry 👋 这个 PR 目前与 请在本地 merge 最新的 |
Signed-off-by: WEIWEICurry <2728306174@qq.com>
Signed-off-by: WEIWEICurry <2728306174@qq.com>
Signed-off-by: WEIWEICurry <2728306174@qq.com>
Signed-off-by: WEIWEICurry <2728306174@qq.com>
这次改了什么
摘要
为 Desktop 增加 Claude Code 运行来源选择。默认继续使用 Cindy 管理的内置版本;用户可在“设置 → 关于”中改用系统安装,并通过 PATH 或绝对可执行文件路径进行探测。
启动时会执行版本探测并校验 Cindy 支持的最低版本。系统 Claude Code 缺失、无法执行、启动器不受支持或版本过低时,会自动回退到 Cindy 管理的版本并显示可操作提示。“关于”页展示实际生效的来源、版本和路径。
变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
UI 变化
DESIGN.md §2 Color Palette & Roles、§10 Theme System & Token Reference、§10 Light / Dark Dual-Mode Delivery Gate:颜色均使用现有语义 token,不新增单模式硬编码DESIGN.md §4 Component Stylings(Cards & Containers、Inputs & Forms):复用设置页卡片、输入框和按钮语义DESIGN.md §5 Border Radius Scale、§14.2 Focus Management:沿用标准圆角与可见焦点环怎么验证的
自动验证
手工验证
未执行的验证
风险
风险分类
影响与回滚
userData下的独立 JSON;IPC 限定受信任 renderer,绝对路径与枚举值均在 main 进程校验,日志不记录用户路径.exe,明确拒绝不能安全直启的.cmd/.bat;macOS/Linux 搜索 PATH 与常见目录。Linux 明确选择的系统版本探测失败后,不会再次选中未经验证的 PATH 二进制提交前检查
git commit -s)