Skip to content

feat(editor): 改进 Zed 编辑器 CLI 路径检测#343

Open
zwmmm wants to merge 2 commits intoJ3n5en:mainfrom
zwmmm:feat/zed-cli-support
Open

feat(editor): 改进 Zed 编辑器 CLI 路径检测#343
zwmmm wants to merge 2 commits intoJ3n5en:mainfrom
zwmmm:feat/zed-cli-support

Conversation

@zwmmm
Copy link
Contributor

@zwmmm zwmmm commented Mar 5, 2026

概述

改进 Zed 编辑器的 CLI 路径检测,使其与 VSCode/Cursor 保持一致的逻辑。

改动内容

  • 将 Zed 的 CLI 路径检测合并到 VSCode/Cursor 的条件判断中
  • 添加系统路径检测:/usr/local/bin/zed/opt/homebrew/bin/zed
  • 添加 app 内部路径检测:Contents/Resources/zed
  • 统一代码逻辑,减少重复

测试

  • macOS 上测试通过
  • 系统安装的 zed 命令可正常检测
  • Homebrew 安装的 zed 命令可正常检测

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

- 将 Zed 的 CLI 路径检测合并到 VSCode/Cursor 的逻辑中
- 添加系统路径 /usr/local/bin/zed 和 /opt/homebrew/bin/zed
- 添加 app 内部路径 Contents/Resources/zed
- 与 VSCode/Cursor 保持一致的检测逻辑

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions

This comment has been minimized.

- 根据 bundleId 动态构建 possiblePaths,确保每个编辑器只匹配自己的路径
- 使用 existsSync 替代 execSync,提高性能并统一代码风格
- 修复了同时安装多个编辑器时可能打开错误编辑器的 bug

Fixes #1 in PR review

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Contributor

github-actions bot commented Mar 5, 2026

Claude finished @zwmmm's task in 1m 47s —— View job


🔍 代码审查报告

👋 欢迎查看审查结果! 本次审查已完成,以下是详细分析和建议。
💡 使用提示:点击 📁 文件链接可直接跳转到代码位置,建议按优先级处理问题。

📊 审查概览 · 一目了然

📋 审查项目 🔢 发现数量 📈 占比 🎯 处理状态
📁 审查文件 1 100% 已完成
🚨 严重问题 0 0%
⚠️ 中等问题 1 50% 🟡 本版本修复
轻微问题 1 50% 🔵 后续优化

🏆 代码质量评分

📊 综合评分: 88/100  🌟🌟🌟🌟⭐
📋 本次等级: 良好

📋 问题分布

🚨 严重: ░░░░░░░░░░ 0%
⚠️ 中等: █████░░░░░ 50%
⚡ 轻微: █████░░░░░ 50%
总体评分: ⭐⭐⭐⭐☆ (4/5)

🎯 关键发现

🏷️ 类别 🔍 发现数量 🎯 优先级 📈 趋势
🔒 安全性 0 个 ✅ 无风险 ✅ 良好
⚡ 性能 0 个 ✅ 改善 📈 上升
🎨 代码质量 2 个 🟡 中/🔵 低 📊 平稳

✅ 亮点

本次重构有几个值得肯定的改进:

  1. 性能提升:将 execSync('test -f ...') 替换为 existsSync(),避免了为每个路径检测都 fork 一个 shell 进程,性能显著提升
  2. 逻辑清晰化:将 Cursor 和 VSCode/Codium 分离为独立的条件分支,避免了之前 Cursor CLI 路径可能被错误匹配到 VSCode 编辑器的问题
  3. 统一路径检查:所有编辑器的路径检查逻辑合并到一个 for 循环中,减少了代码重复
  4. Zed 支持增强:新增 Contents/Resources/zed 应用内部路径检测,与 VSCode/Cursor 保持一致

🎯 问题详细分析 · 📊 点击展开查看

📊 **👆 点击此处展开详细统计和图表分析**

📈 问题趋势分析

