Gemini CLI 核心模块
Gemini CLI 的核心包 (packages/core
) 是 Gemini CLI 的后端部分,负责与 Gemini API 通信、管理工具以及处理从 packages/cli
发送的请求。如需了解 Gemini CLI 的总体概述,请参阅主文档页面。
本部分导航
- 核心工具 API: 关于工具如何定义、注册和被核心模块使用的信息。
核心模块的职责
虽然 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
),核心模块(及其底层工具实现)必须谨慎操作,通常需要采用沙箱机制来防止意外修改。
聊天历史压缩
为确保长对话不会超出 Gemini 模型的令牌限制,核心模块内置了聊天历史压缩功能。
当对话接近配置模型的令牌限制时,核心模块会在发送给模型前自动压缩对话历史。这种压缩设计为信息无损压缩,但能减少总体使用的令牌数。
各模型的令牌限制可在 Google AI 文档 中查询。
模型回退机制
Gemini CLI 包含模型回退机制,确保当默认的 "pro" 模型被限速时仍可继续使用 CLI。
如果您使用默认的 "pro" 模型且 CLI 检测到被限速,它会自动在当前会话中切换至 "flash" 模型。这使您能够不受干扰地继续工作。
文件发现服务
文件发现服务负责在项目中查找与当前上下文相关的文件。它被 @
命令及其他需要访问文件的工具所使用。
记忆发现服务
记忆发现服务负责查找并加载为模型提供上下文的 GEMINI.md
文件。它以层级方式搜索这些文件,从当前工作目录开始,向上至项目根目录和用户主目录,同时也会搜索子目录。
这使您可以拥有全局、项目级和组件级的上下文文件,这些文件会被组合起来为模型提供最相关的信息。
您可以使用 /memory
命令 来 显示
、添加
和 刷新
已加载的 GEMINI.md
文件内容。