51 คะแนน โดย princox 29 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

สรุปเฉพาะประเด็นสำคัญตามเอกสารทางการของ Claude Code (ฉบับเรียบเรียงบน Mintlify โดย VineeTagarwaL) ว่า Claude Code ทำงานในเทอร์มินัลอย่างไร

Claude Code ทำงานอย่างไร?
พูดสั้น ๆ คือเป็นลูปแบบ “อ่าน → คิด → ใช้เครื่องมือ → ดูผลลัพธ์ → ทำซ้ำ”
6 ขั้นตอนของ Agentic Loop

  1. ผู้ใช้ป้อนข้อความในเทอร์มินัล (หรือส่งผ่าน --print / stdin)
  2. ประกอบ system prompt — วันที่ปัจจุบัน, สถานะ git, ไฟล์ CLAUDE.md, รายการเครื่องมือที่ใช้งานได้
  3. เรียก Anthropic API → โมเดลสร้างบล็อก tool_use (ชื่อเครื่องมือ + อินพุต JSON)
  4. ตรวจสอบสิทธิ์ — ตัดสินใจว่าจะอนุมัติอัตโนมัติ / ขอการยืนยัน / บล็อก
  5. รันเครื่องมือ → เพิ่มผลลัพธ์ (เช่น เนื้อหาไฟล์, เอาต์พุตคำสั่ง) เข้าไปในการสนทนาเป็น tool_result
  6. โมเดลที่ได้รับผลลัพธ์จะเรียกใช้เครื่องมือเพิ่มเติมหรือส่งคำตอบสุดท้าย — ทำซ้ำจนกว่าจะไม่มีการเรียกใช้เครื่องมือแล้ว
    ลูปนี้ทำงานอยู่เฉพาะในโปรเซสเทอร์มินัลบนเครื่องโลคัลเท่านั้น นอกจากจะเป็นเครื่องมือที่เรียกภายนอกอย่างชัดเจน เช่น 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 ความคิดเห็น

 
jeeeyul 29 일 전

ตั้งแต่ปี 23 เป็นต้นมา โครงสร้าง ReAct ก็แทบไม่ได้เปลี่ยนไปมากนักเลยนะ