Gemini CLI 的核心包(packages/core
)是 Gemini CLI 的后端部分,处理与 Gemini API 的通信、管理工具和处理从 packages/cli
发送的请求。有关 Gemini CLI 的一般概述,请参阅主文档页面。
导航本节
🔧 核心工具 API
📋 内存导入处理器
核心的作用
虽然 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
),核心(及其底层工具实现)必须谨慎行事,通常涉及沙盒机制以防止意外修改。
核心功能特性
💬 聊天历史压缩
为了确保长对话不会超过 Gemini 模型的 token 限制,核心包含聊天历史压缩功能。
当对话接近配置模型的 token 限制时,核心会在发送到模型之前自动压缩对话历史记录。这种压缩在传达信息方面设计为无损,但它减少了使用的总 token 数量。
您可以在 Google AI 文档 中找到每个模型的 token 限制。
🔄 模型回退
Gemini CLI 包含模型回退机制,以确保即使默认的"pro"模型受到速率限制,您也可以继续使用 CLI。
如果您使用默认的"pro"模型,CLI 检测到您受到速率限制,它会自动切换到当前会话的"flash"模型。这使您可以继续工作而不会中断。
📁 文件发现服务
文件发现服务负责在项目中找到与当前上下文相关的文件。它由 @
命令和其他需要访问文件的工具使用。
🧠 内存发现服务
内存发现服务负责查找和加载向模型提供上下文的
GEMINI.md
文件。它以分层方式搜索这些文件,从当前工作目录开始,向上移动到项目根目录和用户的主目录。它还在子目录中搜索。
这允许您拥有全局、项目级和组件级上下文文件,它们都结合起来为模型提供最相关的信息。
您可以使用 /memory
命令 来 显示
、添加
和 刷新
已加载的 GEMINI.md
文件的内容。
核心架构图
核心组件交互流程:
- 接收来自 CLI 的请求
- 处理和构建提示
- 与 Gemini API 通信
- 管理工具执行
- 返回结果给 CLI
🏗️ 架构优势
- 模块化设计: 清晰分离前端和后端职责
- 可扩展性: 易于添加新工具和功能
- 安全性: 集中的安全控制和沙盒机制
- 性能: 优化的 token 管理和压缩
🔧 开发者友好
- API 抽象: 简化与 Gemini API 的交互
- 工具注册: 简单的工具添加和管理
- 状态管理: 自动处理对话状态
- 配置管理: 灵活的配置系统