Gemini CLI 扩展

工作原理

Gemini CLI 支持用于配置和扩展其功能的扩展。

在启动时,Gemini CLI 会在两个位置查找扩展:

  1. <workspace>/.gemini/extensions
  2. <home>/.gemini/extensions

Gemini CLI 会加载两个位置的所有扩展。如果同名扩展同时存在于两个位置,则工作区目录中的扩展优先。

每个扩展都以一个目录的形式存在,其中包含一个 gemini-extension.json 文件。例如:

<workspace>/.gemini/extensions/my-extension/gemini-extension.json

gemini-extension.json 文件

gemini-extension.json 文件包含扩展的配置。该文件具有以下结构:

{
  "name": "my-extension",
  "version": "1.0.0",
  "mcpServers": {
    "my-server": {
      "command": "node my-server.js"
    }
  },
  "contextFileName": "GEMINI.md",
  "excludeTools": ["run_shell_command"]
}

配置项说明

  • name: 扩展的名称。用于唯一标识扩展,应与扩展目录的名称匹配。
  • version: 扩展的版本。
  • mcpServers: 要配置的 MCP 服务器映射。键是服务器名称,值是服务器配置。这些服务器的加载方式与在 settings.json 文件中配置的 MCP 服务器相同。如果扩展和 settings.json 文件都配置了同名 MCP 服务器,则 settings.json 文件中的定义优先。
  • contextFileName: 包含扩展上下文的文件名。用于从工作区加载上下文。如果未使用此属性,但扩展目录中存在 GEMINI.md 文件,则将加载该文件。
  • excludeTools: 要从模型中排除的工具名称数组。您还可以为支持它的工具指定特定于命令的限制,例如 run_shell_command 工具。例如,"excludeTools": ["run_shell_command(rm -rf)"] 将阻止 rm -rf 命令。

配置合并

当 Gemini CLI 启动时,它会加载所有扩展并合并它们的配置。如果存在任何冲突,工作区配置优先。

优先级规则:

  1. settings.json 中的配置
  2. 工作区 (<workspace>/.gemini/extensions) 中的扩展
  3. 用户主目录 (<home>/.gemini/extensions) 中的扩展