Skip to main content

负责任地使用 GitHub Copilot CLI

通过了解其目的、功能和限制,了解如何负责任地使用 GitHub Copilot CLI。

谁可以使用此功能?

GitHub Copilot CLI 可用于 GitHub Copilot Pro、GitHub Copilot Pro+、GitHub Copilot Business 和 GitHub Copilot Enterprise 计划。

如果从组织收到 Copilot,则必须在组织的“Settings”中启用 Copilot CLI 策略。

关于 GitHub Copilot CLI

GitHub Copilot CLI 在终端中提供了类聊天界面,能够自主在你的计算机上创建和修改文件,并执行命令。 你可以让 Copilot 对当前活动目录中的文件执行任何操作。

GitHub Copilot CLI 可以根据指令和配置生成定制更改,包括 bug 修复、实现增量新功能、原型制作、文档和代码库维护等任务。

处理任务时,Copilot 智能体可以访问你的本地终端环境,在该环境中它能够更改代码、执行自动化测试、运行代码检查工具,以及执行环境中可用的命令。

该代理已在各种编程语言中进行了评估,并且英语是主要支持的语言。

该代理的工作原理是结合使用自然语言处理和机器学习来理解任务,并在代码库中进行更改以完成任务。 此过程可以细分为多个步骤。

输入处理

用户输入的提示会与其他相关的上下文信息相结合,共同构成一个完整的提示。 该提示将发送到大语言模型进行处理。 输入内容可以是纯自然语言、代码片段,或对终端中文件的引用。

语言模型分析

然后,提示通过大语言模型传递,该模型是一个神经网络,已基于大量数据进行了训练。 语言模型分析输入提示,以帮助代理对任务进行推理并利用必要的工具。

响应生成

语言模型根据其对提示的分析生成答复。 此响应可以采用自然语言建议、代码建议、文件修改和命令执行等形式。

输出格式设置

智能体生成的响应会经过格式化处理后呈现给你。 GitHub Copilot CLI 可以使用语法突出显示、缩进和其他格式设置功能来增加生成的响应的清晰度。

为了完成你的任务,智能体可能还需要在你的本地环境中执行命令,并在文件系统中创建、编辑或删除文件。

在交互式聊天窗口中,当智能体返回响应后,你可以向其提供反馈。 然后,代理将该反馈重新提交到语言模型供进一步分析。 智能体根据反馈完成更改后,将返回一个额外响应。

Copilot 旨在为你提供最相关解决方案来完成任务。 但是,它可能并不总是提供你要查找的答案。 你负责检查和验证 Copilot 生成的答复,以确保其准确和适当。 有关详细信息,请参阅本文后面的改进 GitHub Copilot CLI 的结果部分。

GitHub Copilot CLI 的用例

在各种场景中可以将任务委托给 Copilot,包括但不限于:

  • 代码库维护:**** 处理与安全性相关的修复、依赖项升级和有针对性的重构。
  • 文档:**** 更新和创建新文档。
  • 功能开发:**** 实现增量功能请求。
  • 改进测试覆盖率:**** 开发用于质量管理的其他测试套件。
  • 制作新项目原型:**** 全新开发新概念。
  • 设置环境:**** 在终端中运行命令,为处理现有项目设置本地环境
  • 查找执行任务的正确命令:****Copilot 可以为你正尝试完成的任务提供对应的命令建议。
  • 解释不熟悉的命令:****Copilot 能够以自然语言描述命令的功能和用途。

改进 GitHub Copilot CLI 的结果

GitHub Copilot CLI 能够支持广泛的任务。 为了提升你收到的响应质量,并解决智能体存在的部分局限性,你可以采取多种措施。

有关局限性的详细信息,请参阅本文后面的 GitHub Copilot CLI 的局限性部分。

确保任务的范围明确

GitHub Copilot CLI 在生成拉取请求时,会将你的提示作为关键上下文信息加以利用。 分配给代理的提示越清晰、范围越明确,获得的结果就越好。 理想的议题包括:

  • 清晰描述要解决的问题或所需的工作。
  • 关于什么样的解决方案才算好的完整验收标准(例如,是否应该有单元测试?)。
  • 有关哪些文件需要更改的提示或建议。

使用其他上下文自定义体验

GitHub Copilot CLI 在生成建议的更改时,会将你的提示、注释以及仓库代码作为上下文信息加以利用。 为了提升 Copilot 的性能,可考虑实施自定义的 Copilot 指令,帮助智能体更好地理解你的项目,并了解如何构建、测试和验证其更改。 有关详细信息,请参阅 使用 GitHub Copilot 处理任务的最佳做法 中的“向存储库添加自定义指令”。

