跳至主要内容

关于 GitHub Copilot CLI

了解如何在命令行中使用 Copilot。

谁可以使用此功能?

GitHub Copilot CLI 在所有 Copilot 计划中均可用。如果您通过组织获取 Copilot,则必须在组织设置中启用 Copilot CLI 策略。

简介

GitHub Copilot 的命令行界面(CLI)让你可以直接在终端中使用 Copilot。它可以用来回答问题、编写和调试代码,以及与 GitHub.com 交互。例如,你可以让 Copilot 对项目进行一些更改并创建一个 pull request。

GitHub Copilot CLI 为你提供了强大的 AI 代理的快速访问入口,无需离开终端。它能在你不在场的情况下帮助你更快完成任务,并且你可以在 GitHub Copilot CLI 中迭代式地工作,以构建所需的代码。

支持的操作系统

安装说明请参见 安装 GitHub Copilot CLI

使用模式

GitHub Copilot CLI 拥有两种用户界面:交互式和编程式。

交互式界面

要启动交互式会话,输入 copilot。在交互式会话中,你可以与 Copilot 对话。你可以提示 Copilot 执行一个或多个任务,并可以对其提供反馈、引导工作方向。

Screenshot of the Welcome message in the interactive interface of Copilot.

交互式界面有两种模式。除了默认的询问/执行模式外,还有一种 计划模式——在此模式下,Copilot 将为你想完成的任务生成结构化实现计划。

Shift+Tab 可在模式之间切换。在计划模式下,Copilot 会分析你的请求,提出澄清性问题以了解范围和需求,并在编写任何代码之前生成计划。这可以帮助你在代码生成前捕获误解,并在处理复杂的多步骤任务时保持控制。

编程式界面

你也可以直接在命令行上向 CLI 传递单个提示。CLI 完成任务后即退出。

要以编程方式使用 CLI,请在命令中加入 -p--prompt 参数。若希望让 Copilot 修改并执行文件,还应使用本文后面介绍的某个批准选项——参见 允许工具在无需手动批准的情况下使用)。例如:

Bash
copilot -p "Show me this week's commits and summarize them" --allow-tool='shell(git)'

或者,你可以使用脚本输出命令行选项并将其通过管道传给 copilot。例如:

Bash
./script-outputting-options.sh | copilot

注意

如果使用了诸如 --allow-all-tools 的自动批准选项,Copilot 将拥有与你相同的文件访问权限,并且可以执行你能够运行的任何 shell 命令,而无需事先获得你的批准。详见本文后面的 安全考虑

GitHub Copilot CLI 的使用场景

以下章节提供了使用 GitHub Copilot CLI 可以完成的任务示例。

本地任务

  • 在项目目录中,你可以让 Copilot 对项目代码进行更改。例如:

    将 H1 标题的 background-color 改为深蓝色

    Copilot 会找到定义 H1 标题的 CSS 文件并修改颜色值。

  • 让 Copilot 告诉你文件的更改情况

    显示最近 5 次对 CHANGELOG.md 的更改。是谁在何时修改的?请给出简要的修改摘要。

  • 使用 Copilot 帮助你改进项目中的代码或文档。

    • 给出 content.js 的改进建议

    • 改写本项目的 README,使其更易于新手阅读。

  • 使用 Copilot 帮助你执行 Git 操作。

    • 提交此仓库的更改

    • 撤销最近一次提交,但保留未暂存的更改

  • 让 Copilot 从头创建一个应用程序——例如作为概念验证(PoC)。

    使用 create-next-app 工具和 Tailwind CSS 创建一个 next.js 应用。该应用应是一个仪表板,展示来自 GitHub API 的数据,包括本项目的构建成功率、平均构建时长、失败构建次数以及自动化测试通过率。创建完应用后,请给出易于遵循的构建、运行以及在浏览器中查看的说明。

  • 让 Copilot 解释其所做更改为何未如预期工作,或让 Copilot 修复其上一次更改造成的问题。例如:

    你说:“应用现在运行在 https://:3002,且功能完整!”但我访问该 URL 时显示 “此站点无法访问”。

