架構概覽
本文件提供 Gemini CLI 架構的概觀。
核心元件
Gemini CLI 主要由兩個主要套件構成,以及一套可在處理指令列輸入過程中供系統使用的工具:
CLI 套件 (
packages/cli
):- 用途: 此套件包含 Gemini CLI 面向使用者的部分,例如處理初始使用者輸入、呈現最終輸出以及管理整體使用者體驗。
- 套件中包含的主要函式:
- 輸入處理
- 歷史記錄管理
- 顯示渲染
- 主題與使用者介面自訂
- CLI 組態設定
Core 套件 (
packages/core
):- 用途: 此套件作為 Gemini CLI 的後端。它接收來自
packages/cli
的請求,協調與 Gemini API 的互動,並管理可用工具的執行。 - 套件中包含的主要函式:
- 用於與 Google Gemini API 通訊的 API 用戶端
- 提示詞的建構與管理
- 工具註冊與執行邏輯
- 對話或工作階段的狀態管理
- 伺服器端組態
- 用途: 此套件作為 Gemini CLI 的後端。它接收來自
工具 (
packages/core/src/tools/
):- 用途: 這些是獨立的模組,可擴充 Gemini 模型的功能,使其能與本機環境互動(例如:檔案系統、shell 指令、網路擷取)。
- 互動:
packages/core
根據 Gemini 模型的要求呼叫這些工具。
互動流程
與 Gemini CLI 的典型互動遵循此流程:
- 使用者輸入: 使用者在終端機中輸入提示詞或指令,此部分由
packages/cli
管理。 - 向 Core 套件發送請求:
packages/cli
將使用者輸入傳送至packages/core
。 - 請求處理: Core 套件:
- 為 Gemini API 建構適當的提示詞,可能包含對話歷史記錄和可用工具的定義。
- 將提示詞傳送至 Gemini API。
- Gemini API 回應: Gemini API 處理提示詞並回傳回應。此回應可能是直接的答案,或是使用其中一個可用工具的請求。
- 工具執行(如適用):
- 當 Gemini API 請求使用工具時,Core 套件會準備執行該工具。
- 如果請求的工具會修改檔案系統或執行 shell 指令,系統會先向使用者提供該工具及其參數的詳細資訊,且使用者必須批准執行。
- 唯讀操作(例如讀取檔案)可能不需要使用者明確確認即可繼續。
- 一旦確認,或在不需要確認的情況下,Core 套件會在相關工具中執行相應的操作,並由 Core 套件將結果傳回 Gemini API。
- Gemini API 處理工具結果並產生最終回應。
- 回應至 CLI: Core 套件將最終回應傳回 CLI 套件。
- 向使用者顯示: CLI 套件將回應格式化並顯示在終端機中給使用者。
主要設計原則
- 模組化: 將 CLI(前端)與 Core(後端)分離,允許獨立開發和未來的潛在擴充(例如:為同一個後端提供不同的前端)。
- 可擴充性: 工具系統被設計為可擴充的,允許新增新功能。
- 使用者體驗: CLI 專注於提供豐富且互動的終端機體驗。