37 คะแนน โดย GN⁺ 2026-03-06 | 11 ความคิดเห็น | แชร์ทาง WhatsApp
  • เพื่อแก้ปัญหา การสูญเสียคอนเท็กซ์ข้ามเซสชัน ของ Claude Code จึงสร้างระบบหน่วยความจำโดยผสานเอนจินค้นหาแบบโลคัล QMD กับสกิล /recall
  • QMD เป็น เอนจินค้นหาแบบโลคัล ที่ทำดัชนี Obsidian vault และรองรับการค้นหา 3 โหมด: BM25, semantic และ hybrid
  • สกิล /recall รองรับ 3 โหมด: ตามเวลา, ตามหัวข้อ, และการแสดงผลแบบกราฟ เพื่อ กู้คืนคอนเท็กซ์เต็มของเซสชันเก่าได้ทันที
  • มีการสร้าง ไปป์ไลน์อัตโนมัติ ที่พาร์สและทำ embedding บันทึกบทสนทนา JSONL จาก 700 เซสชัน แล้วสะท้อนเข้าไปในดัชนี QMD
  • นำเสนอ เวิร์กโฟลว์ที่ยึดคอนเท็กซ์เป็นศูนย์กลาง ซึ่งสามารถใช้กับ AI agent ใดก็ได้ ตราบใดที่ยังรักษาคอนเท็กซ์ไว้ได้ แม้เครื่องมือจะเปลี่ยนไป

ปัญหา: Claude Code ถูกรีเซ็ตทุกเซสชัน

  • ทุกบทสนทนาใน Claude Code เริ่มจากสถานะศูนย์ และเมื่อใช้งานไป 700 เซสชันในช่วง 3 สัปดาห์ ก็เริ่มติดตามการตัดสินใจก่อนหน้าและคอนเท็กซ์ของโปรเจ็กต์ได้ยาก
  • เมื่อถึงขีดจำกัดคอนเท็กซ์ 60% ระหว่างเซสชัน จะต้องทำ compact หรือ hand off และในกระบวนการนี้ การตัดสินใจที่สำคัญครึ่งหนึ่งจะหายไป
  • เมื่อจะกลับมาทำงานต่อในวันถัดไป ก็เกิดความไม่สะดวกแบบเดิมซ้ำๆ คือ จำไม่ได้ว่าเคยทำอะไรไว้บ้าง
  • วิธีเดิมอย่าง การค้นหาด้วย grep บนไฟล์นั้นขยายต่อไม่ได้

QMD: เอนจินค้นหาแบบโลคัลสำหรับ vault โดยเฉพาะ

  • QMD คือเอนจินค้นหาแบบโลคัลที่สร้างโดย Tobias Lutke CEO ของ Shopify โดยทำดัชนี Obsidian vault และคืนผลการค้นหาได้ภายในไม่ถึง 1 วินาที
  • สามารถแมป collection ของ QMD ตามโฟลเดอร์ใน vault ได้ เช่น โน้ต, บันทึกรายวัน, เซสชัน, transcript ฯลฯ เพื่อค้นหาแบบเจาะจง
  • ทำงานได้ด้วยคำสั่งเดี่ยว เช่น qmd collection list, qmd search "video workflow" -c notes -n 3
  • การค้นหาเริ่มต้นของ Claude Code ใช้วิธี brute force ที่ sub-agent ชื่อ Haiku ใช้ grep กับทุกไฟล์ ซึ่งจากการทดสอบใช้เวลา 3 นาทีและคืนไฟล์ 300 รายการ โดยคุณภาพผลลัพธ์ก็ต่ำ
  • การค้นหาด้วย QMD เร็วทันที แม่นยำกว่า และใช้โทเคนน้อยกว่า — ไม่ต้องมี sub-agent

