概述
通常,当你以交互方式使用 Copilot 命令行界面(CLI) 时,你会提交一个提示,然后等待 Copilot 命令行界面(CLI) 做出响应,再给予下一个指令。 此来回交互会持续到任务完成。
Autopilot 模式允许 Copilot 命令行界面(CLI) 完成任务,而无需在每个步骤后等待输入。 提供初始指令后,Copilot 命令行界面(CLI) 会自主地执行每一个步骤,直到任务被认为已经完成。
CLI 的标准交互模式和自动驾驶模式之间的区别就像处理任务时与同事合作的不同:在标准交互模式下,他们执行大部分工作,但会定期与你讨论;而在自动驾驶模式下,你则是直接将任务交给同事,对他说:“这是我需要的——完成后告诉我。”
在 Autopilot 模式下,Copilot 会继续运行,直到发生以下情况之一:
- 代理确定任务已完成。
- 出现防止进一步进度的问题。
- 按 Ctrl+C 以停止代理继续操作。
- 达到最大延续限制(如果已设置)。
若要在交互式会话期间切换到 Autopilot 模式,请按 Shift+Tab 并循环浏览可用模式,直到到达 Autopilot 模式,然后输入提示。 使用相同的键压从 autopilot 模式切换回标准交互模式。
Autopilot 模式的优点
-
**动手自动化:** Copilot 在初始指令后无需输入即可完成任务。 -
**效率:** 非常适合用于定义完善的任务,例如编写测试、重构文件或修复 CI 故障。 Autopilot 特别适合需要长时间多步骤会话的大型任务。 -
**批处理操作:** 对于希望 Copilot 运行完成的脚本和 CI 工作流非常有用。 -
**安全:** Autopilot 模式允许 Copilot 执行多个自主步骤来完成任务。 `--max-autopilot-continues` 限制在停止之前可以执行的步骤数,以避免无限循环。 此外,在 Autopilot 模式下,除非你明确授予其完全权限,否则 Copilot 无法执行任何需要权限的操作。
注意事项
-
**任务适用性:** Autopilot 模式最适合定义完善的任务。 对于开放式探索、功能开发没有明确目标或要指导正在进行的工作的任务来说,它并不理想。Copilot 将尽全力完成任何任务,但在面对模糊或不明确的指令或任务,以及需要细致判断的情况时,可能会遇到困难。 这可能会导致一组代码更改,这些更改不是预期内容,并且不能在没有修正工作的情况下使用。
-
**信任:** 你需要信任 Copilot 做出合理的决策。 当向 Autopilot 模式授予所有权限时,效果最佳。 这相当于使用 `--allow-all` 选项运行 Copilot 命令行界面(CLI)。 应注意,这会授予 CLI 权限,以进行任何认为完成任务所需的更改,包括更改和删除文件。 -
**成本:** Autopilot 模式使用高级请求的方式与在标准交互式接口中工作时使用这些请求的方式相同。 在标准模式下,提交初始提示时会使用一个高级请求,然后每次回复 CLI 中的问题时,都会使用一个高级请求,代理使用你的响应来与 AI 模型交互。 这同样适用于 Autopilot 模式,除了你不参与启动下一步,因此使用附加的高级请求时无需你的直接参与。计费溢价请求的使用情况是使用乘数来确定的。 乘数因所使用的模型而异。
/model使用斜杠命令查看当前选定的模型及其乘数,并根据需要更改模型。 有关详细信息,请参阅 GitHub Copilot 中的请求 和 关于个人 GitHub Copilot 方案的计费。每次代理自主继续时,它将会在 CLI 中显示一条消息,告诉您该连续步骤使用了多少个高级请求(考虑到模型乘数),例如:
Continuing autonomously (3 premium requests)。
Permissions
进入自动驾驶模式时,如果尚未授予数据变量.product.prodname_copilot_short %}所有权限,系统会显示一条消息,提示你在三个选项之间进行选择:
1. Enable all permissions (recommended)
2. Continue with limited permissions
3. Cancel (Esc)
如果启用所有权限,你将从 autopilot 模式获得最佳结果。 如果选择继续使用有限的权限,Copilot 将自动拒绝任何需要审批的工具请求,这可能会阻止其完成某些任务。 稍后你可以在 autopilot 会话期间使用 /allow-all 命令(或其别名 /yolo)改变决定并授予完全权限。
比较 Autopilot 模式、--allow-all 和 --no-ask-user
`--allow-all`(及其别名 `--yolo`)是启动交互式会话时可以传递给 `copilot` 命令的权限相关选项。 有关可用选项的完整列表,请参阅 [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options)。
使用 --allow-all 和 --yolo 选项,CLI 代理可以使用所有工具、路径和 URL。 还可以使用 /allow-all 或 /yolo 斜杠命令在交互式会话期间设置这些权限。
注意
输入 /allow-all 并 /yolo 启用当前会话的权限。 再次输入这些斜杠命令不会禁用权限,换句话说,这些命令不会打开和关闭权限。
使用 --allow-all时,仍处于正常的交互式流中。 Copilot 仍将在到达决策点时暂停,并询问你希望它执行什么操作。 但是,当 Copilot 命令行界面(CLI) 需要执行通常需要审批的操作(例如使用工具、路径或 URL)时,它将在不征求许可的情况下继续进行。
--no-ask-user 选项禁止阐述 Copilot 通常会提出的问题。 相反,代理必须自行做出决策,而不是寻求您的指导。 这提供了一定程度的自治。 但是,与 autopilot 模式不同, --no-ask-user 不允许代理通过后续步骤继续处理任务,需要与 AI 模型交互。 使用此选项时,CLI 不会在初始提示后使用其他高级请求,而无需你参与。
使用 autopilot 模式的典型工作流
Autopilot 模式非常适合实现大型详细工作计划。 通常,在计划模式下使用 Copilot 创建实施计划后,你通常会发现切换到 Autopilot 模式很有用。 有关计划模式的详细信息,请参阅 GitHub Copilot CLI 的最佳实践。
例如:
-
启动交互式 Copilot 命令行界面(CLI) 会话。
(可选)可以包括
--allow-all授予权限的选项,以及--max-autopilot-continues用于在会话期间为 autopilot 模式设置最大延续限制的选项。 例如,可以启动会话copilot --allow-all --max-autopilot-continues 10以授予代理使用所有工具、路径和 URL 的权限,并将 autopilot 的最大延续限制设置为 10。 -
当交互式会话启动时,如果系统提示你信任当前文件夹中的文件,请接受此选项。
-
按 Shift+Tab 切换到计划模式,输入一个描述您希望实现内容的提示,然后使用 Copilot 创建详细的计划。
-
一旦你有了满意的计划,请使用 CLI 提供的选项“接受计划并在 Autopilot 的基础上构建”。
-
如果收到有关权限的提示,请选择启用所有权限的选项。
-
保留 Copilot 以实施计划。 可以定期检查进度。
以编程方式使用自动驾驶模式
当以编程方式运行 Copilot 命令行界面(CLI) 时,例如当你在命令行上向 Copilot 传递提示时,或者当你将 CLI 用作脚本或 CI 工作流的一部分时,可以使用 Autopilot 模式。 这样,就可以在初始命令之后自动执行任务,而无需与 CLI 交互。
使用 --allow-all(或 --yolo)选项授予 Copilot 使用所有工具、路径和 URL 的权限。 可以包含 --max-autopilot-continues 选项,设置最大续延限制,以防止失控循环。 在程序自动化的环境中,这一点尤为重要,因为如果出现问题,你将无法进行干预。
示例用法:
copilot --autopilot --yolo --max-autopilot-continues 10 -p“你的提示在这里”
概要
如果希望 Copilot 在没有你参与的情况下接管任务并完成工作时,请使用 Autopilot 模式。 适用于清晰且定义明确的任务,在这些任务中,你可以信任 Copilot 来做出合理的决策。
延伸阅读
-
[AUTOTITLE](/copilot/how-tos/copilot-cli/use-copilot-cli#get-copilot-to-work-autonomously) -
[AUTOTITLE](/copilot/concepts/agents/copilot-cli/fleet) -
[AUTOTITLE](/copilot/how-tos/copilot-cli)