ชำแหละการทำงานภายในของ Claude Code แบบครบถ้วน — ตั้งแต่ Agentic Loop ไปจนถึงการโหลดคอนเท็กซ์
(mintlify.com)สรุปเฉพาะประเด็นสำคัญตามเอกสารทางการของ Claude Code (ฉบับเรียบเรียงบน Mintlify โดย VineeTagarwaL) ว่า Claude Code ทำงานในเทอร์มินัลอย่างไร
Claude Code ทำงานอย่างไร?
พูดสั้น ๆ คือเป็นลูปแบบ “อ่าน → คิด → ใช้เครื่องมือ → ดูผลลัพธ์ → ทำซ้ำ”
6 ขั้นตอนของ Agentic Loop
- ผู้ใช้ป้อนข้อความในเทอร์มินัล (หรือส่งผ่าน
--print/ stdin) - ประกอบ system prompt — วันที่ปัจจุบัน, สถานะ git, ไฟล์
CLAUDE.md, รายการเครื่องมือที่ใช้งานได้ - เรียก Anthropic API → โมเดลสร้างบล็อก
tool_use(ชื่อเครื่องมือ + อินพุต JSON) - ตรวจสอบสิทธิ์ — ตัดสินใจว่าจะอนุมัติอัตโนมัติ / ขอการยืนยัน / บล็อก
- รันเครื่องมือ → เพิ่มผลลัพธ์ (เช่น เนื้อหาไฟล์, เอาต์พุตคำสั่ง) เข้าไปในการสนทนาเป็น
tool_result - โมเดลที่ได้รับผลลัพธ์จะเรียกใช้เครื่องมือเพิ่มเติมหรือส่งคำตอบสุดท้าย — ทำซ้ำจนกว่าจะไม่มีการเรียกใช้เครื่องมือแล้ว
ลูปนี้ทำงานอยู่เฉพาะในโปรเซสเทอร์มินัลบนเครื่องโลคัลเท่านั้น นอกจากจะเป็นเครื่องมือที่เรียกภายนอกอย่างชัดเจน เช่น WebFetch, WebSearch, MCP server แล้ว ไฟล์, เชลล์, และข้อมูลรับรองจะไม่ออกนอกเครื่อง
คอนเท็กซ์ถูกสร้างขึ้นอย่างไร?
เมื่อเริ่มการสนทนา จะประกอบ 2 บล็อกแล้วแปะไว้ข้างหน้าทุก API call
- system context — branch ปัจจุบัน, 5 commit ล่าสุด, ผลลัพธ์ของ
git status --short(ถ้าเกิน 2,000 ตัวอักษรจะถูกตัด) - user context — ไฟล์หน่วยความจำ
CLAUDE.md(ค้นหาแบบลำดับชั้น 4 ระดับ), วันที่วันนี้ (Today's date is YYYY-MM-DD)
ทั้งสองบล็อกถูกแคชในระดับการสนทนาด้วยlodash/memoizeและเมื่อมีการเรียกsetSystemPromptInjection()แคชจะถูกล้างทันที
โมเดลสิทธิ์ — เครื่องมือจะรันเมื่อไร?
| ผลลัพธ์ | การทำงาน |
|---|---|
allow |
รันทันที และเพิ่มผลลัพธ์เข้าไปในการสนทนา |
ask |
หยุดชั่วคราว → แสดงกล่องโต้ตอบเพื่อยืนยัน |
deny |
ปฏิเสธ → ส่ง error กลับไปให้โมเดล |
- โหมด
bypassPermissions: ข้ามการตรวจสอบทั้งหมด - โหมด
acceptEdits: อนุมัติการแก้ไขไฟล์อัตโนมัติ แต่ bash ยังคงต้องขอการยืนยัน - เครื่องมือแบบอ่านอย่างเดียว เช่น Read, Glob, Grep จะได้รับการอนุมัติอัตโนมัติโดยปริยายในทุกโหมด
ซับเอเจนต์ (เครื่องมือ Task)
Claude สามารถ spawn ซับเอเจนต์ผ่านเครื่องมือ Task (AgentTool) ได้ ซับเอเจนต์จะมีการสนทนาแยกออกจากกันและอาจมีชุดเครื่องมือที่ถูกจำกัด จากนั้นรัน Agentic Loop ของตัวเอง และเมื่อเสร็จสิ้นก็ส่งผลลัพธ์กลับไปยังเอเจนต์แม่ สามารถรันได้ทั้งบนโลคัล (in-process) หรือบนรีโมตคอมพิวต์
การบันทึกและกู้คืนการสนทนา
การสนทนาจะถูกเก็บไว้เป็นไฟล์ JSON transcript ใน ~/.claude/
--resume <session-id>หรือ--resumeเดี่ยว ๆ เพื่อกลับมาคุยต่อจากการสนทนาก่อนหน้า- เมื่อ resume: โหลดประวัติข้อความทั้งหมด, ค้นหาไฟล์
CLAUDE.mdใหม่, และรีเซ็ตโหมดสิทธิ์กลับเป็นค่าเริ่มต้นจากการตั้งค่า - การสนทนาที่ยาวจะถูก compact เป็นระยะ — สรุปข้อความเก่าเพื่อจัดการ context window โดย transcript ต้นฉบับฉบับเต็มยังคงถูกเก็บไว้บนดิสก์
สิ่งที่ query engine ทำ
แต่ละ “เทิร์น” ถูกขับเคลื่อนโดย query.ts
- สตรีมโทเค็นออกสู่เทอร์มินัลแบบเรียลไทม์
- dispatch บล็อก
tool_useไปยัง handler ที่เหมาะสม - จัดการงบประมาณโทเค็นและการเรียกใช้เครื่องมือต่อเทิร์น
- ทริกเกอร์การ compact เมื่อ context window เต็ม
- แต่ละเครื่องมือมีพร็อพเพอร์ตี
maxResultSizeChars— ถ้าผลลัพธ์เกินขีดจำกัดนี้ จะบันทึกลงไฟล์ชั่วคราวและส่งให้โมเดลเฉพาะพาธของไฟล์ (เพื่อป้องกัน context window overflow)
ต้นฉบับ: How Claude Code works — Mintlify
อ้างอิง: เป็นเอกสารมิเรอร์อย่างไม่เป็นทางการที่ VineeTagarwaL นำเอกสารทางการของ Claude Code มาเรียบเรียงใหม่บน Mintlify
1 ความคิดเห็น
ตั้งแต่ปี 23 เป็นต้นมา โครงสร้าง ReAct ก็แทบไม่ได้เปลี่ยนไปมากนักเลยนะ