Copilot是由OpenAI推出的一项AI语言模型技术,它可以帮助开发人员快速编写代码。Copilot虽然支持Swift代码,但官方支持的IDE并不包含Xcode。Github上有位大佬开源了一款Xcode插件CopilotForXcode实现了在Xcode上使用Copilot。
该项目还处于早期阶段,后续版本很可能会有比较大的改动,建议读一遍README。
订阅GitHub Copilot
订阅Copilot需要绑定信用卡,10刀/月或100刀/年,可以试用60天。
安装CopilotForXcode插件
安装Node
安装这个插件前需要安装Node.js。
安装Copilot for Xcode
作者提供了安装两种方式。
-
去releases中下载app文件移到Applications。
-
用Homebrew安装:
1
brew install --cask copilot-for-xcode
设置插件
-
打开插件,点击
Set Up Launch Agent
,第一次可能会失败,多点两次。再点击Refresh
,刷新成功会出来版本号。不行的话开全局代理,再重复上面步骤。
-
点
Sign in
登录GitHub账号。会自动复制一个user code
,复制到跳转的GitHub网页上,然后点Authorize GitHub Copilot Plugin
授权。 -
回到插件点
Confirm Sign-in
,如果你已完成授权且订阅了Copilot,Status
会显示OK
。如果没有订阅Copilot,会显示Not Authorized
。 -
添加插件并授权。打开
系统设置
-隐私与安全性
-扩展
-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扩展上花些时间。