將代理程式聊天室當做結對程式設計師使用

本文說明如何在整合式開發環境 (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 logs

事前準備

  1. 設定 Gemini Code Assist
  2. 將 Gemini Code Assist 發布管道設為「搶先體驗」版本:
    1. 開啟指令區塊面板 (Cmd + Shift + P),然後選取「Open User Settings JSON」(開啟使用者設定 JSON)
    2. 在使用者設定 JSON 中加入下列程式碼:
      "geminicodeassist.updateChannel": "Insiders",

使用代理模式

在代理程式模式下,你可以要求 Gemini 完成高階目標和複雜工作。

如要充分發揮代理程式模式的效用,請遵循提示最佳做法,並盡可能提供詳細資訊。

如要切換至代理程式模式:

VS Code

  1. 如要開啟 Gemini Code Assist 對話,請在 IDE 的活動列中,點選 spark「Gemini Code Assist」
  2. 按一下「代理程式」切換按鈕,進入代理程式模式。切換至服務專員模式時,切換按鈕會醒目顯示;切換至一般對話時,切換按鈕則會顯示為灰色。
  3. 在 Gemini Code Assist 對話中輸入提示。

Gemini 會回覆提示,或要求使用工具的權限。

如要停止代理程式,請按一下「停止」

如要使用標準的 Gemini Code Assist 對話,請按一下「New chat」建立新的對話。

Gemini Code Assist 代理程式模式採用 Gemini CLI

IntelliJ

IntelliJ 或其他 JetBrains IDE 的 Gemini Code Assist 不支援這項功能。

設定代理程式模式的工具

工具是廣泛的服務類別,代理程式可用於回應提示時的背景資訊和動作。舉例來說,內建工具 (例如 grep 和檔案讀取/寫入)、本機或遠端 Model Context Protocol (MCP) 伺服器,或是專屬服務實作項目,都是可用的工具。

設定 MCP 伺服器

如要控管代理程式模式中可用的伺服器,請按照伺服器說明文件,將伺服器新增至 Gemini 設定 JSON。

VS Code

  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

IntelliJ 或其他 JetBrains IDE 的 Gemini Code Assist 不支援這項功能。

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

  1. 在符合您要套用環境範圍的位置,建立名為 GEMINI.md 的檔案。下表詳細列出不同範圍的內容檔案位置:

    範圍 位置
    所有專案 ~/.gemini/GEMINI.md
    特定專案 工作目錄或任何上層目錄,直到專案根目錄 (由 .git 資料夾識別) 或主目錄為止。
    專案的特定元件、模組或子區段 工作目錄的子目錄。

    代理程式的記憶體系統是從多個位置載入內容檔案所建立。來自更具體檔案 (例如特定元件或模組的檔案) 的內容,會覆寫或補充來自更一般內容檔案 (例如 ~/.gemini/GEMINI.md 的全域內容檔案) 的內容。

  2. 以 Markdown 格式撰寫任何規則、風格指南資訊或情境,供代理程式使用,然後儲存檔案。詳情請參閱 GitHub 上的範例內容檔案

IntelliJ

IntelliJ 或其他 JetBrains IDE 的 Gemini Code Assist 不支援這項功能。

使用指令

如要查看 Gemini Code Assist 代理程式模式提供的 Gemini CLI 指令,請在 Gemini 對話中輸入 /

您可以在代理程式模式中使用下列 Gemini CLI 指令:

  • /tools:顯示代理程式模式工作階段中可用的工具清單。子指令包括:
    • descdescriptions:顯示各項工具的詳細說明。
    • nodescnodescriptions:隱藏工具說明,只顯示工具名稱。
  • /memory:管理從 GEMINI.md 檔案載入的代理程式指令內容。子指令包括:
    • show:顯示從所有可用 GEMINI.md 檔案載入的目前記憶體完整串連內容。
    • refresh:從可用位置的所有 GEMINI.md 檔案重新載入記憶體。如要瞭解 GEMINI.md 檔案如何影響代理程式的階層式記憶體,請參閱 Gemini CLI 設定說明文件
  • /mcp:列出已設定的 Model Context Protocol (MCP) 伺服器、連線狀態、伺服器詳細資料和可用工具。子指令包括:
    • descdescriptions:顯示 MCP 伺服器和工具的詳細說明。
    • nodescnodescriptions:隱藏 MCP 伺服器說明,只顯示 MCP 伺服器名稱。
    • schema:顯示 MCP 伺服器設定參數的完整 JSON 結構定義。
  • /stats:顯示詳細的代理程式模式工作階段統計資料和時間長度。

如要進一步瞭解 Gemini CLI 指令,請參閱「Gemini CLI 指令」。請注意,並非所有 Gemini CLI 指令都適用於代理程式模式。

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 模式,且在您傳送提示時,不會先要求權限再採取行動。

其他提示

請使用自己的資訊嘗試下列提示:

  • 「這個存放區有什麼作用?請幫我瞭解架構。」
  • 「這個 [類別/函式] 的用途是什麼?」
  • 「Add a feature to this codebase - "[link-or-path-to-codebase]".」
  • 「請重構函式 [A] 和 [B],使用通用方法 [C]。」
  • 「修正 GitHub 問題 [link-to-github-issue]。」
  • 「Build an application to do [goal] with a UI that lets the user do [task] in the [environment]」(建構應用程式,在 [環境] 中透過 UI 讓使用者執行 [工作],以達成 [目標])。
  • 「Migrate library versions in this repository from [X] to [Y]」(將這個存放區中的程式庫版本從 [X] 遷移至 [Y])。
  • 「Optimize performance of this Go code so that it runs faster.」(最佳化這段 Go 程式碼的效能,讓程式執行速度更快)。
  • 「使用 [API 名稱] 建構這項功能。」
  • 「Implement an algorithm to do [x], [Y], and [Z].」(實作演算法來執行 [x]、[Y] 和 [Z]。)

後續步驟