介绍
通过 GitHub Copilot 的命令行接口 (CLI),你可以直接从终端使用 Copilot。 你可以使用该接口来回答问题、编写和调试代码,以及与 GitHub.com 进行交互。 例如,你可以让 Copilot 对项目进行一些更改并创建拉取请求。
GitHub Copilot 命令行界面 使你能够快速使用强大的 AI 智能体,而无需离开终端。 它可以代表你执行操作,帮助你更快地完成任务,而且你可以与 GitHub Copilot 命令行界面 进行迭代协作,构建所需的代码。
受支持的操作系统
- Linux
- macOS
- Powershell 中的 Windows 和适用于 Linux 的 Windows 子系统 (WSL)
有关安装说明,请参阅“安装 GitHub Copilot CLI”。
使用模式
GitHub Copilot 命令行界面 具有交互式和编程式两种用户界面。
交互式接口
若要启动交互式会话,请输入 copilot。 在交互式会话中,你可以与 Copilot 进行对话。 您可以命令 Copilot 执行一个或多个任务,并且您可以提供反馈并引导工作的方向。

交互式接口有两种模式。 除了默认的询问/执行模式外,还有一种计划模式,Copilot 将在此模式下为要完成的任务生成一个结构化实施计划。
按 Shift+Tab 在模式之间循环。 在计划模式下,Copilot 会分析请求,提出澄清问题以了解范围和要求,并在编写任何代码之前生成计划。 这有助于在编写任何代码之前捕获误解,并控制复杂的多步骤任务。
编程接口
还可以直接在命令行上传递 CLI 单个提示。 CLI 完成任务,然后退出。
要以编程方式使用 CLI,请在命令中包含 -p 或 --prompt 命令行选项。 若要允许 Copilot 修改和执行文件,你还应使用本文后面所述的一个审批选项 - 请参阅在未手动批准的情况下允许使用工具。 例如:
copilot -p "Show me this week's commits and summarize them" --allow-tool 'shell(git)'
copilot -p "Show me this week's commits and summarize them" --allow-tool 'shell(git)'
或者,可以使用脚本输出命令行选项,并通过管道将其传递给 copilot。 例如:
./script-outputting-options.sh | copilot
./script-outputting-options.sh | copilot
注意
如果使用诸如 --allow-all-tools 之类的自动批准选项,Copilot 将拥有与你相同的计算机文件访问权限,并且可以运行你能运行的任何 shell 命令,而无需事先获得你的批准。 请参阅本文后面的安全注意事项。
GitHub Copilot 命令行界面 的用例
以下各节提供了可通过 GitHub Copilot 命令行界面 完成的任务示例。
本地任务
-
在项目目录中,你可以让 Copilot 对项目中的代码进行更改。 例如:
Change the background-color of H1 headings to dark blueCopilot 会找到定义 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 命令行界面 的拉取请求。
-
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 命令行界面 自动管理会话上下文:
-
**自动压缩**:当会话接近令牌限制的 95% 时,Copilot 会在后台自动压缩历史记录,而不会中断工作流程。 这种方式可以启用几乎无限量的会话。 -
**手动控制**:用于 `/compact` 随时手动压缩上下文。 如果改变想法,请按 <kbd>Escape</kbd> 取消。 -
**可视化使用情况**:该 `/context` 命令显示详细的令牌使用情况细分,以便了解上下文窗口的使用方式。
自定义 GitHub Copilot 命令行界面
可以通过多种方式自定义 :
-
**自定义指令**:自定义指令允许你向 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 命令行界面 包括专用的 自定义代理,并且会自动将常见任务委托给它。 有关详细信息,请参阅“[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 的目录及其子目录中的文件。 请参阅“配置 GitHub Copilot CLI”。
允许的工具
当 Copilot 首次需要使用可能用于修改或执行文件的工具时(例如 例如 touch、chmod、node 或 sed 中所列的工具),它会询问你是否允许使用该工具。
通常,可从以下三个部署选项中进行选择:
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命令。对于
git和gh命令,可以指定要允许或拒绝的特定一级子命令。 例如: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的 MCP 服务器中名为My-MCP-Server的工具。可以通过在 CLI 的交互式界面中输入
/mcp,然后从显示的列表中选择服务器来查找 MCP 服务器的名称。
合并审批选项
你可以使用多种批准选项组合,精确确定 Copilot 无需请求你批准即可使用的工具范围。
例如,要阻止 Copilot 使用 rm 和 git 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 服务器**,它控制着 Copilot 是否可以使用 MCP 服务器。 -
**MCP 注册表 URL**,其控制允许从哪个 MCP 注册表 Copilot 使用 MCP 服务器。
有关这些策略的详细信息,请参阅 公司中的 MCP 服务器使用情况。
模型应用
GitHub Copilot 命令行界面 使用的默认模型为 克劳德十四行诗 4.5。 GitHub 保留更改此模型的权利。
可以使用/model斜杠命令或 --model 命令行选项更改 GitHub Copilot 命令行界面 使用的模型。 输入此命令,然后从列表中选择一个模型。
每次在 Copilot 命令行界面(CLI) 的交互界面中向 Copilot 提交提示时,以及每次以编程方式使用 Copilot 命令行界面(CLI) 时,你的 Copilot 高级请求的月度配额都会减少一个,每次减少量将乘以模型列表中括号内显示的乘数。 例如,Claude Sonnet 4.5 (1x) 表示使用此模型,每次提交提示时,你的高级请求配额将减少一个。 有关高级请求的信息,请参阅 GitHub Copilot 中的请求。
通过 ACP 使用 Copilot 命令行界面(CLI)
ACP(代理客户端协议)是与 AI 代理交互的开放标准。 它允许你将 Copilot 命令行界面(CLI) 用作任何第三方工具、IDE 或自动化系统中支持此协议的智能体。
有关详细信息,请参阅“Copilot CLI ACP 服务器”。
反馈
如果你对 GitHub Copilot 命令行界面 有任何反馈,请通过交互式会话中的 /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)