涉及 GitHub.com 的任务

  • 从 GitHub.com 获取并展示你的工作详情。

    • 列出我的打开的 PR

      此命令会列出你在任意 GitHub 仓库中的打开的 pull request。若想得到更具体的结果,请在提示中加入仓库名称。

    • 列出 OWNER/REPO 中指派给我的所有打开的 Issue

  • 让 Copilot 处理一个 Issue

    我被指派了这个 Issue:https://github.com/octo-org/octo-repo/issues/1234。请在一个合适命名的分支上为我开始处理它。

  • 让 Copilot 修改文件并在 GitHub.com 上发起 pull request。

    • 在此仓库根目录下添加一个名为 user-info.js 的 Node 脚本,该脚本输出运行该脚本的用户信息。随后在 GitHub 上为该仓库创建一个 pull request,将此文件加入仓库。

    • 在 https://github.com/octo-org/octo-repo 的 README 中,将子标题 “How to run” 改为 “Example usage”,并创建相应的 PR。

    Copilot 代表你在 GitHub.com 上创建 pull request,并将你标记为该 PR 的作者。

  • 让 Copilot 在 GitHub.com 上为你创建 Issue。

    在 octo-org/octo-repo 中提出一个改进 Issue。src/someapp/somefile.py 中的 `file = open('data.txt', 'r')` 块打开文件但从未关闭。

  • 让 Copilot 检查一个 pull request 中的代码更改。

    检查 PR https://github.com/octo-org/octo-repo/pull/57575 中的更改。报告你在这些更改中发现的任何严重错误。

    Copilot 会在 CLI 中返回所发现问题的概要。

  • 使用 GitHub Copilot CLI 管理 pull request。

    • 合并我在 octo-org/octo-repo 中创建的所有打开的 PR

    • 关闭 octo-org/octo-repo 中的 PR #11

  • 查找特定类型的 Issue。

    使用 GitHub MCP 服务器在 octo-org/octo-repo 中寻找适合新成员入手的 good first issue。

    注意

    如果你知道某个特定的 MCP 服务器能够完成某项任务,在提示中指定它可以帮助 Copilot 提供你想要的结果。

  • 查找特定的 GitHub Actions 工作流。

    列出本仓库中所有会向 PR 添加评论的 Actions 工作流。

  • 创建一个 GitHub Actions 工作流。

    从 main 分支创建新分支,并创建一个在 pull request 时(或手动)运行的 GitHub Actions 工作流。该工作流应运行 eslint 检查 PR 中更改的代码是否存在问题。如果发现警告或错误,应在 PR 的 diff 视图中以消息形式展示。为了防止带错误的代码合并到 main,若发现错误,工作流应使 PR 检查失败。完成后推送新分支并创建 pull request。

引导对话方向

在 Copilot 思考时,你可以进行交互以引导对话方向

  • 排队额外消息:发送后续消息以将对话引向不同方向,或在 Copilot 完成当前响应后让它处理额外指令。这样可以让对话更自然,且让你保持控制。
  • 对拒绝的内联反馈:当你拒绝工具权限请求时,可以给 Copilot 提供内联反馈,使其在不完全停止的情况下调整其做法。这在你想引导 Copilot 远离某些操作时,使对话流更加自然。

自动上下文管理

GitHub Copilot CLI 会自动管理你的对话上下文

  • 自动压缩:当你的对话接近 token 限额的 95% 时,Copilot 会在后台自动压缩历史记录,不会中断你的工作流。这样几乎可以实现无限会话。
  • 手动控制:随时使用 /compact 手动压缩上下文。若改变主意,按 Escape 取消。
  • 可视化使用情况/context 命令会显示详细的 token 使用细分,让你了解上下文窗口的使用情况。

自定义 GitHub Copilot CLI

你可以通过多种方式自定义 GitHub Copilot CLI

  • 自定义指令:自定义指令允许你向 Copilot 提供关于项目以及如何构建、测试、验证其更改的额外上下文。所有自定义指令文件现在会合并,而不再使用基于优先级的回退。更多信息请参见 为 GitHub Copilot CLI 添加自定义指令
  • 模型上下文协议(MCP)服务器:MCP 服务器让你能够为 Copilot 提供不同的数据源和工具。更多信息请参见 使用 GitHub Copilot CLI
  • 自定义代理:自定义代理允许你为不同任务创建专门化的 Copilot 版本。例如,你可以将 Copilot 定制为遵循团队规范的前端工程专家。GitHub Copilot CLI 包含专门的自定义代理,自动将常见任务委派给它们。更多信息请参见 使用 GitHub Copilot CLI
  • Hooks(钩子):钩子让你能够在代理执行的关键节点运行自定义 shell 命令,从而添加验证、日志记录、安全扫描或工作流自动化。参见 关于钩子
  • Skills(技能):技能允许你通过指令、脚本和资源提升 Copilot 执行特定任务的能力。更多信息请参见 关于代理技能
  • Copilot Memory(记忆):Copilot Memory 让 Copilot 通过存储“记忆”(即关于编码约定、模式和偏好的信息)来构建对仓库的持久理解。这可以减少在提示中重复解释上下文的需求,使后续会话更加高效。更多信息请参见 关于 GitHub Copilot 的代理记忆