Grep vs BM25 vs การค้นหาแบบ semantic

  • BM25 (qmd search): การค้นหา full-text แบบกำหนดผลได้แน่นอน โดยจับคู่คีย์เวิร์ดคล้าย grep แต่ให้คะแนนแต่ละไฟล์
    — อิงจากความถี่ของคำและความหายากเมื่อเทียบกับทั้งชุดเอกสาร ใช้เพียงการคำนวณทางคณิตศาสตร์ ไม่ต้องใช้ AI หรือ embedding
    • โน้ตสั้นที่พูดถึงคำว่า "sleep" 5 ครั้ง จะได้คะแนนสูงกว่าไฟล์ 10,000 คำที่พูดถึงเพียง 1 ครั้ง
  • semantic (qmd vsearch): ใช้ embedding เป็นฐาน จึงค้นหา ตามความหมาย ได้แม้ไม่มีคำนั้นตรงๆ
  • hybrid (qmd query): ผสาน BM25 กับ semantic
  • การเทียบ benchmark ของการค้นหาคำว่า "sleep":
    • grep: คืน 200 ไฟล์ พร้อม noise จำนวนมาก รวมถึงคำสั่งโปรแกรมมิง sleep()
    • BM25: ภายใน 2 วินาทีสามารถคืนผลลัพธ์ที่เกี่ยวข้อง เช่น การทดลองคุณภาพการนอน, บันทึกการนอนสะดุด
    • แต่ qmd search "insomnia" จะไม่คืนผล เพราะไม่มีคำนั้นอยู่ใน vault
    • semantic: เมื่อค้นหา "couldn't sleep, bad night" สามารถเจอได้แม้แต่ เป้าหมายเรื่องนิสัยก่อนนอนที่ตั้งไว้เมื่อหลายปีก่อน — จาก 5 ผลลัพธ์ มี 4 รายการที่ไม่包含คำค้นโดยตรง
    • hybrid: ให้ ลำดับผลลัพธ์ที่ดีที่สุด เช่น sleep quality improvement 89%, sleep interrupted at 3am 51%, health sleep optimization 42%
  • รูปแบบการใช้งานที่แนะนำ: 80% ของการค้นหาใช้ BM25 (เหมาะกับโน้ตที่มีโครงสร้าง) และเพิ่ม semantic search สำหรับ transcript และบันทึกที่ไม่มีโครงสร้าง

กรณีค้นพบจริงจาก semantic search

  • สำหรับ คำถามแบบไม่มีโครงสร้าง อย่าง "find the days when I was happy and what was the reason" Claude จะผสานการค้นหาหลายแบบโดยอัตโนมัติ:
    • รันหลายคำค้น เช่น qmd vsearch "happy, grateful, excited", "energy, great day, feeling good", "satisfaction, accomplishment"
  • พบ ความเชื่อมโยงเชิงความหมาย จากโน้ตรายวันหลายเดือน — ได้แพตเทิร์นว่า "วันที่มีความสุขที่สุดคือวันที่ได้ปล่อยบางอย่างออกไป และฟื้นตัวได้ดีจากการไปซาวน่าหรือการนอน 9 ชั่วโมง"

สกิล /recall: โหลดคอนเท็กซ์ก่อนเริ่มงาน

  • /recall คือ สกิลของ Claude Code ที่ทำงานบน QMD และ โหลดคอนเท็กซ์โดยอัตโนมัติก่อนเริ่มงาน
  • รองรับ 3 โหมด:
    • temporal: สแกนประวัติเซสชันตามวันที่ (/recall yesterday, /recall last week)
    • topic: ค้นหา BM25 กับ collection ของ QMD (/recall topic graph)
    • graph: การแสดงผลเชิงโต้ตอบ ของเซสชันและไฟล์ (/recall graph last week)
  • ผลการทดสอบ /recall yesterday: สามารถ สร้างไทม์ไลน์ของ 39 เซสชันในหนึ่งวันขึ้นมาใหม่ — แสดงเวลา จำนวนข้อความ และเนื้องานของแต่ละเซสชัน
  • ผลลัพธ์ของ /recall topic "QMD video": คืน ไฟล์ที่เกี่ยวข้อง ทั้งจากเซสชันและโน้ต เช่น dashboard, แผน production, todo list ภายในไม่ถึง 1 นาที — เหนือกว่าวิธี brute force grep ทั้งเวลา โทเคน และคุณภาพผลลัพธ์
  • โหมด graph จะ แสดงเซสชันเป็นก้อนสี โดยเซสชันเก่าจะจางลง ส่วนเซสชันล่าสุดจะถูกไฮไลต์เป็นสีม่วง — ไฟล์ถูกจัดเป็นคลัสเตอร์ตามประเภท เช่น goals, research, voice, docs, content, skills
  • ตัวอย่าง: พบเซสชันที่เคยใช้หาสถานที่กินข้าวกลางวันจากกราฟหนึ่งสัปดาห์ให้หลัง แล้วคัดลอก path ของไฟล์นั้นเข้า Claude Code เพื่อ ทำงานต่อจากบทสนทนาก่อนหน้า ได้

การทำดัชนีอัตโนมัติของ 700 เซสชัน

  • Claude Code บันทึกทุกบทสนทนาเป็น ไฟล์ JSONL ในเครื่อง — สะสมได้ 700 เซสชันใน 3 สัปดาห์
  • ไฟล์ต้นฉบับมีทั้ง tool uses, system prompt, role ฯลฯ จึงต้องพาร์สและแปลงเป็น Markdown ที่สะอาด (เฉพาะข้อความผู้ใช้จริงและสัญญาณสำคัญ) ก่อนนำไปทำ embedding ในดัชนี QMD
  • เมื่อปิดเทอร์มินัลจะมี hook อัตโนมัติทำงาน เพื่อ export และ embed เซสชันเข้าสู่ QMD — ทำให้ดัชนีอัปเดตล่าสุดเสมอโดยไม่ต้องทำอะไรด้วยมือ