本次审查: 🟡🔵⚪⚪⚪ (发现 2 个问题)
代码质量: ████████░░ 88%
安全评分: ██████████ 100% ✅
性能评分: ██████████ 100% ✅
🏆 质量指标 📊 当前分数 🎯 目标分数 📈 改进方向
代码质量 88/100 90+ ⬆️ 小幅改进
安全等级 100/100 100 ✅ 优秀
性能优化 100/100 100 ✅ 优秀

🐛 问题清单与修复指南 · 📋 点击展开查看

📋 **👆 点击此处展开详细问题列表 (共 2 个问题) · 一键复制追踪 📌**

🚀 快速开始

  • 📍 点击文件路径可直接跳转到问题代码
  • ⏰ 建议按 P1 → P2 优先级顺序处理
  • 📝 每个问题都包含具体修复方案

⚠️ 中等级别 (Major) 建议修复

🟡 #1 src/main/services/app/AppDetector.ts:1

🏷️ 类型: 代码质量 | ⏰ 优先级: P1 - 本版本修复 | 🎯 影响范围: 模块级

  • 🔍 问题描述execSync 现已成为未使用的导入。重构后 getEditorCliPath 方法不再使用 execSync(已被 existsSync 替代),但 import 语句仍保留了它。在整个文件中搜索确认 execSync 不再有其他使用处。
// src/main/services/app/AppDetector.ts:1
import { exec, execSync } from 'node:child_process';
  • 🛠️ 解决方案:移除未使用的 execSync 导入:
import { exec } from 'node:child_process';
  • ⚠️ 潜在影响:未使用的导入会增加认知负担,且可能在 lint 检查中报错

Fix this →


⚡ 轻微级别 (Minor) 优化建议

🔵 #2 src/main/services/app/AppDetector.ts:562-600

🏷️ 类型: 可扩展性 | ⏰ 优先级: P2 - 后续版本 | 🎯 影响范围: 局部

  • 🔍 问题描述:当前 getEditorCliPath 方法使用 if/else if 链来匹配编辑器。目前支持 3 个编辑器尚可,但如果后续需要添加更多编辑器(如 Windsurf、Sublime Text 等)的 CLI 路径检测,条件分支会不断增长。

  • 🛠️ 解决方案:可以考虑在后续版本中将 CLI 路径配置抽取为数据结构(如 Map<string, (appPath: string) => string[]>),让新编辑器的添加只需增加配置项即可。这不是本次 PR 的阻断问题,仅作为未来优化方向。

  • ⚠️ 潜在影响:当前不影响功能,仅影响长期可维护性


📊 修复优先级矩阵

🎯 优先级 🚨 严重 ⚠️ 中等 ⚡ 轻微 📈 总计
🔴 P0 0 个 - - 0 个
🟡 P1 - 1 个 - 1 个
🔵 P2 - - 1 个 1 个
📊 合计 0 1 1 2 个

🎯 合并决策建议

📋 合并评估结果

📊 评估维度 ⭐ 得分 🎯 状态 💭 说明
🔐 安全性 10/10 ✅ 通过 无安全风险,路径检测逻辑安全
📊 代码质量 8/10 ✅ 优秀 重构合理,有一个未使用导入需清理
⚡ 性能影响 10/10 ✅ 改善 existsSyncexecSync 效率更高
🛠️ 功能完整性 9/10 ✅ 完整 Zed CLI 检测路径完整覆盖
🧪 测试覆盖 7/10 ⚠️ 基本 PR 中提到 macOS 手动测试通过,无自动化测试

📈 综合评分: 44/50 分 · 等级: 良好


🚦 最终建议

建议合并

📝 详细理由

  • 🟢 重构逻辑清晰,将 Cursor/VSCode/Zed 独立分支处理,解决了多编辑器共存时 CLI 路径错误匹配的问题
  • 🟢 性能提升明显,从 execSync shell fork 改为 existsSync 系统调用
  • 🟢 安全检查通过,无风险隐患
  • 🟢 Zed 编辑器 CLI 路径检测完善,覆盖系统安装和 Homebrew 安装场景

🎯 具体行动建议

  1. 建议合并前修复

  2. 后续版本改进


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