# 使用GitHub Copilot 命令行界面 (CLI)进行研究

`/research`斜杠命令将Copilot变为你的研究助理，帮助收集有关某个主题的深入信息和洞察。

## 介绍

```
          Copilot 命令行界面（CLI）的`/research`斜杠命令是一个强大的工具，用于深入研究和调查。 当输入 `/research` 并跟随要了解的内容详情时，Copilot 会激活一个专门的研究代理，从代码库、相关的 GitHub 存储库以及 Web 收集并处理信息。 此内置自定义代理生成包含引文的综合 Markdown 报告，以及 CLI 中的简要摘要。 你可以查看完整的报告并将其保存为一个代码片段 GitHub，方便共享。
```

该命令旨在提供有关代码库、API、库、软件架构及其他技术主题的复杂问题的详尽且有充分引用的解答。

## 使用`/research`斜杠命令

在交互式 CLI 会话中，输入：

```copilot copy
/research TOPIC
```

```
          `TOPIC` 是您想了解内容的自然语言描述。
```

根据你授予 CLI 的权限， Copilot 可能会要求你授予权限，以便创建一个目录，以便在其编译研究时存储数据。

研究完成后， Copilot 会显示关键发现摘要，并提供一个包含完整报表的 Markdown 文件的链接。

## 查看和共享研究报告

可以使用研究完成时显示的链接在 Markdown 文件的默认编辑器中查看完整报告。

或者，按 <kbd>Ctrl</kbd>+<kbd>Y</kbd> 在终端中打开当前会话的最新研究报告。

> \[!NOTE]
> 按 <kbd>Ctrl</kbd>+<kbd>Y</kbd> 时用于显示报表的应用程序由环境变量（优先顺序）的值`COPILOT_EDITOR``VISUAL``EDITOR`决定。 如果未设置这些设置，CLI 将在 Linux 上使用 vi 或在 macOS 上使用 vim。

若要共享报表，可以将其保存到文件或创建 GitHub gist。

1. 若要创建一个代码片段（gist），请输入：

   ```copilot copy
   /share gist research
   ```

   要将内容保存到文件中，请输入：

   ```copilot copy
   /share file research [PATH]
   ```

   如果省略参数 `[PATH]` ，该文件将保存到当前工作目录中，其中包含基于研究主题的文件名。

2. 使用向上/向下键和回车键，从您在当前会话中创建的研究报告列表中选择要共享的报告。

   gist 的 URL 或文件的路径显示在 CLI 中。

## 的优势 `/research`

* **深度重于速度**：正常聊天已针对快速回答进行了优化。
  `/research` 已进行优化以确保全面性。 它生成可以长达数百行的报表，其中包含体系结构关系图、代码片段和引文。

* **保存和可共享输出**：报表作为 Markdown 文件保存到磁盘。 可以随时查看和共享它们。 这使得研究输出成为永久项目，而不是暂时性聊天消息。

* **跨存储库工作**：登录 GitHub后，代理可以跨组织的存储库进行搜索，从任何公共或可访问的专用存储库提取文件，并搜索 Web -它不限于本地代码库。

* **查询类型适应**：响应格式自动根据您是询问操作方法问题、概念性问题，还是请求技术深入探讨而进行调整，而不是生成标准化、一刀切的报告。

* **自主操作**：该代理不会通过澄清问题来打扰您。 它做出合理的假设，并在“置信度评估”部分明确记录这些假设。

## 针对`/research`的示例提示

### 基本代码体系结构

```copilot copy
/research What is the architecture of this codebase?
```

```
          **为什么工作出色**：研究代理能够访问当前工作目录范围内的 `grep`、`glob` 和 `view` 工具。 它可以浏览完整的项目树、读取关键文件并合成体系结构概述，这是正常聊天响应可能仅以表面方式执行的事情。 代理通常会生成体系结构关系图、组件细分和数据流说明。
```

### 特定技术的工作原理

```copilot copy
/research How does React implement concurrent rendering?
```