ค้นพบไอเดียที่ไม่เคยลงมือทำ

  • เมื่อค้นหาด้วย "find the ideas that I have never acted on" Claude ได้สรุปจากผลลัพธ์ใน QMD ว่า:
    • 19 ตุลาคม — เคยมีแผนสร้าง PhD writing dashboard แต่ไม่ได้ลงมือทำ
    • เคยมีไอเดียทำ แอปที่อิงงาน illustration แต่ไม่มีการต่อยอด
    • เคยมีไอเดีย อัดหน้าจอเวิร์กโฟลว์ Obsidian แต่ไม่ได้ทำต่อ
  • สิ่งที่เขียนไว้เมื่อหลายเดือนก่อนและลืมไปแล้วถูกค้นพบอีกครั้ง
  • embedding ทั้งหมดถูก เก็บไว้ในเครื่อง

เวิร์กโฟลว์ที่ยึดคอนเท็กซ์เป็นศูนย์กลาง

  • โน้ตไม่ได้ถูกขังอยู่แค่ใน Obsidian อีกต่อไป แต่เปลี่ยนเป็น คอนเท็กซ์ที่มีประโยชน์และใช้เพื่อไปถึงเป้าหมายจริงได้
  • เครื่องมืออาจเปลี่ยนไปได้ (โมเดลใหม่, agent ใหม่) แต่ ถ้ายังคงคอนเท็กซ์ไว้ได้ ก็สามารถทำงานได้กับทั้ง Claude Code, Codex, Gemini CLI และอื่นๆ
  • ชั้นหน่วยความจำทำงานได้ทั้งสแตกในรูปแบบของ สกิล
  • โครงสร้างที่ใช้งานจริง: ใช้ Obsidian Sync ซิงก์ vault ระหว่าง Mac กับ Mac Mini ที่เปิดตลอดเวลา และให้ OpenClaw รัน 24/7 บน Mac Mini — เมื่อเชื่อมต่อ OpenClaw จากโทรศัพท์ ก็จะใช้ vault เดียวกัน ดัชนี QMD เดียวกัน และสกิลเดียวกันได้จากทุกที่
  • โครงสร้างสแตกทั้งหมด:
    • ด้านล่าง: Obsidian Vault
    • ตรงกลาง: QMD Search
    • ด้านบน: Claude Code / OpenClaw
    • เป็นโครงสร้างที่คอนเท็กซ์ไหลจากล่างขึ้นบน

11 ความคิดเห็น

 
mammal 2026-03-06

ช่วงนี้ทำไมมีแต่ของตายเยอะแบบนี้นะ

 
pjs102793 2026-03-06

ฮ่าๆๆๆๆ

 
t7vonn 2026-03-06

grep ตายแล้ว มาใช้ ripgrep กันเถอะ

 
galadbran 2026-03-06

พอลองให้ AI ไปหาข้อมูลเพราะคิดว่าจะลองใช้ qmd ดู ปรากฏว่าฝั่ง embedding โอเคอยู่ แต่ฝั่ง BM25 กับการขยายคิวรีรองรับภาษาเกาหลีได้ไม่ดี เลยไม่แนะนำ...

 
alstjr7375 2026-03-07

เกือบทั้งหมดก็เป็นแบบนั้นใน BM25 เช่นกัน
ดังนั้นจึงควรใช้ตัววิเคราะห์หน่วยคำร่วมด้วย
https://github.com/bab2min/Kiwi

 
cshj55 2026-03-07

ลองเช็กข้อเท็จจริงดูแล้ว เหมือนจะยังไม่มีหลักฐานที่ชัดเจนครับ ไม่ทราบว่าท่านอื่นมีประสบการณ์แบบนี้บ้างไหม?

 
dalinaum 2026-03-23

เนื่องจาก BM25 เป็นการค้นหาที่เน้นคำเป็นหลัก ความเห็นของคุณ galadbran ก็ดูสมเหตุสมผลครับ

 
versionx 2026-03-10

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

 
redmi 2026-03-07

~~ ตายไปแล้ว 💀💀💀

 
ppj050 2026-03-06

ก็แค่ RAG นี่นา;

 
lkaybob 2026-03-06

หน้า Install ขออีเมล เลยนึกว่าเป็น Private Repo แต่จริง ๆ เป็น Public Repo ครับ
เข้าได้จากลิงก์ด้านล่างครับ

https://github.com/ArtemXTech/personal-os-skills/…