作者是微软西欧地区开发人员生产力 GTM 负责人。GitHub Copilot 是该业务领域的一部分。
GitHub Copilot Chat 是一项非常强大且实用的功能,可让您与代码聊天或讨论代码。尽管它 100% 自然语言友好(即,您无需使用任何特定语法即可发送消息),但利用一些特殊的聊天功能可以解锁新的 AI 辅助开发场景并显著提高您的工作效率。
这些强大的功能(您可以通过应用特殊语法来使用)包括聊天参与者、斜线命令和上下文变量。请注意,所描述的功能在 VS Code 中可用,在其他提供 GitHub Copilot Chat 的 IDE 中可能不完全支持。
在 GitHub Copilot Chat 中,您可以使用常规聊天语法引用其中一位 AI 驱动的“领域专家”——在参与者姓名前面加上 @。当前可用的聊天参与者有:
@workspace
:了解您当前打开的工作区中的代码。这是您最有可能经常与之交流的聊天参与者。
@terminal
:了解有关集成终端外壳、其内容及其缓冲区的所有信息。
@vscode
:了解 VS Code 编辑器、其命令和功能。示例:在 VS Code 中打开项目文件夹后立即询问@workspace
聊天参与者,以获取有关我们刚刚被分配到的项目的后端部分的信息。
在此特定情况下,您甚至不需要在编辑器中打开文件。将其与未标记@workspace
时获得的响应进行比较:
@workspace
聊天参与者对于您希望将所有代码都考虑用于聊天响应的所有解决方案范围的查询都非常有用。但是,这并不意味着所有代码都将被使用并作为提示的一部分发送。VS Code 中的 GitHub Copilot Chat 扩展会尽最大努力首先使用本地知识和情报来确定相关文件和这些文件的部分内容。您可以通过展开“已使用的引用”行来检查提示使用了哪些文件和代码行:
生产力提示:输入消息后,使用 Ctrl-Enter(Cmd-Enter)而不是直接按 Enter, @workspace
字符串将在发送前自动插入到您的消息中。
在许多情况下,将完整解决方案视为问题或请求的上下文(通过使用@workspace
)是过度的。您可能希望在消息中指向特定文件甚至文件的一部分。聊天变量可以提供帮助!使用 # 从此列表中调用一个:
#file
:指向工作区中的特定文件。
#codebase
:打开工作区的所有内容。它类似于使用@workspace
,当您与另一个代理(如@terminal
)聊天但仍想引用完整解决方案时可能会很有用。
#editor
:编辑器视口中的源代码(可见部分)。
#git
:当前 git 存储库:分支、远程、路径等。
#selection
:当前选定的代码。
#terminalLastCommand
:编辑器终端中最后运行的命令。
#terminalSelection
:在编辑器终端中选择。示例:让我们获得有关改进特定文件中的方法名称的帮助(并且我们希望确保考虑到文件的整个内容)。
生产力提示:输入 # 后,使用上下键盘箭头选择所需的聊天变量。对于#file
,再次使用键盘导航选择建议的文件之一。
使用自然语言与代码聊天很有趣,但能够使用便捷的快捷方式调用常用操作则更好。比较一下输入完整消息“解释所选代码的工作原理”与输入“/”,然后使用键盘箭头从弹出覆盖中选择/explain
。
使用预定义命令语法的另一个好处是,GitHub Copilot 可以 100% 正确地理解我们的意图(自然语言可能存在一些歧义)。
有许多斜线命令可用。您可以结合引用聊天参与者来使用它们,以提供所需的范围。其中一些命令如下:
/help
:提供可用的斜线命令、聊天参与者、聊天变量等的帮助。
/doc
:为代码生成文档。
/explain
:解释代码的工作原理(或者,如果在前面加上@terminal,则可以获取终端命令的帮助)。
/fix
:优化和/或修复代码中的问题。
/tests
:为代码创建单元测试。
/new
:搭建一个新的工作区。示例:让我们对代码中的一个正则表达式进行解释。选择代码行,然后使用斜线命令“ /explain
。
生产力提示:尝试以内联模式使用 GitHub Copilot Chat,而不是始终在侧窗格中打开聊天。按 Ctrl-I (Cmd-I) 并在代码窗口中光标所在行正上方出现的小覆盖对话框中键入您的消息。
使用聊天参与者、聊天变量和斜线命令来完全控制对话上下文,确保正确且一致地理解您的意图,并最终更快地聊天和编码!在此处开始您的免费 GitHub Copilot 试用版: https://aka.ms/try-github-copilot
https://github.blog/changelog/2023-11-30-github-copilot-november-30th-update/
https://code.visualstudio.com/docs/copilot/copilot-chat#_chat-participants
https://devblogs.microsoft.com/visualstudio/copilot-chat-slash-commands-and-context-variables/
https://code.visualstudio.com/updates/v1_85#_terminal-agent-and-command-suggestion-improvements
https://code.visualstudio.com/updates/v1_84#_chat-agents