read_file - 读取文件
概述
read_file 工具用于从本地文件系统读取指定文件的内容。它支持文本文件、图片(PNG、JPG、GIF、WEBP、SVG、BMP)和 PDF 文件。对于文本文件,可以读取特定的行范围。
工具名称
- 内部名称:
read_file - 显示名称: ReadFile
- 图标: 文件搜索 (FileSearch)
参数
必需参数
| 参数名 | 类型 | 说明 |
|---|---|---|
absolute_path | string | 要读取的文件的绝对路径(例如:/home/user/project/file.txt)。不支持相对路径,必须提供绝对路径。 |
可选参数
| 参数名 | 类型 | 说明 |
|---|---|---|
offset | number | 对于文本文件,从第几行开始读取(从 0 开始计数)。需要与 limit 一起使用。用于分页读取大文件。 |
limit | number | 对于文本文件,最多读取多少行。与 offset 一起使用可以分页读取大文件。如果省略,则读取整个文件(在可行的情况下,最多到默认限制)。 |
prefer_full_read | boolean | 设置为 true 可以绕过大文件预览保护。仅在确信文件足够小可以完整读取时使用。 |
功能说明
文件类型支持:
- 文本文件:支持各种编码的文本文件
- 图片文件:PNG、JPG、GIF、WEBP、SVG、BMP
- PDF 文件:可以提取 PDF 内容
分页读取:
- 使用
offset和limit参数可以分页读取大型文本文件 - 适合处理超大文件,避免一次性加载过多内容
- 使用
安全限制:
- 文件路径必须是绝对路径
- 文件必须在项目根目录内
- 遵守
.siiignore文件的忽略规则
大文件保护:
- 默认对大文件有预览限制
- 可以通过
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: 操作摘要(可选)
错误处理
可能的错误情况:
路径错误:
- 路径不是绝对路径
- 路径不在项目根目录内
- 文件被
.siiignore忽略
文件访问错误:
- 文件不存在
- 没有读取权限
- 文件是目录而不是文件
参数错误:
offset为负数limit小于等于 0- 参数类型不正确
注意事项
- 路径要求:必须使用绝对路径,不支持相对路径
- 性能考虑:对于大文件,建议使用分页读取
- 安全性:工具会检查文件是否在允许的目录范围内
- 编码:文本文件默认使用 UTF-8 编码
相关工具
write_file: 写入文件replace: 替换文件中的文本read_many_files: 批量读取多个文件list_directory: 列出目录内容
