productize.life
TH EN
AI production guardrails · ความจำของ AI agent

agent มีกฎอยู่ครบ ไม่ได้แปลว่ามัน หยิบมาใช้ทัน

ไฟล์กฎโตจนโหลดไม่ไหว จะตัดอะไรออกดี? แต่คำถามที่ลึกกว่าคือ กฎที่เก็บไว้แล้ว ทำไมบางทีมันถึงไม่ถูกหยิบมาใช้ตอนที่ควร

Yim· เขียนด้วยกันกับ Dobby (AI Oracle)/27 มิ.ย. 2026

ตอนสร้างความจำให้ agent ของตัวเอง เราชนกำแพงง่าย ๆ อันนึง ของที่มันต้องโหลดทุกครั้งก่อนเริ่มงาน ทั้งกฎประจำตัวในไฟล์อย่าง CLAUDE.md และสารบัญความจำอีกก้อน พอรวมกันแตะ 140 กว่ารายการ ก็โตเกินกว่าจะยัดเข้า context ไหวในรอบเดียว

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

คำตอบคือไม่ และพอแยกชนิดออก ก็เจอปัญหาที่ลึกกว่าเรื่องพื้นที่เยอะ

ช่วงที่ 1พื้นที่ที่โหลดทุกครั้งมันมีเพดาน

ความจำที่ agent ถือ แยกหยาบ ๆ ได้สองชนิด

อย่างแรกคือ "กฎ" สิ่งที่ต้องทำอัตโนมัติทุกครั้งไม่ว่างานจะเป็นอะไร เช่น "อย่า push เองถ้าไม่ได้สั่ง" หรือ "verify ก่อน deploy ทุกครั้ง" พวกนี้เหมือน reflex ตอนเบรก พอเห็นไฟแดง เท้าก็เหยียบเองโดยไม่ต้องคิด อย่างที่สองคือ "ข้อมูล" สิ่งที่ค่อยเปิดดูตอนต้องใช้ เช่น service ตัวนี้ deploy ที่ origin ไหน token เก็บไว้ path อะไร พวกนี้เหมือนเบอร์โทรในมือถือ ไม่ต้องท่อง ตอนจะโทรค่อยเปิดหา

ฟังดูง่าย เอากฎไว้ชั้นบนที่โหลดทุกครั้ง เอาข้อมูลไว้ชั้นล่างที่ค่อยดึงตอนใช้ จบ แต่กำแพงที่เราเพิ่งชนบอกอะไรอีกอย่าง ชั้นที่โหลดทุกครั้งมีเพดาน ยัดทุกอย่างที่สำคัญลงไปไม่ได้ working memory ของคนก็เป็นแบบนี้ Miller ประมาณไว้ตั้งแต่ปี 1956 ว่าถือพร้อมกันได้แค่ไม่กี่ก้อน ของ context ก็มีลิมิตเหมือนกัน

พอมีเพดาน สัญชาตญาณแรกคือย้ายของบางอย่างลงไปไว้ชั้นล่าง เก็บไว้ค่อยดึงตอนใช้ รวมถึงดันกฎบางข้อลงไปด้วย ตรงนี้แหละที่พัง

ช่วงที่ 2กฎดันลงชั้นล่างไม่ได้ เพราะมันเรียกตัวเองไม่เป็น

ปี 1966 Tulving กับ Pearlstone แยกของสองอย่างที่เรามักนึกว่าเป็นอันเดียวกัน อย่างนึงคือความจำนั้นมีเก็บอยู่ในหัว อีกอย่างคือเราหยิบมันออกมาใช้ได้ตอนที่ต้องการ สองอย่างนี้คนละเรื่องกัน ของเก็บอยู่ครบ ไม่ได้แปลว่าจะนึกออกตอนที่ต้องใช้ ต้องมีอะไรมาสะกิดให้นึกออกก่อน เขาเรียกตัวสะกิดนั้นว่า cue

ข้อมูลเก็บไว้ชั้นล่างได้สบาย เพราะเรารู้ล่วงหน้าว่าจะใช้ตอนไหน พองานที่แตะ service ตัวนั้นเข้ามา ตัวงานเองคือ cue ที่เชื่อถือได้ว่าจะดึงข้อมูลที่เกี่ยวข้องกลับมา

แต่กฎไม่มี cue แบบนั้น เพราะเราไม่รู้ล่วงหน้าว่าจังหวะไหนมันจะต้องทำงาน "อย่า push เองถ้าไม่ได้สั่ง" มันต้องพร้อมตลอด ไม่ใช่ตอนเห็นคำว่า push เท่านั้น พอเอากฎไปไว้ชั้นที่รอ cue กฎก็กลายเป็นของที่ "มีอยู่ แต่ไม่ถูกหยิบ"

ภาพเป็นแบบนี้ agent ทำงานเสร็จ เห็น commit ค้างอยู่ ก็ push ไปเลยตามความเคยชินว่างานเสร็จก็ push สิ กฎไม่ได้หายไปไหน ไฟล์ยังอยู่ครบ แต่ตอนนั้นไม่มีอะไรสะกิดให้นึกถึงมัน เราเรียกอาการนี้ว่า silent policy loss กฎเงียบหายไปเฉย ๆ ทั้งที่ยังอยู่

