Gemini CLI 核心组件
Gemini CLI 核心组件
Section titled “Gemini CLI 核心组件”Gemini CLI 的核心包(packages/core)是 Gemini CLI 的后端部分,负责与 Gemini API 的通信、管理工具以及处理来自 packages/cli 发送的请求。要了解 Gemini CLI 的总体概述,请参阅主要文档页面。
- 核心工具 API: 介绍工具如何定义、注册以及被核心使用。
- 内存导入处理器: 关于使用 @file.md 语法实现模块化 GEMINI.md 导入功能的文档。
- 策略引擎: 使用策略引擎对工具执行进行细粒度控制。
尽管 Gemini CLI 的 packages/cli 部分提供了用户界面,但 packages/core 负责以下任务:
- Gemini API 交互: 安全地与 Google Gemini API 进行通信,发送用户提示并接收模型响应。
- 提示工程: 构造有效的 Gemini 模型提示,可能包括对话历史、工具定义以及来自
GEMINI.md文件的指导性上下文。 - 工具管理与编排:
- 注册可用工具(例如,文件系统工具、Shell 命令执行)。
- 解释来自 Gemini 模型的工具使用请求。
- 使用提供的参数执行请求的工具。
- 将工具执行结果返回给 Gemini 模型以进行进一步处理。
- 会话与状态管理: 跟踪对话状态,包括历史记录以及任何与连贯交互相关的上下文。
- 配置: 管理核心特定配置,如 API 密钥访问、模型选择和工具设置。
核心在安全性方面发挥着至关重要的作用:
API 密钥管理: 它处理 GEMINI_API_KEY 并确保在与 Gemini API 通信时安全使用。
工具执行: 当工具与本地系统交互时(例如,run_shell_command),核心(及其底层工具实现)必须谨慎操作,通常涉及沙盒机制以防止非预期的修改。
聊天历史压缩
Section titled “聊天历史压缩”为确保长对话不超过 Gemini 模型的令牌限制,核心包括了一个聊天历史压缩功能。
当一个对话接近配置模型的令牌限制时,核心会自动在发送给模型之前压缩对话历史。这种压缩旨在无损于传达的信息,但减少了使用的令牌总数。
您可以在 Google AI 文档 中找到每个模型的令牌限制。
Gemini CLI 包含一个模型后备机制,以确保即使在默认的“pro”模型受到速率限制时,您仍能继续使用 CLI。
如果您正在使用默认的“pro”模型,并且 CLI 检测到您受到速率限制,它会自动将当前会话切换到“flash”模型。这允许您无需中断即可继续工作。
文件发现服务
Section titled “文件发现服务”文件发现服务负责在项目中查找与当前上下文相关的文件。它被 @ 命令和其他需要访问文件的工具使用。
内存发现服务
Section titled “内存发现服务”内存发现服务负责查找并加载为模型提供上下文的 GEMINI.md 文件。它以层次化的方式搜索这些文件,从当前工作目录开始,向上移动到项目根目录和用户的家目录。它还会在子目录中搜索。
这允许您拥有全局、项目级和组件级上下文文件,它们全部结合起来为模型提供最相关的信息。
您可以使用 /memory 命令 来 show、add 和 refresh 加载的 GEMINI.md 文件的内容。
当 Gemini 发现自己在引用来自某个来源的文本时,它会将引用附加到输出内容末尾。默认情况下它是启用的,但可以通过设置 ui.showCitations 来禁用。
- 在建议进行编辑时,引用会在给用户接受选项之前显示。
- 引用总是在模型的发言结束时显示。
- 我们会去重引用,并以字母顺序显示它们。