Gemini CLI 文件系统工具

Gemini CLI 提供一组与本地文件系统交互的工具,支持读取、写入、搜索、列举与修改文件或目录,并在敏感操作前征求确认。

注意:所有工具都在 rootDirectory(通常为运行 CLI 时的工作目录)内运行,参数路径需为绝对路径或可解析为该根目录下的路径。

1. list_directory(ReadFolder)

  • 用途:列出指定目录下的文件与子目录,可按 glob 过滤。
  • 参数
    • path:必填,目录绝对路径;
    • ignore:可选,忽略的 glob 列表;
    • respect_git_ignore:是否遵循 .gitignore,默认 true
  • 输出:列出项目,目录优先;无确认。

2. read_file(ReadFile)

  • 用途:读取文件内容(文本、PNG/JPG/GIF/WEBP/SVG/BMP/PDF)。文本可按 offset / limit 指定行范围。
  • 行为
    • 文本:返回内容,必要时标明截断;
    • 图片/PDF:以 base64 inlineData 形式返回;
    • 其他二进制:提示无法展示。
  • 无须确认

3. write_file(WriteFile)

  • 用途:向指定文件写入内容,如不存在会自动创建父目录;
  • 参数file_pathcontent
  • 输出:成功信息;
  • 需确认:显示 diff 并征求同意。

4. glob(FindFiles)

  • 用途:基于 glob 模式查找文件,默认按修改时间倒序。
  • 参数pattern 必填,其余如 pathcase_sensitiverespect_git_ignore 可选。
  • 输出:匹配路径列表;无确认。

5. search_file_content(SearchText)

  • 用途:在目录内按正则搜索文本内容,可限定文件范围;优先使用 git grep
  • 参数patternpathinclude
  • 输出:包含文件路径与行号的匹配结果;无确认。

6. replace(Edit)

  • 用途:以精确上下文替换文件内容,默认替换一次;支持多次替换并内置多阶段纠错机制。
  • 参数
    • file_path
    • old_string:需包含修改前后的上下文(建议上下各 ≥3 行),用于定位唯一位置;为空时视为创建新文件;
    • new_string
    • expected_replacements
  • 失败场景:路径非法、文件不存在、匹配数量不足或过多等。
  • 输出:成功或失败信息;
  • 需确认:显示 diff 并征求同意。

这些工具构成了 CLI 理解与操作本地项目的基础能力。