ที่น่ากลัวคือมันไม่พังแบบมี error ให้เห็น ไม่มี log แดง ๆ มันแค่เงียบ แล้วทำผิดกฎไปเฉย ๆ เหมือนคนที่ต้องนึกก่อนทุกครั้งถึงจะเบรกได้ กว่าจะนึกออกก็ชนไปแล้ว reflex ที่ต้องรอนึก ก็ไม่ใช่ reflex อีกต่อไป

เพราะแบบนี้ กฎถึงต้องอยู่ชั้นที่โหลดทุกครั้ง ไม่ใช่เพราะกฎสำคัญกว่าข้อมูล แต่เพราะกฎเรียกตัวเองไม่เป็น ชั้นที่โหลดทุกครั้งนี่แหละคือสิ่งที่ไฟล์อย่าง CLAUDE.md มีไว้ทำ

ช่วงที่ 3แล้วเพดานล่ะ ทางออกคือตัวตรวจ ไม่ใช่ความจำดี

กลับมาที่กำแพงเดิม ถ้ากฎต้องอยู่ชั้นบนหมด แล้วพื้นที่ที่ชนเพดานล่ะ ทางออกไม่ใช่ดันกฎลงล่าง เพราะเพิ่งเห็นแล้วว่าทำแบบนั้นกฎจะเงียบ ทางออกคือทำให้ชั้นบนเล็ก กฎต้องคม ไม่ซ้ำกันเอง ไม่ใช่ทุกอย่างที่เคยจำได้ ส่วนของที่เป็น "ข้อมูล" จริง ๆ ดันลงล่างให้หมด ตรงนั้นมัน cue ตัวเองได้อยู่แล้ว

แต่พอดันของลงชั้นล่างเยอะ ๆ ก็โผล่ความเสี่ยงใหม่ที่หน้าตาเหมือนเดิมเป๊ะ ของหล่นออกจากสารบัญเงียบ ๆ ไฟล์ยังอยู่ แต่สารบัญไม่ได้ชี้ถึง พูดแบบ Tulving คือมันมีอยู่ แต่ไม่มีทางหยิบถึง

จะกันเรื่องนี้ ต้องไม่ฝากไว้กับความจำดีหรือความระวัง แต่ต้องมีตัวตรวจ เราออกแบบให้สารบัญเป็นแค่ view ที่ generate ขึ้นจากตัวไฟล์ ตัวไฟล์คือความจริง ส่วนสารบัญเป็นแค่ภาพสะท้อน แล้วมีคำสั่ง validate คอยเช็คกฎข้อเดียวง่าย ๆ ทุกไฟล์ต้องมีที่อยู่ในสารบัญ ไม่มีอันไหนหล่น

ตอนรัน validate ครั้งแรก มันเจอความจำ 38 อันที่ไฟล์ยังอยู่ดี แต่หลุดออกจากสารบัญไปเงียบ ๆ แปลว่า agent มีความจำพวกนั้นอยู่ แต่ลืมไปว่าตัวเองมี พอจัด index ใหม่ก็ดึงกลับเข้าสารบัญได้หมด ไม่ได้สร้างใหม่สักอัน ของไม่เคยหาย แค่หยิบไม่ถึง

บทเรียนตื้น ๆ ของเรื่องนี้คือ "กฎไว้ชั้นบน ข้อมูลไว้ชั้นล่าง" แต่บทเรียนจริงลึกกว่านั้น ปัญหาความจำของ agent ส่วนใหญ่ไม่ใช่เรื่องเก็บ แต่เป็นเรื่องหยิบ ของมีอยู่ ไม่ได้แปลว่าหยิบมาใช้ทัน

กฎเลยต้องอยู่ชั้นที่โหลดทุกครั้ง เพราะมันรอ cue ไม่ได้ ข้อมูลอยู่ชั้นล่างได้ เพราะงานเป็น cue ให้ และต้องมีตัวตรวจคอยกันไม่ให้ของหล่นออกจากสารบัญเงียบ ๆ

ครั้งหน้าก่อนจะเก็บอะไรให้ agent ลองถามคำเดียว อันนี้มีอะไรมาสะกิดให้หยิบตอนต้องใช้ไหม ถ้าไม่มี มันต้องอยู่ชั้นบน ไม่ใช่ฝากความหวังไว้ว่าเดี๋ยวมันคงนึกออกเอง

ที่มา / อ่านเพิ่ม
ติดตาม

รับบทความใหม่และของฟรีก่อนใคร

ทิ้งอีเมลไว้ บทความใหม่และของฟรีเป็นครั้งคราวจะส่งไปให้ ไม่สแปม

ใช้อีเมลเพื่อส่งอัปเดตเท่านั้น

ความคิดเห็น

ร่วมพูดคุย

แบ่งปันความคิดเห็นได้เลย

ชื่อจะแสดงต่อสาธารณะ อีเมลเก็บเป็นความลับ ไม่แสดงที่ไหน

กำลังโหลดความคิดเห็น…