Skip to main content

关于 GitHub Copilot CLI

了解如何从命令行使用 Copilot 。

谁可以使用此功能?

GitHub Copilot CLI 适用于所有 Copilot 计划。 如果从组织收到 Copilot,必须在组织的设置中启用 Copilot CLI 策略。

介绍

          GitHub Copilot 的命令行接口(CLI)允许您直接从终端使用 Copilot 。 可以使用它来回答问题、编写和调试代码,并与它交互 GitHub.com。 例如,可以要求 Copilot 对项目进行一些更改并创建拉取请求。

          GitHub Copilot CLI 使你能够快速访问功能强大的 AI 代理,而无需离开终端。 它可以代替你更高效地完成任务,你可以与 GitHub Copilot CLI 一起迭代合作,以构建所需的代码。

受支持的操作系统

有关安装说明,请参阅“安装 GitHub Copilot CLI”。

使用模式

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

交互式接口

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

Copilot 的交互式界面中欢迎消息的屏幕截图。

交互式接口有两种模式。 除了默认的 ask/execute 模式之外,还有一种 计划模式 ,它将 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 更改项目中的代码。 例如:

    Change the background-color of H1 headings to dark blue

            Copilot 查找定义 H1 标题并更改颜色值的 CSS 文件。
    
  • 请 Copilot 告诉你有关文件的更改:

    Show me the last 5 changes made to the CHANGELOG.md file. Who changed the file, when, and give a brief summary of the changes they made

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

    • Suggest improvements to content.js

    • Rewrite the readme in this project to make it more accessible to newcomers

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

    • Commit the changes to this repo

    • Revert the last commit, leaving the changes unstaged

  • 要求 Copilot 从头开始创建应用程序,例如,作为概念证明。

    Use the create-next-app kit and tailwind CSS to create a next.js app. The app should be a dashboard built with data from the GitHub API. It should track this project's build success rate, average build duration, number of failed builds, and automated test pass rate. After creating the app, give me easy to follow instructions on how to build, run, and view the app in my browser.

  • 要求 Copilot 解释它所做的更改为何无法按预期工作,或告知 Copilot 解决其上次更改的问题。 例如:

    You said: "The application is now running on http://localhost:3002 and is fully functional!" but when I browse to that URL I get "This site can't be reached"

涉及GitHub.com的任务

  • 从 GitHub.com中获取和显示有关工作的详细信息。

    • List my open PRs

      这会列出在 GitHub 上任何存储库中的已打开拉取请求。 有关更具体的结果,请在提示中包含仓库名称:

    • List all open issues assigned to me in OWNER/REPO

  • 要求 Copilot 处理问题:

    I've been assigned this issue: https://github.com/octo-org/octo-repo/issues/1234. Start working on this for me in a suitably named branch.

  • 请让 Copilot 进行文件更改并在 GitHub.com 上提交拉取请求。

    • In the root of this repo, add a Node script called user-info.js that outputs information about the user who ran the script. Create a pull request to add this file to the repo on GitHub.

    • Create a PR that updates the README at https://github.com/octo-org/octo-repo, changing the subheading "How to run" to "Example usage"

    Copilot 在 GitHub.com 上代表你创建拉取请求。 你会被标记为该拉取请求的创建者。

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

    Raise an improvement issue in octo-org/octo-repo. In src/someapp/somefile.py the `file = open('data.txt', 'r')` block opens a file but never closes it.

  • 请求 Copilot 检查拉取请求中的代码更改。

    Check the changes made in PR https://github.com/octo-org/octo-repo/pull/57575. Report any serious errors you find in these changes.

    Copilot 会在 CLI 中返回它发现的所有问题的摘要。

  • 管理来自GitHub Copilot CLI的拉取请求。

    • Merge all of the open PRs that I've created in octo-org/octo-repo

    • Close PR #11 on octo-org/octo-repo

  • 查找特定议题类型。

    Use the GitHub MCP server to find good first issues for a new team member to work on from octo-org/octo-repo

    注意

    如果知道特定的 MCP 服务器可以实现特定任务,请在提示中指定它有助于 Copilot 提供所需的结果。

  • 查找特定 GitHub Actions 工作流。

    List any Actions workflows in this repo that add comments to PRs

  • 创建 GitHub Actions 工作流。

    Branch off from main and create a GitHub Actions workflow that will run on pull requests, or can be run manually. The workflow should run eslint to check for problems in the changes made in the PR. If warnings or errors are found these should be shown as messages in the diff view of the PR. I want to prevent code with errors from being merged into main so, if any errors are found, the workflow should cause the PR check to fail. Push the new branch and create a pull request.

引导对话

你可以在其思考时与 Copilot 交互以引导对话。

  •         **将其他消息排入队列**:发送后续消息以引导对话朝不同方向发展,或在Copilot完成当前响应后排队等待处理其他指令。 这使得对话感觉更自然,并让你保持控制。
    
  •         **关于拒绝的内联反馈**:拒绝工具权限请求时,可以就拒绝提供 Copilot 内联反馈,以便它可以调整其方法,而无需完全停止。 这样,当你希望引导Copilot避免某些操作时,对话会更加自然。
    

自动上下文管理

          GitHub Copilot CLI 自动管理对话上下文:

* 自动压缩:当会话接近令牌限制的 95% 时, Copilot 自动压缩后台的历史记录,而不会中断工作流。 这种方式可以启用几乎无限量的会话。 * 手动控制:用于 /compact 随时手动压缩上下文。 如果改变想法,请按 Escape 取消。 * 可视化使用情况:该 /context 命令显示详细的令牌使用情况细分,以便了解上下文窗口的使用方式。

