Skip to main content

负责使用 GitHub Copilot CLI

通过了解其目的、功能和限制,了解如何负责任地使用 GitHub Copilot 命令行界面 (CLI)。

谁可以使用此功能?

GitHub Copilot 命令行界面 (CLI) 与所有 Copilot 计划兼容。 如果从组织收到 Copilot,则必须在组织的“Settings”中启用 Copilot 命令行界面(CLI) 策略。

关于 GitHub Copilot 命令行界面 (CLI)

GitHub Copilot 命令行界面 (CLI) 在终端中提供类似聊天的界面,可在计算机上自主创建和修改文件并执行命令。 可以要求 Copilot 对active directory中的文件执行任何作。

GitHub Copilot 命令行界面 (CLI) 可以根据说明和配置生成定制更改,包括 bug 修复、实现增量新功能、原型制作、文档和基本代码维护等任务。

在处理任务时,Copilot 代理已access本地终端环境,可在其中更改代码、执行自动测试、运行 linters 和执行环境中可用的命令。

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

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

输入处理

输入与相关的上下文信息相结合,形成提示。 该提示将发送到大语言模型进行处理。 输入可以采用纯自然语言、代码片段或对终端中文件的引用的形式。

语言模型分析

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

响应生成

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

输出格式设置

代理生成的响应已设置格式,并向你显示。 GitHub Copilot 命令行界面 (CLI) 使用语法突出显示、缩进和其他格式设置功能向生成的响应添加clarity。

代理可能还需要在本地环境中执行命令,并在文件系统中创建、编辑或删除文件,以便完成任务。

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

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

GitHub Copilot 命令行界面 (CLI) 的用例

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

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

改进 GitHub Copilot 命令行界面 (CLI) 的结果

GitHub Copilot 命令行界面 (CLI) 可以支持各种任务。 为了增强收到的响应并解决代理的某些限制,可以采取各种措施。

有关限制的详细信息,请参阅本文后面的 GitHub Copilot 命令行界面 (CLI)>limitations < 部分。

确保任务的范围明确

GitHub Copilot 命令行界面 (CLI) 在完成任务时利用提示作为关键上下文。 你提供的提示越清晰、范围越广,结果就越好。 理想的提示包括:

  • 明确说明要解决的问题或所需的工作。
  • 关于何为好的解决方案的完整验收标准(例如,是否应该有单元测试?)。
  • 有关哪些文件需要更改的提示或建议。

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

GitHub Copilot 命令行界面 (CLI) 在生成建议的更改时利用提示和存储库的代码作为上下文。 若要增强 Copilot的性能,请考虑实现自定义 Copilot 说明,以帮助代理更好地了解project以及如何生成、测试和验证其更改。 有关详细信息,请参阅“为GitHub Copilot 命令行界面 (CLI)添加自定义指令”。

将 GitHub Copilot 命令行界面 (CLI) 用作工具,而不用于替代人工

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

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

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

提供反馈

如果 GitHub Copilot 命令行界面 (CLI)遇到任何问题或限制,建议使用 /feedback 命令提供反馈。

GitHub Copilot 命令行界面 (CLI) 的安全措施

约束 Copilot的权限

默认情况下,Copilot 命令行界面(CLI):

  • 只有access文件和文件夹,然后从中调用 GitHub Copilot 命令行界面 (CLI) 的目录。 确保信任此目录中的文件。 如果 Copilot 希望access当前目录中的文件,它将请求权限。 仅当信任该目录的内容时,才授予它权限。
  • 在修改文件之前,将请求权限。 在授予权限之前,请确保它正在修改正确的文件。
  • 在执行可能很危险的命令之前,将请求权限。 在授予运行权限之前,请仔细查看这些命令。

可以使用各种命令行选项授予 Copilot 命令行界面(CLI) 特定权限或所有权限:例如,--allow-tool=[TOOLS...]``--allow-all-tools--allow-all 或其等效的斜杠命令,以便在/allow-all交互式会话中使用)。 有关详细信息,请参阅“GitHub Copilot CLI 命令参考”。 通常,在 autopilot 模式下使用 Copilot 命令行界面(CLI) 时,你将授予它完全权限以允许它自主完成任务,而无需你在任务上工作时批准活动。 有关详细信息,请参阅“允许 GitHub Copilot CLI 自主工作”。

有关使用 GitHub Copilot 命令行界面 (CLI)时的安全做法的详细信息,请参阅 关于 GitHub Copilot CLI 中的“安全注意事项”。

GitHub Copilot 命令行界面 (CLI) 的限制

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

作用域受限

GitHub Copilot 命令行界面 (CLI) 使用的语言模型已在大量代码正文上训练,但仍具有有限的范围,可能无法处理某些代码结构或模糊编程语言。 对于每种语言,收到的建议质量可能取决于该语言训练数据的数量和多样性。

潜在偏见

数据使用的语言模型variables.copilot.copilot_cli %}由大型语言模型收集的定型数据和上下文可能包含工具可以延续的偏见和错误。 此外,GitHub Copilot 命令行界面 (CLI) 可能偏向于某些编程语言或编码样式,这可能会导致建议不理想或不完整。

安全风险

GitHub Copilot 命令行界面 (CLI) 根据存储库中问题或注释的上下文生成代码和自然语言,如果未仔细使用,可能会公开敏感信息或漏洞。 在合并之前,应仔细查看 GitHub Copilot 命令行界面 (CLI) 生成的所有输出。

代码不准确

GitHub Copilot 命令行界面 (CLI) 可能会生成看似有效的代码,但实际上可能不是语义或语法正确的,也可能无法准确反映开发人员的意图。

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

公共代码

GitHub Copilot 命令行界面 (CLI) 可能会生成与公开可用的代码匹配或接近匹配的代码,即使“建议匹配公共代码”策略设置为“阻止”。 请参阅“以单个订阅者身份管理 GitHub Copilot 策略”。

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

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

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

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

延伸阅读

  •         [AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot)
    
  •         [GitHub Copilot 信任中心](https://copilot.github.trust.page/)