วิธีสร้าง AI Agents ที่ไม่ลืมข้อมูล (ด้วยการใช้ Memory Files)

@sairahul1
อังกฤษ4 สัปดาห์ที่ผ่านมา · 19 มิ.ย. 2569
395K
256
44
16
773

TL;DR

AI agents มักทำงานผิดพลาดเนื่องจากขาดบริบทที่ต่อเนื่องระหว่างการใช้งานแต่ละครั้ง การใช้ memory files อย่าง CLAUDE.md และ AGENTS.md จะช่วยให้นักพัฒนาสามารถสร้าง agents ที่จดจำกฎของโปรเจกต์และเรียนรู้จากรูปแบบต่างๆ ได้ในระยะยาว

เอเจนต์ AI ส่วนใหญ่ไม่ได้ล้มเหลวเพราะโมเดลไม่ดี

พวกมันล้มเหลวเพราะทุกครั้งที่เริ่มเซสชั่นใหม่ พวกมันจะลืมทุกอย่างราวกับความจำเสื่อม

คุณบอก Claude ว่า “เราใช้ pnpm ไม่ใช่ npm”

พอเซสชั่นถัดไป มันก็ลองใช้ npm อีก

คุณบอกมันว่า “ที่นี่ไม่ใช้ default export นะ”

พอเซสชั่นถัดไป มันก็เขียน default export

ทุกครั้งที่คุณแก้ไข มันจะหายไปทันทีที่เซสชั่นจบลง

มีวิธีแก้ด้วยไฟล์เดียว

ผมใช้เวลาสามเดือนในการพูดซ้ำๆ เพื่อหามันเจอ

นี่คือทุกอย่างที่ผมเรียนรู้

ทำไมเอเจนต์ AI ส่วนใหญ่ถึงล้มเหลว

Rahul - inline image

ไม่ใช่เพราะโมเดล

มันเป็นเลเยอร์ที่หายไปใต้โมเดลต่างหาก

→ คุณเขียน prompt

→ เอเจนต์ทำงาน

→ เซสชั่นจบลง

→ ความจำหายไป

→ เซสชั่นถัดไป: ความผิดพลาดเดิม

→ คุณต้องสั่งคำสั่งเดิมซ้ำ

→ ตลอดไป

วงจรนี้แหละคือสาเหตุใหญ่ที่สุดของการเสียเวลาในการเขียนโค้ดด้วย AI

ไม่ใช่โค้ดที่ไม่ดี ไม่ใช่ภาพหลอน

แต่เป็นการพูดซ้ำ

เลเยอร์ที่หายไป: ความจำ

Rahul - inline image

ทุกคนหมกมุ่นอยู่ว่าโมเดลไหนฉลาดที่สุด

ผิดเลเยอร์แล้ว

การอัปเกรดที่แท้จริงไม่ใช่โมเดลที่ฉลาดกว่า

แต่คือการทำให้โมเดลมีที่เก็บสิ่งที่มันเรียนรู้

→ Prompts → บอกเอเจนต์ว่าต้องทำอะไรตอนนี้

→ Agents → ดำเนินงาน

→ Memory → เก็บข้อมูลต่อเนื่องระหว่างเซสชั่น

→ Persistent context → ไม่ต้องแก้ไขซ้ำอีก

→ Learning system → เอเจนต์พัฒนาไปเรื่อยๆ

นี่คือความแตกต่างระหว่างเครื่องมือกับเพื่อนร่วมทีม

เครื่องมือทำตามที่คุณบอก ทุกครั้ง เริ่มจากศูนย์

เพื่อนร่วมทีมจำสิ่งที่เกิดขึ้นเมื่อวานได้

5 ไฟล์ความจำที่เอเจนต์ AI ทุกตัวต้องการ

Rahul - inline image

พอคุณยอมรับว่าความจำคือเลเยอร์ที่หายไป คำถามต่อไปคือ: มันจะอยู่ที่ไหน?

ห้าไฟล์ แต่ละอันมีหน้าที่ต่างกัน

→ CLAUDE.md — เอกสารสรุปข้อมูลส่วนตัวของ Claude

→ AGENTS.md — มาตรฐานสากลที่เครื่องมือหลักทุกตัวอ่าน

→ CLAUDE.local.md — ความชอบส่วนตัวของคุณ ไม่ต้อง commit ลง git

