Skip to content

Gemini CLI Core

Gemini CLI 的核心包 (packages/core) 是 Gemini CLI 的后端部分,负责与 Gemini API 通信、管理工具以及处理从 packages/cli 发送的请求。有关 Gemini CLI 的总体概述,请参阅主文档页面

本节导航

核心的作用

虽然 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 设置禁用。

  • 在建议编辑时,引用会在向用户提供接受选项之前显示。
  • 引用始终在模型的轮次结束时显示。
  • 我们会去除重复的引用并按字母顺序显示它们。

基于 MIT 许可证发布