เครือข่ายประสาทเทียม “สมอง” ที่เรืองแสงเชื่อมต่อกับไอคอนเอกสารลอยตัว แสดงถึงความทรงจำของโปรเจกต์ที่ประกอบด้วย bugs, decisions, configuration files เพื่อให้สามารถเรียกคืนได้อย่างรวดเร็ว
skill ที่มีโค้ดไม่ถึง 300 บรรทัด กลายเป็นเครื่องมือช่วยพัฒนาประสิทธิภาพด้วย AI ที่ฉันใช้บ่อยที่สุดได้อย่างไร
ลองนึกภาพ: วันอังคาร เวลา 4 ทุ่ม คุณจ้องมองข้อความแสดงข้อผิดพลาดที่ดูคุ้นตา — “Connection refused on port 5432” คุณเคยเห็นมันมาก่อน และเคยแก้ไขมันมาก่อน แต่ที่ไหน? เมื่อไหร่? คำอธิบายการ commit เขียนแค่ว่า “fixed db connection” Stack Overflow ให้คำตอบมา 12 แบบ ผู้ช่วย AI ของคุณกระตือรือร้นเสนอวิธีแก้ไขที่คุณเคยลองไปแล้ว
นี่คือสิ่งที่เรียกว่า “อาการหลงลืมของ AI” (AI amnesia) และต้นทุนที่มันนำมานั้นเกินกว่าที่คุณจะจินตนาการได้
ผู้ช่วยเขียนโค้ด AI ทุกตัวมีข้อจำกัดที่น่าหงุดหงิดเหมือนกัน นั่นคือ พวกมันจำอะไรไม่ได้เลยระหว่างเซสชันการสนทนา เมื่อเริ่มการสนทนาใหม่ Claude ก็ไม่รู้ว่าคุณใช้เวลา 45 นาทีเมื่อวานนี้เพื่อค้นพบว่า: สภาพแวดล้อม staging ของคุณใช้พอร์ต 5433 ไม่ใช่ 5432 มันจำไม่ได้ว่าทำไมคุณเลือก PostgreSQL แทน MongoDB (เพราะทีมมีประสบการณ์ที่เกี่ยวข้องอยู่แล้ว) มันก็นึกไม่ออกว่า “connection refused” มักจะหมายความว่า VPN หลุด หรือมันอาจจะเสนอให้ใช้ NLP lib หรือ charting lib ตัวใหม่ ในขณะที่ทั้งโปรเจกต์ใช้ชุดอื่นเป็นมาตรฐานอยู่แล้ว และคุณก็ตัดสินใจไปนานแล้ว จากนั้น — คุณก็ต้องอธิบายใหม่อีกครั้ง ครั้งแล้วครั้งเล่า
ความรู้ที่สะสมมาอย่างยากลำบาก? มันจะหายไปทุกครั้ง
ตอนที่ฉันดูวิดีโอ YouTube เกี่ยวกับวิธีทำให้ Claude Code รักษาบริบทของโปรเจกต์ให้ทันสมัย ฉันพบวิธีแก้ปัญหาง่ายๆ ผู้สร้างวิดีโอลิงก์ไฟล์ markdown ขนาดเล็กบางไฟล์ใน CLAUDE.md เพื่อติดตาม decisions, bugs และข้อเท็จจริงสำคัญ ในตอนนั้นฉันเกิดความคิดแวบขึ้นมา: ถ้าฉันเขียน skill หนึ่งตัวเพื่อจัดการสิ่งเหล่านี้โดยอัตโนมัติล่ะ?
ความคิดนั้นกลายเป็น project-memory ซึ่งเป็นหนึ่งใน skills แรกๆ ที่ฉันเขียนสำหรับ Claude Code แม้จะเรียบง่ายมาก (ไม่ถึง 300 บรรทัด) แต่มันช่วยประหยัดเวลาให้ฉันได้จริงๆ บทช่วยสอนนี้จะสอนวิธีสร้าง project memory skill ของคุณเอง และที่สำคัญกว่านั้นคือ วิธีคิดและสร้าง skills ที่แก้ปัญหาได้จริง
ปัจจุบันไม่ใช่แค่ Claude Code เท่านั้น Codex, GitHub Copilot และ OpenCode ต่างประกาศรองรับ Agentic Skills แล้ว แม้กระทั่งตลาดสำหรับ agentic skills ที่รองรับ Gemini, Aidr, Qwen Code, Kimi K2 Code, Cursor ฯลฯ ก็มีแล้ว ซึ่งรองรับแพลตฟอร์มมากกว่า 14 แพลตฟอร์ม และมีตัวติดตั้ง agentic skills แบบทั่วไป (skilz) ในคู่มือนี้ ฉันจะใช้คำว่า “Claude” และ “coding agent” สลับกันไปมา เหมือนกับการพูดว่า “Xerox” แทนคำว่า “ถ่ายเอกสาร” (อีกอย่างหนึ่ง ในเวิร์กโฟลว์การทำงานประจำวันของฉัน ฉันชอบ Claude Code, OpenCode และ Gemini CLI มากกว่า)
ต้นทุนที่แท้จริงของอาการหลงลืมของ AI
ให้ฉันวาดภาพสถานการณ์ที่คุณอาจคุ้นเคย:
เดือนที่ 1: ค้นพบครั้งแรก
Error: CORS policy blocked request from localhost:3000
[ดีบั๊ก 2 ชั่วโมง ลองการตั้งค่า proxy, การเปลี่ยน header, การเขียนใหม่ nginx]
Solution: เพิ่มการตั้งค่า proxy ใน package.json
เดือนที่ 6: รู้สึกคุ้นเคย
Error: CORS policy blocked request from localhost:3000
Developer: "นี่ดูคุ้นตา... ตอนนั้นเราแก้ยังไงนะ?"
[ค้นหาประวัติ commit, ดู Stack Overflow อีกครั้ง, ถาม Claude แต่มันจำอะไรไม่ได้เลย]
[ใช้เวลา 1 ชั่วโมงค้นพบวิธีแก้เดิมอีกครั้ง]
คุ้นไหม? ความจริงที่โหดร้ายคือ: ผู้ช่วยเขียนโค้ด AI ที่ไม่มีความจำทำให้สถานการณ์แย่ลงแทนที่จะดีขึ้น ไม่มีความจำ ก็หมายความว่า:
- ทุกการสนทนาใหม่เริ่มจากศูนย์
- ทุก bug ราวกับว่าแก้เป็นครั้งแรก
- วิธีแก้ปัญหาถูก “ค้นพบใหม่” ซ้ำแล้วซ้ำเล่า (ฉันเคยแก้ปัญหา CORS เดียวกันสี่ครั้งภายใน 6 เดือน)
- ไม่มีการเรียนรู้ที่สะสมตามเวลา ไม่ว่าจะเป็นคุณหรือผู้ช่วย AI ของคุณ
ต้นทุนที่ซ่อนอยู่สูงอย่างน่าตกใจ หากคุณใช้เวลาเพียง 30 นาทีต่อสัปดาห์ในการแก้ปัญหาที่เคยแก้แล้วซ้ำๆ หนึ่งปีก็คือ 26 ชั่วโมง คิดเป็นเงิน 100 ดอลลาร์ต่อชั่วโมง นักพัฒนาทุกคนจะเสียเงิน 2,600 ดอลลาร์ต่อปี
แต่ถ้าผู้ช่วย AI ของคุณจำได้ล่ะ?
Claude Code Agent Skill คืออะไร?
ก่อนจะเจาะลึกถึง project-memory ต้องเข้าใจก่อนว่า skill คืออะไรกันแน่ หากคุณเคยหวังจะสอน Claude ให้รู้เวิร์กโฟลว์เฉพาะ หรือให้ความรู้เฉพาะด้าน skills คือคำตอบ
agent skill คือโฟลเดอร์ที่มีไฟล์ SKILL.md และทรัพยากรเสริม (ถ้ามี) SKILL.md มีสองส่วน:
- YAML frontmatter : เมตาดาต้า บอก Claude ว่าเมื่อไหร่ควรเปิดใช้งาน skill นี้
- Markdown body : คำสั่งที่ Claude จะทำตามเมื่อ skill นี้ถูกเปิดใช้งาน
ให้คิดถึง skills ว่าเป็น “โหมดผู้เชี่ยวชาญ” ที่สามารถติดตั้งได้ เมื่อคุณพูดว่า “set up project memory” Claude ไม่ต้องเดาว่าคุณหมายถึงอะไร มันจะโหลดคำสั่งที่เฉพาะเจาะจงและผ่านการทดสอบแล้วเพื่อทำสิ่งนั้น
โครงสร้างของ Agent Skill
โครงสร้างไฟล์ SKILL.md: YAML frontmatter (name, description), Markdown body ประกอบด้วย Overview, When to Use, Core Capabilities, Examples, Success Criteria
โครงสร้างของ SKILL.md แสดง YAML frontmatter (name และ description) และส่วนต่างๆ ของ Markdown body: Overview, When to Use, Core Capabilities, Examples, Success Criteria
โดยทั่วไป skills จะถูกวางไว้สองที่:

