# 允许 GitHub Copilot CLI 自主工作

CLI 的 Autopilot 模式允许 Copilot CLI 在任务上自主工作，执行多个步骤，直到任务完成。

## 概述

通常，当你以交互方式使用 Copilot CLI 时，会提交提示，然后等待 Copilot CLI 响应，然后再给出下一个说明。 此来回交互会持续到任务完成。

Autopilot 模式允许 Copilot CLI 完成任务，而无需在每个步骤后等待输入。 提供初始指令后，Copilot CLI 会自动完成每个步骤，直到确定任务完成为止。

CLI 的标准交互模式和自动驾驶模式之间的区别就像处理任务时与同事合作的不同：在标准交互模式下，他们执行大部分工作，但会定期与你讨论；而在自动驾驶模式下，你则是直接将任务交给同事，对他说：“这是我需要的——完成后告诉我。”

在 Autopilot 模式下， Copilot 继续执行，直到发生以下情况之一：

* 代理确定任务已完成。
* 出现防止进一步进度的问题。
* 按 <kbd>Ctrl</kbd>+<kbd>C</kbd> 以停止代理继续操作。
* 达到最大延续限制（如果已设置）。

若要在交互式会话期间切换到 Autopilot 模式，请按 <kbd>Shift</kbd>+<kbd>Tab</kbd> 并循环浏览可用模式，直到到达 Autopilot 模式，然后输入提示。 使用相同的键压从 autopilot 模式切换回标准交互模式。

## Autopilot 模式的优点

* \*\*免动手自动化：\*\*Copilot 在初始指令后，无需任何输入即可完成任务。
* **效率：** 非常适合用于定义完善的任务，例如编写测试、重构文件或修复 CI 故障。 Autopilot 特别适合需要长时间多步骤会话的大型任务。
* **批处理操作：** 适用于脚本编写和 CI 工作流，你希望 Copilot 运行至完成。
* **安全：** Autopilot 模式允许 Copilot 执行多个自定向步骤来完成任务。
  `--max-autopilot-continues` 限制在停止之前可以执行的步骤数，以避免无限循环。 在 autopilot 模式下，Copilot 不能执行任何需要权限的操作，除非您显式授予它完整权限。

## 注意事项

* **任务适用性：** Autopilot 模式最适合定义完善的任务。 对于开放式探索、功能开发没有明确目标或要指导正在进行的工作的任务来说，它并不理想。

Copilot 将尽最大努力完成任何任务，但可能会在处理模糊或含糊不清的指令或任务时遇到困难，尤其是当这些任务需要细致的判断时。 这可能会导致一组代码更改，这些更改不是预期内容，并且不能在没有修正工作的情况下使用。

* **信任：** 你需要信任 Copilot 才能做出合理的决策。 当向 Autopilot 模式授予所有权限时，效果最佳。 这等效于使用 Copilot CLI 选项运行 `--allow-all`。 应注意，这会授予 CLI 权限，以进行任何认为完成任务所需的更改，包括更改和删除文件。

* **成本：** 每次 Copilot 与 AI 模型交互时，它都会根据处理的令牌数使用 AI credits 。 这同样适用于自动驾驶模式，只不过 Copilot 会自主发起之后的每次交互，因此 AI credits 会在无需你直接参与的情况下被消耗。

## Permissions

进入 Autopilot 模式时，如果尚未授予 Copilot 所有权限，则会显示一条消息，提示你在三个选项之间进行选择：

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

如果启用所有权限，你将从 autopilot 模式获得最佳结果。 如果选择继续使用有限的权限， Copilot 将自动拒绝任何需要审批的工具请求，这可能会阻止它完成某些任务。 稍后你可以在 autopilot 会话期间使用 `/allow-all` 命令（或其别名 `/yolo`）改变决定并授予完全权限。

在授予 Copilot 各种权限之前，请考虑使用本地沙盒或在云沙盒中运行会话，以限制可以访问的内容 Copilot 。

如果在使用 autopilot 模式时启用本地沙盒， Copilot 请完成它在沙盒内实现的任何操作，而不会中断。 但是，需要转义沙盒的任何步骤（例如，写入当前工作目录外部的文件）都被拒绝。 有关本地沙盒的详细信息，请参阅 [关于云和本地沙盒 GitHub Copilot](/zh/enterprise-cloud@latest/copilot/concepts/about-cloud-and-local-sandboxes)。

## 在任务之间保持自动驾驶模式

默认情况下，Autopilot 模式是粘滞模式：一旦 Copilot 确定任务已完成， Copilot CLI 将保留在 Autopilot 模式下，因此你输入的下一个提示也在 Autopilot 模式下进行处理。 可以通过按 <kbd>Shift</kbd>+<kbd>Tab</kbd> 随时切换回标准交互模式。

如果希望Copilot CLI在每个任务完成后自动切换回交互模式，可以通过设置为 “`stayInAutopilot``false`禁用此行为”。 可以通过以下任一方式来进行：

