首页 如何在Xcode中使用Copilot
文章
取消

如何在Xcode中使用Copilot

Copilot是由OpenAI推出的一项AI语言模型技术,它可以帮助开发人员快速编写代码。Copilot虽然支持Swift代码,但官方支持的IDE并不包含Xcode。Github上有位大佬开源了一款Xcode插件CopilotForXcode实现了在Xcode上使用Copilot。

该项目还处于早期阶段,后续版本很可能会有比较大的改动,建议读一遍README。

订阅GitHub Copilot

订阅Copilot需要绑定信用卡,10刀/月或100刀/年,可以试用60天。

GitHub Copilot订阅地址

订阅成功

安装CopilotForXcode插件

安装Node

安装这个插件前需要安装Node.js

安装Copilot for Xcode

作者提供了安装两种方式。

  1. releases中下载app文件移到Applications。

  2. 用Homebrew安装:

    1
    
    brew install --cask copilot-for-xcode
    

设置插件

  1. 打开插件,点击Set Up Launch Agent,第一次可能会失败,多点两次。再点击Refresh,刷新成功会出来版本号。

    不行的话开全局代理,再重复上面步骤。

  2. Sign in登录GitHub账号。会自动复制一个user code,复制到跳转的GitHub网页上,然后点Authorize GitHub Copilot Plugin授权。

  3. 回到插件点Confirm Sign-in,如果你已完成授权且订阅了Copilot,Status会显示OK。如果没有订阅Copilot,会显示Not Authorized

  4. 添加插件并授权。打开系统设置-隐私与安全性-扩展-Xcode Source Editor,勾选Copilot

    然后打开系统设置-隐私与安全性-辅助功能,打开CopilotForXcodeExtensionService

重启Xcode,随便打开一个项目文件,在Editor-Copilot可以看到指令,点Get Suggestions后同意插件访问文件夹权限。

使用

两种方式,一种是根据你写的注释给出建议代码,可以识别中文;另一种是你写一半让他猜你接下来要写什么。

并不是所有情况都能给出建议代码。给出的建议代码是否正确,需要你自己检查。

比如:

写一行注释//校验手机号的正确性,点Editor-Copilot-Get Suggestions,给出的建议代码:

1
2
3
4
5
6
//校验手机号的正确性
func isValidPhoneNumber(phoneNumber: String) -> Bool {
    let phoneRegex = "^1[3-9]\\d{9}$"
    let phoneTest = NSPredicate(format: "SELF MATCHES %@", phoneRegex)
    return phoneTest.evaluate(with: phoneNumber)
}

或者我们把函数名写好func isValidPhoneNumber,点Editor-Copilot-Get Suggestions,给出的建议代码:

1
2
3
4
5
6
func isValidPhoneNumber(phoneNumber: String) -> Bool {
    let phoneRegex = "^1[3|4|5|7|8][0-9]\\d{8}$"
    let phoneTest = NSPredicate(format: "SELF MATCHES %@", phoneRegex)
    return phoneTest.evaluate(with: phoneNumber)
}

指令翻译

  • Get Suggestions:在光标位置生成建议代码。
  • Accept Suggestion:接受建议的代码并取消注释。
  • Reject Suggestion:删除建议的代码。
  • Next Suggestion:如果有多个建议,则切换到下一个。(如有多个建议,第一行会以显示1/2形式显示数量)
  • Previous Suggestion:如果有多个建议,则切换到前一个建议。
  • Toggle Real-time Suggestions:实时建议切换开关,打开后光标右上角有一个呼吸闪烁的圆点。
  • Real-time Suggestions:当建议被成功获取时,插件将运行这个命令来展示这些建议。
  • Prefetch Suggestions:在后台,插件将偶尔运行这个命令来预取实时建议。

作者关于实时建议的说明:

开/关状态是持续的,所以当你不再需要它时,请务必手动关闭它。当实时建议被打开时,在鼠标指针或编辑光标旁边会出现一个呼吸点。

每当你停止打字几秒钟,应用程序就会自动为你获取建议,你可以通过点击鼠标,或按Esc或方向键取消。

当获取发生时,呼吸的圆点会有一个稍微不同的动画。如果你没有看到它,你可能没有正确设置插件所需权限。

实现起来不会像VSCode那样感觉流畅。它背后的魔力在于,当你没有打字或点击鼠标时,它会不断地从菜单中调用命令。因此,它将不得不倾听这些事件,我不确定人们是否喜欢它。希望明年苹果能在Xcode扩展上花些时间。

安装成功

绑定快捷键

绑定快捷键

本文由作者按照 CC BY 4.0 进行授权

Swift中的并发

M1 Mac部署Stable Diffusion WebUI和ControlNet