安全考虑因素

使用 Copilot CLI 时,Copilot 可以代表你执行任务,例如执行或修改文件,或运行 shell 命令。

因此,在使用 Copilot CLI 时,你应始终保持安全意识,就像直接操作文件或在终端中运行命令时一样。当 Copilot CLI 请求你的批准时,请务必仔细审查其建议的命令。

受信任目录

受信任目录决定了 Copilot CLI 可以读取、修改和执行文件的范围。

仅应在你信任的目录中启动 Copilot CLI。不要在可能包含你不确定是否可信的可执行文件的目录中使用它。同样,如果在包含敏感或机密数据的目录中启动 CLI,或在包含你不希望被更改的文件的目录中启动,可能会无意中将这些文件暴露于风险之中。通常不应在家目录下启动 Copilot CLI。

权限范围基于启发式判断,GitHub 并不保证所有受信任目录之外的文件都能得到保护。参见 风险缓解

当你开始一次 GitHub Copilot CLI 会话时,系统会要求你确认是否信任启动 CLI 的目录及其下的文件。参见 配置 GitHub Copilot CLI

允许的工具

当 Copilot 第一次需要使用可能会修改或执行文件的工具(例如 touchchmodnodesed)时,它会询问你是否允许使用该工具。

通常,你可以从以下三种选项中进行选择:

1. Yes
2. Yes, and approve TOOL for the rest of the running session
3. No, and tell Copilot what to do differently (Esc)

选项 1 只允许 Copilot 本次运行该命令。下次需要使用该工具时,它会再次询问。