วาง skills ที่ใช้บ่อยในไดเรกทอรีโฮมของผู้ใช้ ~/.claude/skills/ เพื่อใช้ได้ทั่วโลกในทุกโปรเจกต์ เหมาะกับ skills ทั่วไปเช่น code review, documentation ฯลฯ ส่วน skills เฉพาะโปรเจกต์จะวางไว้ใน .claude/skills/ ที่รูทของโปรเจกต์ ใช้ได้เฉพาะในโปรเจกต์นี้เท่านั้น สำหรับเวิร์กโฟลว์ของโปรเจกต์ ข้อตกลงของทีม ฯลฯ ฉันพูดว่า “โดยทั่วไป” เพราะอาจมี skills แบบองค์กรที่รวมศูนย์, skills ที่แชร์ใน mono-repo ฯลฯ และยังขึ้นอยู่กับผู้ให้บริการที่คุณใช้ด้วย (เช่น ~/.codex/skills/, ~/.config/opencode/skill/, ~/.gemini/skills/, .claude/skills/, .codex/skills/, .opencode/skills/ เป็นต้น)
💡 ลองทำดู: รัน ls ~/.claude/skills/ เพื่อดูว่าคุณติดตั้ง skills อะไรไว้แล้วบ้าง ถ้าไดเรกทอรีนั้นยังไม่มี มันจะถูกสร้างขึ้นอัตโนมัติเมื่อคุณติดตั้ง skill แรก
การเปิดใช้งาน Skill ทำงานอย่างไร
เมื่อคุณส่งคำขอ Claude Code จะโหลด agentic skills โดยใช้โหมด progressive disclosure (การเปิดเผยแบบค่อยเป็นค่อยไป): โหลดตามต้องการ, โหลดเฉพาะสิ่งที่จำเป็นเมื่อจำเป็นเท่านั้น นี่ทำให้การโต้ตอบรวดเร็ว และยังให้ความสามารถที่แข็งแกร่งเมื่อต้องการ
แผนภาพการเปิดใช้งาน Skill: สามขั้นตอน — Discovery (สแกนไดเรกทอรี, โหลดเมตาดาต้า), Matching (จับคู่คำขอกับ skill), Execution (โหลด SKILL.md, ทำตามคำสั่งเพื่อทำงานให้เสร็จ)
ภาพด้านบนแสดงขั้นตอนการเปิดใช้งาน skill: Discovery (สแกนไดเรกทอรี, อ่านเฉพาะเมตาดาต้า), Matching (ตรวจสอบว่าคำขอตรงกับ skill หรือไม่), Execution (โหลด SKILL.md, ทำตามคำสั่งเพื่อทำงานให้เสร็จ)
ประเด็นสำคัญคือ: Claude จะสแกนไดเรกทอรี skills และอ่านเฉพาะเมตาดาต้า (name + description) จนกว่าจะพบรายการที่ตรงกัน จึงจะโหลดคำสั่งทั้งหมด นั่นหมายความว่าแม้จะติดตั้ง skills เป็นสิบๆ ตัว การสนทนาประจำวันก็จะไม่ช้าลง
เมื่อเข้าใจกลไกแล้ว มาดูกันว่า project-memory ทำงานอย่างไรในทางปฏิบัติ
Project Memory Agent Skill
project-memory skill จะสร้างระบบความรู้ที่มีโครงสร้างในไดเรกทอรี docs/project_notes/ ซึ่งประกอบด้วยไฟล์เฉพาะทางสี่ไฟล์ แต่ละไฟล์มีวัตถุประสงค์เฉพาะสำหรับการบันทึกและเรียกคืนความรู้ของโปรเจกต์
โครงสร้างไฟล์ Memory
โครงสร้างไฟล์ของความทรงจำโปรเจกต์: ไดเรกทอรี docs/project_notes/ ประกอบด้วย bugs.md, decisions.md, key_facts.md, issues.md และไฟล์การตั้งค่าสองไฟล์คือ CLAUDE.md และ AGENTS.md
สังเกตโครงสร้างนี้: docs/project_notes/ ประกอบด้วย bugs.md, decisions.md, key_facts.md, issues.md และเชื่อมโยงผ่าน CLAUDE.md และ AGENTS.md รวมกันเป็นความทรงจำของโปรเจกต์

