架構總覽
本文件提供 Gemini CLI 架構的高階總覽。
核心元件
Gemini CLI 主要由兩個主要套件組成,並附帶一套系統在處理命令列輸入過程中可使用的工具:
CLI 套件 (
packages/cli
):核心套件 (
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
管理。 - 向核心發出請求:
packages/cli
將使用者的輸入傳送至packages/core
。 - 請求已處理: 核心套件:
- 為 Gemini API 建構適當的提示,可能包含對話記錄和可用的工具定義。
- 將提示傳送至 Gemini API。
- Gemini API 回應: Gemini API 處理提示並傳回回應。此回應可能是直接回答或使用其中一個可用工具的請求。
- 工具執行(如果適用):
- 當 Gemini API 請求工具時,核心套件會準備執行它。
- 如果請求的工具可以修改檔案系統或執行 shell 指令,則會先向使用者提供工具及其引數的詳細資訊,並且使用者必須核准執行。
- 唯讀作業(例如讀取檔案)可能不需要使用者明確確認即可繼續。
- 一旦確認,或者如果不需要確認,核心套件會在相關工具中執行相關動作,然後核心套件會將結果傳回給 Gemini API。
- Gemini API 會處理工具結果並產生最終回應。
- 回應 CLI: 核心套件將最終回應傳回給 CLI 套件。
- 向使用者顯示: CLI 套件會格式化並在終端機中向使用者顯示回應。
主要設計原則
- 模組化: 將 CLI(前端)與核心(後端)分開,可實現獨立開發和未來的潛在擴充(例如,相同後端搭配不同的前端)。
- 可擴充性: 工具系統設計為可擴充,可新增功能。
- 使用者體驗: CLI 專注於提供豐富且互動的終端機體驗。