# Read

从本地文件系统加载单个文件的内容。支持纯文本、源代码、图像、PDF 和 Jupyter notebook，并以 `cat -n` 风格返回从 1 起的行号结果。

## 何时使用

- 编辑或分析前，读取已知路径的源文件
- 查看配置文件、锁文件、日志或生成产物
- 查看用户在对话中粘贴的截图或图表
- 从长篇 PDF 手册中提取特定页码范围
- 打开 `.ipynb` notebook 一并查看代码 cell、markdown 和 cell 输出

## 参数

- `file_path` (string, 必填)：目标文件的绝对路径。相对路径会被拒绝。
- `offset` (integer, 可选)：1 起的起始行号。在处理大文件时常与 `limit` 搭配使用。
- `limit` (integer, 可选)：从 `offset` 起返回的最大行数。省略时默认从文件开头返回最多 2000 行。
- `pages` (string, 可选)：PDF 文件的页码范围，如 `"1-5"`、`"3"` 或 `"10-20"`。超过 10 页的 PDF 必填；每次请求最多 20 页。

## 示例

### 示例 1：读取整个小文件
仅传入 `file_path: "/Users/me/project/src/index.ts"` 调用 `Read`。最多返回 2000 行并带行号，通常足以提供编辑上下文。

### 示例 2：翻阅长日志
对数千行的日志文件使用 `offset: 5001` 和 `limit: 500`，可检索一个窄窗口而不浪费上下文 token。

### 示例 3：提取特定 PDF 页
对 `/tmp/spec.pdf` 这份 120 页 PDF，设 `pages: "8-15"` 只拉取你需要的章节。在大 PDF 上省略 `pages` 会报错。

### 示例 4：查看图像
传入 PNG 或 JPG 截图的绝对路径。图像会可视化渲染，Claude Code 可直接对其推理。

## 注意事项

- 始终优先使用绝对路径。若用户提供了绝对路径，直接信任。
- 超过 2000 字符的行会被截断；对极宽数据，请把返回内容当作可能被裁剪。
- 同时读取多个独立文件？请在同一响应中发起多个 `Read` 调用，让它们并行执行。
- `Read` 不能列出目录。请改用 `Bash` 的 `ls` 调用或 `Glob` 工具。
- 读取存在但为空的文件会返回系统提示而非文件字节，请显式处理该信号。
- 在当前会话中，必须对文件成功 `Read` 过后才能在同一文件上使用 `Edit`。
