Skip to content

Gemini CLI 架构概览

本文档提供了 Gemini CLI 架构的高层概览。

核心组件

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

  1. CLI 包 (packages/cli):

    • 目的: 包含 Gemini CLI 的用户界面部分,例如处理用户初始输入、呈现最终输出以及管理整体用户体验。
    • 包中包含的关键功能:
  2. Core 包 (packages/core):

    • 目的: 作为 Gemini CLI 的后端。它接收来自 packages/cli 的请求,协调与 Gemini API 的交互,并管理可用工具的执行。
    • 包中包含的关键功能:
      • 用于与 Google Gemini API 通信的 API 客户端
      • 提示构建和管理
      • 工具注册和执行逻辑
      • 对话或会话的状态管理
      • 服务器端配置
  3. 工具 (packages/core/src/tools/):

    • 目的: 这些是扩展 Gemini 模型功能的独立模块,允许它与本地环境(例如文件系统、shell 命令、Web 获取)进行交互。
    • 交互: 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 专注于提供丰富且交互式的终端体验。

基于 MIT 许可证发布