将 GitHub Copilot CLI 用作工具,而不用于替代人工

虽然 GitHub Copilot CLI 可以是生成代码和文档的强大工具,但请务必将其用作工具,而不用于替代人工编程。 应始终查看和验证 GitHub Copilot CLI 生成的命令,以确保其符合你的要求,并且没有错误或安全问题。

使用安全编码和代码评审做法

虽然 GitHub Copilot CLI 可以生成语法正确的代码,但它可能并不总是安全的。 应始终遵循安全编码的最佳做法,例如避免硬编码密码或 SQL 注入漏洞,并遵循代码评审最佳做法,以解决代理的限制。 应始终采取与你编写的任何使用非独立创作的材料的代码相同的预防措施,包括确保其适用性的预防措施。 这些预防措施包括严格的测试、IP 扫描和安全漏洞检查。

提供反馈

如果在使用 GitHub Copilot CLI 时遇到任何问题或功能限制,建议通过 /feedback 命令提交反馈。

GitHub Copilot CLI 的安全措施

限制 Copilot 的权限范围

默认情况下,Copilot 仅可访问调用 GitHub Copilot CLI 所在目录及其子目录中的文件与文件夹。 确保信任此目录中的文件。 如果 Copilot 需要访问当前目录之外的文件,则会请求获得权限。 请仅在确认该目录内容可信的前提下授予相应权限。

Copilot 将在修改文件之前请求获取权限。 在授予权限前,请务必确认要修改的是正确的文件。

Copilot 在执行可能存在风险的命令前,同样会请求获得权限。 在授予这些命令运行权限之前,请仔细查看这些命令。

有关使用 GitHub Copilot CLI 时的安全实践的更多信息,请参阅“关于 GitHub Copilot CLI”中的“安全注意事项”部分。

GitHub Copilot CLI 的限制

根据代码库和输入数据等因素,在使用 GitHub Copilot CLI 时,可能会体验到不同级别的性能。 以下信息旨在帮助你了解系统限制以及有关性能的关键概念,因为它们适用于 GitHub Copilot CLI。

作用域受限

GitHub Copilot CLI 使用的语言模型已基于大量代码进行训练,但范围仍然有限,可能无法处理某些代码结构或晦涩难懂的编程语言。 对于每种语言,收到的建议质量可能取决于该语言训练数据的数量和多样性。

潜在偏见

GitHub Copilot CLI 所用语言模型的训练数据和大语言模型收集的上下文所可能包含偏见和错误,这些偏见和错误可能会被工具延续。 此外,GitHub Copilot CLI 可能偏向于某些编程语言或编码风格,这可能导致建议欠佳或不完整。

安全风险

GitHub Copilot CLI 基于仓库中的议题或评论的上下文生成代码和自然语言,如果这些代码和自然语言未得到慎用,可能会公开敏感信息或漏洞。 在合并之前,应仔细彻底地检查 GitHub Copilot CLI 生成的所有输出。

代码不准确

GitHub Copilot CLI 可能会生成看似有效的代码,但实际上该代码在语义或语法上可能不正确,或者可能无法准确反映开发人员的意图。

若要降低代码不准确的风险,应仔细评审和测试生成的代码,尤其是在处理关键或敏感应用程序时。 还应确保生成的代码遵循最佳做法和设计模式,并符合代码库的整体体系结构和样式。

公共代码

即使“Suggestions matching public code”政策设置为“Block”,GitHub Copilot CLI 仍可能生成与公开可用的代码完全匹配或近乎匹配的代码。 请参阅“以单个订阅者身份管理 GitHub Copilot 策略”。

用户在使用任何 AI 服务和解决方案时需要评估潜在的特定法律和法规义务,这些 AI 服务和解决方案可能不适合在每个行业或场景中使用。 此外,AI 服务或解决方案的设计目的并非用于适用服务条款和相关行为准则所禁止的用途,也不得以其中所禁止的方式使用。

命令执行中的风险管理和用户责任

在请求或允许 GitHub Copilot CLI 执行命令时,需要格外小心,尤其需小心某些建议的命令可能具有的破坏性。 你可能会遇到文件删除或硬盘驱动器格式化的命令,如果不正确使用,可能会导致问题。 尽管某些情况下可能需要此类命令,但在接受和运行这些命令时需要小心。

此外,你还需对 GitHub Copilot CLI 执行的命令承担最终责任。 是否使用 GitHub Copilot CLI 生成的命令完全由你决定。 尽管存在故障保护机制和安全机制,但你必须了解执行命令会带来固有的风险。 GitHub Copilot CLI 提供了功能强大的工具集,但你应谨慎对待其建议,并确保命令符合你的意图和要求。

其他阅读材料