本文档介绍了如何在集成开发环境 (IDE) 中将 Gemini Code Assist 代理模式配置为结对编程器并使用该模式。
VS Code 中提供代理模式。
您可以在代理模式下通过以下方式使用 Gemini Code Assist:
- 询问有关代码的问题。
- 在代理模式下使用内置工具和上下文来改进生成的内容。
- 配置 MCP 服务器以扩展代理的功能。
- 获取多步骤复杂任务的解决方案。
- 根据设计文档、问题、
TODO
注释生成代码。 - 通过在执行期间对计划和工具使用情况进行评论、修改和审批,来控制代理行为。
代理模式的运作方式
在代理模式下,您的提示会随可用的工具列表一起发送到 Gemini API。Gemini API 会处理提示并返回回答。回答可能是直接答案,也可能是使用可用工具的请求。
当用户请求使用工具时,代理会准备使用该工具,并检查是否可以在没有明确权限的情况下使用该工具。对于会修改文件系统或对任何资源执行变异操作的工具请求,除非您已将 Gemini 配置为始终允许使用相应工具,否则 Gemini 会要求您允许该操作。只读工具请求可能不会在完成任务之前请求权限。当系统要求您允许使用某项工具时,您可以选择允许或拒绝该操作。智能体可能还会提供一些选项,让您选择始终允许某个工具或服务器或允许类似操作。
获得使用工具的权限后,代理会使用该工具完成所需的操作,并将操作结果发送回 Gemini API。Gemini 会处理工具操作的结果,并生成另一条回答。这种行动和评估的循环会一直持续,直到任务完成。
对于复杂的任务,Gemini 可能会显示高级别方案,供您审批。您可以在开始流程之前微调方案,并在聊天中提出问题。对方案感到满意后,您可以批准该方案。 代理开始处理第一个任务,并在执行方案时根据需要向您询问澄清问题或请求权限。
代理模式上下文
上下文可让智能体针对给定的提示生成更优质的回答。上下文可以来自 IDE 中的文件、本地系统文件夹中的文件、工具响应和提示详细信息。
根据您的 IDE 和设置,代理可能会获得不同的上下文。
在代理模式下,Gemini Code Assist 通常可以通过以下方法获取上下文:
- IDE 工作区中的信息。
- 来自内置工具(例如 grep、终端、文件读取或文件写入)的工具响应。
- Google 搜索回答。
- 提示或工具中提供的指定网址中的内容。
- 您在 Markdown 中创建的上下文文件,其范围限定为您的所有项目、特定项目或特定组件、模块或项目子部分的特定说明。上下文文件可以包含您希望 Gemini 在代理模式下互动时了解的指令、指南或上下文。
智能体模式内存
Gemini Code Assist 代理模式利用 Gemini CLI 内存发现服务来查找和加载为代理提供上下文的 GEMINI.md
文件。内存发现服务会按层次结构搜索文件,从当前工作目录开始,向上移动到项目根目录和您的主目录。它还会在子目录中搜索。
您可以拥有全局、项目级和组件级上下文文件,这些文件会全部合并,以便为模型提供最相关的信息。
您可以使用 /memory show
命令查看所有已加载的 GEMINI.md
文件的组合内容,并使用 /memory refresh
命令重新加载这些文件。
Gemini CLI 扩展服务
在 VS Code 中,您可以使用 Gemini CLI 扩展程序来配置和扩展 Gemini Code Assist 代理模式功能。
代理会在以下两个位置查找扩展程序:
WORKSPACE/.gemini/extensions
,其中WORKSPACE
是您当前的工作区。~/.gemini/extensions
,其中~
是您的主目录。
代理会从这两个位置加载所有扩展程序,但如果这两个位置中都存在同名的扩展程序,则工作区目录中的扩展程序将具有更高的优先级。每个扩展程序都是一个包含 gemini-extension.json
文件的目录。此文件包含扩展程序的配置。
如需了解详情,请参阅 Gemini CLI 扩展程序。
限制
使用代理模式时,存在以下限制:
- 智能体无法调用 Gemini Code Assist 工具。您必须退出代理模式才能使用这些工具。
- 代理无法使用代码自定义。您必须退出代理模式才能使用代码自定义功能。
- 代理模式不支持具有多个根目录的项目。如果您在具有多个根目录的项目中使用代理模式,则代理只能访问其遇到的第一个根目录。
- 在代理模式下,不支持 Gemini for Google Cloud 日志。
准备工作
- 设置 Gemini Code Assist。
- 将 Gemini Code Assist 发布渠道设置为“内部人员” build:
- 打开命令面板 (
Cmd
+Shift
+P
),然后选择打开用户设置 JSON。 - 将以下行添加到用户设置 JSON 中:
"geminicodeassist.updateChannel": "Insiders",
- 打开命令面板 (
使用代理模式
在代理模式下,你可以让 Gemini 完成高级目标和复杂任务。
如需充分利用代理模式,请遵循提示最佳实践,并尽可能提供详细信息。
如需切换到代理模式,请执行以下操作:
VS Code
- 如需打开 Gemini Code Assist 对话,请在 IDE 的活动栏中点击 spark Gemini Code Assist。
- 点击代理切换开关,进入代理模式。切换到代理模式时,切换开关会突出显示;在常规聊天中,切换开关会显示为灰色。
- 在 Gemini Code Assist 对话中,输入提示。
Gemini 会针对您的提示给出回答,或请求使用某项工具的权限。
如需停止代理,请点击
停止。如需使用标准 Gemini Code Assist 对话功能,请点击
New chat(新建对话)以创建新对话。Gemini Code Assist 智能体模式由 Gemini CLI 提供支持。
IntelliJ
Gemini Code Assist for IntelliJ 或其他 JetBrains IDE 不支持此功能。
为代理模式配置工具
工具是一大类服务,智能体可以使用这些服务来获取上下文信息,并在回答提示时执行操作。一些示例工具包括 grep 和文件读写等内置工具、本地或远程 Model Context Protocol (MCP) 服务器,或定制的服务实现。
配置 MCP 服务器
如需控制哪些服务器可在代理模式下使用,请根据服务器文档将这些服务器添加到 Gemini 设置 JSON 中。
VS Code
- 安装 MCP 服务器所需的任何依赖项。
- 打开位于
~/.gemini/settings.json
中的 Gemini 设置 JSON 文件,其中~
是您的主目录。 根据服务器说明,将本地或远程 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"] } } }
打开命令面板,然后选择 Developer: Reload Window。
您配置的 MCP 服务器可供代理在代理模式下使用。
IntelliJ
Gemini Code Assist for IntelliJ 或其他 JetBrains IDE 不支持此功能。
MCP 服务器身份验证
对于需要身份验证的 MCP 服务器,您可以将其添加到 Gemini 设置 JSON 中。
以下示例添加了 GitHub 的个人访问令牌:
{
//other settings...
"github": {
"command": "/Users/username/code/github-mcp-server/cmd/github-mcp-server/github-mcp-server",
"args": ["stdio"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ACCESS_TOKEN"
}
},
// other settings...
}
其中,ACCESS_TOKEN
是用户的访问令牌。
创建上下文文件
VS Code
在与您希望上下文应用到的范围相匹配的位置创建一个名为
GEMINI.md
的文件。下表详细介绍了不同范围的上下文文件的位置:范围 位置 您的所有项目 ~/.gemini/GEMINI.md
特定项目 您的工作目录或任何父目录,直至项目根目录(由 .git
文件夹标识)或您的主目录。项目的特定组件、模块或子部分 工作目录的子目录。 代理的记忆系统是通过从多个位置加载上下文文件来创建的。来自更具体的文件(例如特定组件或模块的文件)的上下文会替换或补充来自更一般的上下文文件(例如
~/.gemini/GEMINI.md
中的全局上下文文件)的内容。以 Markdown 格式撰写您希望代理使用的任何规则、样式指南信息或上下文,然后保存该文件。如需了解详情,请参阅 GitHub 上的示例上下文文件。
IntelliJ
Gemini Code Assist for IntelliJ 或其他 JetBrains IDE 不支持此功能。
使用命令
如需查看 Gemini Code Assist 代理模式下可用的 Gemini CLI 命令,请在 Gemini 对话中输入 /
。
您可以在代理模式下使用以下 Gemini CLI 命令:
/tools
:显示代理模式会话中可用的工具列表。子命令包括以下内容:desc
或descriptions
:显示每种工具的详细说明。nodesc
或nodescriptions
:隐藏工具说明,仅显示工具名称。
/memory
:管理从GEMINI.md
文件加载的代理的指令上下文。子命令包括以下内容:show
:显示从所有可用的GEMINI.md
文件加载的当前内存的完整串联内容。refresh
:从可用位置的所有GEMINI.md
文件重新加载内存。如需了解GEMINI.md
文件如何影响代理的分层记忆,请参阅 Gemini CLI 配置文档。
/mcp
:列出已配置的模型上下文协议 (MCP) 服务器、其连接状态、服务器详细信息和可用工具。子命令包括以下内容:desc
或descriptions
:显示 MCP 服务器和工具的详细说明。nodesc
或nodescriptions
:隐藏 MCP 服务器说明,仅显示 MCP 服务器名称。schema
:显示 MCP 服务器配置参数的完整 JSON 架构。
/stats
:显示详细的代理模式会话统计信息和时长。
如需详细了解 Gemini CLI 命令,请参阅 Gemini CLI 命令。请注意,并非所有 Gemini CLI 命令都可在代理模式下使用。
Yolo 模式
您可以使用 YOLO 模式自动允许所有代理操作。
如需配置 YOLO 模式,请执行以下操作:
打开 VS Code 用户设置 JSON 文件:
- 打开命令面板 (
ctrl
/command
+Shift
+P
)。 - 选择 Preferences: Open User Settings (JSON)。
- 打开命令面板 (
将以下内容添加到 VS Code 用户设置 JSON 文件中:
//other settings... "geminicodeassist.agentYoloMode": "true", //other settings...
打开命令面板,然后选择 Developer: Reload Window。
代理模式使用 yolo 模式,并且在您向其发送提示时,不会在采取行动之前征求您的许可。
其他提示
尝试使用以下提示,并替换成您自己的信息:
- “此代码库有何用途?帮我了解架构。”
- “此 [类/函数] 有何作用?”
- “为该代码库添加一项功能 - "[link-or-path-to-codebase]"。”
- “重构函数 [A] 和 [B],以使用通用方法 [C]。”
- “修复了 GitHub 问题 [link-to-github-issue]。”
- “构建一个应用,用于在 [环境] 中实现 [目标],并提供一个界面,让用户能够执行 [任务]。”
- “将此代码库中的库版本从 [X] 迁移到 [Y]。”
- “优化此 Go 代码的性能,使其运行得更快。”
- “使用 [API 名称] 来构建此功能。”
- “实现一种算法,用于执行 [x]、[Y] 和 [Z]。”
后续步骤
- 阅读 Gemini Code Assist 概览。
- 了解一些 MCP 服务器示例。
- 在 GitHub 上查找更多 MCP 服务器。
- 通过 IDE 发送反馈。