→ MEMORY.md — โน้ตที่ AI เขียนเกี่ยวกับตัวเองโดยอัตโนมัติ

→ README.md — สำหรับมนุษย์ ไม่ใช่เอเจนต์

มาดูทีละอันกัน

CLAUDE.md — ไฟล์ที่เป็นจุดเริ่มต้นของทุกอย่าง

Rahul - inline image

วางไฟล์นี้ไว้ใน root ของโปรเจกต์คุณ

Claude จะอ่านมันทุกครั้งที่เริ่มเซสชั่น

มองว่ามันเป็นเอกสารสรุปข้อมูลสำหรับสมาชิกทีมใหม่ที่มีอาการความจำเสื่อม

CLAUDE.md ที่ดีควรมีสี่ส่วน:

→ Project context — หนึ่งบรรทัด เช่น "Next.js e-commerce app with Stripe and Postgres"

→ Code style — ไม่ใช่ "จัดรูปแบบโค้ดให้ถูกต้อง" แต่เป็น "ใช้ ES modules, named exports, 2-space indent"

→ Commands — คำสั่งที่แน่นอน เช่น pnpm test:integration ไม่ใช่ "รันเทส"

→ Architecture — "API routes ไปไว้ที่ /src/api/[resource]/route.ts ใช้ Repository pattern สำหรับการเข้าถึง DB"

text
1# CLAUDE.md
2
3## Project Context
4Next.js 14 e-commerce app. Postgres + Stripe integration.
5
6## Code Style
7- ES modules only
8- Named exports, never default exports
9- 2-space indentation
10- TypeScript strict mode
11
12## Commands
13- Install: pnpm install
14- Dev: pnpm dev
15- Test: pnpm test:integration
16- Lint: pnpm lint:fix
17
18## Architecture
19- API routes: /src/api/[resource]/route.ts
20- DB access: repository pattern only
21- Components: /src/components, one file per component

เป้าหมาย: ไม่เกิน 300 บรรทัด

ทุกบรรทัดต้องแย่งความสนใจกับงานจริง

รัน /init แล้ว Claude จะสร้างไฟล์เริ่มต้นให้อัตโนมัติ

จากนั้นลบส่วนที่ไม่จำเป็นออกไป

ไฟล์เริ่มต้นมักมีสิ่งที่ Claude รู้อยู่แล้วจาก package.json ของคุณ เก็บไว้เฉพาะสิ่งที่ Claude จะทำผิดถ้าไม่มีไฟล์นี้

ระบบ @imports — ทำให้มันกระชับ

Rahul - inline image

CLAUDE.md ไม่จำเป็นต้องเก็บทุกอย่าง

มันสามารถ import ไฟล์อื่นได้:

ดู

@README .md สำหรับภาพรวมโปรเจกต์ ดู

@docs/api-patterns .md สำหรับข้อกำหนด API ดู

@package .json สำหรับ npm scripts ที่มี

การ import สามารถทำแบบซ้อนกันได้ — สูงสุด 5 ระดับ

วิธีนี้ช่วยแก้ปัญหา "ไฟล์ยักษ์ไฟล์เดียว"

สำหรับทีม: ทีม frontend เป็นเจ้าของ docs/frontend-rules.md

ทีม security เป็นเจ้าของ docs/security.md

CLAUDE.md แค่ import ทั้งหมดเข้ามา

ไฟล์ root ไฟล์เดียว แหล่งข้อมูลเฉพาะทางมากมาย

AGENTS.md — มาตรฐานสากล

Rahul - inline image

CLAUDE.md ใช้ได้กับ Claude เท่านั้น

ถ้าทีมคุณใช้ Cursor, Copilot หรือ Gemini CLI ด้วย — พวกมันจะไม่อ่านไฟล์นี้

AGENTS.md แก้ปัญหานี้

ไฟล์เดียว เอเจนต์หลักทุกตัวอ่านมัน

รองรับโดย Claude Code, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Aider, Zed, Warp และอื่นๆ

มันเป็น Markdown มาตรฐาน ไม่มี schema พิเศษ ไม่ต้องใช้ YAML