* 在交互式会话期间，输入 `/settings stayInAutopilot false`。
* 将 `"stayInAutopilot": false` 添加到你的用户配置文件（`~/.copilot/settings.json`）中。 有关详细信息，请参阅“[GitHub Copilot CLI 配置目录](/zh/enterprise-cloud@latest/copilot/reference/copilot-cli-reference/cli-config-dir-reference#user-settings-copilotsettingsjson)”。

禁用此设置后，Copilot 会在任务完成后自动切换回标准交互模式。 若要在 Autopilot 模式下运行另一个任务，请按 <kbd>Shift</kbd>+<kbd>Tab</kbd> 并循环浏览可用模式，直到重新进入 Autopilot 模式，然后输入下一个提示。

> \[!NOTE]
> 此设置仅控制任务完成后处于哪个模式。\_\_ 它不会导致 Copilot 在其判定任务已完成后继续工作。 当任务完成、出现问题、按 <kbd>Ctrl</kbd>+<kbd>C</kbd> 或达到延续限制时，Autopilot 仍会停止。

## 比较 Autopilot 模式、`--allow-all` 和 `--no-ask-user`

`--allow-all`（及其别名 `--yolo`）是启动交互式会话时可以传递给 `copilot` 命令的权限相关选项。 有关可用选项的完整列表，请参阅 [GitHub Copilot CLI 命令参考](/zh/enterprise-cloud@latest/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options)。

使用 `--allow-all` 和 `--yolo` 选项，CLI 代理可以使用所有工具、路径和 URL。 还可以使用 `/allow-all` 或 `/yolo` 斜杠命令在交互式会话期间设置这些权限。

> \[!NOTE]
> 输入 `/allow-all` 并 `/yolo` 启用当前会话的权限。 再次输入这些斜杠命令不会禁用权限，换句话说，这些命令不会打开和关闭权限。

使用 `--allow-all`时，仍处于正常的交互式流中。
Copilot 在达到决策点时仍会停下来并询问你希望它做什么。 但是，当需要执行通常需要审批的内容（例如使用工具、路径或 URL）时 Copilot CLI ，无需请求权限即可继续操作。

`--no-ask-user` 选项抑制了 Copilot 通常会提出的澄清问题。 相反，代理必须自行做出决策，而不是寻求您的指导。 这提供了一定程度的自治。 但是，与 autopilot 模式不同， `--no-ask-user` 不允许代理通过后续步骤继续处理任务，需要与 AI 模型交互。 使用此选项后，CLI 不会在未经你参与的情况下使用额外的 GitHub AI Credits。

## 使用 autopilot 模式的典型工作流

Autopilot 模式非常适合实现大型详细工作计划。 通常，在使用Copilot的计划模式下创建实施计划后，切换到自动驾驶模式会很有用。 有关计划模式的详细信息，请参阅 [GitHub Copilot CLI 的最佳做法](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-cli/cli-best-practices#2-plan-before-you-code)。

例如：

* 启动交互式 Copilot CLI 会话。

  （可选）可以包括 `--allow-all` 授予权限的选项，以及 `--max-autopilot-continues` 用于在会话期间为 autopilot 模式设置最大延续限制的选项。 例如，可以启动会话 `copilot --allow-all --max-autopilot-continues 10` 以授予代理使用所有工具、路径和 URL 的权限，并将 autopilot 的最大延续限制设置为 10。

* 当交互式会话启动时，如果系统提示你信任当前文件夹中的文件，请接受此选项。

* 按 <kbd>Shift</kbd>+<kbd>Tab</kbd> 切换到计划模式，输入描述要实现的提示，然后处理 Copilot 以创建详细的计划。

* 一旦你有了满意的计划，请使用 CLI 提供的选项“接受计划并在 Autopilot 的基础上构建”。

* 如果收到有关权限的提示，请选择启用所有权限的选项。

* 交由 Copilot 实施计划。 可以定期检查进度。

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

以编程方式运行 Copilot CLI 时可以使用自动驾驶模式，例如，在命令行上传递 Copilot 提示符时，或者将 CLI 作为脚本或 CI 工作流的一部分时。 这样，就可以在初始命令之后自动执行任务，而无需与 CLI 交互。

使用选项 `--allow-all` 或 `--yolo` 授予 Copilot 使用所有工具、路径和 URL 的权限。 可以包含 `--max-autopilot-continues` 选项，设置最大续延限制，以防止失控循环。 在程序自动化的环境中，这一点尤为重要，因为如果出现问题，你将无法进行干预。

示例用法：

```shell
copilot --autopilot --yolo --max-autopilot-continues 10 -p“你的提示在这里”
```

## 概要

如果要 Copilot 接管任务并完成工作，而无需参与，请使用 Autopilot 模式。 最适合清晰、定义明确的任务，你信任 Copilot 能做出合理决策。

## 延伸阅读

* [使用 GitHub Copilot CLI](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-cli/use-copilot-cli)
* [使用 \`/fleet\` 命令并行运行任务](/zh/enterprise-cloud@latest/copilot/concepts/agents/copilot-cli/fleet)
* [GitHub Copilot CLI](/zh/enterprise-cloud@latest/copilot/how-tos/copilot-cli)