# Read

โหลดเนื้อหาของไฟล์เดียวจาก filesystem ในเครื่อง รองรับข้อความธรรมดา, source code, รูปภาพ, PDF, และ Jupyter notebook ส่งผลลัพธ์พร้อมหมายเลขบรรทัดเริ่มจาก 1 ในสไตล์ `cat -n`

## เมื่อใดควรใช้

- อ่านไฟล์ source ที่ path ที่ทราบก่อนแก้ไขหรือวิเคราะห์
- ตรวจสอบไฟล์ configuration, lockfile, log, หรือ artifact ที่ generate
- ดู screenshot หรือไดอะแกรมที่ผู้ใช้วางใน conversation
- ดึงช่วงหน้าเฉพาะจาก PDF manual ที่ยาว
- เปิด notebook `.ipynb` เพื่อ review code cell, markdown, และ output ของ cell พร้อมกัน

## พารามิเตอร์

- `file_path` (string, required): Absolute path ไปยังไฟล์เป้าหมาย Path แบบ relative จะถูกปฏิเสธ
- `offset` (integer, optional): หมายเลขบรรทัดเริ่มจาก 1 ที่จะเริ่มอ่าน มีประโยชน์สำหรับไฟล์ขนาดใหญ่เมื่อใช้ร่วมกับ `limit`
- `limit` (integer, optional): จำนวนบรรทัดสูงสุดที่จะส่งกลับเริ่มจาก `offset` ค่าเริ่มต้น 2000 บรรทัดจากด้านบนของไฟล์เมื่อละเว้น
- `pages` (string, optional): ช่วงหน้าสำหรับไฟล์ PDF เช่น `"1-5"`, `"3"`, หรือ `"10-20"` จำเป็นสำหรับ PDF ที่ยาวกว่า 10 หน้า; สูงสุด 20 หน้าต่อการร้องขอ

## ตัวอย่าง

### ตัวอย่างที่ 1: อ่านไฟล์ขนาดเล็กทั้งหมด
เรียก `Read` โดยตั้งเฉพาะ `file_path` เป็น `/Users/me/project/src/index.ts` จะส่งกลับถึง 2000 บรรทัดพร้อมหมายเลขบรรทัด ซึ่งมักเพียงพอสำหรับ context การแก้ไข

### ตัวอย่างที่ 2: ดู log ยาวทีละหน้า
ใช้ `offset: 5001` และ `limit: 500` บนไฟล์ log หลายพันบรรทัดเพื่อดึงหน้าต่างแคบโดยไม่สิ้นเปลือง token context

### ตัวอย่างที่ 3: ดึงหน้า PDF เฉพาะ
สำหรับ PDF 120 หน้าที่ `/tmp/spec.pdf` ให้ตั้ง `pages: "8-15"` เพื่อดึงเฉพาะบทที่ต้องการ การละเว้น `pages` ใน PDF ขนาดใหญ่จะทำให้เกิด error

### ตัวอย่างที่ 4: ดูรูปภาพ
ส่ง absolute path ของ PNG หรือ JPG screenshot รูปภาพจะถูก render แบบมองเห็นได้เพื่อให้ Claude Code สามารถ reason เกี่ยวกับมันโดยตรง

## หมายเหตุ

- ชอบ absolute path เสมอ หากผู้ใช้ให้มา ให้เชื่อใช้ตามนั้น
- บรรทัดที่ยาวกว่า 2000 อักขระจะถูกตัด ให้ถือเนื้อหาที่ส่งกลับว่าอาจถูกตัดสำหรับข้อมูลที่กว้างมาก
- อ่านหลายไฟล์ที่อิสระกัน? ออก `Read` หลายตัวในการตอบเดียวกันเพื่อให้รันขนานกัน
- `Read` ไม่สามารถ list directory ใช้ `Bash` `ls` หรือ tool `Glob` แทน
- อ่านไฟล์ที่มีอยู่แต่ว่างเปล่า จะส่ง system reminder แทน file byte ดังนั้นจัดการสัญญาณนี้อย่างชัดเจน
- `Read` ที่สำเร็จจำเป็นก่อนใช้ `Edit` บนไฟล์เดียวกันใน session ปัจจุบัน
