跳至主要内容

允许 GitHub Copilot CLI 自动运行

CLI 的自动驾驶模式让 Copilot CLI 在任务上自主工作,执行多个步骤直至任务完成。

概览

通常,当你交互式使用 Copilot CLI 时,你提交提示词后会等待 Copilot CLI 回复,然后再给出下一条指令。这种来回交互会持续,直至任务完成。

自动驾驶模式允许 Copilot CLI 在不需要你每一步输入的情况下完成任务。只要你给出初始指令,Copilot CLI 就会自主执行每一步,直至判断任务已完成。

CLI 的标准交互模式与自动驾驶模式的区别,就像和同事一起完成任务——同事承担大部分工作,但会定期向你确认——和把任务直接交给同事并说“这是我的需求,完成后告诉我”。

在自动驾驶模式下,Copilot 会持续运行,直至出现以下任意一种情况

  • 代理判断任务已完成。
  • 出现阻止进一步进展的问题。
  • 你按下 Ctrl+C 来停止代理的继续执行。
  • 达到最大连续限制(如果已设置)。

要在交互会话期间切换到自动驾驶模式,按下 Shift+Tab 并循环切换可用模式,直至切换到自动驾驶模式,然后输入你的提示词。使用相同的快捷键可将自动驾驶模式切回普通交互模式。

自动驾驶模式的优势

  • 免人工自动化:Copilot 在收到初始指令后即可完成任务,无需你的后续输入。
  • 效率:非常适合编写测试、重构文件或修复 CI 失败等明确任务。自动驾驶模式尤其适用于需要长时间、多步骤会话的大型任务。
  • 批量操作:在脚本和 CI 工作流中很有用,能够让 Copilot 运行到任务完成。
  • 安全性:自动驾驶模式允许 Copilot 采用多步自我驱动的方式完成任务。--max-autopilot-continues 限制其在停止前可执行的步骤数,以避免无限循环。此外,在自动驾驶模式下,除非你显式授予完整权限,Copilot 无法执行任何需要权限的操作。

需要考虑的事项

  • 任务适用性:自动驾驶模式最适合明确的任务。不适用于开放式探索、没有明确目标的功能开发,或需要你随时引导工作的任务。

    Copilot 会尽全力完成任何任务,但面对模糊或歧义的指令、以及需要细致判断的任务时可能会出现困难。这可能导致生成的代码更改并非你所期望,且需要后续修复才能使用。

  • 信任:你需要相信 Copilot 能做出合理的决定。自动驾驶模式在授予全部权限时效果最佳,这相当于使用 --allow-all 选项运行 Copilot CLI。请注意,这会赋予 CLI 对任务完成所需的任何更改权限,包括修改和删除文件。

  • 成本:自动驾驶模式会使用高级请求(premium requests),方式与在标准交互界面中相同。标准模式下,提交初始提示词会消耗一次高级请求,随后每次你对 CLI 提出的提问作出回复并让代理使用你的回答与 AI 模型交互时,都会消耗一次额外的高级请求。自动驾驶模式也是如此,只是因为你不参与发起后续步骤,额外的高级请求会在你不直接介入的情况下被消耗。

    计费的高级请求使用量会根据乘数(multiplier)来计算。乘数随所使用的模型而异。使用 /model 斜杠命令可查看当前选定模型及其乘数,并在需要时切换模型。更多信息请参阅 GitHub Copilot 请求计费个人 GitHub Copilot 计划的计费说明

    每当代理自主继续时,CLI 会输出一条信息,告知该连续步骤已使用的高级请求数量——已计入模型乘数——例如:Continuing autonomously (3 premium requests)

权限

进入自动驾驶模式时,如果尚未授予 Copilot 完全权限,系统会显示一条消息,提示你在以下三种选项中进行选择

1. Enable all permissions (recommended)
2. Continue with limited permissions
3. Cancel (Esc)

如果开启全部权限,自动驾驶模式将得到最佳效果。若选择在受限权限下继续,Copilot 将自动拒绝任何需要批准的工具请求,这可能导致它无法完成某些任务。你可以在自动驾驶会话中随时使用 /allow-all 命令(或其别名 /yolo)授予完整权限,改变之前的决定。

比较自动驾驶模式、--allow-all--no-ask-user

--allow-all 及其别名 --yolo 是与权限相关的选项,可在启动交互会话时通过 copilot 命令传入。完整的可用选项列表请参阅 GitHub Copilot CLI 命令参考

--allow-all--yolo 选项允许 CLI 代理使用所有工具、路径和 URL。你也可以在交互会话中使用 /allow-all/yolo 斜杠命令来设定这些权限。

注意

输入 /allow-all/yolo 即可为当前会话启用全部权限。再次输入这些斜杠命令并不会关闭权限——换句话说,这些命令不会在开启/关闭权限之间切换。

使用 --allow-all 时,你仍处于普通交互流程。Copilot 在遇到需要决策的节点时仍会停下来询问你的意图。但当需要执行通常需批准的操作(如使用工具、路径或 URL)时,Copilot 将直接执行而不再请求你的许可。

--no-ask-user 选项会抑制 Copilot 通常会提出的澄清问题。代理必须自行做出决定,而不是向你征求输入。这提供了一定程度的自主性。但与自动驾驶模式不同,--no-ask-user 并不允许代理在需要与 AI 模型交互的连续步骤中自行继续。因此,在此选项下,除首次提示外,CLI 不会在未得到你参与的情况下消耗额外的高级请求。

使用自动驾驶模式的典型工作流程

自动驾驶模式非常适合执行大型、细节丰富的工作计划。通常在使用 Copilot 完成计划模式(plan mode)以生成实现计划后,你会切换到自动驾驶模式来执行该计划。有关计划模式的更多信息,请参阅 GitHub Copilot CLI 最佳实践

例如

  • 启动一个交互式的 Copilot CLI 会话。

    可选地,你可以在启动时加入 --allow-all 选项以授予全部权限,并使用 --max-autopilot-continues 选项设定自动驾驶模式的最大连续限制。例如,你可以使用 copilot --allow-all --max-autopilot-continues 10 启动会话,以赋予代理使用所有工具、路径和 URL 的权限,并将自动驾驶的最大连续次数限制为 10。

  • 交互式会话启动后,如果出现“信任当前文件夹中的文件”提示,请接受该选项。

  • 按下 Shift+Tab 切换到计划模式,输入描述你要实现目标的提示词,然后与 Copilot 合作生成详细计划。

  • 当你对计划满意后,使用 CLI 提供的 “Accept plan and build on autopilot”(接受计划并在自动驾驶模式下构建)选项。

  • 如果出现权限提示,请选择启用全部权限的选项。

  • 让 Copilot 执行计划。你可以定期检查其进度。

以编程方式使用自动驾驶模式

在以编程方式运行 Copilot CLI 时(例如在命令行上传入提示词,或在脚本或 CI 工作流中使用 CLI),可以使用自动驾驶模式。这样即可实现端到端的任务自动化,无需在首次命令后再次与 CLI 交互。

使用 --allow-all(或 --yolo)选项授予 Copilot 使用所有工具、路径和 URL 的权限。你还可以加入 --max-autopilot-continues 选项来设定最大连续限制,以防止出现失控循环。这在程序化环境中特别重要,因为若出现异常你不在现场进行干预。

示例用法

copilot --autopilot --yolo --max-autopilot-continues 10 -p "YOUR PROMPT HERE"

摘要

当你希望 Copilot 主动接管任务并自行完成时,请使用自动驾驶模式。它最适合明确、定义清晰的任务,前提是你信任 Copilot 能做出合理的决定。

延伸阅读

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