将代理对话用作配对编程器

本文档介绍了如何在集成式开发环境 (IDE) 中将 Gemini Code Assist 代理模式配置为配对编程器并使用该模式。

在智能体模式下,您可以执行以下任何操作,以及更多其他操作:

  • 提出有关代码的问题。
  • 利用上下文和内置工具改进生成的内容。
  • 配置 MCP 服务器以扩展智能体的功能。
  • 获取包含多个步骤的复杂任务的解决方案。
  • 根据设计文档、问题和 TODO 注释生成代码。
  • 通过在执行期间对方案和工具使用进行注释、修改和审批来控制代理行为。

限制

标准 Gemini Code Assist 对话的部分功能可能无法在智能体模式下使用,或者可能与在标准对话中的运作方式有所不同。

在智能体模式下,内容复述不可用。在智能体模式下,Gemini 不会引用来源,并且您无法停用与引用来源匹配的代码建议

准备工作

VS Code

  1. 在 IDE 中设置要使用的 Gemini Code Assist 版本:

IntelliJ

在 IDE 中设置要使用的 Gemini Code Assist 版本:

使用智能体模式

在代理模式下,你可以让 Gemini 完成高级别目标和复杂任务。

如需充分利用代理模式,请遵循提示最佳实践,并提供尽可能详细的信息。

如需切换到代理模式,请执行以下操作:

VS Code

  1. 如需打开 Gemini Code Assist 对话,请在 IDE 的活动栏中点击 spark Gemini Code Assist
  2. 点击代理切换开关,进入代理模式。切换到代理模式时,切换开关会突出显示;在常规对话中,切换开关会显示为灰色。
  3. 在 Gemini Code Assist 对话中,输入提示。

Gemini 会针对您的提示给出回答,或请求使用某个工具的权限。

如需停止代理,请点击 停止

如需使用标准 Gemini Code Assist 对话,请点击 发起新对话以创建新对话。

Gemini Code Assist 代理模式由 Gemini CLI 提供支持。

IntelliJ

  1. 点击工具窗口栏中的 spark Gemini。在系统提示您登录时,登录您的账号。
  2. 选择智能体标签页。
  3. 描述您希望智能体执行的任务。
  4. 当智能体按照步骤完成任务时,您可以选择查看并批准任何更改。

  5. 可选:如需自动批准更改,请依次选择设置 智能体选项,然后点击自动批准更改旁边的复选框。

为智能体模式配置工具

工具是一大类服务,代理可以使用这些工具来获取上下文信息,并在回答提示时执行操作。一些示例工具包括 grep 和文件读取或写入等内置工具、本地或远程 Model Context Protocol (MCP) 服务器及其可执行函数,或定制的服务实现。

控制内置工具的使用

智能体模式可以访问您的内置工具,例如文件搜索、文件读取、文件写入、终端命令等。

VS Code

您可以使用 coreToolsexcludeTools 设置来控制 Gemini 在智能体模式下可以访问哪些工具。

coreTools
可让您指定要提供给模型的工具列表。您还可以为支持此功能的工具指定特定于命令的限制。例如,将以下内容添加到 Gemini 设置 JSON 中将仅允许执行 shell ls -l 命令:"coreTools": ["ShellTool(ls -l)"]
excludeTools
可让您指定不想向模型提供的工具列表。您还可以为支持此功能的工具指定特定于命令的限制。例如,将以下内容添加到 Gemini 设置 JSON 中会阻止使用 rm -rf 命令:"excludeTools": ["ShellTool(rm -rf)"]

如果某个工具同时列在 excludeToolscoreTools 中,则该工具会被排除。

如需配置智能体模式下可用的内置工具,请执行以下操作:

  1. 打开位于 ~/.gemini/settings.json 中的 Gemini 设置 JSON,其中 ~ 是您的主目录。
  2. 如需将智能体工具的使用限制为已获批准的工具,请将以下行添加到 Gemini 设置 JSON 中:

    "coreTools": ["TOOL_NAME_1,TOOL_NAME_2"]
    

    TOOL_NAME_1TOOL_NAME_2 替换为您希望智能体能够访问的内置工具的名称。

    您可以根据需要列出任意数量的内置工具。 默认情况下,所有内置工具都可供智能体使用。

  3. 如需将智能体工具的使用限制为特定工具命令,请将以下行添加到 Gemini 设置 JSON 中:

    "coreTools": ["TOOL_NAME(COMMAND)"]
    

    替换以下内容:

    • TOOL_NAME:内置工具的名称
    • COMMAND:您希望智能体能够使用的内置工具命令的名称。
  4. 如需将某个工具从智能体使用中排除,请将以下行添加到 Gemini 设置 JSON 中:

    "excludeTools": ["TOOL_NAME_1,TOOL_NAME_2"]
    

    TOOL_NAME_1TOOL_NAME_2 替换为您要从智能体使用中排除的内置工具的名称。

  5. 如需将某个工具命令从智能体使用中排除,请将以下行添加到 Gemini 设置 JSON 中:

    "excludeTools": ["TOOL_NAME(COMMAND)"]
    

    替换以下内容:

    • TOOL_NAME:内置工具的名称
    • COMMAND:您要从智能体使用中排除的内置工具命令的名称。

