跳转至

Gemini CLI 架构概览

本文档提供 Gemini CLI 的高级架构概述。

核心组件

Gemini CLI 主要由两个核心包组成,以及一套系统在处理命令行输入过程中可使用的工具集:

  1. CLI 包 (packages/cli):

  2. 用途: 包含面向用户的 Gemini CLI 部分,例如处理初始用户输入、呈现最终输出以及管理整体用户体验。

  3. 包内关键功能:

  4. 核心包 (packages/core):

  5. 用途: 作为 Gemini CLI 的后端。接收来自 packages/cli 的请求,协调与 Gemini API 的交互,并管理可用工具的执行。

  6. 包内关键功能:

    • 与 Google Gemini API 通信的 API 客户端
    • 提示构建与管理
    • 工具注册与执行逻辑
    • 对话或会话的状态管理
    • 服务端配置
  7. 工具集 (packages/core/src/tools/):

  8. 用途: 这些独立模块扩展了 Gemini 模型的能力,使其能与本地环境交互(例如文件系统、shell 命令、网络请求)。
  9. 交互方式: packages/core 根据 Gemini 模型的请求调用这些工具。

交互流程

与 Gemini CLI 的典型交互遵循以下流程:

  1. 用户输入:用户在终端输入提示词或命令,由 packages/cli 管理。
  2. 请求核心层packages/cli 将用户输入发送至 packages/core
  3. 请求处理:核心包执行以下操作:
    • 为 Gemini API 构建适当的提示词,可能包含对话历史和可用工具定义。
    • 将提示词发送至 Gemini API。
  4. Gemini API 响应:Gemini API 处理提示词并返回响应。响应可能是直接答案或使用某个可用工具的请求。
  5. 工具执行(如适用)
    • 当 Gemini API 请求使用工具时,核心包准备执行该工具。
    • 如果请求的工具可能修改文件系统或执行 shell 命令,会先向用户展示该工具及其参数的详细信息,需用户批准后才执行。
    • 只读操作(如读取文件)可能无需用户明确确认即可继续。
    • 一旦确认(或无需确认),核心包在相关工具内执行相应操作,并将结果通过核心包发送回 Gemini API。
    • Gemini API 处理工具结果并生成最终响应。
  6. 返回 CLI:核心包将最终响应发送回 CLI 包。
  7. 用户显示:CLI 包格式化响应并在终端中展示给用户。

关键设计原则

  • 模块化:将 CLI(前端)与 Core(后端)分离,支持独立开发和未来可能的扩展(例如为同一后端开发不同前端)。
  • 可扩展性:工具系统设计为可扩展的,允许添加新功能。
  • 用户体验:CLI 专注于提供丰富且交互性强的终端体验。