Improved AI Memory?
สรุปย่อ
ประเด็นสำคัญจากวิดีโอ
- **ช่อง:** Wanderloots · **ความยาว:** ~26 นาที · **ลิงก์:** https://www.youtube.com/watch?v=R1TNGOZAOZs
# สรุป: Improved AI Memory? 🧠 Full Hermes Tutorial (Mnemosyne & Hindsight) - **ช่อง:** Wanderloots · **ความยาว:** ~26 นาที · **ลิงก์:** https://www.youtube.com/watch?v=R1TNGOZAOZs ## ประเด็นหลัก - AI Agent ที่ไม่มีระบบความจำที่ดีจะลืมบริบทตลอดเวลา ทำให้เปลืองโทเค็นและเวลา โดยเฉพาะเมื่อใช้หลาย agent พร้อมกัน - Memory stack ของ agentic AI ประกอบด้วย 3 ระดับ: world knowledge (Obsidian/LLM Wiki), built-in memory, และ external memory providers - Built-in memory ของ Hermes (memory.md, user.md, soul.md + session search) ถูก inject เข้าทุก session — ดีแต่เปลืองโทเค็นถ้าใหญ่เกินไป - Memory providers (Mnemosyne, Hindsight) เป็น external layer ที่ดึงข้อมูลเมื่อจำเป็นแทนที่จะ inject ทุกครั้ง — ช่วยให้บริบทกระชับ - **Mnemosyne** — memory layer แบบเบา, zero-dependency, รันบน SQLite, เร็วระดับ sub-millisecond, ใช้ BEAM architecture, ไม่ต้องใช้ LLM, เหมาะสำหรับผู้ใช้ทั่วไป - **Hindsight** — memory engine เต็มรูปแบบ, built-in ใน Hermes, มี reflect (ทบทวนด้วยเหตุผล), มี dashboard, ต้องรันเซิร์ฟเวอร์แยกและใช้ LLM - การติดตั้ง Mnemosyne: ใช้ pipx ติดตั้งแยกจาก Hermes venv, ลิงก์เข้า plugins folder, รัน `hermes memory setup`, เลือก global scope - การติดตั้ง Hindsight: รัน Docker container แยก, เชื่อมต่อกับ Ollama (local model), ตั้งค่าใน Hermes เป็น local external - ทั้งสองระบบสามารถ export ข้อมูลระหว่างกันได้ — ไม่มีการล็อกอินกับผู้ให้บริการรายใด - ขั้นต่อไป: เชื่อมต่อ agentic memory กับ Obsidian LLM Wiki เพื่อให้ agent ใช้เหตุผลกับความรู้ทั้งหมดของคุณ ## ความเห็นสรุป วิดีโอนี้ให้คำแนะนำที่ใช้งานได้จริงในการติดตั้งระบบความจำให้ AI Agent โดย Callum อธิบายความแตกต่างระหว่าง memory layer และ memory engine อย่างชัดเจน Mnemosyne เหมาะสำหรับผู้ที่ต้องการความเร็วและความเรียบง่ายในเครื่องเดียว ส่วน Hindsight เหมาะสำหรับผู้ที่ต้องการฟีเจอร์ขั้นสูงอย่างการ reflect และ dashboard แบบเต็มรูปแบบ ทั้งสองตัวเลือกช่วยลดการเปลืองโทเค็นและทำให้ agent ทำงานได้ฉลาดขึ้นอย่างเห็นได้ชัด
คำแปลเต็ม
แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ
สำหรับผมแล้วนี่มันน่าทึ่งมากที่ไม่ใช่แค่เราทำให้ agent จดจำสิ่งต่างๆ ได้ แต่มันยังสร้างกราฟ (graph) จากความทรงจำของเราในแบบที่ช่วยปรับปรุง agent ให้แก้ปัญหาที่เราพยายามแก้ได้ดีขึ้นด้วย คุณเคยหงุดหงิดไหมที่ AI ของคุณชอบลืมสิ่งต่างๆ คุณต้องอธิบายบริบทเดิมซ้ำแล้วซ้ำเล่า เปลืองทั้งโทเค็นและเวลา และถ้าคุณรัน agent หลายตัว มันยิ่งแย่เข้าไปใหญ่เพราะคุณต้องแชร์บริบทให้พวกมันเข้าใจตรงกัน นั่นเป็นเพราะคุณไม่ได้ใช้ระบบความจำจริงๆ หรืออย่างน้อยก็ไม่ใช่ระบบที่ดีสักเท่าไร เรามาแก้ปัญหานี้กันเถอะ
สวัสดีครับ ผมชื่อ Callum หรือที่รู้จักในชื่อ Wanderloots ยินดีต้อนรับสู่วิดีโอวันนี้ว่าด้วยการให้ agent ของคุณมีความจำอย่างแท้จริง วันนี้ผมใช้ Hermes Agent เป็นตัวอย่าง แต่เครื่องมือด้านความจำที่ผมพูดถึงใช้ได้กับ AI แบบ agentic ทุกตัว และที่สำคัญกว่านั้นคือมันทำงานร่วมกันระหว่าง AI agent หลายตัวได้ คุณสามารถตั้งระบบนี้ครั้งเดียวแล้วเชื่อมต่อกับ agent ตัวไหนก็ได้โดยใช้หน่วยความจำกลาง (universal memory) ร่วมกัน ถ้าคุณยังใหม่กับ Hermes และอยากติดตั้งอย่างปลอดภัย ผมมีเพลย์ลิสต์เกี่ยวกับ agentic AI แบบเต็มอยู่ตรงนี้
เมื่อดูวิดีโอนี้จบ คุณจะเข้าใจลำดับชั้นต่างๆ ของ memory stack และเข้าใจว่า agentic memory แตกต่างจาก knowledge layer อย่าง Obsidian หรือ LLM Wiki อย่างไร ทำไมคุณถึงอาจอยากใช้ dedicated memory provider แทนที่จะใช้ built-in memory ตัวเลือก memory แบบต่างๆ และทำไมผมถึงเลือกสองตัวที่เราจะติดตั้งกันวันนี้ วิธีติดตั้ง memory layer แบบเบาที่ไม่เป็นทางการ และวิธีติดตั้ง memory engine แบบเต็มรูปแบบอย่างเป็นทางการ ผมตื่นเต้นมากเพราะ memory เป็นสิ่งที่ผมศึกษามานาน และผมแทบรอไม่ไหวที่จะช่วยคุณติดตั้งมันในวันนี้
ทีนี้มาดู agentic memory กันครับ ก่อนที่เราจะติดตั้งอะไร ผมอยากเคลียร์ความสับสนที่พบบ่อยเกี่ยวกับ agentic memory ก่อน — มันไม่ใช่แค่ layer เดียว แต่มันคือ stack (ระบบซ้อนชั้น) เมื่อผู้คนพูดถึง second brain หรือ agentic memory จริงๆ แล้วพวกเขากำลังหมายถึงสามอย่าง: world knowledge, built-in memory และ external memory
knowledge layer อย่าง Obsidian vaults หรือ LLM Wiki เป็นส่วนหนึ่งของ memory stack แต่ไม่ใช่ operational memory (ความจำเชิงปฏิบัติการ) จริงๆ ในแบบที่เราหมายถึงเมื่อพูดว่า agent memory มันคือ world knowledge ข้อมูลพื้นฐานที่ใช้ร่วมกันในทุกโปรเจกต์และทุก agent คุณสามารถจำกัดการเข้าถึง knowledge layer นี้ของ agent ได้ ซึ่งผมพูดถึงเพิ่มเติมในวิดีโอเรื่องการเชื่อมต่อ agentic AI กับ Obsidian
จากนั้นเรามี operational memory ซึ่งแบ่งเป็นสองระดับ: built-in memory และ dedicated memory providers operational memory เน้นไปที่สิ่งที่ agent ควรจดจำเกี่ยวกับการทำงานกับเราโดยเฉพาะ การทดสอบง่ายๆ คือ ถ้าเป็นความรู้ที่คุณอยากให้เก็บรักษาและจัดระเบียบไว้ใช้ในทุกสิ่งที่คุณทำ — นั่นคือ Obsidian แต่ถ้าเป็นข้อเท็จจริงเกี่ยวกับสไตล์การทำงานของคุณหรือสิ่งที่คุณกำลังทำอยู่ตอนนี้ — นั่นคือ agentic memory
สรุปภาพรวม: เรามี built-in memory ซึ่งดีสำหรับการสนทนาแบบ single session ง่ายๆ, memory provider สำหรับเมื่อคุณทำโปรเจกต์ซับซ้อนที่ดำเนินต่อเนื่อง หรือแค่อยากได้ประสิทธิภาพและการเรียกคืนของ agent ที่ดีขึ้นอย่างเห็นได้ชัด, และ knowledge layer อย่าง Obsidian สำหรับสร้าง world knowledge ที่ครอบคลุมทุกโปรเจกต์และทุก agent ที่คุณรัน ผมพูดถึงการเชื่อมต่อ Obsidian กับ agentic AI เพิ่มเติมในวิดีโอนี้
วันนี้ผมอยากโฟกัสเฉพาะสองระดับแรก คือ built-in memory และ external memory provider วิดีโอถัดไปของผมจะลงลึกในการตั้งค่า Obsidian LLM Wiki ที่เสริม agent memory ที่เรากำลังติดตั้งกันวันนี้ เรามาเริ่มด้วยการเปรียบเทียบ built-in memory กับ memory provider จริงๆ กันครับ
ถ้าคุณพบว่าวิดีโอนี้มีประโยชน์ ช่วยกดไลก์ กดไฮป์ และกดติดตามด้วยนะครับ ผมซาบซึ้งในการสนับสนุนของคุณมาก ถ้าคุณมองหาวิธีสนับสนุนผมเพิ่มเติม ลองพิจารณาเข้าร่วมสมาชิก YouTube หรือ Patreon ของผม ซึ่งผมให้สมาชิกเข้าถึงทิปส์ ข้อมูลเชิงลึก และมุมมองของผมเกี่ยวกับอนาคตของ agentic AI และการจัดการความรู้
แล้ว built-in memory ของ Hermes หน้าตาเป็นยังไงล่ะ? มันมีสามไฟล์: memory.md ซึ่งเป็น operational memory ของคุณ, user.md ซึ่งบอกว่าคุณเป็นใคร, และ soul.md ซึ่งทางเทคนิคแล้วไม่ใช่ memory แต่เป็นบุคลิกภาพของ agent เอง นอกจากนั้น built-in memory ยังรวมถึง session search ที่เก็บในฐานข้อมูลภายใน (local database) คุณจึงถาม Hermes ให้ค้นหาจาก session ที่ผ่านมาได้เลย
ทิปสั้นๆ: วิธีที่ดีที่สุดในการเริ่มใช้ agent อย่าง Hermes คือการบอก Hermes เกี่ยวกับตัวคุณตั้งแต่เริ่ม ถ้ามันเข้าใจมากขึ้นว่าคุณเป็นใครและชอบทำงานแบบไหน ทั้งระบบจะฉลาดขึ้นแทบจะทันที
คำถามหนึ่งที่มีคนถามผมบ่อยเกี่ยวกับการรัน built-in memory คือถ้าคุณใช้ Hermes terminal execution backend ที่รันโค้ดใน Docker Hermes จะยังเข้าถึง memory ได้ไหม? คำตอบคือได้ครับ การรันใน Docker ไม่กระทบความสามารถของ Hermes ในการเข้าถึงไฟล์ memory และ user ของตัวเอง มันใช้ memory tool ซึ่งเป็นสิ่งเดียวกับที่ memory providers ใช้ แทนที่จะรันผ่านโค้ดที่ถูก sandbox ใน Docker ผมพูดถึงเรื่องนี้เพิ่มเติมในวิดีโอวิธีแยก agent ให้ทำงานอย่างปลอดภัยบนคอมพิวเตอร์ของคุณ
ประเด็นสำคัญคือ built-in user และ memory files ถูก inject เข้าไปในทุก session ใหม่ มันกลายเป็นส่วนหนึ่งของบริบทในทุกการสนทนาที่คุณมีกับ Hermes ทีนี้ นี่เป็นเรื่องดีเพราะหมายความว่า agent ของคุณจะไม่มีวันลืมว่าคุณเป็นใคร แต่มันก็หมายความว่ามันใช้บริบทและโทเค็นไปบางส่วนในทุกการสนทนา คุณต้องทำให้มันกระชับที่สุดเพื่อไม่ให้เปลืองโทเค็น และนั่นคือจุดที่ memory provider จริงๆ เข้ามามีบทบาท
memory provider คือ external layer ที่เก็บและเรียกคืนข้อมูล ณ เวลาที่รัน (runtime) หรือเมื่อ agent ต้องการใช้จริงๆ แทนที่จะ insert เข้าไปในทุกการสนทนา นี่ช่วยให้บริบทของคุณกระชับและข้อมูลตรงประเด็นเมื่อคุณต้องการใช้จริงๆ
มาดู memory providers ให้ลึกขึ้นครับ หลายคนรู้สึก overwhelmed เวลาพยายามเลือก memory provider และนั่นก็เข้าใจได้ มีตัวเลือกและปัจจัยให้พิจารณาเยอะมาก มันขึ้นอยู่กับเป้าหมายของคุณ จำนวน agent หรือผู้ใช้ที่แชร์ memory นั้น ฮาร์ดแวร์ที่คุณมีสำหรับรัน และว่าคุณอยากใช้เครื่องมือฟรีหรือเสียเงิน
ข่าวดีคือส่วนใหญ่ — ถ้าไม่ใช่ทั้งหมด — ของพวกมันอนุญาตให้คุณย้ายข้อมูลระหว่างกันได้ คุณจึงไม่ได้ถูกล็อกกับตัวเลือกแรกที่คุณเลือก คุณสามารถทดสอบและทดลองได้ และถ้าคุณไม่ชอบเครื่องมือหนึ่ง คุณก็สามารถย้าย memory ไปอีกตัวได้เสมอ
แต่แทนที่จะเปรียบเทียบทั้งหมดในวิดีโอนี้ ซึ่งคงใช้เวลานาน ผมได้รวบรวมบทวิเคราะห์ของผมไว้ในโพสต์ Patreon ฟรีที่ผมจะแปะลิงก์ในคอมเมนต์บนสุดของวิดีโอ คุณจะได้ดูตัวเลือกต่างๆ และดูว่าอะไรเหมาะกับสถานการณ์ของคุณที่สุด แต่วันนี้ แทนที่จะดูจาก benchmark หรือรายการฟีเจอร์ ผมคิดว่าจะดูสิ่งที่คอมมูนิตี้ให้คะแนนสูงสุดและที่หลายคนแนะนำให้ผม และพวกมันคือ Mnemosyne กับ Hindsight
Mnemosyne เป็นระบบ lightweight แบบ zero-dependency (ไม่ต้องพึ่งไลบรารีภายนอก) และไม่ต้องใช้ LLM ในการทำงาน มันรันบนเครื่องคุณล้วนๆ เร็วอย่างเหลือเชื่อด้วย built-in embeddings Mnemosyne เหมาะมากถ้าคุณอยากได้ memory provider ที่ไม่ทำให้ระบบคุณช้าลง
Hindsight มีฟีเจอร์มากกว่าและมันอยู่ในอันดับต้นๆ ของ memory benchmark ส่วนใหญ่ แต่มันต้องเชื่อมต่อคลาวด์หรือมี server ของคุณเองพร้อม LLM ในการขับเคลื่อน วิธีคิดที่ง่ายที่สุดคือ Mnemosyne เป็น memory layer ส่วน Hindsight เป็น memory engine
มาเริ่มด้วยตัวเลือก lightweight อย่าง Mnemosyne ก่อน คุณจะได้เห็น memory provider ทำงานจริงก่อนที่เราจะขยับไปใช้พลังที่มากขึ้นกับ Hindsight
เรามอง Mnemosyne ได้ว่าเป็น universal memory layer สำหรับ AI agent ทุกชนิดที่รันบน SQLite backend ด้วยความเร็วระดับ sub-millisecond แบบ zero dependencies จุดประสงค์ที่ผมแสดงตัวนี้ก่อนคือมันเร็วมากและไม่ต้องติดตั้งอะไรเพิ่มเยอะ
ข้อมูลเพิ่มเติมเกี่ยวกับ Mnemosyne: มันได้แรงบันดาลใจทางชีววิทยาจาก BEAM architecture ซึ่งนำ memory ระดับต่างๆ เข้ามา เช่น working memory, episodic memory, semantic memory และ scratchpad โดยแต่ละระดับถูก optimize สำหรับรูปแบบการเข้าถึงที่ต่างกัน ทุกอย่างอยู่บนเครื่องคุณ ซึ่งดีต่อความเป็นส่วนตัว มันมีความเร็วในการ query ต่ำกว่า 100 มิลลิวินาที และมีการผสานรวมกับ Hermes โดยตรง
มาดู architecture กันสักครู่ครับ ประเด็นสำคัญคือเรากำลังสร้าง auto context injection ซึ่งหมายความว่าเมื่อคุณมีคำถาม เมื่อคุณถาม Hermes อะไรสักอย่าง Mnemosyne จะรับ query นั้น ใช้ recall tool เพื่อดูบริบทที่มีอยู่ และ inject บริบทนั้นเข้าไปใน prompt ของ agent ก่อนที่มันจะตอบคุณ เมื่อคุณสนทนาต่อไป มันจะจดจำมากขึ้นเรื่อยๆ ซึ่งจะถูกป้อนกลับเข้าไปใน Mnemosyne เพื่อช่วยมันสร้าง context assembly นี้
นี่เป็นวิธีที่ยอดเยี่ยมในการสร้างระบบความจำที่พัฒนาตัวเองได้ (self-evolving memory system) สำหรับ agent ของคุณ และอย่างที่เราเห็น มันใช้กับ Claude Code ได้ ใช้กับ Codex ได้ ใช้กับ Cursor ได้ ใช้กับ agent อะไรก็ได้ที่คุณต้องการ และเราสามารถให้ทั้งหมดเชื่อมต่อกับ memory bank เดียวกันได้ถ้าเราต้องการ
เอาล่ะ มาติดตั้ง Mnemosyne กันครับ ถ้าเราไปที่เอกสารของเขา เราจะเห็นว่ามันมีการผสานรวมกับ Hermes Agent และมีรายการคำสั่งด่วนให้ ง่ายต่อการติดตั้งมาก และมีสิ่งหนึ่งที่ผมอยากพูดถึงสั้นๆ คือถ้าคุณรัน Hermes และมี terminal execution backend รันอยู่ใน Docker เราสามารถให้ Hermes ติดตั้ง Mnemosyne ให้เราไม่ได้ เพราะ Hermes จะพยายามรัน terminal และมันจะรันใน Docker container และนั่นไม่ใช่สิ่งที่เราต้องการ เพราะเราต้องการให้ระบบ memory ของเราอยู่รอดนอก Docker container ของ terminal execution backend ถ้าคุณไม่ได้รันใน Docker คุณก็แค่บอกให้ Hermes ทำให้ได้เลย แต่โดยพื้นฐานแล้วนี่หมายความว่าเราต้องรันมันจาก host device บนคอมพิวเตอร์ของเรา
ผมจะติดตั้งมันโดยตรงจาก terminal ด้วยตัวเอง Mnemosyne ไม่ใช่ built-in provider เราจึงต้องติดตั้ง Mnemosyne แบบ manual มากกว่าเล็กน้อย แต่ประเด็นสำคัญคือเราไม่ได้ติดตั้งมันใน Hermes managed virtual environment เพราะทุกครั้งที่คุณรัน Hermes update มันจะ rebuild virtual environment นั้นแล้วลบแพ็กเกจเสริมทั้งหมดทิ้ง
เรามีสองตัวเลือกที่ระบุไว้: ใช้ pipx ซึ่งสร้าง virtual environment แยกต่างหาก หรือสร้าง virtual environment ด้วยตัวเองโดยใช้ fallback option อย่างไรก็ตาม ทั้งสองตัวเลือกนี้ใช้ไม่ได้ผลสมบูรณ์สำหรับผม ถ้าคุณติดตั้ง Mnemosyne แล้วรัน Hermes memory status แล้วได้ error plugin missing หรือตอนติดตั้งครั้งแรกแล้วเจอ error Python environments ไม่ตรงกัน คุณอาจต้องเพิ่มขั้นตอนอีกขั้นหนึ่ง
ขั้นตอนแรกคือติดตั้ง Mnemosyne Hermes ใน pipx environment ของมันเอง แล้วตั้งค่า config สองขั้นตอนนี้เหมือนเดิม แต่ก่อนที่เราจะรีสตาร์ท gateway เราต้องลิงก์ environment ใหม่ที่เราสร้างเข้ากับโฟลเดอร์ plugins ของ Hermes แล้วรันสิ่งที่เรียกว่า Hermes memory setup นั่นเป็นวิธีที่ง่ายมากที่คุณสามารถรันใน terminal และมันจะดำเนินการ configure Mnemosyne ให้คุณ เพื่อให้มันถูกรับรู้เป็น memory provider แทนที่จะเป็นแค่ plugin
มาเริ่มกันเลยครับ ผมจะไปที่เอกสาร คัดลอกคำสั่งติดตั้ง ไปที่ terminal แล้ววางลงไป เสร็จแล้วครับ ใช้เวลาไม่ถึงนาที ตอนนี้เรามี Mnemosyne Hermes ติดตั้งแล้ว ถ้าเราไปที่ Memory and Context เราจะเห็นว่าตอนนี้เรามี default memory system เปิดใช้งานอยู่ และนี่คือ built-in memory provider แต่เราจะเห็นว่าถ้าเราคลิก dropdown เรายังไม่เห็น Mnemosyne เพราะมันเป็น plugin ไม่ใช่ built-in memory provider เราจึงต้องเปิดใช้งานมันสำหรับ default profile นอกเหนือจากการตั้งค่าใน desktop app
ผมจะกลับไปที่เอกสาร คัดลอก string นี้ วางลงไป เสร็จแล้วครับ ใช้เวลาแค่ 2 วินาที และสิ่งที่เกิดขึ้นคือมันแก้ไขไฟล์ config.yaml ให้ใช้ Mnemosyne เป็น memory provider
ตอนนี้เราเพิ่งติดตั้ง Mnemosyne ใน One Bin และเราต้องการสร้าง symlink หรือ link ระหว่างที่เราติดตั้งมันโดยใช้ environment แยกนั้นกับโฟลเดอร์ plugins จริงๆ ของ Hermes นั่นคือสิ่งที่เราเห็นตรงนี้ — มันเพิ่งตรวจสอบว่า provider อย่าง Mnemosyne พร้อมใช้งานและเชื่อมต่อ Mnemosyne กับ Hermes ได้
ขั้นตอนต่อไปคือรัน Hermes memory setup และตรงนี้เราจะเลือก Mnemosyne local แล้วตอบ yes พอเรารัน Hermes memory setup เราจะดำเนินการทีละขั้นตอนและเลือกการตั้งค่าต่างๆ สำหรับ Mnemosyne ในฐานะ Hermes memory provider ผมใช้ตัวเลือก default ทุกอย่างยกเว้นการเข้าถึงแบบ global แทน session memories แต่ผมแนะนำให้อ่านสิ่งที่มันถาม และถ้าคุณไม่แน่ใจ ให้ถาม Hermes ช่วยอธิบาย setup ในแบบที่เหมาะกับคุณที่สุด
การตั้งค่าที่สำคัญที่สุด: default scope สำหรับการจดจำคืออะไร? ผมไม่อยากจำกัดมันแค่ต่อ session ผมอยากให้มันครอบคลุมทุก session นั่นคือหนึ่งในประโยชน์ของการรันระบบ memory ดังนั้นการเปลี่ยนตรงนี้เป็น global จึงสำคัญมาก เสร็จแล้วครับ เราจะเห็นว่ามันดำเนินการและบันทึก memory provider เป็น Mnemosyne
ทีนี้ถ้าเราไปที่ config.yaml ในโฟลเดอร์ .hermes เราจะเห็นว่ามีระบบ memory เต็มรูปแบบพร้อม skills และ tools ทั้งหมดที่ตั้งค่าไว้สำหรับ Mnemosyne provider
ต่อไปผมจะรีสตาร์ท Hermes Gateway พิมพ์ Hermes memory status แล้วเราจะเห็นว่า memory tools เปิดใช้งาน provider คือ Mnemosyne เรามีการตั้งค่าทั้งหมดที่เราเพิ่งทำไป เราสามารถเปลี่ยนทีหลังได้ plugin ติดตั้งแล้ว และ status เป็น available ซึ่งสำคัญมาก และตอนนี้ถ้าผมพิมพ์ Hermes Mnemosyne stats ทุกอย่างยังเป็นศูนย์เพราะเรายังไม่ได้เก็บอะไรไว้
มาลองใช้งานกันครับ ผมจะเปิด Hermes desktop app และถ้าเราไปที่ Memory and Context เราจะเห็นว่า Mnemosyne ถูกตั้งเป็น memory provider แล้ว เยี่ยมครับ ตอนนี้เรามีทุกอย่างติดตั้งแล้ว และถ้าเราอยากอัปเกรด เราก็พิมพ์ pipx upgrade Mnemosyne-Hermes ได้เลย
อีกขั้นตอนหนึ่งที่ผมอยากพูดถึงสั้นๆ คือเอกสารของ Mnemosyne แนะนำให้ปิด legacy memory และความหมายของมันก็คือ persistent memory และ user profile ที่เราตั้งไว้ เหตุผลหลักคือเพื่อหลีกเลี่ยงการซ้ำซ้อนและการเปลืองโทเค็น ผมแนะนำให้ปิดมันก่อนแล้วทดสอบดู และถ้าคุณสังเกตเห็นปัญหา คุณก็เปิดมันใหม่ได้เสมอ แต่อย่าปิดมันด้วยคำสั่งแบบนี้ — ให้คุณอัปเดตมันในไฟล์ config.yaml แทน โดยตั้ง memory enabled false, user profile enabled false ซึ่งก็เหมือนกับการ toggle ปุ่มพวกนี้ออก
มาทดสอบเร็วๆ กันครับ ถ้าผมถาม Hermes สักคำถาม มันไม่ควรรู้จักผม ก่อนหน้านี้ผมเคยบอก Hermes ว่าผมเป็นใคร แต่ตอนนี้ลองใหม่เพราะเรามี Mnemosyne แล้ว เราจะเห็นว่ามันทำงานและเปิดใช้งาน Mnemosyne recall skills และ canonical skill แต่มันยังไม่มีข้อมูลอะไร
ผมจะบอกข้อมูลเกี่ยวกับตัวผมเล็กน้อยเพื่อให้มันจำได้ ทิปสั้นๆ: นี่คือสิ่งแรกที่ผมทำเสมอเมื่อตั้งค่าระบบ memory ใหม่ — บอก Hermes หรือ agent ของคุณเกี่ยวกับตัวคุณและสิ่งที่คุณชอบ เพื่อให้มันเริ่มสร้างโปรไฟล์เกี่ยวกับคุณ และการสนทนาจะรู้สึกเป็นส่วนตัวและมีประสิทธิภาพมากขึ้นสำหรับสิ่งที่คุณพยายามทำ
ผมชื่อ Callum ใช้ชื่อว่า Wanderloots ทำช่อง YouTube เป็น patent agent ทนายความด้านทรัพย์สินทางปัญญา เรียนวิศวกรรมวัสดุศาสตร์ และนี่คือความชอบของผมในการตอบสนอง เราจะเห็นว่า Hermes กำลังรัน Mnemosyne tool มันกำลังรัน remember มีพื้นหลังอาชีพ alias และชื่อ และสิ่งเหล่านี้กำลังถูกเก็บลงในฐานข้อมูลที่ Mnemosyne ตั้งไว้
ทีนี้ ตัวอย่างเช่น ถ้าผมเปิดแชทใหม่แล้วถามว่า "ผมเป็นใคร?" เราควรเห็น Hermes เรียกคืนจาก Mnemosyne ได้แล้วครับ มันดึงข้อมูลมาได้ เยี่ยมมาก นั่นหมายความว่ามันทำงานได้สมบูรณ์ และตอนนี้ถ้าเรากลับไปที่ terminal แล้วรัน Hermes Mnemosyne stats เราจะเห็นว่ามี working memory ที่ยังไม่ consolidate ทั้งหมด 4 รายการ
นี่คือจุดที่มันจะดำเนินการต่อไปและเมื่อเวลาผ่านไปมันจะย้าย working memory ไปเป็น episodic memory และลึกลงไปอีก และนี่คือการนำสิ่งที่เรียกว่า BEAM architecture เข้ามา มันจะ observe รับการสนทนาและผลลัพธ์ของ tool และจดจำทั้งหมดนี้ใน working memory จากนั้นเมื่อเวลาผ่านไปมันจะ consolidate สิ่งนั้นเป็น long-term experiences หรือ episodic memories ทุกครั้งที่เราถาม agent ทุกครั้งที่มี input มันจะดึงจากทั้งสองส่วนนั้นแล้ว recall กลับมา
มีรายละเอียดเพิ่มเติมเกี่ยวกับ working memory แต่นี่เป็นระบบที่เจ๋งมาก โดยเฉพาะเมื่อพิจารณาว่ามันทั้งหมดเกิดขึ้นบนเครื่องคุณภายในฐานข้อมูล SQLite และที่เจ๋งอีกอย่างคือมันยังนำ structured knowledge ที่เก็บเป็น subject-predicate-object triples ซึ่งเป็นพื้นฐานของ knowledge graph เข้ามาด้วย ถ้าคุณอยากเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนั้น ผมมีวิดีโอเกี่ยวกับ knowledge graphs และวิธีใช้มันเพื่อปรับปรุงระบบ agent
แต่ผมขอแนะนำอย่างยิ่งให้คุณไปสำรวจ BEAM overview เพื่อให้เข้าใจมากขึ้นว่าระบบนี้ทำงานอย่างไร มันเจ๋งมากครับ
จำได้ไหมครับว่าตรงนี้เราต้อง manual เพิ่ม Mnemosyne เข้าไปในรายการ แต่มี built-in providers พวกนี้ทั้งหมดที่อาจทรงพลังกว่าขึ้นอยู่กับสิ่งที่คุณมองหา และผมจะทำงานติดตั้ง Hindsight ในวันนี้
โดยส่วนตัวแล้วผมชอบที่ Mnemosyne รันบนเครื่องได้ รันได้โดยไม่ต้องสร้างอะไรเพิ่ม ไม่มี dependencies และเร็วมาก ผมจะปล่อยให้มันเป็น default ในตอนนี้ แต่ผมจะสร้างโปรไฟล์ใหม่ชื่อ hindsight และใช้มันตั้งค่าการกำหนดค่าแยกต่างหาก
โอเค ตอนนี้ผมอยู่บน hindsight profile แล้ว ถ้าเราไปที่ Memory and Context อีกครั้ง เราจะเห็นว่าผมยังเปิด persistent memory และ user profile อยู่ และ built-in memory provider ถูกตั้งไว้ ผมยังไม่ได้ตั้งให้เชื่อมต่อกับ Mnemosyne จะเห็นว่า hindsight profile ไม่เห็น Mnemosyne ด้วยซ้ำ
สิ่งที่เราทำได้คือไปที่ memory provider ใน settings เลื่อนลงมาที่ Hindsight แล้วเปิดมัน แต่ก่อนอื่น มาดูเว็บไซต์ Hindsight กันครับ
Hindsight เป็น native memory provider ใน Hermes Agent ซึ่งหมายความว่ามันถูก built-in มาเลย และ Hindsight แตกต่างออกไปเล็กน้อยเพราะมันทำงานโดยให้ agent เชื่อมต่อกับเซิร์ฟเวอร์แยกต่างหาก มันไม่ใช่สิ่งที่รันใน Hermes เอง แต่ที่เจ๋งคือมันมีวิธีการทำงานหลากหลาย มันสร้าง mental models ของตัวเอง ดึง observations เข้ามา มี standard memories มีอะไรให้ทำมากมาย และมันสามารถ reflect (ทบทวน) แล้วดึงคำตอบที่ตระหนักรู้มากขึ้นโดยใช้เหตุผลเชิงลึก
เมื่อคุณรัน reflect มันจะรัน agentic loop ที่ค้นหา memory โดยอัตโนมัติ แล้วใช้สิ่งนั้นกำหนดรูปแบบการใช้เหตุผลของตัวเอง จากนั้นสร้างคำตอบสุดท้ายที่อิงกับสิ่งที่พบ ดังนั้นแทนที่จะแค่คืนข้อเท็จจริงดิบๆ reflect ให้การตอบสนองที่สังเคราะห์ขึ้นมากกว่า ซึ่งเป็นเหตุผลว่าทำไมมันถึงต้องใช้ LLM ด้วย มีความซับซ้อนมากกว่าเล็กน้อย
ผมขอแนะนำให้สำรวจเอกสารของ Hindsight ถ้าคุณอยากเรียนรู้เพิ่มเติม แต่ประเด็นสำคัญคือมันต้องรันเซิร์ฟเวอร์แยกหรือเชื่อมต่อกับเซิร์ฟเวอร์แยก
ถ้าเรากลับไปที่ memory provider และเลือก Hindsight เราจะเห็นว่ามี mode ปรากฏขึ้น เรามีตัวเลือก cloud และ local external เพื่อทำความเข้าใจมากขึ้น เราไปที่เอกสาร Hindsight สำหรับการตั้งค่าบน Hermes desktop โดยเฉพาะได้ และถ้าคุณอยากทำผ่าน command line ก็มีวิธีแยกในการใช้งาน Hermes memory setup เหมือนที่เราเห็นกับ Mnemosyne
โดยพื้นฐานเราแค่เลือก Hindsight ตั้ง mode ที่ต้องการ เรามี cloud ซึ่งต้องใช้ API key — ตรงนี้เราเชื่อมต่อกับ Hindsight cloud แต่มันมีค่าบริการ คุณเริ่มใช้ฟรีก่อนได้ แล้วขึ้นอยู่กับความถี่ในการใช้งานและขนาดระบบของคุณ คุณจะต้องเริ่มจ่ายเงิน คุณสามารถรันระบบด้วยตัวเองฟรีบนคอมพิวเตอร์ของคุณได้ถ้ามีฮาร์ดแวร์เพียงพอ แต่ถ้าไม่มี การดู Hindsight cloud ว่าค่าใช้จ่ายเท่าไรก็อาจคุ้มค่า ผมยังไม่ได้ลองใช้ cloud เป็นการส่วนตัว
วันนี้เราจะตั้งค่าระบบ local ครับ ลองดูการเปรียบเทียบระหว่าง cloud กับ local LLMs สำหรับการรัน agent memory — นี่คือ LLM ที่จะขับเคลื่อนระบบจริงๆ ตรงข้ามกับการเชื่อมต่อกับ Hindsight cloud ซึ่งจัดการ storage ด้วย คุณสามารถเชื่อมต่อกับ OpenAI, Anthropic หรือ Gemini API ได้ แต่คุณจะจ่ายต่อโทเค็นทุกครั้งที่ retain
คุณสามารถรันฟรีบนเครื่องตัวเองโดยใช้ Ollama ซึ่งผมมีวิดีโอเกี่ยวกับการรัน Ollama สำหรับ agentic AI ถ้าคุณสนใจ สิ่งหนึ่งที่ต้องจำคือไม่ใช่ทุกรุ่น local ที่รองรับ tool calling คุณต้องแน่ใจว่ารุ่นที่คุณใช้รองรับ ผมจะใช้ GPT-OSS 20 billion parameters ซึ่งขนาด 13 กิกะไบต์ ดังนั้นต้องแน่ใจว่าคุณติดตั้งรุ่นนั้นไว้แล้ว และต้องแน่ใจว่ามีแอป Ollama รันอยู่เบื้องหลังหรือ serve มันจาก terminal ด้วยตัวเอง
ขั้นตอนต่อไป เมื่อเรามี local model ดาวน์โหลดแล้ว คือเราเชื่อมต่อ Hindsight กับ local model นั้นและให้เซิร์ฟเวอร์รันอยู่เบื้องหลัง ผมจะทำใน Docker container เพราะช่วยเพิ่มความปลอดภัย ตอนนี้ Hermes terminal backend ของผมเชื่อมต่อกับ Docker container แล้ว เราจะเพิ่ม Docker container อีกตัวที่รันระบบ memory ใน Hindsight โดยตรง
เราวาง string นี้ ซึ่งผมจะรวมไว้ในบทความฟรีที่ลิงก์ในคอมเมนต์บนสุด โดยพื้นฐานแล้วเราอยากรัน Docker container ชื่อ hindsight และเราอยากให้มันรีสตาร์ทเองแม้คอมพิวเตอร์จะปิดแล้วเปิดใหม่ เรากำหนดพอร์ตสองพอร์ต — พอร์ตหนึ่งสำหรับรันเซิร์ฟเวอร์จริง และอีกพอร์ตสำหรับดู dashboard แล้วนี่คือ environment variables ทั้งหมดที่เรากำหนดค่าเพื่อให้มันเชื่อมต่อกับรุ่นที่ผมเลือก — GPT-OSS 20 billion
เสร็จแล้วครับ มันดาวน์โหลด hindsight ให้เราเรียบร้อย และตอนนี้ถ้าเราไปที่ Docker Desktop — ซึ่งต้องรันอยู่นะครับ ผมมีวิดีโอลงลึกเกี่ยวกับวิธีทำ Hermes Agent และ hindsight แบบ containerized ใน Docker — เราจะเห็นว่าเซิร์ฟเวอร์ของเรากำลังรันอยู่
ถ้าเราไปที่ dashboard เราสามารถเลือก memory bank สร้างใหม่ และเริ่มต้นทุกอย่างได้ แต่นี่แค่แสดงให้เห็นว่าเซิร์ฟเวอร์รันอยู่และพร้อมให้เราเชื่อมต่อ
ขั้นตอนต่อไปคือเชื่อมต่อเซิร์ฟเวอร์ที่รันอยู่นี้กับ Hermes จำได้ไหมครับว่าผมอยู่ใน hindsight profile ผมไปที่ Memory and Context เรามี hindsight settings เพราะเราเลือกจาก dropdown แล้ว ผมจะเปลี่ยนเป็น local external เพราะอย่างนั้นเราจึงเว้น API key ว่างไว้ได้ แทนที่จะเชื่อมต่อกับ Hindsight cloud ผมจะใส่ localhost server ที่เราเพิ่งตั้งค่า ผมตั้งชื่อว่า Hermes และเก็บ recall budget ไว้ที่ mid — นี่ไม่ได้ควบคุม AI model แต่แค่บอก Hermes ว่าจะหาโปรแกรม hindsight ที่เราเพิ่งเปิดตัวได้ที่ไหน
เพื่อทดสอบ ผมจะกลับไปและปิด persistent memory นี่เป็นสิ่งที่คุณรันเบื้องหลังกับ hindsight ได้ ผมจะปิดสักครู่เพื่อทดสอบ hindsight และนี่แตกต่างจาก Mnemosyne ที่แนะนำให้ปิด
ผมถามว่า "ผมเป็นใคร?" เราจะเห็นว่า hindsight recall ถูกเรียกใช้ แต่มันไม่รู้ว่าผมเป็นใคร ผมจะป้อน prompt เดิมเหมือนเดิมเพื่อดูว่ามันจำได้ไหม เราจะเห็นมันกำลังวางแผน durable memory มันพยายามอัปเดต แต่ใน memories ผมปิดตรงนั้นไว้ ตอนนี้มันกำลังรัน hindsight retain และนี่อาจใช้เวลาสักหน่อยเพราะผมใช้ local model
ถ้าเราไปดู Docker สักครู่ ไปที่ hindsight container เราจะเห็นว่ามันกำลังทริกเกอร์ memory engine ถ้ารุ่นที่ผมเลือกเข้าสู่ sleep mode มันอาจใช้เวลาสักหน่อย แต่เราเห็นว่ามันกำลังทำงานเก็บข้อมูลเป็น chunks
เสร็จแล้วครับ มันใช้ hindsight retain เพื่อเก็บ user profile และ preferences เจ๋งครับ ทีนี้มันกำลังบอกว่า optional context ที่มีประโยชน์ที่สุดคืออะไรคือคำตอบของทั้งหมดนี้ แต่ผมจะเริ่ม session ใหม่แล้วถามว่า "ผมเป็นใคร?" และดูว่ามันดึงข้อมูลนั้นจาก hindsight ได้ไหม
ได้แล้วครับ แทนที่จะเป็น retain ตอนนี้มันรัน hindsight recall และดึงรายละเอียดทั้งหมดที่เราเคยมีขึ้นมา ซึ่งเยี่ยมมาก นั่นหมายความว่า memory provider นี้ทำงานได้แล้ว
ทีนี้ถ้าเรากลับไปที่ dashboard localhost:99 เราสามารถเลือก Hermes memory bank ที่ตอนนี้มีอยู่แล้ว คลิกเข้าไป และที่เจ๋งสุดๆ คือเราสามารถดูข้อมูลทั้งหมดที่ถูกสร้างขึ้นแล้วในระบบ hindsight ได้
สำหรับผมแล้วนี่มันน่าทึ่งมากที่ไม่ใช่แค่เราทำให้ agent จดจำสิ่งต่างๆ ได้ แต่มันยังสร้างกราฟ (graph) จากความทรงจำของเรา และมีรายละเอียดมากมายที่เราลงลึกได้ นี่เรียกว่า constellation view เราสามารถเปลี่ยนเป็น table view ดู timeline ซึ่งจะมีมากขึ้นเมื่อเรามีข้อมูลเพิ่ม มี experiences, observations, mental models — มีสิ่งมากมายที่เราจัดโครงสร้างได้ ซึ่งผมตื่นเต้นมากที่จะลงลึก
ตัวอย่างเช่น ผมจะตอบคำถามที่ Hermes ถามผม โดยให้บริบทเพิ่มเติมเกี่ยวกับสิ่งที่ผมหวังจะทำกับช่อง YouTube คนที่ผมอยากช่วย และทำไมผมถึงทำสิ่งนี้ตั้งแต่แรก ผมจะให้ hindsight retain ข้อมูลนี้
โอเค มันทำงานได้แล้ว และถ้าผมคลิกรีเฟรชบนกราฟนี้ เราจะเห็นว่ามีข้อมูลเพิ่มขึ้นอีกสองสามชิ้น ผมสามารถบอก Hermes ว่า "please reflect on this conversation" (กรุณาทบทวนการสนทนานี้)
นี่คือผลลัพธ์ของการ reflect ที่ดึง recall เข้ามาด้วย มีปัญหานิดหน่อยแต่มันดูเหมือนจะทำงานได้ค่อนข้างดีในการดึงความเข้าใจที่ลึกซึ้งขึ้นเกี่ยวกับสิ่งที่ผมพยายามทำ — จากแค่การสนทนาสั้นๆ ที่ผมมี
ผมค่อนข้างประทับใจที่มันดึงข้อมูลนี้มาได้เร็วขนาดนี้ — คนที่ผมแชทด้วยและสอนอยู่เป็นคนช่างสร้างที่มีความสามารถแต่มีภาระมากเกินไป พวกเขาอยากรู้และอยากเข้าใจมากกว่าแค่ได้คำตอบ แต่ผมหวังว่าคุณจะเห็นว่าไม่ใช่แค่ความทรงจำเหล่านี้ถูกเก็บ — มันถูกใช้ในแบบที่ปรับปรุงการ reflect ของ agent ต่อปัญหาที่ผมกำลังพยายามแก้และสิ่งที่ผมสนใจจะทำ และนั่นมาจากข้อมูลพื้นฐานแค่นิดเดียวเอง — เจ๋งมากครับ
อีกอย่าง การ reflect นี้เป็นสิ่งที่เท่าที่ผมเข้าใจ — อย่างน้อยในตอนนี้ — Mnemosyne ยังไม่มี
นั่นนำผมมาสู่คำถามว่า — คุณควรเลือกตัวไหน? เราควรสนใจอะไรตรงนี้และควรไปต่อที่ไหน? ผู้สร้าง Mnemosyne บอกว่าเครื่องมือทั้งสองนี้ไม่ใช่คู่แข่งโดยตรง Hindsight เป็น memory engine ที่มีการประมวลผลภาษาธรรมชาติที่ซับซ้อนและการเรียกคืนแบบ multi-signal ส่วน Mnemosyne เป็น memory layer ที่ถูก optimize เพื่อความเรียบง่าย ความเร็ว และการ deploy บนเครื่องเดียว
นี่คือบทสรุปจริงๆ — Hindsight เป็น engine ในขณะที่ Mnemosyne เป็น layer ขึ้นอยู่กับคุณว่าจะเลือกอะไรที่ดีที่สุดสำหรับคุณ ผมจะใส่ข้อมูลเพิ่มเติมและทรัพยากรทั้งหมดที่พูดถึงวันนี้ลงในบทความ Patreon ฟรีที่จะลงลึกเกี่ยวกับวิธีตัดสินใจด้วยตัวเอง
ผมคิดว่าประเด็นสำคัญคือการทดสอบ provider หนึ่งตัวเป็นเวลาหนึ่งสัปดาห์และดูว่ามันปรับปรุง workflow ของคุณไหม ถ้าไม่ ก็ลองตัวอื่น คุณสามารถ export จากตัวหนึ่งไปอีกตัวได้เสมอ — ไม่มีการล็อกอิน
และอีกอย่าง เรื่องหนึ่งที่ผมตื่นเต้นที่จะสำรวจเพิ่มเติมคือ dashboard ตรงนี้ — ผมคิดว่ามันเจ๋งมากที่สามารถเข้าไปดูองค์ประกอบทั้งหมดที่ประกอบกันขึ้นมา dashboard เต็มรูปแบบของความทรงจำที่ถูกสร้างจาก agent ของผมเพียงแค่ผมสนทนากับมัน และสำหรับผม นี่คือประโยชน์หลักของการรัน Hindsight เหนือ Mnemosyne — เพราะถึง Mnemosyne จะมี dashboard แต่มันเป็น community dashboard ไม่ได้สร้างโดยผู้สร้าง Mnemosyne Mnemosyne เป็นเครื่องมือเล็กที่สร้างโดยทีมเล็ก ส่วน Hindsight เป็นระบบเต็มรูปแบบที่มีอะไรให้อีกมาก
และนั่นนำผมไปสู่ขั้นตอนต่อไปที่ผมตื่นเต้นมาก — ไม่ใช่แค่สร้างความทรงจำจากการแชทกับ agent แต่ยังเชื่อมต่อสิ่งนี้กับ world knowledge, library หรือ second brain ของผมใน Obsidian LLM Wiki
ตอนนี้ agent ของคุณมี agentic memory แท้จริงแล้ว Mnemosyne ให้ memory layer ที่เร็วและเบา และถ้าคุณมองหาพลังที่มากกว่านี้ คุณสามารถใช้ memory engine อย่าง Hindsight ถ้าคุณมีคำถามเกี่ยวกับสิ่งที่เราคุยกันวันนี้หรือทิปส์สำหรับวิธีที่คุณใช้ workflow ของตัวเอง บอกผมในคอมเมนต์ได้นะครับ ผมยินดีตอบคำถามและชอบเรียนรู้ว่าคุณใช้ระบบเหล่านี้อย่างไรเช่นกัน
แต่ยังมีอีกชิ้นหนึ่งที่ขาดหายไป — world knowledge operational memory หรือ agentic memory ที่เราตั้งไว้ ตอนนี้รู้ว่าคุณทำงานอย่างไรแล้ว ถัดไปผมจะเชื่อมต่อมันกับ Obsidian LLM Wiki เพื่อให้ agent ของคุณไม่ใช่แค่จดจำข้อเท็จจริงเกี่ยวกับคุณ — แต่มันยังใช้เหตุผลกับทุกสิ่งที่คุณรู้อยู่แล้วด้วย
ถ้าคุณพบว่าวิดีโอนี้มีประโยชน์ ช่วยกดไลก์และกดติดตามด้วยนะครับ ผมซาบซึ้งมาก และอย่าลืมดูโพสต์ Patreon ฟรีที่ผมลิงก์ไว้ด้านล่าง พร้อมข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า โค้ด และตัวเลือก memory providers ขอบคุณอีกครั้งที่รับชม แล้วเจอกันในวิดีโอถัดไปครับ
หมายเหตุการแปล
ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ
- ไม่พบบริเวณที่ไม่ชัดเจน (unclear audio) — เสียงชัดเจนตลอดทั้งวิดีโอ
- ## บริเวณที่ [ฟังไม่ชัด]
- ไม่มี** — ไม่พบบริเวณที่จำเป็นต้องใช้ `[ฟังไม่ชัด]` ตลอดทั้ง transcript
อภิธานศัพท์เทคนิค
คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ
| ศัพท์ | คำแปล / คำอธิบาย |
|---|---|
| คำศัพท์ (English) | คำแปล / คำอธิบาย (Thai) |
| --- | --- |
| Agent / AI Agent | เอเจนต์ — โปรแกรม AI ที่ทำงานแทนผู้ใช้โดยอัตโนมัติ |
| Agentic AI | AI แบบ agentic — AI ที่มีความสามารถตัดสินใจและดำเนินการด้วยตัวเอง |
| Agentic memory | หน่วยความจำของ agent — ข้อมูลที่ agent จดจำเกี่ยวกับผู้ใช้และวิธีการทำงาน |
| Auto context injection | การฉีดบริบทอัตโนมัติ — ระบบดึงความทรงจำที่เกี่ยวข้องมาใส่ใน prompt ก่อนตอบ |
| BEAM architecture | สถาปัตยกรรม BEAM — โครงสร้างหน่วยความจำที่ได้รับแรงบันดาลใจจากชีววิทยา (working, episodic, semantic memory) |
| Built-in memory | หน่วยความจำในตัว — ระบบความจำที่มากับตัว agent (เช่น memory.md ของ Hermes) |
| Claude Code | Claude Code — เครื่องมือเขียนโค้ดด้วย AI จาก Anthropic |
| Codex | Codex — เครื่องมือเขียนโค้ดด้วย AI จาก OpenAI |
| Config.yaml | ไฟล์ตั้งค่าหลักของ Hermes Agent |
| Consolidate (memory) | การรวมหน่วยความจำ — ย้ายข้อมูลจาก working memory ไป episodic memory |
| Constellation view | มุมมองกลุ่มดาว — ฟีเจอร์ dashboard ของ Hindsight ที่แสดงความสัมพันธ์ของข้อมูล |
| Context assembly | การประกอบบริบท — การรวบรวมความทรงจำที่เกี่ยวข้องเพื่อใช้ในการตอบสนอง |
| Context injection | การฉีดบริบท — การเพิ่มข้อมูลเข้าไปใน prompt ของ AI |
| Cursor | Cursor — IDE ที่มี AI ในตัว |
| Dedicated memory provider | ผู้ให้บริการหน่วยความจำเฉพาะ — ระบบความจำภายนอกที่แยกจาก built-in memory |
| Docker | Docker — แพลตฟอร์มสำหรับรันแอปพลิเคชันใน container |
| Embeddings | เอมเบ็ดดิ้ง — การแปลงข้อความเป็นเวกเตอร์ตัวเลขเพื่อการค้นหาความคล้ายคลึง |
| Episodic memory | หน่วยความจำเหตุการณ์ — ความทรงจำระยะยาวเกี่ยวกับประสบการณ์ที่เกิดขึ้น |
| External memory | หน่วยความจำภายนอก — ระบบความจำที่รันแยกจาก agent (เช่น Mnemosyne, Hindsight) |
| Gateway (Hermes) | เกตเวย์ของ Hermes — บริการที่จัดการการสื่อสารระหว่าง agent และเครื่องมือต่างๆ |
| Hermes Agent | Hermes Agent — AI Agent แบบโอเพนซอร์สที่พัฒนาโดย Nous Research |
| Hindsight | Hindsight — memory engine สำหรับ AI Agent (built-in ใน Hermes) |
| Knowledge graph | กราฟความรู้ — โครงสร้างข้อมูลที่แสดงความสัมพันธ์ระหว่าง entities |
| Knowledge layer | ชั้นความรู้ — ระบบจัดเก็บความรู้ถาวร (เช่น Obsidian, LLM Wiki) |
| LLM (Large Language Model) | โมเดลภาษาขนาดใหญ่ — AI ที่ใช้ประมวลผลภาษา |
| LLM Wiki | LLM Wiki — ระบบ wiki ที่ขับเคลื่อนด้วย LLM |
| Memory bank | คลังหน่วยความจำ — ที่เก็บข้อมูลในระบบ memory provider |
| Memory engine | เอ็นจินหน่วยความจำ — ระบบความจำเต็มรูปแบบที่มีการประมวลผลซับซ้อน (เช่น Hindsight) |
| Memory layer | ชั้นหน่วยความจำ — ระบบความจำระดับเบา (เช่น Mnemosyne) |
| Memory provider | ผู้ให้บริการหน่วยความจำ — ระบบภายนอกที่จัดการการเก็บและเรียกคืนความทรงจำ |
| Memory stack | ระบบหน่วยความจำแบบซ้อนชั้น — ภาพรวมของ memory ทั้งระบบ |
| Mnemosyne | Mnemosyne — memory layer แบบเบาสำหรับ AI Agent |
| Multi-signal retrieval | การเรียกคืนแบบหลายสัญญาณ — การค้นหาความทรงจำจากหลายแหล่งพร้อมกัน |
| Obsidian | Obsidian — แอปจดบันทึกและจัดการความรู้ |
| Ollama | Ollama — เครื่องมือสำหรับรัน LLM บนเครื่องตัวเอง |
| Operational memory | หน่วยความจำเชิงปฏิบัติการ — ข้อมูลที่ agent ใช้ในการทำงานปัจจุบัน |
| Patent agent | ตัวแทนสิทธิบัตร — ผู้เชี่ยวชาญด้านกฎหมายทรัพย์สินทางปัญญา |
| Pipx | pipx — เครื่องมือติดตั้งแพ็กเกจ Python ใน environment แยก |
| Recall | การเรียกคืน — การดึงความทรงจำที่เกี่ยวข้องมาใช้ |
| Reflect | การทบทวน — ฟีเจอร์ของ Hindsight ที่ใช้เหตุผลวิเคราะห์ความทรงจำ |
| Retain | การเก็บรักษา — ฟีเจอร์ของ Hindsight สำหรับบันทึกข้อมูลลง memory |
| Sandbox | แซนด์บ็อกซ์ — สภาพแวดล้อมแยกที่จำกัดการเข้าถึงระบบ |
| Scratchpad | พื้นที่บันทึกชั่วคราว — หน่วยความจำชั่วคราวใน BEAM architecture |
| Second brain | สมองที่สอง — แนวคิดการสร้างระบบความรู้ภายนอก |
| Semantic memory | หน่วยความจำความหมาย — ความรู้เกี่ยวกับข้อเท็จจริงและแนวคิด |
| Session search | การค้นหา session — ฟีเจอร์ของ Hermes สำหรับค้นหาจากการสนทนาที่ผ่านมา |
| SQLite | SQLite — ฐานข้อมูลขนาดเล็กที่ฝังในแอปพลิเคชัน |
| Sub-millisecond | ต่ำกว่ามิลลิวินาที — ความเร็วในการตอบสนองที่เร็วมาก |
| Terminal execution backend | ระบบรันคำสั่ง terminal ของ Hermes |
| Tool calling | การเรียกใช้เครื่องมือ — ความสามารถของ LLM ในการเรียกใช้ฟังก์ชันภายนอก |
| Universal memory | หน่วยความจำกลาง — ระบบความจำที่ใช้ร่วมกันระหว่าง agent หลายตัว |
| Virtual environment (venv) | สภาพแวดล้อมเสมือนของ Python — แยก dependencies ของโปรเจกต์ |
| Working memory | หน่วยความจำทำงาน — ข้อมูลที่กำลังใช้งานอยู่ ณ ปัจจุบัน |
| World knowledge | ความรู้โลก — ข้อมูลพื้นฐานถาวรที่ใช้ร่วมกันในทุกโปรเจกต์ |
| Zero-dependency | ไม่มีการพึ่งพาภายนอก — ทำงานได้โดยไม่ต้องติดตั้งไลบรารีเพิ่มเติม |
ซับไตเติ้ลภาษาไทย
ดาวน์โหลดหรือดูซับทั้งหมด
1 00:00:00,000 --> 00:00:03,152 สำหรับผมแล้วนี่มันน่าทึ่งมากที่ไม่ใช่แค่เราทำให้ 2 00:00:03,152 --> 00:00:06,436 agent จดจำสิ่งต่างๆ ได้ แต่มันยังสร้างกราฟ (graph) 3 00:00:06,436 --> 00:00:11,953 จากความทรงจำของเราในแบบที่ช่วยปรับปรุง agent ให้แก้ปัญหาที่เราพยายามแก้ได้ดีขึ้นด้วย 4 00:00:11,953 --> 00:00:17,338 คุณเคยหงุดหงิดไหมที่ AI ของคุณชอบลืมสิ่งต่างๆ คุณต้องอธิบายบริบทเดิมซ้ำแล้วซ้ำเล่า
เปิดดูซับไตเติ้ลทั้งหมด (412 segments)
1 00:00:00,000 --> 00:00:03,152 สำหรับผมแล้วนี่มันน่าทึ่งมากที่ไม่ใช่แค่เราทำให้ 2 00:00:03,152 --> 00:00:06,436 agent จดจำสิ่งต่างๆ ได้ แต่มันยังสร้างกราฟ (graph) 3 00:00:06,436 --> 00:00:11,953 จากความทรงจำของเราในแบบที่ช่วยปรับปรุง agent ให้แก้ปัญหาที่เราพยายามแก้ได้ดีขึ้นด้วย 4 00:00:11,953 --> 00:00:17,338 คุณเคยหงุดหงิดไหมที่ AI ของคุณชอบลืมสิ่งต่างๆ คุณต้องอธิบายบริบทเดิมซ้ำแล้วซ้ำเล่า 5 00:00:17,338 --> 00:00:20,622 เปลืองทั้งโทเค็นและเวลา และถ้าคุณรัน agent หลายตัว 6 00:00:20,622 --> 00:00:24,693 มันยิ่งแย่เข้าไปใหญ่เพราะคุณต้องแชร์บริบทให้พวกมันเข้าใจตรงกัน 7 00:00:24,693 --> 00:00:29,947 นั่นเป็นเพราะคุณไม่ได้ใช้ระบบความจำจริงๆ หรืออย่างน้อยก็ไม่ใช่ระบบที่ดีสักเท่าไร 8 00:00:29,947 --> 00:00:33,100 เรามาแก้ปัญหานี้กันเถอะ สวัสดีครับ ผมชื่อ Callum 9 00:00:33,100 --> 00:00:37,828 หรือที่รู้จักในชื่อ Wanderloots ยินดีต้อนรับสู่วิดีโอวันนี้ว่าด้วยการให้ 10 00:00:37,828 --> 00:00:41,177 agent ของคุณมีความจำอย่างแท้จริง วันนี้ผมใช้ Hermes 11 00:00:41,177 --> 00:00:45,249 Agent เป็นตัวอย่าง แต่เครื่องมือด้านความจำที่ผมพูดถึงใช้ได้กับ 12 00:00:45,249 --> 00:00:49,584 AI แบบ agentic ทุกตัว และที่สำคัญกว่านั้นคือมันทำงานร่วมกันระหว่าง 13 00:00:49,584 --> 00:00:53,918 AI agent หลายตัวได้ คุณสามารถตั้งระบบนี้ครั้งเดียวแล้วเชื่อมต่อกับ 14 00:00:53,918 --> 00:00:57,136 agent ตัวไหนก็ได้โดยใช้หน่วยความจำกลาง (universal 15 00:00:57,136 --> 00:01:01,471 memory) ร่วมกัน ถ้าคุณยังใหม่กับ Hermes และอยากติดตั้งอย่างปลอดภัย 16 00:01:01,471 --> 00:01:04,886 ผมมีเพลย์ลิสต์เกี่ยวกับ agentic AI แบบเต็มอยู่ตรงนี้ 17 00:01:04,886 --> 00:01:08,038 เมื่อดูวิดีโอนี้จบ คุณจะเข้าใจลำดับชั้นต่างๆ ของ 18 00:01:08,038 --> 00:01:11,387 memory stack และเข้าใจว่า agentic memory แตกต่างจาก 19 00:01:11,387 --> 00:01:14,802 knowledge layer อย่าง Obsidian หรือ LLM Wiki อย่างไร 20 00:01:14,802 --> 00:01:18,612 ทำไมคุณถึงอาจอยากใช้ dedicated memory provider แทนที่จะใช้ 21 00:01:18,612 --> 00:01:24,391 built-in memory ตัวเลือก memory แบบต่างๆ และทำไมผมถึงเลือกสองตัวที่เราจะติดตั้งกันวันนี้ 22 00:01:24,391 --> 00:01:27,478 วิธีติดตั้ง memory layer แบบเบาที่ไม่เป็นทางการ 23 00:01:27,478 --> 00:01:31,221 และวิธีติดตั้ง memory engine แบบเต็มรูปแบบอย่างเป็นทางการ 24 00:01:31,221 --> 00:01:34,439 ผมตื่นเต้นมากเพราะ memory เป็นสิ่งที่ผมศึกษามานาน 25 00:01:34,439 --> 00:01:38,117 และผมแทบรอไม่ไหวที่จะช่วยคุณติดตั้งมันในวันนี้ ทีนี้มาดู 26 00:01:38,117 --> 00:01:43,830 agentic memory กันครับ ก่อนที่เราจะติดตั้งอะไร ผมอยากเคลียร์ความสับสนที่พบบ่อยเกี่ยวกับ 27 00:01:43,830 --> 00:01:47,508 agentic memory ก่อน — มันไม่ใช่แค่ layer เดียว แต่มันคือ 28 00:01:47,508 --> 00:01:50,792 stack (ระบบซ้อนชั้น) เมื่อผู้คนพูดถึง second brain 29 00:01:50,792 --> 00:01:54,535 หรือ agentic memory จริงๆ แล้วพวกเขากำลังหมายถึงสามอย่าง: 30 00:01:54,535 --> 00:01:57,950 world knowledge, built-in memory และ external memory 31 00:01:57,950 --> 00:02:01,300 knowledge layer อย่าง Obsidian vaults หรือ LLM Wiki 32 00:02:01,300 --> 00:02:04,649 เป็นส่วนหนึ่งของ memory stack แต่ไม่ใช่ operational 33 00:02:04,649 --> 00:02:08,918 memory (ความจำเชิงปฏิบัติการ) จริงๆ ในแบบที่เราหมายถึงเมื่อพูดว่า 34 00:02:08,918 --> 00:02:14,237 agent memory มันคือ world knowledge ข้อมูลพื้นฐานที่ใช้ร่วมกันในทุกโปรเจกต์และทุก 35 00:02:14,237 --> 00:02:17,718 agent คุณสามารถจำกัดการเข้าถึง knowledge layer นี้ของ 36 00:02:17,718 --> 00:02:21,461 agent ได้ ซึ่งผมพูดถึงเพิ่มเติมในวิดีโอเรื่องการเชื่อมต่อ 37 00:02:21,461 --> 00:02:24,614 agentic AI กับ Obsidian จากนั้นเรามี operational 38 00:02:24,614 --> 00:02:27,766 memory ซึ่งแบ่งเป็นสองระดับ: built-in memory และ 39 00:02:27,766 --> 00:02:31,838 dedicated memory providers operational memory เน้นไปที่สิ่งที่ 40 00:02:31,838 --> 00:02:35,647 agent ควรจดจำเกี่ยวกับการทำงานกับเราโดยเฉพาะ การทดสอบง่ายๆ 41 00:02:35,647 --> 00:02:40,638 คือ ถ้าเป็นความรู้ที่คุณอยากให้เก็บรักษาและจัดระเบียบไว้ใช้ในทุกสิ่งที่คุณทำ 42 00:02:40,638 --> 00:02:47,140 — นั่นคือ Obsidian แต่ถ้าเป็นข้อเท็จจริงเกี่ยวกับสไตล์การทำงานของคุณหรือสิ่งที่คุณกำลังทำอยู่ตอนนี้ 43 00:02:47,140 --> 00:02:50,489 — นั่นคือ agentic memory สรุปภาพรวม: เรามี built-in 44 00:02:50,489 --> 00:02:53,904 memory ซึ่งดีสำหรับการสนทนาแบบ single session ง่ายๆ, 45 00:02:53,904 --> 00:02:58,173 memory provider สำหรับเมื่อคุณทำโปรเจกต์ซับซ้อนที่ดำเนินต่อเนื่อง 46 00:02:58,173 --> 00:03:01,325 หรือแค่อยากได้ประสิทธิภาพและการเรียกคืนของ agent 47 00:03:01,325 --> 00:03:04,675 ที่ดีขึ้นอย่างเห็นได้ชัด, และ knowledge layer อย่าง 48 00:03:04,675 --> 00:03:08,944 Obsidian สำหรับสร้าง world knowledge ที่ครอบคลุมทุกโปรเจกต์และทุก 49 00:03:08,944 --> 00:03:12,162 agent ที่คุณรัน ผมพูดถึงการเชื่อมต่อ Obsidian กับ 50 00:03:12,162 --> 00:03:16,430 agentic AI เพิ่มเติมในวิดีโอนี้ วันนี้ผมอยากโฟกัสเฉพาะสองระดับแรก 51 00:03:16,430 --> 00:03:19,583 คือ built-in memory และ external memory provider 52 00:03:19,583 --> 00:03:22,735 วิดีโอถัดไปของผมจะลงลึกในการตั้งค่า Obsidian LLM 53 00:03:22,735 --> 00:03:26,281 Wiki ที่เสริม agent memory ที่เรากำลังติดตั้งกันวันนี้ 54 00:03:26,281 --> 00:03:29,434 เรามาเริ่มด้วยการเปรียบเทียบ built-in memory กับ 55 00:03:29,434 --> 00:03:33,374 memory provider จริงๆ กันครับ ถ้าคุณพบว่าวิดีโอนี้มีประโยชน์ 56 00:03:33,374 --> 00:03:38,037 ช่วยกดไลก์ กดไฮป์ และกดติดตามด้วยนะครับ ผมซาบซึ้งในการสนับสนุนของคุณมาก 57 00:03:38,037 --> 00:03:41,912 ถ้าคุณมองหาวิธีสนับสนุนผมเพิ่มเติม ลองพิจารณาเข้าร่วมสมาชิก 58 00:03:41,912 --> 00:03:45,458 YouTube หรือ Patreon ของผม ซึ่งผมให้สมาชิกเข้าถึงทิปส์ 59 00:03:45,458 --> 00:03:48,939 ข้อมูลเชิงลึก และมุมมองของผมเกี่ยวกับอนาคตของ agentic 60 00:03:48,939 --> 00:03:52,026 AI และการจัดการความรู้ แล้ว built-in memory ของ 61 00:03:52,026 --> 00:03:55,309 Hermes หน้าตาเป็นยังไงล่ะ? มันมีสามไฟล์: memory.md 62 00:03:55,309 --> 00:03:59,578 ซึ่งเป็น operational memory ของคุณ, user.md ซึ่งบอกว่าคุณเป็นใคร, 63 00:03:59,578 --> 00:04:03,650 และ soul.md ซึ่งทางเทคนิคแล้วไม่ใช่ memory แต่เป็นบุคลิกภาพของ 64 00:04:03,650 --> 00:04:07,196 agent เอง นอกจากนั้น built-in memory ยังรวมถึง session 65 00:04:07,196 --> 00:04:10,283 search ที่เก็บในฐานข้อมูลภายใน (local database) 66 00:04:10,283 --> 00:04:13,698 คุณจึงถาม Hermes ให้ค้นหาจาก session ที่ผ่านมาได้เลย 67 00:04:13,698 --> 00:04:16,982 ทิปสั้นๆ: วิธีที่ดีที่สุดในการเริ่มใช้ agent อย่าง 68 00:04:16,982 --> 00:04:20,331 Hermes คือการบอก Hermes เกี่ยวกับตัวคุณตั้งแต่เริ่ม 69 00:04:20,331 --> 00:04:23,549 ถ้ามันเข้าใจมากขึ้นว่าคุณเป็นใครและชอบทำงานแบบไหน 70 00:04:23,549 --> 00:04:28,146 ทั้งระบบจะฉลาดขึ้นแทบจะทันที คำถามหนึ่งที่มีคนถามผมบ่อยเกี่ยวกับการรัน 71 00:04:28,146 --> 00:04:31,693 built-in memory คือถ้าคุณใช้ Hermes terminal execution 72 00:04:31,693 --> 00:04:34,779 backend ที่รันโค้ดใน Docker Hermes จะยังเข้าถึง 73 00:04:34,779 --> 00:04:39,245 memory ได้ไหม? คำตอบคือได้ครับ การรันใน Docker ไม่กระทบความสามารถของ 74 00:04:39,245 --> 00:04:42,463 Hermes ในการเข้าถึงไฟล์ memory และ user ของตัวเอง 75 00:04:42,463 --> 00:04:45,681 มันใช้ memory tool ซึ่งเป็นสิ่งเดียวกับที่ memory 76 00:04:45,681 --> 00:04:48,768 providers ใช้ แทนที่จะรันผ่านโค้ดที่ถูก sandbox 77 00:04:48,768 --> 00:04:52,117 ใน Docker ผมพูดถึงเรื่องนี้เพิ่มเติมในวิดีโอวิธีแยก 78 00:04:52,117 --> 00:04:56,123 agent ให้ทำงานอย่างปลอดภัยบนคอมพิวเตอร์ของคุณ ประเด็นสำคัญคือ 79 00:04:56,123 --> 00:04:59,604 built-in user และ memory files ถูก inject เข้าไปในทุก 80 00:04:59,604 --> 00:05:03,873 session ใหม่ มันกลายเป็นส่วนหนึ่งของบริบทในทุกการสนทนาที่คุณมีกับ 81 00:05:03,873 --> 00:05:07,156 Hermes ทีนี้ นี่เป็นเรื่องดีเพราะหมายความว่า agent 82 00:05:07,156 --> 00:05:13,330 ของคุณจะไม่มีวันลืมว่าคุณเป็นใคร แต่มันก็หมายความว่ามันใช้บริบทและโทเค็นไปบางส่วนในทุกการสนทนา 83 00:05:13,330 --> 00:05:16,613 คุณต้องทำให้มันกระชับที่สุดเพื่อไม่ให้เปลืองโทเค็น 84 00:05:16,613 --> 00:05:20,028 และนั่นคือจุดที่ memory provider จริงๆ เข้ามามีบทบาท 85 00:05:20,028 --> 00:05:23,903 memory provider คือ external layer ที่เก็บและเรียกคืนข้อมูล 86 00:05:23,903 --> 00:05:27,450 ณ เวลาที่รัน (runtime) หรือเมื่อ agent ต้องการใช้จริงๆ 87 00:05:27,450 --> 00:05:34,345 แทนที่จะ insert เข้าไปในทุกการสนทนา นี่ช่วยให้บริบทของคุณกระชับและข้อมูลตรงประเด็นเมื่อคุณต้องการใช้จริงๆ 88 00:05:34,345 --> 00:05:37,563 มาดู memory providers ให้ลึกขึ้นครับ หลายคนรู้สึก 89 00:05:37,563 --> 00:05:41,635 overwhelmed เวลาพยายามเลือก memory provider และนั่นก็เข้าใจได้ 90 00:05:41,635 --> 00:05:45,904 มีตัวเลือกและปัจจัยให้พิจารณาเยอะมาก มันขึ้นอยู่กับเป้าหมายของคุณ 91 00:05:45,904 --> 00:05:50,370 จำนวน agent หรือผู้ใช้ที่แชร์ memory นั้น ฮาร์ดแวร์ที่คุณมีสำหรับรัน 92 00:05:50,370 --> 00:05:54,244 และว่าคุณอยากใช้เครื่องมือฟรีหรือเสียเงิน ข่าวดีคือส่วนใหญ่ 93 00:05:54,244 --> 00:05:58,513 — ถ้าไม่ใช่ทั้งหมด — ของพวกมันอนุญาตให้คุณย้ายข้อมูลระหว่างกันได้ 94 00:05:58,513 --> 00:06:03,110 คุณจึงไม่ได้ถูกล็อกกับตัวเลือกแรกที่คุณเลือก คุณสามารถทดสอบและทดลองได้ 95 00:06:03,110 --> 00:06:06,591 และถ้าคุณไม่ชอบเครื่องมือหนึ่ง คุณก็สามารถย้าย memory 96 00:06:06,591 --> 00:06:10,269 ไปอีกตัวได้เสมอ แต่แทนที่จะเปรียบเทียบทั้งหมดในวิดีโอนี้ 97 00:06:10,269 --> 00:06:13,815 ซึ่งคงใช้เวลานาน ผมได้รวบรวมบทวิเคราะห์ของผมไว้ในโพสต์ 98 00:06:13,815 --> 00:06:17,099 Patreon ฟรีที่ผมจะแปะลิงก์ในคอมเมนต์บนสุดของวิดีโอ 99 00:06:17,099 --> 00:06:21,368 คุณจะได้ดูตัวเลือกต่างๆ และดูว่าอะไรเหมาะกับสถานการณ์ของคุณที่สุด 100 00:06:21,368 --> 00:06:24,717 แต่วันนี้ แทนที่จะดูจาก benchmark หรือรายการฟีเจอร์ 101 00:06:24,717 --> 00:06:28,986 ผมคิดว่าจะดูสิ่งที่คอมมูนิตี้ให้คะแนนสูงสุดและที่หลายคนแนะนำให้ผม 102 00:06:28,986 --> 00:06:32,598 และพวกมันคือ Mnemosyne กับ Hindsight Mnemosyne เป็นระบบ 103 00:06:32,598 --> 00:06:36,407 lightweight แบบ zero-dependency (ไม่ต้องพึ่งไลบรารีภายนอก) 104 00:06:36,407 --> 00:06:39,822 และไม่ต้องใช้ LLM ในการทำงาน มันรันบนเครื่องคุณล้วนๆ 105 00:06:39,822 --> 00:06:43,303 เร็วอย่างเหลือเชื่อด้วย built-in embeddings Mnemosyne 106 00:06:43,303 --> 00:06:47,309 เหมาะมากถ้าคุณอยากได้ memory provider ที่ไม่ทำให้ระบบคุณช้าลง 107 00:06:47,309 --> 00:06:50,461 Hindsight มีฟีเจอร์มากกว่าและมันอยู่ในอันดับต้นๆ 108 00:06:50,461 --> 00:06:54,467 ของ memory benchmark ส่วนใหญ่ แต่มันต้องเชื่อมต่อคลาวด์หรือมี 109 00:06:54,467 --> 00:06:58,736 server ของคุณเองพร้อม LLM ในการขับเคลื่อน วิธีคิดที่ง่ายที่สุดคือ 110 00:06:58,736 --> 00:07:01,823 Mnemosyne เป็น memory layer ส่วน Hindsight เป็น 111 00:07:01,823 --> 00:07:05,172 memory engine มาเริ่มด้วยตัวเลือก lightweight อย่าง 112 00:07:05,172 --> 00:07:11,148 Mnemosyne ก่อน คุณจะได้เห็น memory provider ทำงานจริงก่อนที่เราจะขยับไปใช้พลังที่มากขึ้นกับ 113 00:07:11,148 --> 00:07:14,235 Hindsight เรามอง Mnemosyne ได้ว่าเป็น universal 114 00:07:14,235 --> 00:07:17,585 memory layer สำหรับ AI agent ทุกชนิดที่รันบน SQLite 115 00:07:17,585 --> 00:07:20,868 backend ด้วยความเร็วระดับ sub-millisecond แบบ zero 116 00:07:20,868 --> 00:07:26,450 dependencies จุดประสงค์ที่ผมแสดงตัวนี้ก่อนคือมันเร็วมากและไม่ต้องติดตั้งอะไรเพิ่มเยอะ 117 00:07:26,450 --> 00:07:30,851 ข้อมูลเพิ่มเติมเกี่ยวกับ Mnemosyne: มันได้แรงบันดาลใจทางชีววิทยาจาก 118 00:07:30,851 --> 00:07:34,069 BEAM architecture ซึ่งนำ memory ระดับต่างๆ เข้ามา 119 00:07:34,069 --> 00:07:37,549 เช่น working memory, episodic memory, semantic memory 120 00:07:37,549 --> 00:07:42,344 และ scratchpad โดยแต่ละระดับถูก optimize สำหรับรูปแบบการเข้าถึงที่ต่างกัน 121 00:07:42,344 --> 00:07:45,562 ทุกอย่างอยู่บนเครื่องคุณ ซึ่งดีต่อความเป็นส่วนตัว 122 00:07:45,562 --> 00:07:48,714 มันมีความเร็วในการ query ต่ำกว่า 100 มิลลิวินาที 123 00:07:48,714 --> 00:07:51,998 และมีการผสานรวมกับ Hermes โดยตรง มาดู architecture 124 00:07:51,998 --> 00:07:55,150 กันสักครู่ครับ ประเด็นสำคัญคือเรากำลังสร้าง auto 125 00:07:55,150 --> 00:07:58,302 context injection ซึ่งหมายความว่าเมื่อคุณมีคำถาม 126 00:07:58,302 --> 00:08:01,389 เมื่อคุณถาม Hermes อะไรสักอย่าง Mnemosyne จะรับ 127 00:08:01,389 --> 00:08:04,541 query นั้น ใช้ recall tool เพื่อดูบริบทที่มีอยู่ 128 00:08:04,541 --> 00:08:08,744 และ inject บริบทนั้นเข้าไปใน prompt ของ agent ก่อนที่มันจะตอบคุณ 129 00:08:08,744 --> 00:08:13,210 เมื่อคุณสนทนาต่อไป มันจะจดจำมากขึ้นเรื่อยๆ ซึ่งจะถูกป้อนกลับเข้าไปใน 130 00:08:13,210 --> 00:08:16,363 Mnemosyne เพื่อช่วยมันสร้าง context assembly นี้ 131 00:08:16,363 --> 00:08:20,303 นี่เป็นวิธีที่ยอดเยี่ยมในการสร้างระบบความจำที่พัฒนาตัวเองได้ 132 00:08:20,303 --> 00:08:23,521 (self-evolving memory system) สำหรับ agent ของคุณ 133 00:08:23,521 --> 00:08:26,870 และอย่างที่เราเห็น มันใช้กับ Claude Code ได้ ใช้กับ 134 00:08:26,870 --> 00:08:31,008 Codex ได้ ใช้กับ Cursor ได้ ใช้กับ agent อะไรก็ได้ที่คุณต้องการ 135 00:08:31,008 --> 00:08:35,671 และเราสามารถให้ทั้งหมดเชื่อมต่อกับ memory bank เดียวกันได้ถ้าเราต้องการ 136 00:08:35,671 --> 00:08:39,480 เอาล่ะ มาติดตั้ง Mnemosyne กันครับ ถ้าเราไปที่เอกสารของเขา 137 00:08:39,480 --> 00:08:43,946 เราจะเห็นว่ามันมีการผสานรวมกับ Hermes Agent และมีรายการคำสั่งด่วนให้ 138 00:08:43,946 --> 00:08:47,558 ง่ายต่อการติดตั้งมาก และมีสิ่งหนึ่งที่ผมอยากพูดถึงสั้นๆ 139 00:08:47,558 --> 00:08:50,973 คือถ้าคุณรัน Hermes และมี terminal execution backend 140 00:08:50,973 --> 00:08:54,519 รันอยู่ใน Docker เราสามารถให้ Hermes ติดตั้ง Mnemosyne 141 00:08:54,519 --> 00:08:58,459 ให้เราไม่ได้ เพราะ Hermes จะพยายามรัน terminal และมันจะรันใน 142 00:08:58,459 --> 00:09:01,546 Docker container และนั่นไม่ใช่สิ่งที่เราต้องการ 143 00:09:01,546 --> 00:09:05,027 เพราะเราต้องการให้ระบบ memory ของเราอยู่รอดนอก Docker 144 00:09:05,027 --> 00:09:08,836 container ของ terminal execution backend ถ้าคุณไม่ได้รันใน 145 00:09:08,836 --> 00:09:14,615 Docker คุณก็แค่บอกให้ Hermes ทำให้ได้เลย แต่โดยพื้นฐานแล้วนี่หมายความว่าเราต้องรันมันจาก 146 00:09:14,615 --> 00:09:18,227 host device บนคอมพิวเตอร์ของเรา ผมจะติดตั้งมันโดยตรงจาก 147 00:09:18,227 --> 00:09:21,774 terminal ด้วยตัวเอง Mnemosyne ไม่ใช่ built-in provider 148 00:09:21,774 --> 00:09:25,320 เราจึงต้องติดตั้ง Mnemosyne แบบ manual มากกว่าเล็กน้อย 149 00:09:25,320 --> 00:09:28,866 แต่ประเด็นสำคัญคือเราไม่ได้ติดตั้งมันใน Hermes managed 150 00:09:28,866 --> 00:09:32,084 virtual environment เพราะทุกครั้งที่คุณรัน Hermes 151 00:09:32,084 --> 00:09:36,944 update มันจะ rebuild virtual environment นั้นแล้วลบแพ็กเกจเสริมทั้งหมดทิ้ง 152 00:09:36,944 --> 00:09:40,491 เรามีสองตัวเลือกที่ระบุไว้: ใช้ pipx ซึ่งสร้าง virtual 153 00:09:40,491 --> 00:09:43,906 environment แยกต่างหาก หรือสร้าง virtual environment 154 00:09:43,906 --> 00:09:49,816 ด้วยตัวเองโดยใช้ fallback option อย่างไรก็ตาม ทั้งสองตัวเลือกนี้ใช้ไม่ได้ผลสมบูรณ์สำหรับผม 155 00:09:49,816 --> 00:09:53,231 ถ้าคุณติดตั้ง Mnemosyne แล้วรัน Hermes memory status 156 00:09:53,231 --> 00:09:57,041 แล้วได้ error plugin missing หรือตอนติดตั้งครั้งแรกแล้วเจอ 157 00:09:57,041 --> 00:10:01,638 error Python environments ไม่ตรงกัน คุณอาจต้องเพิ่มขั้นตอนอีกขั้นหนึ่ง 158 00:10:01,638 --> 00:10:05,381 ขั้นตอนแรกคือติดตั้ง Mnemosyne Hermes ใน pipx environment 159 00:10:05,381 --> 00:10:08,796 ของมันเอง แล้วตั้งค่า config สองขั้นตอนนี้เหมือนเดิม 160 00:10:08,796 --> 00:10:12,474 แต่ก่อนที่เราจะรีสตาร์ท gateway เราต้องลิงก์ environment 161 00:10:12,474 --> 00:10:15,692 ใหม่ที่เราสร้างเข้ากับโฟลเดอร์ plugins ของ Hermes 162 00:10:15,692 --> 00:10:21,077 แล้วรันสิ่งที่เรียกว่า Hermes memory setup นั่นเป็นวิธีที่ง่ายมากที่คุณสามารถรันใน 163 00:10:21,077 --> 00:10:24,558 terminal และมันจะดำเนินการ configure Mnemosyne ให้คุณ 164 00:10:24,558 --> 00:10:28,236 เพื่อให้มันถูกรับรู้เป็น memory provider แทนที่จะเป็นแค่ 165 00:10:28,236 --> 00:10:32,176 plugin มาเริ่มกันเลยครับ ผมจะไปที่เอกสาร คัดลอกคำสั่งติดตั้ง 166 00:10:32,176 --> 00:10:35,985 ไปที่ terminal แล้ววางลงไป เสร็จแล้วครับ ใช้เวลาไม่ถึงนาที 167 00:10:35,985 --> 00:10:39,400 ตอนนี้เรามี Mnemosyne Hermes ติดตั้งแล้ว ถ้าเราไปที่ 168 00:10:39,400 --> 00:10:42,684 Memory and Context เราจะเห็นว่าตอนนี้เรามี default 169 00:10:42,684 --> 00:10:45,770 memory system เปิดใช้งานอยู่ และนี่คือ built-in 170 00:10:45,770 --> 00:10:49,054 memory provider แต่เราจะเห็นว่าถ้าเราคลิก dropdown 171 00:10:49,054 --> 00:10:52,338 เรายังไม่เห็น Mnemosyne เพราะมันเป็น plugin ไม่ใช่ 172 00:10:52,338 --> 00:10:55,884 built-in memory provider เราจึงต้องเปิดใช้งานมันสำหรับ 173 00:10:55,884 --> 00:10:58,971 default profile นอกเหนือจากการตั้งค่าใน desktop 174 00:10:58,971 --> 00:11:02,189 app ผมจะกลับไปที่เอกสาร คัดลอก string นี้ วางลงไป 175 00:11:02,189 --> 00:11:06,589 เสร็จแล้วครับ ใช้เวลาแค่ 2 วินาที และสิ่งที่เกิดขึ้นคือมันแก้ไขไฟล์ 176 00:11:06,589 --> 00:11:09,807 config.yaml ให้ใช้ Mnemosyne เป็น memory provider 177 00:11:09,807 --> 00:11:13,813 ตอนนี้เราเพิ่งติดตั้ง Mnemosyne ใน One Bin และเราต้องการสร้าง 178 00:11:13,813 --> 00:11:16,900 symlink หรือ link ระหว่างที่เราติดตั้งมันโดยใช้ 179 00:11:16,900 --> 00:11:20,052 environment แยกนั้นกับโฟลเดอร์ plugins จริงๆ ของ 180 00:11:20,052 --> 00:11:23,664 Hermes นั่นคือสิ่งที่เราเห็นตรงนี้ — มันเพิ่งตรวจสอบว่า 181 00:11:23,664 --> 00:11:26,817 provider อย่าง Mnemosyne พร้อมใช้งานและเชื่อมต่อ 182 00:11:26,817 --> 00:11:30,100 Mnemosyne กับ Hermes ได้ ขั้นตอนต่อไปคือรัน Hermes 183 00:11:30,100 --> 00:11:33,253 memory setup และตรงนี้เราจะเลือก Mnemosyne local 184 00:11:33,253 --> 00:11:39,098 แล้วตอบ yes พอเรารัน Hermes memory setup เราจะดำเนินการทีละขั้นตอนและเลือกการตั้งค่าต่างๆ 185 00:11:39,098 --> 00:11:43,038 สำหรับ Mnemosyne ในฐานะ Hermes memory provider ผมใช้ตัวเลือก 186 00:11:43,038 --> 00:11:46,584 default ทุกอย่างยกเว้นการเข้าถึงแบบ global แทน session 187 00:11:46,584 --> 00:11:50,328 memories แต่ผมแนะนำให้อ่านสิ่งที่มันถาม และถ้าคุณไม่แน่ใจ 188 00:11:50,328 --> 00:11:54,006 ให้ถาม Hermes ช่วยอธิบาย setup ในแบบที่เหมาะกับคุณที่สุด 189 00:11:54,006 --> 00:11:58,012 การตั้งค่าที่สำคัญที่สุด: default scope สำหรับการจดจำคืออะไร? 190 00:11:58,012 --> 00:12:01,624 ผมไม่อยากจำกัดมันแค่ต่อ session ผมอยากให้มันครอบคลุมทุก 191 00:12:01,624 --> 00:12:04,907 session นั่นคือหนึ่งในประโยชน์ของการรันระบบ memory 192 00:12:04,907 --> 00:12:08,848 ดังนั้นการเปลี่ยนตรงนี้เป็น global จึงสำคัญมาก เสร็จแล้วครับ 193 00:12:08,848 --> 00:12:12,066 เราจะเห็นว่ามันดำเนินการและบันทึก memory provider 194 00:12:12,066 --> 00:12:15,612 เป็น Mnemosyne ทีนี้ถ้าเราไปที่ config.yaml ในโฟลเดอร์ 195 00:12:15,612 --> 00:12:18,830 .hermes เราจะเห็นว่ามีระบบ memory เต็มรูปแบบพร้อม 196 00:12:18,830 --> 00:12:22,311 skills และ tools ทั้งหมดที่ตั้งค่าไว้สำหรับ Mnemosyne 197 00:12:22,311 --> 00:12:25,398 provider ต่อไปผมจะรีสตาร์ท Hermes Gateway พิมพ์ 198 00:12:25,398 --> 00:12:28,681 Hermes memory status แล้วเราจะเห็นว่า memory tools 199 00:12:28,681 --> 00:12:33,344 เปิดใช้งาน provider คือ Mnemosyne เรามีการตั้งค่าทั้งหมดที่เราเพิ่งทำไป 200 00:12:33,344 --> 00:12:36,497 เราสามารถเปลี่ยนทีหลังได้ plugin ติดตั้งแล้ว และ 201 00:12:36,497 --> 00:12:40,043 status เป็น available ซึ่งสำคัญมาก และตอนนี้ถ้าผมพิมพ์ 202 00:12:40,043 --> 00:12:44,706 Hermes Mnemosyne stats ทุกอย่างยังเป็นศูนย์เพราะเรายังไม่ได้เก็บอะไรไว้ 203 00:12:44,706 --> 00:12:48,712 มาลองใช้งานกันครับ ผมจะเปิด Hermes desktop app และถ้าเราไปที่ 204 00:12:48,712 --> 00:12:52,193 Memory and Context เราจะเห็นว่า Mnemosyne ถูกตั้งเป็น 205 00:12:52,193 --> 00:12:56,264 memory provider แล้ว เยี่ยมครับ ตอนนี้เรามีทุกอย่างติดตั้งแล้ว 206 00:12:56,264 --> 00:13:00,270 และถ้าเราอยากอัปเกรด เราก็พิมพ์ pipx upgrade Mnemosyne-Hermes 207 00:13:00,270 --> 00:13:03,882 ได้เลย อีกขั้นตอนหนึ่งที่ผมอยากพูดถึงสั้นๆ คือเอกสารของ 208 00:13:03,882 --> 00:13:07,692 Mnemosyne แนะนำให้ปิด legacy memory และความหมายของมันก็คือ 209 00:13:07,692 --> 00:13:10,844 persistent memory และ user profile ที่เราตั้งไว้ 210 00:13:10,844 --> 00:13:14,522 เหตุผลหลักคือเพื่อหลีกเลี่ยงการซ้ำซ้อนและการเปลืองโทเค็น 211 00:13:14,522 --> 00:13:18,199 ผมแนะนำให้ปิดมันก่อนแล้วทดสอบดู และถ้าคุณสังเกตเห็นปัญหา 212 00:13:18,199 --> 00:13:21,680 คุณก็เปิดมันใหม่ได้เสมอ แต่อย่าปิดมันด้วยคำสั่งแบบนี้ 213 00:13:21,680 --> 00:13:24,767 — ให้คุณอัปเดตมันในไฟล์ config.yaml แทน โดยตั้ง 214 00:13:24,767 --> 00:13:27,919 memory enabled false, user profile enabled false 215 00:13:27,919 --> 00:13:31,334 ซึ่งก็เหมือนกับการ toggle ปุ่มพวกนี้ออก มาทดสอบเร็วๆ 216 00:13:31,334 --> 00:13:34,618 กันครับ ถ้าผมถาม Hermes สักคำถาม มันไม่ควรรู้จักผม 217 00:13:34,618 --> 00:13:38,952 ก่อนหน้านี้ผมเคยบอก Hermes ว่าผมเป็นใคร แต่ตอนนี้ลองใหม่เพราะเรามี 218 00:13:38,952 --> 00:13:42,105 Mnemosyne แล้ว เราจะเห็นว่ามันทำงานและเปิดใช้งาน 219 00:13:42,105 --> 00:13:46,570 Mnemosyne recall skills และ canonical skill แต่มันยังไม่มีข้อมูลอะไร 220 00:13:46,570 --> 00:13:49,920 ผมจะบอกข้อมูลเกี่ยวกับตัวผมเล็กน้อยเพื่อให้มันจำได้ 221 00:13:49,920 --> 00:13:53,204 ทิปสั้นๆ: นี่คือสิ่งแรกที่ผมทำเสมอเมื่อตั้งค่าระบบ 222 00:13:53,204 --> 00:13:57,998 memory ใหม่ — บอก Hermes หรือ agent ของคุณเกี่ยวกับตัวคุณและสิ่งที่คุณชอบ 223 00:13:57,998 --> 00:14:05,747 เพื่อให้มันเริ่มสร้างโปรไฟล์เกี่ยวกับคุณ และการสนทนาจะรู้สึกเป็นส่วนตัวและมีประสิทธิภาพมากขึ้นสำหรับสิ่งที่คุณพยายามทำ 224 00:14:05,747 --> 00:14:09,097 ผมชื่อ Callum ใช้ชื่อว่า Wanderloots ทำช่อง YouTube 225 00:14:09,097 --> 00:14:12,183 เป็น patent agent ทนายความด้านทรัพย์สินทางปัญญา 226 00:14:12,183 --> 00:14:15,992 เรียนวิศวกรรมวัสดุศาสตร์ และนี่คือความชอบของผมในการตอบสนอง 227 00:14:15,992 --> 00:14:19,604 เราจะเห็นว่า Hermes กำลังรัน Mnemosyne tool มันกำลังรัน 228 00:14:19,604 --> 00:14:24,990 remember มีพื้นหลังอาชีพ alias และชื่อ และสิ่งเหล่านี้กำลังถูกเก็บลงในฐานข้อมูลที่ 229 00:14:24,990 --> 00:14:29,127 Mnemosyne ตั้งไว้ ทีนี้ ตัวอย่างเช่น ถ้าผมเปิดแชทใหม่แล้วถามว่า 230 00:14:29,127 --> 00:14:32,542 "ผมเป็นใคร?" เราควรเห็น Hermes เรียกคืนจาก Mnemosyne 231 00:14:32,542 --> 00:14:37,336 ได้แล้วครับ มันดึงข้อมูลมาได้ เยี่ยมมาก นั่นหมายความว่ามันทำงานได้สมบูรณ์ 232 00:14:37,336 --> 00:14:40,489 และตอนนี้ถ้าเรากลับไปที่ terminal แล้วรัน Hermes 233 00:14:40,489 --> 00:14:44,101 Mnemosyne stats เราจะเห็นว่ามี working memory ที่ยังไม่ 234 00:14:44,101 --> 00:14:49,814 consolidate ทั้งหมด 4 รายการ นี่คือจุดที่มันจะดำเนินการต่อไปและเมื่อเวลาผ่านไปมันจะย้าย 235 00:14:49,814 --> 00:14:53,164 working memory ไปเป็น episodic memory และลึกลงไปอีก 236 00:14:53,164 --> 00:14:56,250 และนี่คือการนำสิ่งที่เรียกว่า BEAM architecture 237 00:14:56,250 --> 00:14:59,534 เข้ามา มันจะ observe รับการสนทนาและผลลัพธ์ของ tool 238 00:14:59,534 --> 00:15:03,606 และจดจำทั้งหมดนี้ใน working memory จากนั้นเมื่อเวลาผ่านไปมันจะ 239 00:15:03,606 --> 00:15:06,955 consolidate สิ่งนั้นเป็น long-term experiences หรือ 240 00:15:06,955 --> 00:15:10,567 episodic memories ทุกครั้งที่เราถาม agent ทุกครั้งที่มี 241 00:15:10,567 --> 00:15:13,851 input มันจะดึงจากทั้งสองส่วนนั้นแล้ว recall กลับมา 242 00:15:13,851 --> 00:15:18,448 มีรายละเอียดเพิ่มเติมเกี่ยวกับ working memory แต่นี่เป็นระบบที่เจ๋งมาก 243 00:15:18,448 --> 00:15:22,848 โดยเฉพาะเมื่อพิจารณาว่ามันทั้งหมดเกิดขึ้นบนเครื่องคุณภายในฐานข้อมูล 244 00:15:22,848 --> 00:15:25,935 SQLite และที่เจ๋งอีกอย่างคือมันยังนำ structured 245 00:15:25,935 --> 00:15:29,481 knowledge ที่เก็บเป็น subject-predicate-object triples 246 00:15:29,481 --> 00:15:35,523 ซึ่งเป็นพื้นฐานของ knowledge graph เข้ามาด้วย ถ้าคุณอยากเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนั้น 247 00:15:35,523 --> 00:15:39,923 ผมมีวิดีโอเกี่ยวกับ knowledge graphs และวิธีใช้มันเพื่อปรับปรุงระบบ 248 00:15:39,923 --> 00:15:43,470 agent แต่ผมขอแนะนำอย่างยิ่งให้คุณไปสำรวจ BEAM overview 249 00:15:43,470 --> 00:15:47,279 เพื่อให้เข้าใจมากขึ้นว่าระบบนี้ทำงานอย่างไร มันเจ๋งมากครับ 250 00:15:47,279 --> 00:15:50,628 จำได้ไหมครับว่าตรงนี้เราต้อง manual เพิ่ม Mnemosyne 251 00:15:50,628 --> 00:15:56,933 เข้าไปในรายการ แต่มี built-in providers พวกนี้ทั้งหมดที่อาจทรงพลังกว่าขึ้นอยู่กับสิ่งที่คุณมองหา 252 00:15:56,933 --> 00:16:00,939 และผมจะทำงานติดตั้ง Hindsight ในวันนี้ โดยส่วนตัวแล้วผมชอบที่ 253 00:16:00,939 --> 00:16:04,617 Mnemosyne รันบนเครื่องได้ รันได้โดยไม่ต้องสร้างอะไรเพิ่ม 254 00:16:04,617 --> 00:16:07,835 ไม่มี dependencies และเร็วมาก ผมจะปล่อยให้มันเป็น 255 00:16:07,835 --> 00:16:11,381 default ในตอนนี้ แต่ผมจะสร้างโปรไฟล์ใหม่ชื่อ hindsight 256 00:16:11,381 --> 00:16:15,125 และใช้มันตั้งค่าการกำหนดค่าแยกต่างหาก โอเค ตอนนี้ผมอยู่บน 257 00:16:15,125 --> 00:16:18,605 hindsight profile แล้ว ถ้าเราไปที่ Memory and Context 258 00:16:18,605 --> 00:16:21,758 อีกครั้ง เราจะเห็นว่าผมยังเปิด persistent memory 259 00:16:21,758 --> 00:16:25,041 และ user profile อยู่ และ built-in memory provider 260 00:16:25,041 --> 00:16:28,391 ถูกตั้งไว้ ผมยังไม่ได้ตั้งให้เชื่อมต่อกับ Mnemosyne 261 00:16:28,391 --> 00:16:31,871 จะเห็นว่า hindsight profile ไม่เห็น Mnemosyne ด้วยซ้ำ 262 00:16:31,871 --> 00:16:35,221 สิ่งที่เราทำได้คือไปที่ memory provider ใน settings 263 00:16:35,221 --> 00:16:38,307 เลื่อนลงมาที่ Hindsight แล้วเปิดมัน แต่ก่อนอื่น 264 00:16:38,307 --> 00:16:41,722 มาดูเว็บไซต์ Hindsight กันครับ Hindsight เป็น native 265 00:16:41,722 --> 00:16:45,203 memory provider ใน Hermes Agent ซึ่งหมายความว่ามันถูก 266 00:16:45,203 --> 00:16:49,669 built-in มาเลย และ Hindsight แตกต่างออกไปเล็กน้อยเพราะมันทำงานโดยให้ 267 00:16:49,669 --> 00:16:53,675 agent เชื่อมต่อกับเซิร์ฟเวอร์แยกต่างหาก มันไม่ใช่สิ่งที่รันใน 268 00:16:53,675 --> 00:16:56,893 Hermes เอง แต่ที่เจ๋งคือมันมีวิธีการทำงานหลากหลาย 269 00:16:56,893 --> 00:17:00,111 มันสร้าง mental models ของตัวเอง ดึง observations 270 00:17:00,111 --> 00:17:03,920 เข้ามา มี standard memories มีอะไรให้ทำมากมาย และมันสามารถ 271 00:17:03,920 --> 00:17:08,320 reflect (ทบทวน) แล้วดึงคำตอบที่ตระหนักรู้มากขึ้นโดยใช้เหตุผลเชิงลึก 272 00:17:08,320 --> 00:17:11,604 เมื่อคุณรัน reflect มันจะรัน agentic loop ที่ค้นหา 273 00:17:11,604 --> 00:17:16,004 memory โดยอัตโนมัติ แล้วใช้สิ่งนั้นกำหนดรูปแบบการใช้เหตุผลของตัวเอง 274 00:17:16,004 --> 00:17:21,192 จากนั้นสร้างคำตอบสุดท้ายที่อิงกับสิ่งที่พบ ดังนั้นแทนที่จะแค่คืนข้อเท็จจริงดิบๆ 275 00:17:21,192 --> 00:17:26,446 reflect ให้การตอบสนองที่สังเคราะห์ขึ้นมากกว่า ซึ่งเป็นเหตุผลว่าทำไมมันถึงต้องใช้ 276 00:17:26,446 --> 00:17:30,649 LLM ด้วย มีความซับซ้อนมากกว่าเล็กน้อย ผมขอแนะนำให้สำรวจเอกสารของ 277 00:17:30,649 --> 00:17:37,874 Hindsight ถ้าคุณอยากเรียนรู้เพิ่มเติม แต่ประเด็นสำคัญคือมันต้องรันเซิร์ฟเวอร์แยกหรือเชื่อมต่อกับเซิร์ฟเวอร์แยก 278 00:17:37,874 --> 00:17:41,157 ถ้าเรากลับไปที่ memory provider และเลือก Hindsight 279 00:17:41,157 --> 00:17:44,375 เราจะเห็นว่ามี mode ปรากฏขึ้น เรามีตัวเลือก cloud 280 00:17:44,375 --> 00:17:48,184 และ local external เพื่อทำความเข้าใจมากขึ้น เราไปที่เอกสาร 281 00:17:48,184 --> 00:17:51,796 Hindsight สำหรับการตั้งค่าบน Hermes desktop โดยเฉพาะได้ 282 00:17:51,796 --> 00:17:55,408 และถ้าคุณอยากทำผ่าน command line ก็มีวิธีแยกในการใช้งาน 283 00:17:55,408 --> 00:17:58,626 Hermes memory setup เหมือนที่เราเห็นกับ Mnemosyne 284 00:17:58,626 --> 00:18:02,042 โดยพื้นฐานเราแค่เลือก Hindsight ตั้ง mode ที่ต้องการ 285 00:18:02,042 --> 00:18:05,654 เรามี cloud ซึ่งต้องใช้ API key — ตรงนี้เราเชื่อมต่อกับ 286 00:18:05,654 --> 00:18:09,266 Hindsight cloud แต่มันมีค่าบริการ คุณเริ่มใช้ฟรีก่อนได้ 287 00:18:09,266 --> 00:18:12,549 แล้วขึ้นอยู่กับความถี่ในการใช้งานและขนาดระบบของคุณ 288 00:18:12,549 --> 00:18:18,788 คุณจะต้องเริ่มจ่ายเงิน คุณสามารถรันระบบด้วยตัวเองฟรีบนคอมพิวเตอร์ของคุณได้ถ้ามีฮาร์ดแวร์เพียงพอ 289 00:18:18,788 --> 00:18:23,057 แต่ถ้าไม่มี การดู Hindsight cloud ว่าค่าใช้จ่ายเท่าไรก็อาจคุ้มค่า 290 00:18:23,057 --> 00:18:27,063 ผมยังไม่ได้ลองใช้ cloud เป็นการส่วนตัว วันนี้เราจะตั้งค่าระบบ 291 00:18:27,063 --> 00:18:30,150 local ครับ ลองดูการเปรียบเทียบระหว่าง cloud กับ 292 00:18:30,150 --> 00:18:33,368 local LLMs สำหรับการรัน agent memory — นี่คือ LLM 293 00:18:33,368 --> 00:18:36,652 ที่จะขับเคลื่อนระบบจริงๆ ตรงข้ามกับการเชื่อมต่อกับ 294 00:18:36,652 --> 00:18:40,658 Hindsight cloud ซึ่งจัดการ storage ด้วย คุณสามารถเชื่อมต่อกับ 295 00:18:40,658 --> 00:18:45,255 OpenAI, Anthropic หรือ Gemini API ได้ แต่คุณจะจ่ายต่อโทเค็นทุกครั้งที่ 296 00:18:45,255 --> 00:18:48,539 retain คุณสามารถรันฟรีบนเครื่องตัวเองโดยใช้ Ollama 297 00:18:48,539 --> 00:18:51,888 ซึ่งผมมีวิดีโอเกี่ยวกับการรัน Ollama สำหรับ agentic 298 00:18:51,888 --> 00:18:55,040 AI ถ้าคุณสนใจ สิ่งหนึ่งที่ต้องจำคือไม่ใช่ทุกรุ่น 299 00:18:55,040 --> 00:18:59,178 local ที่รองรับ tool calling คุณต้องแน่ใจว่ารุ่นที่คุณใช้รองรับ 300 00:18:59,178 --> 00:19:02,396 ผมจะใช้ GPT-OSS 20 billion parameters ซึ่งขนาด 13 301 00:19:02,396 --> 00:19:05,876 กิกะไบต์ ดังนั้นต้องแน่ใจว่าคุณติดตั้งรุ่นนั้นไว้แล้ว 302 00:19:05,876 --> 00:19:09,094 และต้องแน่ใจว่ามีแอป Ollama รันอยู่เบื้องหลังหรือ 303 00:19:09,094 --> 00:19:12,772 serve มันจาก terminal ด้วยตัวเอง ขั้นตอนต่อไป เมื่อเรามี 304 00:19:12,772 --> 00:19:16,122 local model ดาวน์โหลดแล้ว คือเราเชื่อมต่อ Hindsight 305 00:19:16,122 --> 00:19:19,668 กับ local model นั้นและให้เซิร์ฟเวอร์รันอยู่เบื้องหลัง 306 00:19:19,668 --> 00:19:23,017 ผมจะทำใน Docker container เพราะช่วยเพิ่มความปลอดภัย 307 00:19:23,017 --> 00:19:26,170 ตอนนี้ Hermes terminal backend ของผมเชื่อมต่อกับ 308 00:19:26,170 --> 00:19:29,388 Docker container แล้ว เราจะเพิ่ม Docker container 309 00:19:29,388 --> 00:19:32,671 อีกตัวที่รันระบบ memory ใน Hindsight โดยตรง เราวาง 310 00:19:32,671 --> 00:19:36,546 string นี้ ซึ่งผมจะรวมไว้ในบทความฟรีที่ลิงก์ในคอมเมนต์บนสุด 311 00:19:36,546 --> 00:19:40,224 โดยพื้นฐานแล้วเราอยากรัน Docker container ชื่อ hindsight 312 00:19:40,224 --> 00:19:44,033 และเราอยากให้มันรีสตาร์ทเองแม้คอมพิวเตอร์จะปิดแล้วเปิดใหม่ 313 00:19:44,033 --> 00:19:47,842 เรากำหนดพอร์ตสองพอร์ต — พอร์ตหนึ่งสำหรับรันเซิร์ฟเวอร์จริง 314 00:19:47,842 --> 00:19:51,257 และอีกพอร์ตสำหรับดู dashboard แล้วนี่คือ environment 315 00:19:51,257 --> 00:19:55,723 variables ทั้งหมดที่เรากำหนดค่าเพื่อให้มันเชื่อมต่อกับรุ่นที่ผมเลือก 316 00:19:55,723 --> 00:19:58,810 — GPT-OSS 20 billion เสร็จแล้วครับ มันดาวน์โหลด 317 00:19:58,810 --> 00:20:02,290 hindsight ให้เราเรียบร้อย และตอนนี้ถ้าเราไปที่ Docker 318 00:20:02,290 --> 00:20:06,362 Desktop — ซึ่งต้องรันอยู่นะครับ ผมมีวิดีโอลงลึกเกี่ยวกับวิธีทำ 319 00:20:06,362 --> 00:20:09,449 Hermes Agent และ hindsight แบบ containerized ใน 320 00:20:09,449 --> 00:20:12,732 Docker — เราจะเห็นว่าเซิร์ฟเวอร์ของเรากำลังรันอยู่ 321 00:20:12,732 --> 00:20:15,885 ถ้าเราไปที่ dashboard เราสามารถเลือก memory bank 322 00:20:15,885 --> 00:20:22,255 สร้างใหม่ และเริ่มต้นทุกอย่างได้ แต่นี่แค่แสดงให้เห็นว่าเซิร์ฟเวอร์รันอยู่และพร้อมให้เราเชื่อมต่อ 323 00:20:22,255 --> 00:20:25,604 ขั้นตอนต่อไปคือเชื่อมต่อเซิร์ฟเวอร์ที่รันอยู่นี้กับ 324 00:20:25,604 --> 00:20:28,757 Hermes จำได้ไหมครับว่าผมอยู่ใน hindsight profile 325 00:20:28,757 --> 00:20:32,106 ผมไปที่ Memory and Context เรามี hindsight settings 326 00:20:32,106 --> 00:20:35,521 เพราะเราเลือกจาก dropdown แล้ว ผมจะเปลี่ยนเป็น local 327 00:20:35,521 --> 00:20:38,936 external เพราะอย่างนั้นเราจึงเว้น API key ว่างไว้ได้ 328 00:20:38,936 --> 00:20:42,483 แทนที่จะเชื่อมต่อกับ Hindsight cloud ผมจะใส่ localhost 329 00:20:42,483 --> 00:20:46,029 server ที่เราเพิ่งตั้งค่า ผมตั้งชื่อว่า Hermes และเก็บ 330 00:20:46,029 --> 00:20:49,378 recall budget ไว้ที่ mid — นี่ไม่ได้ควบคุม AI model 331 00:20:49,378 --> 00:20:53,910 แต่แค่บอก Hermes ว่าจะหาโปรแกรม hindsight ที่เราเพิ่งเปิดตัวได้ที่ไหน 332 00:20:53,910 --> 00:20:59,098 เพื่อทดสอบ ผมจะกลับไปและปิด persistent memory นี่เป็นสิ่งที่คุณรันเบื้องหลังกับ 333 00:20:59,098 --> 00:21:02,250 hindsight ได้ ผมจะปิดสักครู่เพื่อทดสอบ hindsight 334 00:21:02,250 --> 00:21:05,534 และนี่แตกต่างจาก Mnemosyne ที่แนะนำให้ปิด ผมถามว่า 335 00:21:05,534 --> 00:21:09,081 "ผมเป็นใคร?" เราจะเห็นว่า hindsight recall ถูกเรียกใช้ 336 00:21:09,081 --> 00:21:14,072 แต่มันไม่รู้ว่าผมเป็นใคร ผมจะป้อน prompt เดิมเหมือนเดิมเพื่อดูว่ามันจำได้ไหม 337 00:21:14,072 --> 00:21:17,618 เราจะเห็นมันกำลังวางแผน durable memory มันพยายามอัปเดต 338 00:21:17,618 --> 00:21:20,770 แต่ใน memories ผมปิดตรงนั้นไว้ ตอนนี้มันกำลังรัน 339 00:21:20,770 --> 00:21:24,120 hindsight retain และนี่อาจใช้เวลาสักหน่อยเพราะผมใช้ 340 00:21:24,120 --> 00:21:27,601 local model ถ้าเราไปดู Docker สักครู่ ไปที่ hindsight 341 00:21:27,601 --> 00:21:31,081 container เราจะเห็นว่ามันกำลังทริกเกอร์ memory engine 342 00:21:31,081 --> 00:21:34,825 ถ้ารุ่นที่ผมเลือกเข้าสู่ sleep mode มันอาจใช้เวลาสักหน่อย 343 00:21:34,825 --> 00:21:37,911 แต่เราเห็นว่ามันกำลังทำงานเก็บข้อมูลเป็น chunks 344 00:21:37,911 --> 00:21:40,998 เสร็จแล้วครับ มันใช้ hindsight retain เพื่อเก็บ 345 00:21:40,998 --> 00:21:44,741 user profile และ preferences เจ๋งครับ ทีนี้มันกำลังบอกว่า 346 00:21:44,741 --> 00:21:48,945 optional context ที่มีประโยชน์ที่สุดคืออะไรคือคำตอบของทั้งหมดนี้ 347 00:21:48,945 --> 00:21:52,097 แต่ผมจะเริ่ม session ใหม่แล้วถามว่า "ผมเป็นใคร?" 348 00:21:52,097 --> 00:21:55,775 และดูว่ามันดึงข้อมูลนั้นจาก hindsight ได้ไหม ได้แล้วครับ 349 00:21:55,775 --> 00:21:58,993 แทนที่จะเป็น retain ตอนนี้มันรัน hindsight recall 350 00:21:58,993 --> 00:22:02,539 และดึงรายละเอียดทั้งหมดที่เราเคยมีขึ้นมา ซึ่งเยี่ยมมาก 351 00:22:02,539 --> 00:22:05,626 นั่นหมายความว่า memory provider นี้ทำงานได้แล้ว 352 00:22:05,626 --> 00:22:09,435 ทีนี้ถ้าเรากลับไปที่ dashboard localhost:99 เราสามารถเลือก 353 00:22:09,435 --> 00:22:12,653 Hermes memory bank ที่ตอนนี้มีอยู่แล้ว คลิกเข้าไป 354 00:22:12,653 --> 00:22:17,053 และที่เจ๋งสุดๆ คือเราสามารถดูข้อมูลทั้งหมดที่ถูกสร้างขึ้นแล้วในระบบ 355 00:22:17,053 --> 00:22:21,125 hindsight ได้ สำหรับผมแล้วนี่มันน่าทึ่งมากที่ไม่ใช่แค่เราทำให้ 356 00:22:21,125 --> 00:22:24,408 agent จดจำสิ่งต่างๆ ได้ แต่มันยังสร้างกราฟ (graph) 357 00:22:24,408 --> 00:22:27,955 จากความทรงจำของเรา และมีรายละเอียดมากมายที่เราลงลึกได้ 358 00:22:27,955 --> 00:22:31,304 นี่เรียกว่า constellation view เราสามารถเปลี่ยนเป็น 359 00:22:31,304 --> 00:22:35,179 table view ดู timeline ซึ่งจะมีมากขึ้นเมื่อเรามีข้อมูลเพิ่ม 360 00:22:35,179 --> 00:22:40,367 มี experiences, observations, mental models — มีสิ่งมากมายที่เราจัดโครงสร้างได้ 361 00:22:40,367 --> 00:22:44,045 ซึ่งผมตื่นเต้นมากที่จะลงลึก ตัวอย่างเช่น ผมจะตอบคำถามที่ 362 00:22:44,045 --> 00:22:48,379 Hermes ถามผม โดยให้บริบทเพิ่มเติมเกี่ยวกับสิ่งที่ผมหวังจะทำกับช่อง 363 00:22:48,379 --> 00:22:51,991 YouTube คนที่ผมอยากช่วย และทำไมผมถึงทำสิ่งนี้ตั้งแต่แรก 364 00:22:51,991 --> 00:22:55,603 ผมจะให้ hindsight retain ข้อมูลนี้ โอเค มันทำงานได้แล้ว 365 00:22:55,603 --> 00:23:00,201 และถ้าผมคลิกรีเฟรชบนกราฟนี้ เราจะเห็นว่ามีข้อมูลเพิ่มขึ้นอีกสองสามชิ้น 366 00:23:00,201 --> 00:23:04,141 ผมสามารถบอก Hermes ว่า "please reflect on this conversation" 367 00:23:04,141 --> 00:23:07,490 (กรุณาทบทวนการสนทนานี้) นี่คือผลลัพธ์ของการ reflect 368 00:23:07,490 --> 00:23:16,159 ที่ดึง recall เข้ามาด้วย มีปัญหานิดหน่อยแต่มันดูเหมือนจะทำงานได้ค่อนข้างดีในการดึงความเข้าใจที่ลึกซึ้งขึ้นเกี่ยวกับสิ่งที่ผมพยายามทำ 369 00:23:16,159 --> 00:23:21,545 — จากแค่การสนทนาสั้นๆ ที่ผมมี ผมค่อนข้างประทับใจที่มันดึงข้อมูลนี้มาได้เร็วขนาดนี้ 370 00:23:21,545 --> 00:23:26,404 — คนที่ผมแชทด้วยและสอนอยู่เป็นคนช่างสร้างที่มีความสามารถแต่มีภาระมากเกินไป 371 00:23:26,404 --> 00:23:33,103 พวกเขาอยากรู้และอยากเข้าใจมากกว่าแค่ได้คำตอบ แต่ผมหวังว่าคุณจะเห็นว่าไม่ใช่แค่ความทรงจำเหล่านี้ถูกเก็บ 372 00:23:33,103 --> 00:23:36,255 — มันถูกใช้ในแบบที่ปรับปรุงการ reflect ของ agent 373 00:23:36,255 --> 00:23:39,342 ต่อปัญหาที่ผมกำลังพยายามแก้และสิ่งที่ผมสนใจจะทำ 374 00:23:39,342 --> 00:23:42,823 และนั่นมาจากข้อมูลพื้นฐานแค่นิดเดียวเอง — เจ๋งมากครับ 375 00:23:42,823 --> 00:23:46,107 อีกอย่าง การ reflect นี้เป็นสิ่งที่เท่าที่ผมเข้าใจ 376 00:23:46,107 --> 00:23:50,178 — อย่างน้อยในตอนนี้ — Mnemosyne ยังไม่มี นั่นนำผมมาสู่คำถามว่า 377 00:23:50,178 --> 00:23:54,053 — คุณควรเลือกตัวไหน? เราควรสนใจอะไรตรงนี้และควรไปต่อที่ไหน? 378 00:23:54,053 --> 00:23:58,256 ผู้สร้าง Mnemosyne บอกว่าเครื่องมือทั้งสองนี้ไม่ใช่คู่แข่งโดยตรง 379 00:23:58,256 --> 00:24:03,773 Hindsight เป็น memory engine ที่มีการประมวลผลภาษาธรรมชาติที่ซับซ้อนและการเรียกคืนแบบ 380 00:24:03,773 --> 00:24:07,188 multi-signal ส่วน Mnemosyne เป็น memory layer ที่ถูก 381 00:24:07,188 --> 00:24:10,472 optimize เพื่อความเรียบง่าย ความเร็ว และการ deploy 382 00:24:10,472 --> 00:24:13,690 บนเครื่องเดียว นี่คือบทสรุปจริงๆ — Hindsight เป็น 383 00:24:13,690 --> 00:24:19,272 engine ในขณะที่ Mnemosyne เป็น layer ขึ้นอยู่กับคุณว่าจะเลือกอะไรที่ดีที่สุดสำหรับคุณ 384 00:24:19,272 --> 00:24:23,541 ผมจะใส่ข้อมูลเพิ่มเติมและทรัพยากรทั้งหมดที่พูดถึงวันนี้ลงในบทความ 385 00:24:23,541 --> 00:24:26,956 Patreon ฟรีที่จะลงลึกเกี่ยวกับวิธีตัดสินใจด้วยตัวเอง 386 00:24:26,956 --> 00:24:32,735 ผมคิดว่าประเด็นสำคัญคือการทดสอบ provider หนึ่งตัวเป็นเวลาหนึ่งสัปดาห์และดูว่ามันปรับปรุง 387 00:24:32,735 --> 00:24:35,887 workflow ของคุณไหม ถ้าไม่ ก็ลองตัวอื่น คุณสามารถ 388 00:24:35,887 --> 00:24:39,237 export จากตัวหนึ่งไปอีกตัวได้เสมอ — ไม่มีการล็อกอิน 389 00:24:39,237 --> 00:24:43,046 และอีกอย่าง เรื่องหนึ่งที่ผมตื่นเต้นที่จะสำรวจเพิ่มเติมคือ 390 00:24:43,046 --> 00:24:48,891 dashboard ตรงนี้ — ผมคิดว่ามันเจ๋งมากที่สามารถเข้าไปดูองค์ประกอบทั้งหมดที่ประกอบกันขึ้นมา 391 00:24:48,891 --> 00:24:52,306 dashboard เต็มรูปแบบของความทรงจำที่ถูกสร้างจาก agent 392 00:24:52,306 --> 00:24:56,640 ของผมเพียงแค่ผมสนทนากับมัน และสำหรับผม นี่คือประโยชน์หลักของการรัน 393 00:24:56,640 --> 00:24:59,990 Hindsight เหนือ Mnemosyne — เพราะถึง Mnemosyne จะมี 394 00:24:59,990 --> 00:25:04,127 dashboard แต่มันเป็น community dashboard ไม่ได้สร้างโดยผู้สร้าง 395 00:25:04,127 --> 00:25:07,805 Mnemosyne Mnemosyne เป็นเครื่องมือเล็กที่สร้างโดยทีมเล็ก 396 00:25:07,805 --> 00:25:11,154 ส่วน Hindsight เป็นระบบเต็มรูปแบบที่มีอะไรให้อีกมาก 397 00:25:11,154 --> 00:25:16,539 และนั่นนำผมไปสู่ขั้นตอนต่อไปที่ผมตื่นเต้นมาก — ไม่ใช่แค่สร้างความทรงจำจากการแชทกับ 398 00:25:16,539 --> 00:25:19,692 agent แต่ยังเชื่อมต่อสิ่งนี้กับ world knowledge, 399 00:25:19,692 --> 00:25:23,041 library หรือ second brain ของผมใน Obsidian LLM Wiki 400 00:25:23,041 --> 00:25:26,193 ตอนนี้ agent ของคุณมี agentic memory แท้จริงแล้ว 401 00:25:26,193 --> 00:25:30,922 Mnemosyne ให้ memory layer ที่เร็วและเบา และถ้าคุณมองหาพลังที่มากกว่านี้ 402 00:25:30,922 --> 00:25:38,474 คุณสามารถใช้ memory engine อย่าง Hindsight ถ้าคุณมีคำถามเกี่ยวกับสิ่งที่เราคุยกันวันนี้หรือทิปส์สำหรับวิธีที่คุณใช้ 403 00:25:38,474 --> 00:25:45,567 workflow ของตัวเอง บอกผมในคอมเมนต์ได้นะครับ ผมยินดีตอบคำถามและชอบเรียนรู้ว่าคุณใช้ระบบเหล่านี้อย่างไรเช่นกัน 404 00:25:45,567 --> 00:25:48,785 แต่ยังมีอีกชิ้นหนึ่งที่ขาดหายไป — world knowledge 405 00:25:48,785 --> 00:25:52,200 operational memory หรือ agentic memory ที่เราตั้งไว้ 406 00:25:52,200 --> 00:25:55,878 ตอนนี้รู้ว่าคุณทำงานอย่างไรแล้ว ถัดไปผมจะเชื่อมต่อมันกับ 407 00:25:55,878 --> 00:26:00,804 Obsidian LLM Wiki เพื่อให้ agent ของคุณไม่ใช่แค่จดจำข้อเท็จจริงเกี่ยวกับคุณ 408 00:26:00,804 --> 00:26:04,153 — แต่มันยังใช้เหตุผลกับทุกสิ่งที่คุณรู้อยู่แล้วด้วย 409 00:26:04,153 --> 00:26:08,225 ถ้าคุณพบว่าวิดีโอนี้มีประโยชน์ ช่วยกดไลก์และกดติดตามด้วยนะครับ 410 00:26:08,225 --> 00:26:12,362 ผมซาบซึ้งมาก และอย่าลืมดูโพสต์ Patreon ฟรีที่ผมลิงก์ไว้ด้านล่าง 411 00:26:12,362 --> 00:26:16,040 พร้อมข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า โค้ด และตัวเลือก 412 00:26:16,040 --> 00:26:20,440 memory providers ขอบคุณอีกครั้งที่รับชม แล้วเจอกันในวิดีโอถัดไปครับ