主题
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),核心(及其底层工具实现)必须谨慎操作,通常涉及沙箱机制以防止意外修改。
聊天历史压缩
为确保长对话不超过 Gemini 模型的 token 限制,核心包含聊天历史压缩功能。
当对话接近配置模型的 token 限制时,核心会在发送给模型之前自动压缩对话历史。此压缩旨在在传达的信息方面无损,但减少了使用的总 token 数。
你可以在 Google AI 文档中找到每个模型的 token 限制。
模型回退
Gemini CLI 包含模型回退机制,以确保即使默认的"pro"模型受到速率限制,你也可以继续使用 CLI。
如果你使用默认的"pro"模型并且 CLI 检测到你受到速率限制,它会自动为当前会话切换到"flash"模型。这允许你不间断地继续工作。
文件发现服务
文件发现服务负责在项目中查找与当前上下文相关的文件。它被 @ 命令和其他需要访问文件的工具使用。
记忆发现服务
记忆发现服务负责查找和加载为模型提供上下文的 GEMINI.md 文件。它以分层方式搜索这些文件,从当前工作目录开始,向上移动到项目根目录和用户主目录。它还会搜索子目录。
这允许你拥有全局、项目级和组件级的上下文文件,所有这些都被组合起来为模型提供最相关的信息。
你可以使用 /memory 命令来 show、add 和 refresh 已加载的 GEMINI.md 文件的内容。
引用
当 Gemini 发现它正在引用来源的文本时,它会将引用附加到输出中。默认情况下启用,但可以通过 ui.showCitations 设置禁用。
- 在提出编辑建议时,引用会在给用户接受选项之前显示。
- 引用始终在模型回合结束时显示。
- 我们对引用进行去重并按字母顺序显示。