Gemini CLI Core

Gemini CLI 的 core 包(packages/core)负责后端逻辑:与 Gemini API 通信、管理工具、处理来自 packages/cli 的请求。若需了解 Gemini CLI 的整体概览,请参阅主文档页面

本节导航

Core 的职责

packages/cli 负责前端交互,而 packages/core 主要承担:

  • Gemini API 交互: 安全地与 Google Gemini API 通信,发送用户提示并接收模型回复。
  • Prompt 设计: 构建有效的 Prompt,必要时包含会话历史、工具定义以及来自 GEMINI.md 的上下文指引。
  • 工具管理与编排:
    • 注册可用工具(如文件系统工具、Shell 命令执行)。
    • 解读 Gemini 模型的工具调用请求。
    • 按提供的参数执行对应工具。
    • 将执行结果返回给模型以继续处理。
  • 会话与状态管理: 跟踪对话状态,维护必要的历史与上下文,保证交互连贯。
  • 配置管理: 处理 API key、模型选择、工具设置等核心配置。

安全注意事项

Core 在安全层面同样至关重要:

  • API key 管理: 负责安全地使用 GEMINI_API_KEY 与 Gemini API 通信。
  • 工具执行: 当工具需要操作本地系统(如 run_shell_command)时,Core 会配合底层实现采取必要的防护措施,通常借助沙箱机制避免意外修改。

对话历史压缩

为避免长对话超过模型的 Token 限制,Core 内置了对话历史压缩功能。

当会话接近所用模型的 Token 上限时,Core 会在发送请求前自动压缩历史记录,以尽量减少 Token 消耗。压缩过程保持信息内容不变,仅减少 Token 数量。

各模型的 Token 限制可参考 Google AI 文档

模型回退

Gemini CLI 支持模型回退,以便在默认 “pro” 模型受限时持续工作。

当检测到默认 “pro” 模型触发限流时,CLI 会在当前会话自动切换至 “flash” 模型,避免打断工作流程。

文件发现服务

文件发现服务负责定位当前上下文相关的文件,@ 命令及其他需要访问文件的工具都会使用它。

内存发现服务

内存发现服务负责查找并加载提供上下文的 GEMINI.md 文件。它会从当前工作目录开始,逐级向上搜索至项目根目录与用户主目录,同时也会遍历子目录。

借此你可以同时拥有全局、项目级、组件级的上下文文件,最后会合并提供给模型。

可以使用/memory 命令showaddrefresh 已加载的 GEMINI.md 内容。

引用(Citations)

当 Gemini 识别到自己引用了来源文本时,会在输出中附加引用信息。该功能默认启用,可在 ui.showCitations 设置中关闭。

  • 提交编辑建议时,会在用户确认之前先展示引用。
  • 引用总是显示在模型完成回答的末尾。
  • 系统会对引用去重,并按字母顺序展示。