```
          **为什么它效果良好**：该代理使用专用工具从互联网提取信息，并查看实际的 React 源代码GitHub。 它指示将代码优先于文档，并提供行号的文件路径。
```

### 了解内部实现模式

```copilot copy
/research How are feature flags implemented at our organization?
```

```
          **为什么工作出色**：智能体被明确指示“始终将内部/专用实现优先于公共/开源替代方案”，并首先使用 `org:ORGNAME` 查询搜索组织的存储库。 它知道查找内部命名模式，例如`-hub`， `-service`。 `-client`
```

### 比较技术或方法

```copilot copy
/research What's the difference between JWT and session-based authentication?
```

```
          **为什么它效果很好**：代理通过叙述性解释、权衡取舍和设计决策来调整其对“概念性/解释性问题”的回答。 它通常使用表来比较三个或多个项。
```

### 流程问题/操作手册问题

```copilot copy
/research How do I add an endpoint to the API?
```

```
          **它为何有效**：代理经过训练以检测查询类型，并为流程/操作类型的问题提供分步指导，以及指向相关文档、联系人和系统的链接。
```

### 深入了解特定代码库组件

```copilot copy
/research How is the session management system implemented in this repo?
```

```
          **为什么工作出色**：将本地工具（`grep`、`glob`、`view`）与智能体的“跟踪导入、调用和类型引用”和“关注依赖项”的指令相结合，意味着将演练实际实现，而不仅仅是提供简要答案。
```

## 如果\_不\_想使用 `/research`

* **快速简单的问题**：如果只想了解“此函数的作用是什么？” 或“修复此 Bug”，正常聊天消息会更快、更合适。
  `/research` 专为需要广泛调查的问题而设计。

* **需要更改代码时**： `/research` 生成报表，而不是代码修改。 它使用`create`该工具保存报表文件，但不使用`edit``bash`其他代码修改工具。 如果需要代理实际更改代码，请使用正常提示（通常从计划模式开始）。

* **时间敏感的交互**：研究花费的时间比正常响应长，因为代理会进行许多工具调用（搜索代码、提取文件、搜索 Web）。 如果在编码流中需要快速答案，则正常聊天会更好。

## 考虑事项和注意事项

* **报告与会话相关联**：研究报告存储在特定于会话的研究目录中。 如果开始一个新会话，当使用 <kbd>Ctrl</kbd>+<kbd>Y</kbd> 快捷键或 `/share` 斜杠命令时，CLI 中将无法使用以前的研究。 但是，可以从相应的 `~/.copilot/session-state/SESSION-ID/research/` 目录访问以前的报表。

  在 Linux 或 macOS 中，可以在终端命令提示符处使用以下命令列出 10 个最新的 CLI 会话目录：

  ```bash copy
  ls -dtl ~/.copilot/session-state/*/ | head -10
  ```

* **研究代理使用特定模型**：研究代理硬编码为使用特定 AI 模型（请参阅 [GitHub Copilot CLI 命令参考](/zh/copilot/reference/copilot-cli-reference/cli-command-reference#built-in-agents)）。 无法通过 `/model` 命令配置模型选择。 无论为主会话选择哪种模型，研究代理始终都使用定义的模型。

* **报表质量因查询类型而异**：代理将查询分类为三种类型，并相应地调整其响应：

  * **处理问题** →分步指南（最少的代码）。
  * **概念性问题** →上下文的叙述性说明。
  * **技术深入探讨** →完整的体系结构关系图、组件部分和代码示例。

  您措辞提示的方式可能会影响代理对于研究分类的选择。 例如，如果你希望进行深入的技术讨论，但将问题表述为“什么是 X？”，你可能会获得概念性答案。 在这种情况下，可以重新表述提示，以便更明确要 Copilot 生成的报表类型。 例如：“给我一个技术深入分析 X，其中包含架构图和代码示例。

## 延伸阅读

* [GitHub Copilot 命令行界面 (CLI)](/zh/copilot/how-tos/copilot-cli)
* [使用 GitHub Copilot CLI](/zh/copilot/how-tos/use-copilot-agents/use-copilot-cli)