Skip to content

read_file - 读取文件

概述

read_file 工具用于从本地文件系统读取指定文件的内容。它支持文本文件、图片(PNG、JPG、GIF、WEBP、SVG、BMP)和 PDF 文件。对于文本文件,可以读取特定的行范围。

工具名称

  • 内部名称: read_file
  • 显示名称: ReadFile
  • 图标: 文件搜索 (FileSearch)

参数

必需参数

参数名类型说明
absolute_pathstring要读取的文件的绝对路径(例如:/home/user/project/file.txt)。不支持相对路径,必须提供绝对路径。

可选参数

参数名类型说明
offsetnumber对于文本文件,从第几行开始读取(从 0 开始计数)。需要与 limit 一起使用。用于分页读取大文件。
limitnumber对于文本文件,最多读取多少行。与 offset 一起使用可以分页读取大文件。如果省略,则读取整个文件(在可行的情况下,最多到默认限制)。
prefer_full_readboolean设置为 true 可以绕过大文件预览保护。仅在确信文件足够小可以完整读取时使用。

功能说明

  1. 文件类型支持

    • 文本文件:支持各种编码的文本文件
    • 图片文件:PNG、JPG、GIF、WEBP、SVG、BMP
    • PDF 文件:可以提取 PDF 内容
  2. 分页读取

    • 使用 offsetlimit 参数可以分页读取大型文本文件
    • 适合处理超大文件,避免一次性加载过多内容
  3. 安全限制

    • 文件路径必须是绝对路径
    • 文件必须在项目根目录内
    • 遵守 .siiignore 文件的忽略规则
  4. 大文件保护

    • 默认对大文件有预览限制
    • 可以通过 prefer_full_read 参数绕过限制

使用示例

读取整个文件

json
{
  "absolute_path": "/home/user/project/src/main.ts"
}

分页读取文件(读取第 10-20 行)

json
{
  "absolute_path": "/home/user/project/logs/app.log",
  "offset": 10,
  "limit": 10
}

强制完整读取文件

json
{
  "absolute_path": "/home/user/project/config.json",
  "prefer_full_read": true
}

返回结果

工具返回一个包含以下字段的对象:

  • llmContent: 文件的实际内容(文本或其他格式)
  • returnDisplay: 用户友好的显示信息
  • summary: 操作摘要(可选)

错误处理

可能的错误情况:

  1. 路径错误

    • 路径不是绝对路径
    • 路径不在项目根目录内
    • 文件被 .siiignore 忽略
  2. 文件访问错误

    • 文件不存在
    • 没有读取权限
    • 文件是目录而不是文件
  3. 参数错误

    • offset 为负数
    • limit 小于等于 0
    • 参数类型不正确

注意事项

  1. 路径要求:必须使用绝对路径,不支持相对路径
  2. 性能考虑:对于大文件,建议使用分页读取
  3. 安全性:工具会检查文件是否在允许的目录范围内
  4. 编码:文本文件默认使用 UTF-8 编码

相关工具

  • write_file: 写入文件
  • replace: 替换文件中的文本
  • read_many_files: 批量读取多个文件
  • list_directory: 列出目录内容

Released under the MIT License.