สวัสดีค่าา 👋

EP สุดท้ายของ Tier 1 และ เราผ่านมา 3 EP แล้ว CLAUDE.md, Spec Files, Plan-First Workflow ตอนนี้ถึงเรื่องที่ฟังดูเบาที่สุดแต่จริงๆ สำคัญมาก นั่นก็คือบันทึกการตัดสินใจ Decision Logs


ปัญหาที่เกิดขึ้นทุกโปรเจค

เคยเจอไหม

โปรเจคทำมา 3 เดือน มีโค้ดส่วนนึงที่ดูประหลาดมาก ทำไมถึงเขียนแบบนี้? ทำไมไม่ใช้ library ยอดนิยมแทน? ทำไม function นี้ทำงานแปลกๆ?

ถามทีมก็ไม่มีใครจำ ถาม Claude ก็ไม่รู้ (เพราะมันไม่ได้อยู่ตอนตัดสินใจ) และเราเองก็ลืมไปแล้ว 5555


ทำไม Claude ถึงทำผิดซ้ำๆ ในสิ่งที่เคยแก้ไปแล้ว?

เมื่อ EP.1 อธิบายว่า Claude ไม่มี memory ข้ามระหว่าง sessions ทุก session ใหม่คือเริ่มใหม่หมด แม้แต่ผลลัพธ์จากการตัดสินใจที่เราเคย discuss กันอย่างยาวนาน 3 ชั่วโมง จากsession ที่แล้ว ก็หายเหมือนกัน

Session 1:
เรา: "ทำไม user service ถึงเขียนแบบนี้?"
Claude: "เพราะ microservices ต้องการ X"
เรา: "โอเค แต่โปรเจคเราไม่ต้องการ X เพราะ Y"
Claude: "เข้าใจแล้ว จะปรับใหม่"
[ปรับ code แล้ว โอเคเลย]

Session 2 (วันถัดมา):
Claude: [ทำแบบเดิมซ้ำอีก เหมือน session 1 ไม่เคยเกิดขึ้น]

หุนหวยยยย 55555


Decision Log คืออะไร?

Decision Log คือไฟล์ที่บันทึกการตัดสินใจสำคัญในโปรเจค วางไว้ที่ docs/decisions/

มันไม่ใช่ changelog ที่บอกว่า "เปลี่ยนอะไร" แต่คือไฟล์ที่ตอบว่า "ทำไมถึงเปลี่ยน" และ "ทำไมไม่ทำแบบอื่น"


Template ที่ใช้

ใช้ format ที่เรียกว่า ADR (Architecture Decision Record) ชื่อฟังดูทางการ แต่จริงๆ ง่ายมาก

# ADR-001: เลือกใช้ Supabase แทน Firebase

Date: 2025-11-01
Status: ✅ ตัดสินใจแล้ว

## บริบท (Context)
ต้องการ database สำหรับ blog ที่ต้องการ:
- Real-time updates สำหรับ comment
- File storage สำหรับรูปภาพ
- Auth ที่ไม่ต้องเขียนเอง

## ตัวเลือกที่พิจารณา

| ตัวเลือก | ข้อดี | ข้อเสีย |
|---------|-------|---------|
| Firebase | ใช้ง่าย, ฟรีเริ่มต้น | vendor lock-in, pricing ขึ้น |
| Supabase | open source, PostgreSQL จริงๆ | ต้อง setup มากกว่า |
| self-hosted PostgreSQL | full control | ต้องดูแลเอง, ไม่มีเวลา |

## การตัดสินใจ
เลือก **Supabase** เพราะ:
1. เป็น PostgreSQL จริงๆ ถ้าต้องย้ายออกในอนาคตง่ายกว่า
2. pricing predictable กว่า Firebase
3. Row Level Security ดีกว่าสำหรับ multi-user

## ผลที่ตามมา
- ต้องเรียน Supabase SDK เพิ่ม (ไม่นาน)
- Migration ง่ายกว่าถ้าต้องการย้ายเพราะเป็น standard SQL

Session Notes: บันทึกความคืบหน้าแต่ละวัน

นอกจาก Decision Logs ยังมี Session Notes วางไว้ที่ docs/sessions/

ต่างกันตรง

Session Notes บันทึกความคืบหน้าประจำวัน เขียนสั้นกว่า แค่ให้รู้บริบทตัวอย่าง เช่น "เลือกใช้ Next.js เพราะวันนี้ทำ login form จบ ยังติดเรื่อง session token"

Session Note ไม่ยาก

