# GitHub Copilot CLI 的最佳做法

了解如何充分利用 GitHub Copilot 命令行界面 (CLI)。

## 介绍

```
          GitHub Copilot 命令行界面 (CLI) 是一个终端原生 AI 编码助手，用于将代理功能直接引入命令行。 
          Copilot 命令行界面（CLI） 可以像聊天机器人一样操作，回答你的问题，但它的真正力量在于它能够作为编码合作伙伴自主工作，让你委托任务并监督其工作。
```

本文提供有关如何充分利用 Copilot 命令行界面（CLI） 的提示，包括如何有效使用各种 CLI 命令以及如何管理 CLI 对文件的访问。 将这些提示视为起点，然后尝试找出最适合工作流的内容。

> \[!NOTE]

```
          GitHub Copilot 命令行界面 (CLI) 不断发展。 
```

```
          `/help`使用命令查看最新信息。
```

## 1.自定义环境

### 使用自定义说明文件

```
          Copilot 命令行界面（CLI） 自动读取来自多个位置的说明，允许你定义组织范围的标准和特定于存储库的约定。

          **支持的位置（按发现顺序）：**
```

| 位置                                          | Scope    |
| ------------------------------------------- | -------- |
| `~/.copilot/copilot-instructions.md`        | 所有会话（全局） |
| `.github/copilot-instructions.md`           | 资料库      |
| `.github/instructions/**/*.instructions.md` | 存储库（模块化） |
| `AGENTS.md` （在 Git 根或 cwd 中）                | 资料库      |
| `Copilot.md`、`GEMINI.md`、`CODEX.md`         | 资料库      |

#### 最佳做法

存储库说明 **始终优先** 于全局指令。 使用此函数强制实施团队约定。 例如，这是一个简单的 `.github/copilot-instructions.md` 文件。

```markdown
## Build Commands
- `npm run build` - Build the project
- `npm run test` - Run all tests
- `npm run lint:fix` - Fix linting issues

## Code Style
- Use TypeScript strict mode
- Prefer functional components over class components
- Always add JSDoc comments for public APIs

## Workflow
- Run `npm run lint:fix && npm test` after making changes
- Commit messages follow conventional commits format
- Create feature branches from `main`
```

> \[!TIP]
> 保持说明简洁且可执行。 冗长的指令可以稀释有效性。

有关详细信息，请参阅“[关于自定义GitHub Copilot 响应](/zh/copilot/concepts/prompting/response-customization?tool=webui)”。

### 配置允许的工具

在不请求权限的情况下管理哪些工具 Copilot 可以运行。 请求操作权限时 Copilot ，通常可以选择只允许此操作，或者允许工具用于 CLI 会话的其余部分。

若要重置以前批准的工具，请使用：

```copilot
/reset-allowed-tools
```

还可以通过 CLI 标志预配置允许的工具：

```bash
copilot --allow-tool='shell(git:*)' --deny-tool='shell(git push)'
```

```
          **常见权限模式：**
```

* `shell(git:*)` — 允许所有 Git 命令
* `shell(npm run:*)` — 允许所有 npm 脚本
* `shell(npm run test:*)` — 允许 npm 测试命令
* `write` — 允许文件写入

### 选择首选模型

用于 `/model` 根据任务复杂性从可用模型中进行选择：

