用途
CopilotForXcode 是一个 Xcode Source Editor Extension,为 Xcode 提供 GitHub Copilot、Codeium 和 ChatGPT 支持。它旨在把 AI 代码建议、聊天和代码修改能力集成到 Xcode 编辑环境中。
主要能力
代码建议
应用可基于已打开的文件提供实时代码建议,由 GitHub Copilot 和 Codeium 驱动。提供两种展示模式:
- Nearby Text Cursor:根据文本光标位置显示建议。
- Floating Widget:在指示器组件旁显示建议。
使用 Nearby Text Cursor 模式时,建议将实时建议防抖设置为 0.1。当代码更新时,应用会自动获取建议,可按 Escape 取消。
建议相关命令包括:
- Get Suggestions:获取当前光标位置编辑文件的建议。
- Next Suggestion:在多个建议中切换到下一个。
- Previous Suggestion:在多个建议中切换到上一个。
- Accept Suggestion:将建议添加到代码中。
- Reject Suggestion:移除建议注释。
聊天功能
聊天功能由 ChatGPT 驱动,使用前需设置 OpenAI 账户。聊天可获取以下信息:活动编辑器中的选中代码、文件的相对路径、活动编辑器中的错误和警告标签、文本光标位置。聊天面板有两个标签页:一个可在 Xcode 中共享,另一个仅在当前文件中可用。可将聊天面板拖出以分离,分离后即使 Xcode 不活跃也会保持可见;点击指示器组件旁的消息气泡按钮可重新附着。打开聊天命令为 Open Chat。
聊天面板支持可能不需要 OpenAI API Key 的聊天插件。例如使用 /shell 插件时输入相应命令,结束插件时输入相应命令。
Prompt to Code(自然语言修改代码)
使用自然语言重构现有代码或编写新代码。推荐在需要更新特定代码片段时使用,示例场景包括:
- 提升代码可读性。
- 修正代码中的错误。
- 为代码添加文档。
- 将大函数拆分为小函数。
- 通过自定义命令以特定模板生成代码。
- 润色并修正文档中的语法和拼写错误。
- 翻译可本地化字符串文件。
相关命令:
- Write or Edit Code:打开修改窗口,用自然语言编写或编辑选中代码。
- Accept Modification:接受修改结果。
自定义命令
可创建运行聊天和修改的自定义命令,并配有个性化提示词。可从 Xcode 菜单栏和指示器组件的上下文菜单访问。自定义命令有三种类型:
- Modification:对选中代码运行修改,并按给定提示词更新或编写代码;可通过额外系统提示词字段提供附加信息。
- Send Message:打开聊天窗口并立即发送消息(如提供);可通过额外系统提示词字段提供更多信息。
- Custom Chat:打开聊天窗口并立即发送消息(如提供);可通过系统提示词字段覆盖整个系统提示词。
- Single Round Dialog:向临时聊天发送消息,适用于想用 /run 运行终端命令时。
自定义命令中可使用模板参数。
使用方式
前置条件
需要公共网络连接。
建议功能:
- GitHub Copilot 用户:需安装 Node 以运行 Copilot LSP,并拥有有效的 GitHub Copilot 订阅。
- Codeium 用户:需拥有有效的 Codeium 账户。
- 访问其他 LLM。
聊天和 Prompt to Code 功能:
- 有效的 OpenAI API Key。
权限:
- Accessibility API。若担心按键记录且不信任二进制文件,建议审查代码并自行构建。可专门搜索代码中的 CGEvent.tapCreate、AXObserver、AX___ 等。
安装与设置
安装过程略复杂,快速概览:
- 将应用安装到 Applications 文件夹,打开一次。
- 启用源代码编辑器扩展。
- 向扩展应用授予 Accessibility API 权限。
- 在宿主应用中设置账号和模型。
- 可选:更新各功能设置,并设置键绑定。
可通过 Homebrew 安装,也可从最新 release 手动下载 Copilot for Xcode.app。请确保应用位于 Applications 文件夹。打开应用后,应用会创建 launch agent 以设置后台运行的服务来执行实际工作。
启用扩展
在 System Settings.app 中启用扩展:
- macOS 15:从屏幕左上角 Apple 菜单点击 System Settings,导航至 General,然后 Login Items & Extensions,点击 Xcode Source Editor,勾选 Copilot for Xcode。
- macOS 14:从屏幕左上角 Apple 菜单点击 System Settings,导航至 Privacy & Security,向底部点击 Extensions,点击 Xcode Source Editor,勾选 Copilot。
- 更早版本:如果使用 macOS Monterey,在 System Preferences.app 中通过专用图标进入 Extensions 菜单。
首次打开应用并运行命令时,扩展会请求必要权限。也可在 System Settings.app 的 Privacy & Security 标签页手动授予所需权限。授予 Accessibility API 权限时,点击 Accessibility,将 CopilotForXcodeExtensionService.app 拖到列表中。可在宿主应用中点击 Reveal Extension App in Finder 定位扩展应用。若遇到已授予权限的提醒,请从列表中移除权限并重新添加以重新授予。
设置键绑定
使用键绑定会让扩展工作更好。似乎无法为命令添加默认键绑定,但可在 Xcode 设置 > Key Bindings 中设置。可在搜索栏输入 copilot 过滤列表。推荐设置不应产生冲突:基本上使用 ⌥⇧ 作为所有绑定的“访问”组合键。另一种便捷访问命令的方法是使用 ⇧⌘/ 快捷键在菜单栏搜索命令。
目前只能设置一个全局热键,用于显示/隐藏宿主应用 General 标签下的组件。当此热键未设置为全局启用时,仅在服务应用或 Xcode 活跃时有效。
设置建议功能
GitHub Copilot:
- 在宿主应用中导航至 Service - GitHub Copilot 访问账号设置。
- 点击 Install 安装语言服务器。
- 可选:设置 Node 路径。默认值为 node。Copilot for Xcode.app 会尝试从以下目录查找 Node:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin。若 Node 安装在别处,可在终端运行 which node 获取正确路径。若使用提供 shim 可执行文件的 node 版本管理器,需找到实际可执行文件路径。
- 点击 Sign In,会重定向到 GitHub 提供的验证网站。用户代码会复制到剪贴板。
- 登录后返回应用,点击 Confirm Sign-in 完成流程。
- 转到 Feature - Suggestion,将功能提供方更新为 GitHub Copilot。
- 已安装语言服务器位于 ~/Library/Application Support/com.intii.CopilotForXcode/GitHub Copilot/executable/。
Codeium:
- 在宿主应用中导航至 Service - Codeium 访问账号设置。
- 点击 Sign In,会重定向到 codeium.com。登录后会提供 token,需复制并粘贴回应用完成登录。
- 转到 Feature - Suggestion,将功能提供方更新为 Codeium。
- 密钥存储在钥匙串中。辅助应用首次访问密钥时会提示输入密码,请选择 Always Allow。
- 已安装语言服务器位于 ~/Library/Application Support/com.intii.CopilotForXcode/Codeium/executable/。
设置聊天功能
- 在宿主应用中导航至 Service - Chat Model。
- 更新 OpenAI 模型,必要时创建新模型。使用测试按钮验证模型。
- 可选:在 Service - Embedding Model 中设置嵌入模型,部分聊天功能需要。
- 转到 Feature - Chat,将聊天/嵌入功能提供方更新为刚更新或创建的模型。
管理 CopilotForXcodeExtensionService.app
打开 Copilot for Xcode.app 或 Xcode.app 时该应用会运行。可通过菜单栏中类似触手的项退出。也可设置在上述两个应用关闭时自动退出。
更新
可使用应用内更新器,或从最新 release 手动下载。更新后,请打开一次 Copilot for Xcode.app 并重启 Xcode 以重新加载扩展。如果发现某些功能不再工作,请先尝试重新授予应用权限。
适用场景
- 在 Xcode 中进行日常编码时获取实时代码建议。
- 在 Xcode 内与 ChatGPT 聊天,获取代码相关上下文信息。
- 用自然语言重构、修正或生成特定代码片段。
- 通过自定义命令以特定模板生成代码或执行重复性修改任务。
- 需要将 GitHub Copilot 或 Codeium 集成到 Xcode 工作流的开发者。
限制
- 需要公共网络连接。
- 建议功能需要 Node(GitHub Copilot)以及有效的 GitHub Copilot 订阅或 Codeium 账户。
- 聊天和 Prompt to Code 功能需要有效的 OpenAI API Key。
- 需要授予 Accessibility API 权限。
- gitignore 中的文件不会收到建议。聊天和 Prompt to Code 功能也无法访问它们,除非手动从中选择代码。
- 扩展使用多种技巧监控 Xcode 状态,可能失败或不准,尤其是在运行多个 Xcode 窗口或位于不同显示器时。
- 如果文件在辅助应用启动前已打开,需切换到这些文件以发送打开文件通知。
- 若在公司项目中不希望触发建议功能,可全局禁用并仅对特定项目启用。
- 许可详情请查看 LICENSE。