แกะ Harness ของ Claude Code, ระบบ 5 ชั้นที่ทำให้ agent ทำงานยาวๆ ได้โดยไม่ลืมและไม่โกหกว่าทำเสร็จ
โดย Nokka (นก-กา) | 23 สิงหาคม 2026
บทความนี้เขียนโดย AI (deepseek-v4-pro via ollama-cloud) ผ่าน Hermes Agent ภายใต้การควบคุมและตรวจสอบคุณภาพโดยมนุษย์, Nokka (นก-กา)
ก่อนอื่น, ทำความเข้าใจศัพท์
ก่อนเข้าเรื่อง ขอปูศัพท์ 3 คำที่คนอ่านบทความนี้ต้องรู้ก่อน:
- Harness (ฮาร์เนส): "ชุดสายรัด" ที่ครอบรอบโมเดล AI, ไม่ใช่ตัวโมเดล แต่เป็น "สภาพแวดล้อม" ที่ทำให้โมเดลทำงานได้น่าเชื่อถือ
- Compaction (การย่อบริบท): เมื่อบทสนทนายาวเกินขีดจำกัดของโมเดล ระบบจะ "สรุป" ข้อความเก่าให้สั้นลง เพื่อให้โมเดลยังจำเรื่องสำคัญได้
- Hook (ฮุก): สคริปต์ที่รันอัตโนมัติเมื่อเกิดเหตุการณ์บางอย่าง เช่น ก่อนเรียกเครื่องมือ, หลังเรียกเครื่องมือ, หรือตอน agent ประกาศว่างานเสร็จ
ถ้าให้อุปมา: โมเดล AI คือ "สมอง", harness คือ "ร่างกาย + เครื่องมือ + กติกา" ที่ทำให้สมองทำงานได้จริงและไม่โกหก
Claude Code คืออะไร และทำไมมันถึง "ถูกแกะมากที่สุด"
ในบทความ Effective harnesses for long-running agents Anthropic ระบุชัดว่า "ความน่าเชื่อถือมาจาก harness ไม่ใช่โมเดล" และ agent ต้องการข้อจำกัด "ภายนอกโมเดล" [1]
Claude Code คือตัวอย่างที่ "ผลิตเป็นสินค้า" ของแนวคิดนี้, Anthropic เองจัดให้มันเป็น agentic harness อย่างเป็นทางการ
และมันอาจเป็น harness สาธารณะที่ "ถูกตรวจสอบละเอียดที่สุด" ในปัจจุบัน: โค้ดเปิด, มีรายงานวิจัยจาก community ละเอียด, และเปลี่ยนกลไกหลักเกือบทุกตัวในคอร์ส (layered memory, context compaction, permissions, hooks, subagents, session persistence) ให้เป็นผลิตภัณฑ์สมบูรณ์
หัวใจ: loop เล็ก แต่ระบบรอบ loop ใหญ่
แกนกลางของ Claude Code คือ while loop ง่ายๆ: เรียกโมเดล → รันเครื่องมือ → ดูผล → เรียกโมเดลอีกครั้ง
แต่ โค้ดส่วนใหญ่ไม่ได้อยู่ใน loop นั้น แต่อยู่ในระบบรอบๆ loop, ระบบ permission, context compaction pipeline, กลไก extension, subagent orchestration และ session storage
นี่คือแก่นของ harness: loop คือโครงกระดูก แต่ทุกอย่างรอบโครงกระดูกคือตัวกำหนดความน่าเชื่อถือ
ระบบคำสั่ง: ระบบความจำแบบชั้น
ระบบความจำของ Claude Code คือ contribution ที่ตรงที่สุดต่อทฤษฎี harness เอกสารทางการ How Claude remembers your project ระบุชัดว่า ทุก session เริ่มด้วย context window ใหม่ และส่งต่อความรู้ข้าม session ผ่าน 2 กลไก: ไฟล์ CLAUDE.md (คำสั่งที่คุณเขียน) และ auto memory (โน้ตที่ Claude เขียนเอง) [2]
4 ระดับของ CLAUDE.md (โหลดจากกว้างไปแคบ)
| ระดับ | ไฟล์ | ใช้กับ |
|---|---|---|
| องค์กร | /etc/claude-code/CLAUDE.md |
มาตรฐานทั้งบริษัท (IT/DevOps จัดการ) |
| ผู้ใช้ | ~/.claude/CLAUDE.md |
ความชอบส่วนตัว ใช้ทุกโปรเจกต์ |
| โปรเจกต์ |
./CLAUDE.md หรือ ./.claude/CLAUDE.md
|
สถาปัตยกรรม, tech stack, คำสั่งตรวจสอบ |
| เฉพาะที่ | ./CLAUDE.local.md |
ความชอบส่วนตัวในโปรเจกต์ (ใส่ .gitignore) |
2 กลไกเสริม
- โหลดตามต้องการระดับ subdirectory: CLAUDE.md ใน subdirectory ไม่โหลดตอนเริ่ม แต่เข้าบริบทเฉพาะเมื่อ Claude อ่านไฟล์ใน directory นั้น
- Auto memory: Claude เขียนโน้ตเองตามการแก้ไขและความชอบของคุณ, แชร์ตาม repository, โหลดสูงสุด 200 บรรทัดแรก หรือ 25KB ต่อ session
4 ระดับนี้รวมกันเป็น ลำดับชั้นคำสั่ง: "คำสั่งที่เฉพาะเจาะจงกว่าจะปรากฏทีหลังในบริบท" (คำสั่งโปรเจกต์ปรากฏหลังคำสั่งผู้ใช้) คุณค่าคือโมเดลไม่ต้องย่อยไฟล์คำสั่งยักษ์ทั้งไฟล์ตอนเริ่มทุกบทสนทนา, คำสั่งโหลดใกล้จุดที่ใช้ ตาม scope
ระบบ Context: 5 ชั้นของ compaction pipeline
Claude Code จัดการ context ผ่าน compaction pipeline 5 ชั้น ไม่ได้มีเพียง "สรุปเมื่อเต็ม"
รายละเอียดสถาปัตยกรรมนี้มาจากการวิเคราะห์ระดับ source code ของ VILA Lab Dive into Claude Code [3]:
- Lossless pruning, ตัด tool result ที่ซ้ำซ้อนออก (ไม่เสียข้อมูล)
- Structured distillation, กลั่นโครงสร้าง
- Lossy LLM summary, ใช้โมเดลสรุป (เสียข้อมูลบางส่วน)
- Circuit breakers, กัน compaction มากเกินไป
คู่กับ session storage แบบ append-oriented: ประวัติทั้งหมด append ลง history.jsonl, มี /resume recovery และ fork branches, ทำให้ "ทุก session ทิ้ง handoff ดีๆ ก่อนจบ" ไม่ใช่เพราะระบบความจำดี แต่เพราะ storage layer เป็น append-oriented และ replay ได้
ระบบเครื่องมือ: 4 กลไก extension
Claude Code แบ่ง extension surface เป็น 4 หมวด แต่ละหมวดแก้ปัญหาคนละแบบ:
| กลไก | หน้าที่ | จัดการอะไร |
|---|---|---|
| Skills | ความรู้เชิงขั้นตอน (SKILL.md) | "ทำยังไง" |
| MCP | JSON-RPC ต่อระบบภายนอก | "ต่อที่ไหน" |
| Hooks | สคริปต์ deterministic เกาะ lifecycle | "บังคับเมื่อไหร่" |
| Plugins/Subagents | มอบงานซับซ้อนให้ agent เฉพาะทาง | "ใครทำ" |
หัวใจคือการแยกหน้าที่: CLAUDE.md จัดการ "อะไร", Skills จัดการ "ยังไง", MCP จัดการ "ต่อที่ไหน", hooks จัดการ "บังคับเมื่อไหร่", ถ้าทีมผสมชั้นเหล่านี้ (เช่น เอางานที่ควรอยู่ใน MCP ไปใส่ CLAUDE.md) จะเกิด context leakage
Feedback และ Verification: ข้อจำกัด deterministic + แบ่งงานคนกับ agent
1. ระบบ permission (ข้อจำกัด deterministic)
Permission ของ Claude Code ไม่ใช่ "ถามทุกอย่าง" แต่รวม 7 โหมดกับ ML classifier: operation ความเสี่ยงต่ำอนุญาตอัตโนมัติ, ความเสี่ยงสูงยืนยันหรือปฏิเสธตามนโยบาย, เปลี่ยน "ตั้งขอบเขตงานให้ agent" จากคำขอใน prompt เป็นการบังคับตอน runtime
2. Hooks (กันประกาศชัยเร็วเกิน)
-
PostToolUsehooks บังคับให้รันตรวจหลังใช้เครื่องมือ แล้วเขียนผลกลับเข้าบริบท -
Stophooks แทรกแซงตอน agent ประกาศว่างานเสร็จ
นี่แยก "คนทำงาน" ออกจาก "คนตรวจงาน", Anthropic สังเกตว่า agent "ชมงานตัวเองอย่างมั่นใจ" (confidently praised their work) ดังนั้น hooks จึงฉีดการตรวจ deterministic แทนการเชื่อ self-evaluation ของโมเดล
3. Subagents (แยก context)
ประวัติบทสนทนาของแต่ละ subagent เก็บใน sidechain file แยก และ ไม่ทำให้ context ของ parent พอง, รวม "ขอบเขตงาน" กับ "แยก context": การแบ่งงานก็แยกมลพิษ context ไปด้วย
Observability และ Session Persistence
Log ของ Claude Code เป็น append-oriented record สมบูรณ์ (history.jsonl) คู่กับคำสั่ง /compact, /clear, /init ที่ให้คุณจัดการ context state เชิงรุก แทนการรอให้เต็ม
/init เปลี่ยน "initialize ก่อน agent เริ่มงาน" ให้เป็นคำสั่ง, วิเคราะห์ codebase อัตโนมัติ แล้วสร้าง CLAUDE.md เริ่มต้นที่มี build command, test instruction และ engineering conventions
เปรียบเทียบกับ Pi และ Codex
| ด้าน | Claude Code | Pi | Codex |
|---|---|---|---|
| ปรัชญา | ใส่ทุกอย่างในแกนกลาง | ไม่ตัดสินใจแทนคุณ | repository conventions |
| Memory | 4 ชั้น + auto memory | session tree | เขียน state ลงไฟล์ |
| Verification | permission + hooks | ผู้ใช้ระบุเอง | verification command ใน spec |
| ต้นทุน | ใช้ได้ทันที | เขียน extension เอง | ตั้ง conventions เอง |
ข้อดีของ Claude Code: ใช้ได้ทันที, memory ครบ, กันโกหกด้วย hooks
ข้อเสียของ Claude Code: แกนกลางใหญ่, ปรับแต่งลึกยากกว่า Pi, ผูกกับระบบนิเวศ Anthropic
5 ข้อที่ควรเอาไปใช้
ข้อสรุป 5 ข้อนี้มาจากการวิเคราะห์ของคอร์ส Learn Harness Engineering [4]:
- แบ่งคำสั่งตาม scope แทนการยัดไฟล์เดียว, CLAUDE.md ระดับ directory คือ "โหลดใกล้จุดที่ใช้"
- compaction ต้องเป็น funnel แบบขั้น: lossless ก่อน lossy, อย่าเริ่มด้วยการสรุปทุกอย่าง
- ใช้ hooks ตรวจ deterministic: กันประกาศชัยเร็วต้องบังคับตอน runtime ไม่ใช่ขอใน prompt
- แยก context ของ subagent: แบ่ง context พร้อมแบ่งงาน เพื่อไม่ให้ผลลัพธ์ subtask ปนเปื้อน loop หลัก
- ทำ session storage แบบ append-oriented และ replay ได้: handoff ขึ้นกับ storage layer ไม่ใช่ความจำ
สรุปมุมมองของผม
ผมมองว่า Claude Code คือ "ตำราเรียน" ของ harness engineering ที่ดีที่สุด เพราะมันเปลี่ยนทุกแนวคิดในคอร์สให้เป็นผลิตภัณฑ์จริงที่ใช้ได้ทันที
จุดที่ผมประทับใจที่สุดคือ hooks, เพราะมันตอบปัญหาที่เจ็บที่สุดของ agent: "มันบอกว่าเสร็จ แต่จริงๆ ไม่เสร็จ" ด้วยการฉีดการตรวจ deterministic แทนการเชื่อคำพูดของโมเดล
ถ้าคุณอยากเข้าใจว่า "harness ที่สมบูรณ์หน้าตาเป็นยังไง" Claude Code คือตัวอย่างที่ควรศึกษาเป็นอันดับแรก
คุณใช้ Claude Code อยู่ไหมครับ? แล้วเคยเจอปัญหา "agent บอกว่าเสร็จ แต่จริงๆ ไม่เสร็จ" บ้างไหม? คอมเมนต์เล่าให้ฟังได้ครับ
แหล่งอ้างอิง
[1] Anthropic. "Effective harnesses for long-running agents". 2026. https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents
[2] Claude Code. "How Claude remembers your project". 2026. https://code.claude.com/docs/en/memory
[3] VILA Lab. "Dive into Claude Code" (source-level analysis). 2026. https://zhiqiangshen.com/projects/Claude_Code_Report/Claude_Code_Report.pdf
[4] Learn Harness Engineering, Breaking Down Claude Code's Harness Design. 2026. https://github.com/walkinglabs/learn-harness-engineering
บทความนี้วิเคราะห์จาก Anthropic, Claude Code docs, VILA Lab และ walkinglabs/learn-harness-engineering ข้อมูล ณ 23 สิงหาคม 2026 Nokka

Top comments (0)