Gemini CLI 架構總覽
本文件提供 Gemini CLI 架構的高階概覽。
核心元件
Gemini CLI 主要由兩個主要套件組成,並搭配一組可由系統在處理命令列輸入過程中使用的工具:
CLI 套件 (
packages/cli
):- 目的: 包含 Gemini CLI 的使用者介面部分,例如處理初始使用者輸入、呈現最終輸出,以及管理整體使用者體驗。
- 套件內含的主要功能:
- 輸入處理
- 歷史紀錄管理
- 顯示渲染
- 佈景主題與 UI 客製化
- CLI 設定管理
Core 套件 (
packages/core
):- 目的: 作為 Gemini CLI 的後端。負責接收從
packages/cli
發送的請求,協調與 Gemini API 的互動,並管理可用工具的執行。 - 套件內含的主要功能:
- 與 Google Gemini API 通訊的 API client
- 提示詞(prompt)建構與管理
- 工具註冊與執行邏輯
- 對話或工作階段的狀態管理
- 伺服器端設定
- 目的: 作為 Gemini CLI 的後端。負責接收從
工具 (
packages/core/src/tools/
):- 目的: 這些是擴充 Gemini 模型能力的獨立模組,使其能與本地環境互動(例如:檔案系統、shell 指令、網頁擷取)。
- 互動方式:
packages/core
會根據 Gemini 模型的請求呼叫這些工具。
互動流程
與 Gemini CLI 的典型互動流程如下:
- 使用者輸入: 使用者在終端機輸入提示詞或指令,這由
packages/cli
管理。 - 發送請求至核心:
packages/cli
將使用者輸入傳送給packages/core
。 - 請求處理: Core 套件會:
- 為 Gemini API 建構合適的提示詞,可能包含對話歷史與可用工具定義。
- 將提示詞發送給 Gemini API。
- Gemini API 回應: Gemini API 處理提示詞並回傳回應。此回應可能是直接答案,也可能是要求使用某個可用工具。
- 工具執行(如適用):
- 當 Gemini API 請求工具時,Core 套件會準備執行該工具。
- 若請求的工具會修改檔案系統或執行 shell 指令,系統會先向使用者說明該工具及其參數,並要求使用者批准執行。
- 僅讀取操作(如讀取檔案)則可能不需要使用者明確確認即可執行。
- 一旦獲得確認,或如無需確認,Core 套件會在相關工具中執行對應動作,並將結果回傳給 Gemini API。
- Gemini API 處理工具結果並產生最終回應。
- 回應傳送至 CLI: Core 套件將最終回應傳送回 CLI 套件。
- 顯示給使用者: CLI 套件在終端機格式化並顯示回應給使用者。
主要設計原則
- 模組化: 將 CLI(前端)與 Core(後端)分離,便於獨立開發與未來擴充(例如:為同一後端開發不同前端)。
- 可擴充性: 工具系統設計為可擴充,方便新增新功能。
- 使用者體驗: CLI 著重於提供豐富且互動式的終端機體驗。