text
1# AGENTS.md
2
3## Project Overview
4E-commerce platform built with Next.js 14, Postgres, and Stripe.
5
6## Build & Test
7- Install: pnpm install
8- Dev: pnpm dev
9- Test: pnpm test
10- Lint: pnpm lint:fix
11
12## Code Standards
13- TypeScript strict mode
14- Named exports over default exports
15- API routes follow REST conventions in /src/api/
16
17## Testing Requirements
18- All PRs must include tests
19- vitest for unit tests, playwright for e2e

คิดว่ามันเป็น README สำหรับเอเจนต์ AI

README.md มีไว้สำหรับมนุษย์ AGENTS.md มีไว้สำหรับเอเจนต์ทุกตัว ไม่ว่าจะมาจากผู้ให้บริการรายใด CLAUDE.md เพิ่มข้อมูลเฉพาะของ Claude เพิ่มเติม

มันเสริมกัน ไม่ได้ขัดแย้งกัน

Auto-memory — AI ที่จดบันทึกของตัวเอง

Rahul - inline image

นี่คือเลเยอร์ใหม่และน่าสนใจที่สุด

Claude Code สามารถเขียนไฟล์ความจำของมันเองระหว่างเซสชั่นของคุณ

memory/ ├── MEMORY.md ← index, โหลดทุกเซสชั่น ├── debugging.md ← บันทึกเกี่ยวกับรูปแบบการดีบัก ├── api-conventions.md ← การตัดสินใจออกแบบ API └── ...

การเปลี่ยนแปลงสำคัญ:

คุณเขียน CLAUDE.md คุณเป็นคนให้คำแนะนำ

Claude เขียน MEMORY.md มันบันทึกสิ่งที่มันเรียนรู้

→ มนุษย์เขียนกฎ

→ เอเจนต์ค้นพบรูปแบบระหว่างทำงาน

→ เอเจนต์เขียนความจำของตัวเอง

→ เซสชั่นต่อไปเริ่มต้นอย่างชาญฉลาดขึ้น

คุณสามารถเรียกใช้สิ่งนี้ได้โดยตรง เมื่อจบเซสชั่นที่มีประสิทธิภาพ ให้พูดว่า:

"อัปเดตไฟล์ความจำของคุณด้วยสิ่งที่คุณเรียนรู้เกี่ยวกับโค้ดเบสของเราวันนี้"

สิ่งที่เรียนรู้จะคงอยู่ ไม่ต้องอธิบาย wrapper ORM ที่คุณสร้างเองซ้ำอีกเป็นครั้งที่ห้า

รัน /memory เมื่อไหร่ก็ได้เพื่อตรวจสอบหรือแก้ไขสิ่งที่ Claude บันทึกไว้

ขั้นตอนการใช้ /init แล้วลบออก

Rahul - inline image

วิธีที่เร็วที่สุดในการสร้างไฟล์ความจำในโปรเจกต์ใหม่:

  1. รัน /init ในไดเรกทอรีโปรเจกต์ของคุณ
  2. Claude จะสร้าง CLAUDE.md เริ่มต้นตามโค้ดเบสของคุณ
  3. ลบสิ่งที่คุณไม่ต้องการออก

ขั้นตอนที่ 3 คือจุดที่คนส่วนใหญ่ทำผิด

ไฟล์ที่สร้างขึ้นเป็นแบบร่าง ไม่ใช่ผลิตภัณฑ์สำเร็จรูป

มันมักจะมีเนื้อหาที่ไม่จำเป็น เช่น "โปรเจกต์นี้ใช้ JavaScript" ขอบคุณ — เห็นได้จาก package.json

การแก้ไขจากแบบร่างที่สมเหตุสมผลดีกว่าการเขียนจากไฟล์เปล่า

หลังจากตั้งค่าเสร็จ ให้ค่อยๆ สร้างเพิ่มเติม

เมื่อ Claude สมมติสิ่งที่ผิด — เช่น มันพยายาม import ไลบรารีที่เลิกใช้แล้ว — อย่าแค่แก้ไขครั้งเดียว

บอกมันว่า: "เพิ่มใน CLAUDE.md ของฉัน: ให้ import จาก @company/utils-v2 เสมอ อย่า import จาก @company/utils"

คำแนะนำนี้จะคงอยู่สำหรับทุกเซสชั่นในอนาคต

ทุกสองสามสัปดาห์ ให้ Claude ตรวจสอบและทำความสะอาด CLAUDE.md