选项 2 允许 Copilot 在当前会话期间再次使用该工具而无需再次询问。新会话或以后恢复当前会话时,它仍会再次请求批准。选择此选项即等同于让 Copilot 可以以它认为合适的任何方式使用该工具。例如,若 Copilot 请求运行 rm ./this-file.txt,而你选择了选项 2,则在本次会话期间,Copilot 可以运行任何 rm 命令(如 rm -rf ./*),且无需再次获得你的批准。

选项 3 取消提议的命令,并允许你指示 Copilot 尝试其他方法。

允许工具在无手动批准的情况下使用

在交互式或编程式会话中,你可以使用以下三种命令行选项来指定 Copilot 可以在无需你批准的情况下使用的工具:

  • --allow-all-tools

    允许 Copilot 在不询问你的情况下使用任何工具。

    例如,你可以在 CLI 的编程式调用中使用此选项,以允许 Copilot 运行任意命令。例如:

    copilot -p "Revert the last commit" --allow-all-tools
    
  • --deny-tool

    阻止 Copilot 使用指定工具。

    此选项的优先级高于 --allow-all-tools--allow-tool

  • --allow-tool

    允许 Copilot 在不询问你的情况下使用指定工具。

使用批准选项

--deny-tool--allow-tool 选项需要以下任意一种参数:

  • 'shell(COMMAND)'

    例如,copilot --deny-tool='shell(rm)' 会阻止 Copilot 使用任何 rm 命令。

    对于 gitgh 命令,你可以指定特定的一级子命令来允许或阻止。例如:

    copilot --deny-tool='shell(git push)'
    

    工具规格是可选的。例如,copilot --allow-tool='shell' 允许 Copilot 使用任意 shell 命令,无需单独批准。

  • 'write'

    此参数用于允许或阻止除 shell 命令之外的工具修改文件的权限。

    例如,copilot --allow-tool='write' 允许 Copilot 在不需要单独批准的情况下编辑文件。

  • 'MCP_SERVER_NAME'

    此参数用于允许或阻止来自指定 MCP 服务器的工具,其中 MCP_SERVER_NAME 为你已配置的 MCP 服务器名称。工具名称使用括号标注,采用该 MCP 服务器注册的名称。若仅使用服务器名称而不指定工具,则允许或阻止该服务器提供的所有工具。

    例如,copilot --deny-tool='My-MCP-Server(tool_name)' 会阻止 Copilot 使用名为 tool_name、来自名为 My-MCP-Server 的 MCP 服务器的工具。

    在交互式界面中输入 /mcp,然后从显示的列表中选择,即可查看 MCP 服务器名称。

组合批准选项

你可以组合使用多种批准选项,以精确控制 Copilot 可以在无需你批准的情况下使用哪些工具。

例如,要阻止 Copilot 使用 rmgit push,但自动允许所有其他工具,可使用:

copilot --allow-all-tools --deny-tool='shell(rm)' --deny-tool='shell(git push)'

要阻止 Copilot 使用名为 tool_name、来自 MCP 服务器 My-MCP-Server 的工具,同时允许该服务器的其他工具无需单独批准,可使用:

copilot --allow-tool='My-MCP-Server' --deny-tool='My-MCP-Server(tool_name)'

自动批准工具的安全影响

了解使用批准命令行选项的安全影响非常重要。这些选项使 Copilot 能够执行完成请求所需的命令,而不给你审查和批准这些命令的机会。虽然这能简化工作流并实现 CLI 的无头运行,但也会增加意外操作导致数据丢失、损坏或其他安全问题的风险。

你可以通过在 Copilot 尝试使用工具时响应批准提示、使用命令行标志指定权限,或(在交互式会话中)使用斜杠命令(例如 /allow-all/yolo)来控制 Copilot CLI 可使用的工具。详见 配置 GitHub Copilot CLI

风险缓解

通过在受限环境(如虚拟机、容器或专用系统)中运行 Copilot CLI,并对权限和网络访问进行严格控制,你可以降低使用自动批准选项带来的风险。这会将因允许运行未审查命令而可能出现的损害限制在可控范围内。

已知的 MCP 服务器策略限制

Copilot CLI 目前尚不支持以下组织级别的 MCP 服务器策略:

  • MCP servers in Copilot:控制是否允许 Copilot 使用任何 MCP 服务器。
  • MCP Registry URL:控制 Copilot 允许使用的 MCP 注册表来源。

有关这些策略的更多信息,请参见 公司内部的 MCP 服务器使用

模型使用

GitHub Copilot CLI 默认使用的模型是 Claude Sonnet 4.5。GitHub 保留更换模型的权利。

你可以使用 /model 斜杠命令或 --model 命令行选项更改 GitHub Copilot CLI 使用的模型。输入该命令后,从列表中选择所需模型。

每当你在 Copilot CLI 的交互式界面提交提示,或以编程方式使用 Copilot CLI 时,你的每月 Copilot 高级请求配额会减少一次,并乘以模型列表中括号内显示的倍率。例如,Claude Sonnet 4.5 (1x) 表示使用此模型时,每提交一次提示,配额会减少 1 次。有关高级请求的详细信息,请参见 GitHub Copilot 请求计数

使用自有模型提供商

你可以将 Copilot CLI 配置为使用自己的模型提供商,而非 GitHub 托管的模型。这让你可以连接到兼容 OpenAI 的端点、Azure OpenAI 或 Anthropic,包括本地运行的模型(如 Ollama)。模型提供商通过环境变量进行配置。

环境变量描述
COPILOT_PROVIDER_BASE_URL你的模型提供商 API 端点的基础 URL。
COPILOT_PROVIDER_TYPE提供商类型:openai(默认),azure,或 anthropicopenai 类型可用于任何兼容 OpenAI 的端点,包括 Ollama 与 vLLM。
COPILOT_PROVIDER_API_KEY用于向提供商进行身份验证的 API 密钥。对不需要身份验证的提供商(如本地 Ollama 实例)可不设置此项。
COPILOT_MODEL要使用的模型(在使用自定义提供商时为必填),也可通过 --model 命令行选项设置。

与 Copilot CLI 一起使用的模型必须支持 tool calling(工具调用)streaming(流式输出)。如果模型不支持这些能力,Copilot CLI 将返回错误。为获得最佳效果,模型的上下文窗口建议至少为 128k token。

有关如何配置模型提供商的详细说明,请在终端运行 copilot help providers

通过 ACP 使用 Copilot CLI

ACP(Agent Client Protocol)是一套用于与 AI 代理交互的开放标准。它允许你在任何支持该协议的第三方工具、IDE 或自动化系统中将 Copilot CLI 用作代理。

更多信息请参见 Copilot CLI ACP 服务器

反馈

如果你对 GitHub Copilot CLI 有任何反馈,请在交互式会话中使用 /feedback 斜杠命令并选择相应选项。你可以完成私密反馈调查、提交错误报告或提出新功能建议。

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.