ไฟล์ memory แต่ละไฟล์มีหน้าที่เฉพาะ:
* bugs.md: ทำหน้าที่เป็นฐานข้อมูล bug ที่ค้นหาได้ ตัวอย่างเช่น รายการ “BUG-018: Pulumi state drift – run pulumi refresh – yes” จะบันทึกทั้งปัญหาและวิธีแก้ไข เพื่อหลีกเลี่ยงการเสียเวลาเมื่อเจอปัญหาเดิมอีก ฉันใช้มันเพื่อติดตามปัญหาที่เกิดขึ้นซ้ำๆ ในโปรเจกต์
* decisions.md: ใช้ ADR (บันทึกการตัดสินใจด้านสถาปัตยกรรม) เพื่อบันทึกการเลือกทางสถาปัตยกรรม เช่น “ADR-012: Use D3.js for all charts (team expertise)” เพื่อให้แน่ใจว่ามีความสม่ำเสมอและป้องกันความขัดแย้งในการเลือกเทคโนโลยีในภายหลัง
* key_facts.md: ใช้สำหรับค้นหารายละเอียดสำคัญของโปรเจกต์อย่างรวดเร็ว เช่น “Staging API: https://api.staging.example.com:8443” เพื่อหลีกเลี่ยงการเดาพอร์ตและ URL
* issues.md: รักษาประวัติการทำงานตามลำดับเวลา เช่น “TICKET-456: Implemented user auth – 2024–01–15” สร้างความเชื่อมโยงระหว่างงานที่ทำเสร็จกับ ticket และวันที่ที่เจาะจง
ต่อไปฉันจะแยกส่วนต่างๆ ของ skill นี้
ส่วนที่ 1: Frontmatter ของ Agent Skill (คือ “เมื่อไหร่”)
yaml
name: project-memory
description: Setup and maintain a structured project memory system in docs/project_notes/ that tracks bugs with solutions, architectural decisions, key project facts, and work history. Use this skill when asked to “set up project memory”, “track our decisions”, “log a bug fix”, “update project memory”, or “initialize memory system”.
ฟิลด์ description สำคัญมาก มันบอก Claude เมื่อไหร่ ควรเปิดใช้งาน สังเกตว่ามีการฝังวลีกระตุ้นที่เจาะจง: “set up project memory”, “track our decisions”, “log a bug fix” เมื่อคุณพูดวลีใดวลีหนึ่งเหล่านี้ Claude จะระบุและโหลดคำสั่งทั้งหมด (skill เต็มรูปแบบอยู่ท้ายบทความ)
💡 ลองทำดู: เมื่อเขียนคำอธิบาย skill ของคุณเอง ให้ใส่วลี 3–5 วลีที่ผู้ใช้จะพูดออกมาอย่างเป็นธรรมชาติ เมื่อทดสอบการเปิดใช้งาน ลองใช้รูปแบบที่หลากหลาย: “help me track decisions”, “set up decision tracking”, “I want to log our architectural choices”
ส่วนที่ 2: เมื่อไหร่ควรใช้ Agent Skill นี้ (การกระตุ้นตามบริบท)
markdown
When to Use This Skill
Invoke this skill when:
- Starting a new project that will accumulate knowledge over time
- The project already has recurring bugs or decisions that should be documented
- The user asks to “set up project memory” or “track our decisions”
- Encountering a problem that feels familiar (“didn‘t we solve this before?”)
- Before proposing an architectural change (check existing decisions first)
ส่วนนี้จะเสริมเงื่อนไขการกระตุ้น และช่วยให้ Claude เข้าใจสถานการณ์การใช้งานที่กว้างขึ้น วลี “didn‘t we solve this before?” สำคัญเป็นพิเศษ — มันจับช่วงเวลาที่ความเจ็บปวดซึ่งความทรงจำจะช่วยได้มากที่สุด
ส่วนที่ 3: คำสั่งการตั้งค่าเริ่มต้น (คือ “ทำอะไร”)
markdown
Core Capabilities
1. Initial Setup – Create Memory Infrastructure
When invoked for the first time in a project, create the following structure:
docs/
└── project_notes/
├── bugs.md # Bug log with solutions
├── decisions.md # Architectural Decision Records
├── key_facts.md # Project configuration and constants
└── issues.md # Work log with ticket references
Directory naming rationale: Using docs/project_notes/ instead of memory/ makes it look like standard engineering organization, not AI-specific tooling.
การออกแบบนี้สำคัญกว่าที่เห็น: ทำให้ความทรงจำดูเหมือนเอกสารปกติ หากคุณวางไฟล์ไว้ใน ai-memory/ หรือ claude-context/ นักพัฒนาจะมองว่ามันเป็นเครื่องมือ AI และไม่อยากดูแลรักษา แต่ถ้าวางไว้ใน docs/project_notes/ มันจะดูเหมือนเอกสารทางวิศวกรรมมาตรฐาน ใครๆ ก็สามารถอั
⚠️ หมายเหตุ: เนื้อหาได้รับการแปลโดย AI และตรวจสอบโดยมนุษย์ หากมีข้อผิดพลาดโปรดแจ้ง
本文来自网络搜集,不代表คลื่นสร้างอนาคต立场,如有侵权,联系删除。转载请注明出处:https://www.itsolotime.com/th/archives/23035