| 型号                        | 最适用于                 | 权衡                                                                                                             |
| ------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------- |
| **自动**                    | 降低速率限制，降低延迟和错误       | 请参阅“[关于 Copilot 自动模型选择](/zh/copilot/concepts/auto-model-selection#auto-model-selection-in-github-copilot-cli)” |
| **Claude Opus 4.5** （默认值） | 复杂的体系结构，难以调试，细微差别的重构 | 最有能力但使用更多 [高级请求](/zh/copilot/concepts/billing/copilot-requests#model-multipliers)                              |
| **克劳德十四行诗 4.5**           | 日常编码，大多数常规任务         | 快捷、经济适用、能够很好地处理大部分工作                                                                                           |
| **GPT-5.2 Codex**         | 代码生成、代码评审、直接实现       | 非常适用于查看其他模型生成的代码                                                                                               |

```
          **Recommendations:**
```

* **根据** 实时系统运行状况和模型性能自动选择模型，降低速率限制并提供较低的延迟和错误。
* **Opus 4.5** 非常适合需要深度推理、复杂的系统设计、微妙的 bug 调查或广泛的上下文理解的任务。
* **切换到 Sonnet 4.5** 以执行速度与成本效益很重要的常规任务，它可以有效地处理大多数日常编码。
* **使用 Codex** 生成大量代码，并作为查看其他模型生成的代码的第二种意见。

你可以在会话过程中根据任务复杂性的变化切换 `/model` 模型。

如果组织或企业已使用自己的 LLM 提供程序 API 密钥配置自定义模型，这些模型也会显示在 `/model` 列表底部。

### 使用自己的模型提供程序

可以配置 Copilot 命令行界面（CLI） 使用您自己的模型提供程序，而不是使用 GitHub 托管的模型。 运行 `copilot help providers` 以获取完整的安装说明。

```
          **关键注意事项：**
```

* 模型必须支持 **工具调用** （函数调用）和 **流式处理**。
  Copilot 命令行界面（CLI） 如果缺少任一功能，则返回错误。
* 为了获得最佳结果，请使用具有至少 128k 个标记的上下文窗口的模型。
* 内置子代理（`/review`、`/task`、`/fleet`）会自动继承您的提供程序配置。
* 使用你自己的提供程序时，高级请求成本估算将会隐藏。 令牌使用情况（输入、输出和缓存计数）仍显示。
* 只有在您也登录到`/delegate`的情况下，GitHub才有效。 它将会话传输到GitHub的服务器端Copilot，而不是你的提供商。

请参阅 [使用自己的模型提供程序](/zh/copilot/concepts/agents/copilot-cli/about-copilot-cli#using-your-own-model-provider)。

## 2.在编码之前规划

### 计划模式

```
          **根据具体的计划，模型可以达到更高的成功率。** 在计划模式下， Copilot 将在编写任何代码之前创建结构化实现计划。
```

按 <kbd>Shift</kbd>+<kbd>Tab</kbd> 在正常模式和计划模式之间切换。 在计划模式下，输入的所有提示都会触发计划工作流。

或者，可以在正常模式下使用 `/plan` 命令来实现相同的效果。

```
          **示例提示（从正常模式）：**
```

```copilot
/plan Add OAuth2 authentication with Google and GitHub providers
```

```
          **发生的情况：**
```

* Copilot 分析请求和代码库。
* **提出澄清问题** ，以符合要求和方法。
* 使用复选框创建结构化实现计划。
* 将计划保存到 `plan.md` 会话文件夹中。
* 在实施之前**等待审批**。

可以 <kbd>按 Ctrl</kbd>+<kbd>y</kbd> 在 Markdown 文件的默认编辑器中查看和编辑计划。

```
          **计划输出示例：**
```

```markdown
# Implementation Plan: OAuth2 Authentication

## Overview
Add social authentication using OAuth2 with Google and GitHub providers.

## Tasks
- [ ] Install dependencies (passport, passport-google-oauth20, passport-github2)
- [ ] Create authentication routes in `/api/auth`
- [ ] Implement passport strategies for each provider
- [ ] Add session management middleware
- [ ] Create login/logout UI components
- [ ] Add environment variables for OAuth credentials
- [ ] Write integration tests

## Detailed Steps
1. **Dependencies**: Add to package.json...
2. **Routes**: Create `/api/auth/google` and `/api/auth/github`...
```

### 何时使用计划模式

| Scenario   | 使用计划模式？                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| 复杂的多文件更改   | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Yes" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                       |
| 涉及多个接触点的重构 | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Yes" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                       |
| 新功能实现      | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-check" aria-label="Yes" role="img"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path></svg>                                                                                                       |
| 快速修复漏洞     | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="No" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |
| 单个文件更改     | <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-x" aria-label="No" role="img"><path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path></svg> |

### 探索→计划→代码→提交工作流

为获得最佳复杂任务结果：

* **浏览**：

  `Read the authentication files but don't write code yet`

* **计划**：

  `/plan Implement password reset flow`

* **审查**：

  检查计划，建议修改

* **实现**：

  `Proceed with the plan`

* **验证**：

  `Run the tests and fix any failures`

* **提交**：

  `Commit these changes with a descriptive message`

## 3. 利用无限会话

### 自动上下文窗口管理

```
          Copilot 命令行界面（CLI） 具有 **无限会话**。 你无需担心上下文耗尽。 系统通过智能压缩自动管理上下文，以汇总对话历史记录，同时保留基本信息。

          **会话存储位置：**
```

```text
~/.copilot/session-state/{session-id}/
├── events.jsonl      # Full session history
├── workspace.yaml    # Metadata
├── plan.md           # Implementation plan (if created)
├── checkpoints/      # Compaction history
└── files/            # Persistent artifacts
```

> \[!NOTE]
> 如果需要手动触发压缩，请使用 `/compact`。 这很少是必需的，因为系统会自动处理它。

### 会话管理命令

若要查看有关当前 CLI 会话的信息，请输入：

```copilot
/session
```

若要查看任何会话检查点的列表，请输入：

```copilot
/session checkpoints
```

> \[!NOTE]
> 压缩会话上下文时会创建检查点，并允许查看创建的 Copilot 摘要上下文。

若要查看特定检查点的详细信息，请输入：

```copilot
/session checkpoints NUMBER
```

其中 NUMBER 指定要显示的检查点。

若要查看在当前会话期间创建的任何临时文件（例如，由 Copilot 创建但不应保存到存储库的工件），请输入：

```copilot
/session files
```

若要查看当前计划（如果 Copilot 已生成计划），请输入：

```copilot
/session plan
```

### 最佳做法：使会议保持专注

虽然无限会话允许长时间运行的工作，但专注的会话会产生更好的结果：

* 使用 `/clear` 或 `/new` 在不相关的任务之间。
* 这会重置上下文并提高响应质量。
* 想想就像开始与同事进行新的对话。

###

```
          `/context` 命令
```

使用 `/context`. 可视化当前上下文使用情况。 它会显示以下内容的细分：

* 系统/工具令牌
* 消息历史记录令牌
* 可用空间
* 缓冲区分配

## 4. 有效地分配工作

###

```
          `/delegate` 命令

          **使用 Copilot云代理 将工作卸载到云中运行。** 这在以下方面特别有效：
```

* 可以异步运行的任务。
* 对其他存储库的更改。
* 你不想等待的长时间运行的操作。

  ```
          **示例提示词：**
  ```

```copilot
/delegate Add dark mode support to the settings page
```

```
          **发生的情况：**
```

* 你的请求将发送到 Copilot云代理。
* 智能体会创建一个包含更改的拉取请求。
* 可以在云代理工作期间继续在本地工作。

### 何时使用 `/delegate`

| 使用 `/delegate` | 在本地工作  |
| -------------- | ------ |
| 附带任务           | 核心功能开发 |
| 文档更新           | 调试     |
| 重构单独的模块        | 交互式探索  |

## 5. 常见工作流

### 代码库入门

在加入新项目时，将 Copilot 命令行界面（CLI） 用作您的配对编程合作伙伴。 例如，可以询问 Copilot：

* `How is logging configured in this project?`
* `What's the pattern for adding a new API endpoint?`
* `Explain the authentication flow`
* `Where are the database migrations?`

### 测试驱动开发

将 Copilot 命令行界面（CLI） 与之配对以开发测试。

* `Write failing tests for the user registration flow`
* *查看和批准测试。*
* `Now implement code to make all tests pass`
* *查看实现。*
* `Commit with message "feat: add user registration"`

### 代码评审协助

* ``/review Use Opus 4.5 and Codex 5.2 to review the changes in my current branch against `main`. Focus on potential bugs and security issues.``

### Git 操作

```
          Copilot 在 Git 工作流中表现出色：
```

* ``What changes went into version `2.3.0`?``
* `Create a PR for this branch with a detailed description`
* ``Rebase this branch against `main` ``
* ``Resolve the merge conflicts in `package.json` ``

### Bug 调查

* ``The `/api/users` endpoint returns 500 errors intermittently. Search the codebase and logs to identify the root cause.``

### 重构

* `/plan Migrate all class components to functional components with hooks`

  然后回答Copilot提出的问题。 查看它创建的计划，并在必要时要求 Copilot 进行更改。 当你对计划感到满意时，可以提示： `Implement this plan`

## 6. 高级模式

### 在多个存储库中工作

```
          **
          Copilot 命令行界面（CLI） 提供灵活的多存储库工作流**，这是处理微服务、monorepos 或相关项目的团队的主要区别。

          **选项 1：从父目录运行**
```

```bash
# Navigate to a parent directory containing multiple repos
cd ~/projects
copilot
```

```
          Copilot 现在可以同时访问和处理所有子存储库。 这非常适合用于：
```

* 微服务体系结构
* 在相关存储库间进行协调更改
* 跨项目重构共享模式

  ```
          **选项 2：用于 `/add-dir` 扩展访问权限**
  ```

```bash
# Start in one repo, then add others (requires full paths)
copilot
/add-dir /Users/me/projects/backend-service
/add-dir /Users/me/projects/shared-libs
/add-dir /Users/me/projects/documentation
```

```
          **查看和管理允许的目录：**
```

```copilot
/list-dirs
```

```
          **示例工作流：协调的 API 更改**
```

```copilot
I need to update the user authentication API. The changes span:

- @/Users/me/projects/api-gateway (routing changes)
- @/Users/me/projects/auth-service (core logic)
- @/Users/me/projects/frontend (client updates)

Start by showing me the current auth flow across all three repos.
```

此多存储库能力使能：

* 跨领域重构（在所有地方更新共享模式）
* 客户端更新引起的 API 合同更改
* 引用多个代码库的文档
* 跨 monorepo 的依赖项升级

### 使用图像处理 UI 工作

```
          Copilot 可以处理视觉参考。 只需将图像直接**拖放**到 CLI 输入中，或引用图像文件：
```

```copilot
Implement this design: @mockup.png
Match the layout and spacing exactly
```

### 复杂迁移的清单

对于大规模更改：

```copilot
Run the linter and write all errors to `migration-checklist.md` as a checklist.
Then fix each issue one by one, checking them off as you go.
```

### 自主任务完成

切换到 Autopilot 模式，以允许 Copilot 在任务完成之前自主工作。 这非常适合不需要持续监督的长时间运行的任务。 有关详细信息，请参阅“[允许 GitHub Copilot CLI 自主工作](/zh/copilot/concepts/agents/copilot-cli/autopilot)”。

或者，通常可以通过在提示开始时使用 `/fleet` 斜杠命令来加快大型任务的速度，以允许 Copilot 将任务分解为子代理运行的并行子任务。 有关详细信息，请参阅“[使用 \`/fleet\` 命令并行运行任务](/zh/copilot/concepts/agents/copilot-cli/fleet)”。

## 7. 团队指南

### 建议的存储库设置

* **使用 `.github/copilot-instructions.md`** 创建：
  * 生成和测试命令
  * 代码样式指南
  * 提交前的必要检查
  * 体系结构决策

* **建立规范**：
  * 何时使用 `/plan` （复杂功能，重构）
  * 何时使用 `/delegate`（相关工作）
  * 通过 AI 协助进行代码评审

### 安全注意事项

* Copilot 命令行界面（CLI） 需要明确批准潜在的破坏性操作。
* 在接受之前，请查看所有建议的更改。
* 谨慎使用权限允许列表。
* 从不提交机密信息。
  Copilot 旨在避免这种情况，但要始终进行验证。

### 测量工作效率

可以跟踪的指标包括：

* 从问题到拉取请求的时间
* 合并前的迭代次数
* 代码评审反馈周期
* 测试覆盖率改进

## 获取帮助

在命令行中，可以使用以下命令显示帮助。 `copilot -h`

有关各种主题的帮助，请输入：

```bash
copilot help TOPIC
```

其中`TOPIC`可以是：`config`、、`commands``environment`、或`logging``permissions`。

### 在命令行界面 (CLI) 中

有关 CLI 中的帮助，请输入：

```copilot
/help
```

若要查看使用情况统计信息，请输入：

```copilot
/usage
```

若要将私人反馈提交到 GitHub 有关 Copilot 命令行界面（CLI）、提出 bug 报告或提交功能请求，请输入：

```copilot
/feedback
```

## 动手练习

尝试[使用 Copilot 命令行界面（CLI） 技能创建应用程序](https://github.com/skills/create-applications-with-the-copilot-cli)练习，以获得使用 Copilot 命令行界面（CLI） 构建应用程序的实践经验。

以下是你将了解的内容：

* 安装 Copilot 命令行界面（CLI）
* 使用问题模板创建问题
* 生成 Node.js CLI 计算器应用
* 扩展计算器功能
* 编写计算器函数的单元测试
* 创建、审核和合并你的提交请求

## 延伸阅读

* [关于 GitHub Copilot CLI](/zh/copilot/concepts/agents/about-copilot-cli)
* [使用 GitHub Copilot CLI](/zh/copilot/how-tos/use-copilot-agents/use-copilot-cli)
* [GitHub Copilot CLI 命令参考](/zh/copilot/reference/copilot-cli-reference/cli-command-reference)
* [
  Copilot 计划和定价](https://github.com/features/copilot/plans)