Skip to main content

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

          `/research` 斜杠命令将 Copilot 转换为研究助理,收集有关某个主题的深入信息和见解。

介绍

Copilot 命令行界面(CLI) 的 /research 斜杠命令是可用于深入研究和分析的强大工具。 当输入 /research 后跟要了解的详细信息时,Copilot 将激活专用研究代理,以便从代码库、相关 GitHub 存储库以及网络中收集并处理信息。 此内置自定义代理生成包含引文的综合 Markdown 报告,以及 CLI 中的简要摘要。 可以查看完整的报表并将其另存为 GitHub上的 gist,以便于共享。

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

使用/research斜杠命令

在交互式 CLI 会话中,输入:

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

根据您授予 CLI 的权限,Copilot 可能会请求您授予创建一个用于存储数据的目录的权限,以便在编译研究时使用。

研究完成后,Copilot 将显示关键调查发现摘要,并提供指向包含完整报告的 Markdown 文件的链接。

查看和共享研究报告

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

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

注意

Ctrl+Y 时用于显示报表的应用程序由环境变量(优先顺序)的值COPILOT_EDITOR``VISUAL``EDITOR决定。 如果未设置这些设置,CLI 将在 Linux 上使用 vi 或在 macOS 上使用 vim。

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

  1. 若要创建一个代码片段(gist),请输入:

    Copilot prompt
    /share gist research
    

    要将内容保存到文件中,请输入:

    Copilot prompt
    /share file research [PATH]
    

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

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

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

的优势 /research

  •         **深度重于速度**:正常聊天已针对快速回答进行了优化。 
            `/research` 已进行优化以确保全面性。 它生成可以长达数百行的报表,其中包含体系结构关系图、代码片段和引文。
    
  •         **保存和可共享输出**:报表作为 Markdown 文件保存到磁盘。 可以随时查看和共享它们。 这使得研究输出成为永久项目,而不是暂时性聊天消息。
    
  •         **跨存储库工作**:登录到 GitHub时,代理可以跨组织的存储库进行搜索、从任何公共或可访问的专用存储库中提取文件,以及搜索 Web-它不限于本地代码库。
    
  •         **查询类型适应**:响应格式自动根据您是询问操作方法问题、概念性问题,还是请求技术深入探讨而进行调整,而不是生成标准化、一刀切的报告。
    
  •         **自主操作**:该代理不会通过澄清问题来打扰您。 它做出合理的假设,并在“置信度评估”部分明确记录这些假设。
    

针对/research的示例提示

基本代码体系结构

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

特定技术的工作原理

Copilot prompt
/research How does React implement concurrent rendering?
          **为什么它正常工作**:代理使用专用工具从 Internet 拉取信息,并查看 GitHub上的实际 React 源代码。 它指示将代码优先于文档,并提供行号的文件路径。

了解内部实现模式

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

比较技术或方法

Copilot prompt
/research What's the difference between JWT and session-based authentication?
          **为什么它效果很好**:代理通过叙述性解释、权衡取舍和设计决策来调整其对“概念性/解释性问题”的回答。 它通常使用表来比较三个或多个项。

流程问题/操作手册问题

Copilot prompt
/research How do I add an endpoint to the API?
          **它为何有效**:代理经过训练以检测查询类型,并为流程/操作类型的问题提供分步指导,以及指向相关文档、联系人和系统的链接。

深入了解特定代码库组件

Copilot prompt
/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
    ls -dtl ~/.copilot/session-state/*/ | head -10
    
  •         **研究代理使用特定模型**:研究代理硬编码为使用特定 AI 模型(请参阅 [AUTOTITLE](/copilot/reference/copilot-cli-reference/cli-command-reference#built-in-agents))。 无法通过 `/model` 命令配置模型选择。 无论为主会话选择哪种模型,研究代理始终都使用定义的模型。
    
  •         **报表质量因查询类型而异**:代理将查询分类为三种类型,并相应地调整其响应:
    

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

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

延伸阅读

  •         [AUTOTITLE](/copilot/how-tos/copilot-cli)
    
  •         [AUTOTITLE](/copilot/how-tos/use-copilot-agents/use-copilot-cli)