Gemini CLI 架构概览
Gemini CLI 架构概览
Section titled “Gemini CLI 架构概览”本文档提供了 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 包在终端中格式化并显示响应给用户。
关键设计原则
Section titled “关键设计原则”- 模块化: 将 CLI(前端)与 Core(后端)分离,允许独立开发和潜在的将来扩展(例如,为相同后端提供不同的前端)。
- 可扩展性: 工具系统设计为可扩展,允许添加新的功能。
- 用户体验: CLI 专注于提供丰富且交互式的终端体验。