# Session: 2025-12-01

## ทำอะไรไปบ้าง
- ✅ เพิ่ม login form
- ✅ เชื่อม Supabase auth
- 🔄 กำลังทำ: reset password (ยังไม่จบ)

## ปัญหาที่เจอ
- Supabase session token expire ใน 1 ชั่วโมง → ต้องทำ refresh token
- ยังไม่แน่ใจว่าจะเก็บ token ใน cookie หรือ localStorage

## สิ่งที่ต้องทำต่อ
- [ ] Implement refresh token
- [ ] ตัดสินใจเรื่อง cookie vs localStorage (ถามทีม)

วิธีใช้ Logs กับ Claude

ทีนี้มาดูส่วนที่ทำให้ logs เหล่านี้มีพลังมาก เราสามารถสั่ง Claude ให้ อ่าน logs ก่อนทำงาน ได้

ใส่ใน CLAUDE.md ว่า:

## ก่อนเริ่ม session ใหม่
อ่านไฟล์เหล่านี้ก่อนเสมอ:
- docs/sessions/ (session notes ล่าสุด 3 ไฟล์)
- docs/decisions/ (decisions ที่เกี่ยวกับ task ปัจจุบัน)

แล้วพอเริ่ม session ใหม่ Claude จะรู้ว่า:

  • เราทำอะไรไปแล้ว

  • ทำไมถึงตัดสินใจแบบนั้น

  • อะไรยังค้างอยู่

ไม่ต้องอธิบายซ้ำๆแล้ว


ความต่างระหว่าง Manual กับ Automatic Memory

ตรงนี้อยากให้เข้าใจความต่างนึง คือ

Decision Logs & Session Notes = Manual Memory เราเขียนเอง ควบคุมว่าอะไรสำคัญพอที่จะบันทึก

AI Memory Tools (จะพูดถึงใน EP.8) = Automatic Memory ระบบจับทุกอย่างใน session ให้อัตโนมัติ ใช้ vector search ค้นหา

ทั้งสองอย่างไม่ได้แทนกัน แต่ ทำงานร่วมกัน (เหมือนเวทเทรนนิ่ง กับ พิลาทิส 5555)

  • Manual logs จับ "milestones" การตัดสินใจสำคัญที่ต้องการบริบท

  • Automatic memory จับ "firehose" ทุกอย่างที่คุยกัน สำหรับค้นหาทีหลัง

ตอนนี้ถ้าเพิ่งเริ่ม ทำ manual ก่อนก็พอ automatic ไว้ทำตอนที่โปรเจคใหญ่ขึ้นแล้วก็ได้


ลองทำดู!

  1. สร้างโฟลเดอร์ docs/decisions/ และ docs/sessions/

  2. นึกถึงการตัดสินใจ 1 อย่างในโปรเจคที่ผ่านมา เช่น "ทำไมถึงเลือก framework นี้"

  3. เขียน ADR สั้นๆ ตาม template (ไม่ต้องยาว 5-10 บรรทัดก็พอ)

  4. เขียน Session Note สำหรับวันนี้ว่าทำอะไรไปบ้าง

  5. ใส่ path ของ folders เหล่านี้ใน CLAUDE.md ให้ Claude อ่านก่อนเริ่ม session


สรุป Tier 1 ทั้งหมด

จบ Tier 1 - Foundation แล้วค่า เย้! 🎉

Tier 1 สิ่งที่ทำไปแล้ว:
✅ EP.1 CLAUDE.md    → Claude จำโปรเจคได้ทุก session
✅ EP.2 Spec Files   → Claude รู้ว่าต้องทำอะไรก่อน code
✅ EP.3 Plan-First   → Claude วางแผนก่อนทำทุกครั้ง
✅ EP.4 Decision Log → Claude รู้เหตุผลของทุกการตัดสินใจ

ถ้าทำครบ 4 อย่างนี้แล้ว การใช้ Claude Code จะ smooth ขึ้นเยอะเลยยย 🙏


EP ถัดไป: เข้า Tier 2 - Automation กันแล้ว! EP.5 จะพูดถึง Codebase Knowledge Graphs — วิธีลด token ที่ Claude ผลาญ จาก 20,000 เหลือแค่ไม่กี่ร้อย ต่อ session ด้วยการทำ KG

วันนี้ขอบคุณที่อ่านจนจบ ขอให้มีวันที่ดีนะคะ ^^


Tags: Claude Code, AI, Documentation, Decision Log, ADR, Developer Tools