如需详细了解 coreToolsexcludeTools 配置设置,请参阅 Gemini CLI 配置文档

IntelliJ

Gemini Code Assist for IntelliJ 或其他 JetBrains IDE 不支持此功能。

配置 MCP 服务器

VS Code

如需控制哪些服务器可在智能体模式下使用,请根据服务器文档将这些服务器添加到 Gemini 设置 JSON。

  1. 安装 MCP 服务器所需的所有依赖项。
  2. 打开位于 ~/.gemini/settings.json 中的 Gemini 设置 JSON,其中 ~ 是您的主目录。
  3. 根据服务器指令,将本地或远程 MCP 服务器添加到 Gemini 设置 JSON 中。

    以下示例添加了两个远程 Cloudflare MCP 服务器,并在本地机器上安装了 GitHub 和 GitLab 服务器。

    {
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_example_personal_access_token12345"
          }
        },
        "gitlab": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-gitlab"]
        },
        "cloudflare-observability": {
          "command": "npx",
          "args": ["mcp-remote", "https://observability.mcp.cloudflare.com/sse"]
        },
        "cloudflare-bindings": {
          "command": "npx",
          "args": ["mcp-remote", "https://bindings.mcp.cloudflare.com/sse"]
        }
      }
    }
    

  4. 打开命令面板,然后选择 Developer: Reload Window

您配置的 MCP 服务器可供智能体在智能体模式下使用。

IntelliJ

如需控制哪些服务器可在智能体模式下使用,请将这些服务器添加到 mcp.json 文件中,并将其放置在 IDE 的配置目录中。

  1. 安装 MCP 服务器所需的所有依赖项。
  2. 在 IDE 的配置目录中创建一个 mcp.json 文件。
  3. 根据服务器指令,将本地或远程 MCP 服务器添加到 Gemini 设置 JSON 中。

    以下示例添加了远程 Cloudflare MCP 服务器,并在本地机器上安装了 GitHub 和 GitLab 服务器。

    {
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_example_personal_access_token12345"
          }
        },
        "gitlab": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-gitlab"]
        },
        "cloudflare-observability": {
          "command": "npx",
          "args": ["mcp-remote", "https://observability.mcp.cloudflare.com/sse"]
        },
        "cloudflare-bindings": {
          "command": "npx",
          "args": ["mcp-remote", "https://bindings.mcp.cloudflare.com/sse"]
        }
      }
    }
    

您配置的 MCP 服务器可供智能体在智能体模式下使用。

MCP 服务器身份验证

某些 MCP 服务器需要进行身份验证。请按照服务器文档创建任何所需的用户令牌,然后根据需要指定这些令牌。本地服务器可能接受环境变量;远程服务器可能接受标头中的凭据。

VS Code

对于需要身份验证的 MCP 服务器,您可以将其添加到 Gemini 设置 JSON 中。

以下示例展示了如何为 GitHub 本地和远程 MCP 服务器指定个人访问令牌:

{
  "mcpServers": {
    "github-remote": {
      "httpUrl": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer ACCESS_TOKEN"
      }
    },
    "github-local": {
      "command": "/Users/username/code/github-mcp-server/cmd/github-mcp-server/github-mcp-server",
      "args": ["stdio"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ACCESS_TOKEN"
      }
    }
  }
}

其中,ACCESS_TOKEN 是用户的访问令牌。

IntelliJ

对于需要身份验证的 MCP 服务器,您可以将其添加到 mcp.json 文件中。

以下示例添加了 GitHub 本地服务器的个人访问令牌:

{
  "mcpServers": {
    "github-local": {
      "command": "/Users/username/code/github-mcp-server/cmd/github-mcp-server/github-mcp-server",
      "args": ["stdio"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ACCESS_TOKEN"
      }
    }
  }
}

其中,ACCESS_TOKEN 是用户的访问令牌。

创建上下文文件

上下文可让代理针对给定的提示生成更优质的回答。上下文可以来自 IDE 中的文件、本地系统文件夹中的文件、工具回答和提示详细信息。如需了解详情,请参阅智能体模式上下文

VS Code

  1. 在与您希望上下文应用到的范围相匹配的位置创建一个名为 GEMINI.md 的文件。下表详细介绍了不同范围的上下文文件的位置:

    范围 位置
    您的所有项目 ~/.gemini/GEMINI.md
    特定项目 您的工作目录或任何父级目录,直至项目根目录(由 .git 文件夹标识)或您的主目录。
    项目的特定组件、模块或子部分 工作目录的子目录。

    代理的记忆系统是通过从多个位置加载上下文文件来创建的。来自更具体的文件(例如特定组件或模块的文件)的上下文会替换或补充来自更通用的上下文文件(例如 ~/.gemini/GEMINI.md 中的全局上下文文件)的内容。

  2. 以 Markdown 格式撰写您希望智能体使用的任何规则、样式指南信息或上下文,然后保存该文件。如需了解详情,请参阅 GitHub 上的示例上下文文件

智能体会包含上下文文件中的信息以及您发送给它的任何提示。

IntelliJ

  1. 在项目根目录下创建一个名为 GEMINI.mdAGENT.md 的文件。

  2. 以 Markdown 格式撰写您希望智能体使用的任何规则、样式指南信息或上下文,然后保存该文件。

智能体会包含上下文文件中的信息以及您发送给它的任何提示。您还可以通过使用 @FILENAME 语法手动包含文件来添加上下文,其中 FILENAME 是包含要包括的上下文信息的文件名。

使用命令

借助斜杠 / 命令,您可以快速运行类似于终端窗口中的命令。

VS Code

您可以在智能体模式下使用以下 Gemini CLI 命令:

  • /tools:显示智能体模式会话中可用的工具列表。
  • /mcp:列出已配置的 Model Context Protocol (MCP) 服务器、其连接状态、服务器详细信息和可用工具。

如需详细了解 Gemini CLI 命令,请参阅 Gemini CLI 命令。请注意,并非所有 Gemini CLI 命令都可在智能体模式下使用。

IntelliJ

Gemini Code Assist for IntelliJ 或其他 JetBrains IDE 不支持此功能。

始终允许智能体操作

您可以自动允许所有智能体操作。

如需自动允许所有智能体操作,请执行以下操作:

VS Code

使用 yolo 模式自动允许所有智能体操作。YOLO 模式只能在可信工作区中使用。

如需配置 yolo 模式,请执行以下操作:

  1. 打开 VS Code 用户设置 JSON 文件:

    1. 打开命令面板 (ctrl/command + Shift + P)。
    2. 选择 Preferences: Open User Settings (JSON)
  2. 将以下内容添加到 VS Code 用户设置 JSON 文件中:

    //other settings...
    
    "geminicodeassist.agentYoloMode": true,
    //other settings...
    
  3. 打开命令面板,然后选择 Developer: Reload Window

代理模式使用 yolo 模式,并且在您向其发送提示时,不会在执行操作之前征得您的许可。使用受限工作区时,无论此设置如何,代理都会在采取行动之前提示用户。

IntelliJ

如需自动批准更改,请在 Gemini 对话智能体标签页中,依次选择 设置 智能体选项,然后点击自动批准更改旁边的复选框。

智能体模式会自动批准所有请求,并且在您向其发送提示时,不会在执行操作之前征得您的许可。

其他提示

尝试使用以下提示,并替换成您自己的信息:

  • "What does this repository do? Help me understand the architecture."
  • "What does this [class/function] do?"
  • "Add a feature to this codebase - "[link-or-path-to-codebase]"."
  • "Refactor function [A] and [B] to use the common method [C]."
  • "Fix the GitHub issue [link-to-github-issue]."
  • "Build an application to do [goal] with a UI that lets the user do [task] in the [environment]."
  • "Migrate library versions in this repository from [X] to [Y]."
  • "Optimize performance of this Go code so that it runs faster."
  • "Use [name-of-API] to build out this feature."
  • "Implement an algorithm to do [x], [Y], and [Z]."

后续步骤