定制 GitHub Copilot CLI

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

  •         **自定义说明**:自定义说明允许你在项目上提供 Copilot 其他上下文,以及如何生成、测试和验证其更改。 所有自定义指令文件现在都组合在一起,而不是使用基于优先级的回退。 有关详细信息,请参阅“[AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/add-custom-instructions)”。
    
  •         **模型上下文协议(MCP)服务器:MCP** 服务器允许你访问 Copilot 不同的数据源和工具。 有关详细信息,请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli#add-an-mcp-server)”。
    
  •         **
            自定义智能体
            **: 自定义智能体 允许为不同的任务创建不同的专用版本 Copilot 。 例如,可以按照团队的指南自定义 Copilot 为专家前端工程师。               GitHub Copilot CLI 包括专用的 自定义代理,并且会自动将常见任务委托给它。 有关详细信息,请参阅“[AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli#use-custom-agents)”。
    
  •         **挂钩:挂钩**允许在代理执行期间在关键点执行自定义 shell 命令,使你能够添加验证、日志记录、安全扫描或工作流自动化。 请参阅“[AUTOTITLE](/copilot/concepts/agents/coding-agent/about-hooks)”。
    
  •         **技能**:利用技能,可以增强使用说明、脚本和资源执行专用任务的能力 Copilot 。 有关详细信息,请参阅“[AUTOTITLE](/copilot/concepts/agents/about-agent-skills)”。
    
  •         **
            Copilot内存
            **: Copilot内存 通过 Copilot 存储“记忆”来构建对存储库的持久理解,这些内存是有关编码约定、模式和首选项的信息片段,这些约定、模式和首选项 Copilot 在工作时被推断出来。 这减少了在提示中反复解释上下文的需求,并使将来的会话更高效。 有关详细信息,请参阅“[AUTOTITLE](/copilot/concepts/agents/copilot-memory)”。
    

安全注意事项

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

因此,在使用Copilot CLI的过程中,应始终牢记安全注意事项,就像直接操作文件或在终端中执行命令时一样。 在 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服务器。

    可以通过在 CLI 的交互式界面中输入 /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 CLI响应审批提示、使用命令行标志指定权限或(在交互式会话中)使用斜杠命令(例如Copilot和/allow-all)来控制哪些工具/yolo可以使用。 请参阅“配置 GitHub Copilot CLI”。

风险缓解

可以通过在受限环境(例如虚拟机、容器或专用系统)中运行 Copilot CLI,并严格控制权限和网络访问来缓解与使用自动审批选项相关的风险。 这可以防止当允许 Copilot 执行尚未查看和验证的命令时可能发生的任何潜在损害。

已知的 MCP 服务器策略限制

          Copilot CLI 目前不支持以下组织级别的 MCP 服务器策略:
  •           **Copilot 中的 MCP 服务器**,控制 MCP 服务器是否可以被 Copilot 使用。
    
  •           **MCP 注册表 URL**,控制 Copilot 将允许从哪个 MCP 注册表中使用 MCP 服务器。
    

有关这些策略的详细信息,请参阅 公司中的 MCP 服务器使用情况

模型应用

使用 GitHub Copilot CLI 的默认模型为 克劳德十四行诗 4.5。 GitHub 保留更改此模型的权利。

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

每次在 Copilot CLI 的交互界面中向 Copilot 提交提示,以及每次以编程方式使用 Copilot CLI 时,你的月度 Copilot 高级请求配额都会减少一次,再乘以模型列表中括号内显示的乘数。 例如,Claude Sonnet 4.5 (1x) 表示使用此模型,每次提交提示时,你的高级请求配额将减少一个。 有关高级请求的信息,请参阅 GitHub Copilot 中的请求

使用自己的模型提供程序

可以配置 Copilot CLI 使用您自己的模型提供程序,而不是使用 GitHub 托管的模型。 这样,便可以连接到与 OpenAI 兼容的终结点、Azure OpenAI 或 Anthropic,包括本地运行的模型(如 Ollama)。 可以使用环境变量配置模型提供程序。

环境变量说明
COPILOT_PROVIDER_BASE_URL模型提供程序 API 终结点的基本 URL。
COPILOT_PROVIDER_TYPE提供程序类型: openai (默认值), azureanthropic。 该 openai 类型适用于任何与 OpenAI 兼容的终结点,包括 Ollama 和 vLLM。
COPILOT_PROVIDER_API_KEY用于向提供程序进行身份验证的 API 密钥。 不使用身份验证的提供商,例如本地 Ollama 实例,则不需要身份验证。
COPILOT_MODEL要使用的模型(在使用自定义提供程序时是必需的)。 还可以使用 --model 命令行选项来设置此设置。

用于 Copilot CLI 的模型必须支持 工具调用 (函数调用)和 流式处理。 如果模型不支持这些功能, Copilot CLI 将返回错误。 为了获得最佳结果,模型应具有至少 128k 个令牌的上下文窗口。

有关如何配置模型提供程序的详细信息,请在终端中运行 copilot help providers

通过 ACP 使用Copilot CLI

ACP(代理客户端协议)是与 AI 代理交互的开放标准。 它允许你在支持此协议的任何第三方工具、IDE 或自动化系统中用作 Copilot CLI 代理。

有关详细信息,请参阅“Copilot CLI ACP 服务器”。

反馈

如果你对 GitHub Copilot CLI 有任何反馈,请通过交互式会话中的 /feedback 斜杠命令选择相应选项告知我们。 你可以选择参与私密反馈调查、提交 bug 报告或提出新功能建议。

延伸阅读

  •         [AUTOTITLE](/copilot/how-tos/set-up/install-copilot-cli)
    
  •         [AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli)
    
  •         [AUTOTITLE](/enterprise-cloud@latest/copilot/responsible-use/copilot-cli)