คำแนะนำจะสะสมมากขึ้น บางอย่างก็ซ้ำซ้อน บางอย่างก็เริ่มขัดแย้งกัน การจัดระเบียบสั้นๆ จะช่วยให้มันคมชัด

การตั้งค่าจริงของผม

Rahul - inline image

หลังจากทดสอบทั้งหมดนี้ในหลายโปรเจกต์ที่ใช้งานจริง นี่คือสิ่งที่ใช้ได้ผล:

AGENTS.md ใน project root — คำแนะนำที่ใช้ร่วมกันซึ่งเครื่องมือ AI ใดๆ ก็อ่านได้ คำสั่ง build, มาตรฐานโค้ด, ข้อกำหนดการทดสอบ

CLAUDE.md พร้อม @imports สำหรับพฤติกรรมเฉพาะของ Claude อยู่ที่ต่ำกว่า 100 บรรทัด ส่วนใหญ่ชี้ไปที่ไฟล์ใน docs/

CLAUDE.local.md สำหรับนิสัยส่วนตัว — ข้อมูลทดสอบของผม, URL sandbox, คำสั่งลัด ไม่เคย commit ลง git

เปิดใช้งาน Auto-memory Claude จดบันทึกของตัวเอง ผมตรวจสอบทุกเดือน

ส่วนอื่นๆ ทั้งหมดถูกแทนที่ด้วย symlink ที่ชี้กลับไปที่ AGENTS.md แหล่งความจริงเดียว

bash
1# การตั้งค่า symlink เพื่อความสอดคล้องระหว่างหลายเครื่องมือ
2ln -sfn AGENTS.md .github/copilot-instructions.md
3mkdir -p .cursor/rules && ln -sfn ../../AGENTS.md .cursor/rules/main.mdc

ไม่หรูหรา

แต่มันกำจัดการเบี่ยงเบนของคำแนะนำระหว่างเครื่องมือทุกตัวในทีม

การเปลี่ยนแปลงครั้งใหญ่

Rahul - inline image

นักพัฒนาส่วนใหญ่คิดว่า:

โมเดลที่ดีกว่า = เอเจนต์ที่ดีกว่า

ผิด

สูตรที่แท้จริงคือ:

โมเดล + ความจำ + การค้นคืน + ข้อเสนอแนะ = เอเจนต์ที่มีประโยชน์

โมเดลที่ฉลาดกว่าแต่ไม่มีความจำก็ยังลืมคำสั่งทดสอบของคุณในวันพรุ่งนี้

โมเดลธรรมดาแต่มีความจำที่ยอดเยี่ยมจะยิ่งเฉียบคมขึ้นทุกสัปดาห์

ความจำคือตัวแปรที่ทวีคูณ

ความฉลาดของโมเดลไม่ใช่

การปรับปรุงที่ใหญ่ที่สุดที่ผมทำกับขั้นตอนการทำงาน AI ของผมไม่ใช่การเปลี่ยนโมเดล

แต่คือการทำให้โมเดลมีความจำ

ความแตกต่างระหว่าง:

"Claude เราใช้ pnpm" — ทุกเซสชั่น

และ:

"Claude รู้แล้ว" — ทุกเซสชั่น

คือความแตกต่างระหว่างเครื่องมือกับเพื่อนร่วมทีม

ถ้าสิ่งนี้มีประโยชน์:

→ แชร์ต่อเพื่อบอกนักพัฒนาทุกคนที่ยังพูดซ้ำกับ Claude

→ ติดตาม @sairahul1 สำหรับระบบที่ทวีคูณในขณะที่คุณหลับ

→ คั่นหน้านี้ — ตั้งค่ำคืนนี้ หยุดแก้ไขพรุ่งนี้

ผมเขียนเกี่ยวกับ AI, การสร้างผลิตภัณฑ์, และระบบที่ทำงานได้โดยไม่ต้องมีคุณ

บันทึกในคลิกเดียว

อ่านบทความไวรัลเชิงลึกด้วย AI ใน YouMind

บันทึกแหล่งที่มา ถามคำถามที่ตรงประเด็น สรุปข้อโต้แย้ง และเปลี่ยนบทความไวรัลให้เป็นโน้ตที่นำกลับมาใช้ได้ใน AI เวิร์กสเปซเดียว

สำรวจ YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม