One Memory, Many Agents?
สรุปย่อ
ประเด็นสำคัญจากวิดีโอ
- **ช่อง:** Wanderloots · **ความยาว:** ~34 นาที · **ลิงก์:** https://www.youtube.com/watch?v=UVEjThz8DSo
# สรุป: One Memory, Many Agents? 🧠 Practical Hermes Guide (Hindsight & More) - **ช่อง:** Wanderloots · **ความยาว:** ~34 นาที · **ลิงก์:** https://www.youtube.com/watch?v=UVEjThz8DSo ## ประเด็นหลัก - วิดีโอนี้สอนวิธีเชื่อมต่อเครื่องมือหน่วยความจำตัวเดียวชื่อ Hindsight เข้ากับ AI agents หลายตัว (Hermes, Codex, Claude Code, Gemini ฯลฯ) เพื่อให้ทุก agent ทำงานบนความทรงจำชุดเดียวกัน โดยไม่ต้องคัดลอกวางหรืออธิบายงานซ้ำ - อธิบายแนวคิดหลักของระบบ: harness (โครงสร้างตัวแทน) กับโมเดลทำงานร่วมกันที่แต่ละเวิร์กสเตชัน และ Hindsight ทำหน้าที่เป็นสะพาน/สมุดบันทึกร่วมระหว่าง agents - การตั้งค่าเริ่มต้น: สร้าง environment file เก็บ API key และรหัส control plane, ใช้ Docker Compose รัน Hindsight แบบต่อเนื่อง (restart unless stopped) และตั้งค่า LLM ผ่านการยืนยันตัวตนของ Codex ใน Docker volume แยก - เลือกใช้ memory bank แบบ global user (ชื่อ Wanderloots) เหมาะกับผู้ใช้คนเดียว/นักพัฒนาเดี่ยว แทนที่จะแยก bank ต่อโปรเจกต์ เพราะ bank เป็นขอบเขตแข็งที่ไม่สามารถ query ข้ามกันได้ - ตั้งค่า bank configuration: extraction mode แบบ concise, mission statement, free form entities, entity labels (เช่น project, harness) ที่เชื่อมกับ tags เพื่อกรองความทรงจำแบบแยกอ่อนๆ ภายใน bank เดียว - อธิบายการทำงานสามส่วนของ Hindsight: retain (จัดเก็บ/จดจำ), recall (ดึงบริบทกลับเข้าสู่ agent), reflect (ไตร่ตรองด้วยโมเดลที่แรงขึ้น) รวมถึง observations ที่รวมข้อเท็จจริงเป็นข้อสังเกตถาวร และ memory defense สำหรับปกปิดข้อมูลอ่อนไหว - ติดตั้งระบบสำรองข้อมูลอัตโนมัติ (hindsight admin backup) และสาธิตการอัปเกรด Hindsight เป็นเวอร์ชัน 0.9 ที่มีฟีเจอร์ใหม่ knowledge pages และ knowledge base - เชื่อมต่อ Hermes โดยเปลี่ยน memory provider จาก Memosyn เป็น Hindsight (โหมด local external) ตั้ง API key และ bank ID แล้วตรวจสอบด้วยคำสั่ง hermes memory status - เชื่อมต่อ Codex ผ่านปลั๊กอิน Hindsight coding agents (คำสั่ง npx) พร้อม hooks อัตโนมัติสามอย่าง (initialize, recall, retain) และ MCP server ที่เพิ่มเครื่องมือจัดการ bank ให้ Codex - ทดสอบการส่งต่อความทรงจำข้าม agent ทั้งสองทาง: ให้ Codex จำสีม่วงของโปรเจกต์ memory test แล้ว Hermes ตอบได้ทันที และให้ Hermes จำว่าชอบลีเมอร์ แล้ว Codex ดึงกลับมาได้ พร้อมการกรองความทรงจำด้วย tags ตาม harness - knowledge pages คือการฉายภาพอัตโนมัติจากความทรงจำของ agents ที่อัปเดตตามเวลา ใช้สร้างแบบจำลองความคิดและสรุปโครงการ แต่ไม่ใช่ตัวแทนเอกสารที่มนุษย์ตรวจทานอย่าง LLM wiki ใน Obsidian - สรุปทิ้งท้ายว่า ระบบหน่วยความจำอัตโนมัตินี้เป็นแค่ชั้นหนึ่งใน memory stack ยังต้องมีระบบความรู้แบบ human in the loop เพื่อต่อสู้กับข้อผิดพลาดและภาพหลอนของ AI ซึ่งจะพูดถึงในวิดีโอหน้า ## ความเห็นสรุป วิดีโอนี้เป็นคู่มือภาคปฏิบัติที่ละเอียดและเป็นระบบ เหมาะกับผู้ใช้ AI agents หลายตัวที่อยากรวมศูนย์ความทรงจำไว้ที่เดียว แม้บางขั้นตอนจะซับซ้อน (Docker, การยืนยันตัวตน, hooks) แต่เจ้าของช่องอธิบายทีละขั้นอย่างชัดเจน และการสาธิตการส่งต่อความทรงจำระหว่าง Codex กับ Hermes แบบเรียลไทม์ทำให้เห็นคุณค่าของระบบได้จริง ข้อควรระวังคือคำบรรยายต้นฉบับเป็นแบบอัตโนมัติ ชื่อบางคำอาจเพี้ยน (เช่น Codex, Wanderloots, Memosyn) และเนื้อหาอิงเวอร์ชัน Hindsight 0.9 ซึ่งอาจมีการเปลี่ยนแปลงในภายหลัง
คำแปลเต็ม
แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ
เราจะเห็นว่าเรามีความทรงจำอยู่แปดรายการ กด Refresh ครับ เยี่ยมมาก มีความทรงจำเพิ่มขึ้นมาแล้ว สิ่งที่เกิดขึ้นก็คือ ผมให้ Codex จำอะไรบางอย่างเอาไว้ มันเก็บความทรงจำนั้นไว้ใน Hindsight (ระบบหน่วยความจำสำหรับ AI agents) แล้ว Hermes ก็เรียกข้อมูลนั้นกลับมาได้ทันที เจ๋งมากเลยครับ พวกเราหลายคนใช้ agents หลายตัวพร้อมกัน แต่จะดีแค่ไหนถ้าเรามีวิธีแชร์บริบทระหว่างพวกมัน เพื่อให้ agent ตัวหนึ่งรู้ทันทีว่าอีกตัวกำลังทำอะไรอยู่ โดยไม่ต้องคัดลอกวาง ไม่ต้องอธิบายงานที่คุณกำลังทำซ้ำแล้วซ้ำเล่าทุกครั้งที่สลับไปมาระหว่าง agents สวัสดีครับ ผมชื่อ Callum หรือที่รู้จักกันในชื่อ Wanderloots ยินดีต้อนรับสู่วิดีโอวันนี้ ว่าด้วยวิธีเชื่อมต่อเครื่องมือหน่วยความจำตัวเดียวเข้ากับ AI agents หลายตัว ผมจะใช้ Hindsight เป็นตัวเก็บความทรงจำ และใช้ Codex กับ Hermes เป็นตัวอย่าง agents แต่ระบบนี้ใช้ได้กับ agent ทุกตัวครับ เป้าหมายของผมคือการโชว์ว่าระบบหน่วยความจำข้าม agent ทำงานยังไง ถึงแม้คุณจะไม่ได้ใช้ Hindsight, Hermes หรือ Codex ก็ยังได้เรียนรู้เยอะมากเกี่ยวกับวิธีออกแบบระบบหน่วยความจำสำหรับหลายๆ agent อย่างมีประสิทธิภาพ ในวิดีโอวันนี้ เราจะตั้งค่าระบบ Hindsight แบบเต็มรูปแบบและเจาะลึกการใช้งานจริง เชื่อมต่อกับ Hermes และ Codex จัดระเบียบทุกอย่างด้วย memory banks (ธนาคารหน่วยความจำ) และ tags (แท็กหรือป้ายกำกับ) แล้วก็ทดสอบการย้ายความทรงจำระหว่าง agents โดยอัตโนมัติ เอาล่ะ มาซิงก์ความทรงจำของ agents กันครับ ถ้าอยากรู้ทฤษฎีของระบบหน่วยความจำและวิธีตั้งค่าใน agent อย่าง Hermes ให้ดูวิดีโอก่อนหน้าของผมที่เจาะลึกทั้งระบบ (full stack) วันนี้มีแค่สองอย่างที่ต้องเข้าใจเพื่อเริ่มต้น นั่นคือตัวระบบ และวิธีที่มันทำงานภายในบทสนทนา
สำหรับตัวระบบ ลองนึกภาพว่าคุณมีสตูดิโอส่วนตัวที่มีเวิร์กสเตชันหลายจุด ที่จุดหนึ่ง Codex กำลังช่วยเขียนโค้ด อีกจุดหนึ่ง Hermes ทำหน้าที่ผู้ช่วยส่วนตัว แต่ละเวิร์กสเตชันประกอบด้วยโมเดลที่ให้ความฉลาด กับ harness (โครงสร้างตัวแทนที่ให้เครื่องมือและสภาพแวดล้อมการทำงาน) แต่ agents เหล่านี้ขาดช่องทางส่งข้อมูลในบริบทถึงกัน Hindsight ทำหน้าที่เป็นสะพานเชื่อมระหว่างพวกมัน เป็นระบบหน่วยความจำที่ทำงานเหมือนสมุดบันทึกร่วมที่ส่งต่อกันระหว่าง agents ของคุณ Hindsight ดึงข้อมูลสำคัญจากบทสนทนากับทั้งสอง agent แล้วจัดระเบียบให้อ่านได้ทั้งคู่เมื่อต้องการ เอาละ มาตั้งค่าระบบนี้สำหรับหลายๆ agents กันครับ ถ้าวิดีโอนี้มีประโยชน์ ช่วยกด like กด subscribe ด้วยนะครับ ผมซาบซึ้งในกำลังใจจริงๆ ถ้าอยากสนับสนุนเพิ่มเติม ก็สามารถสมัครสมาชิกช่อง YouTube หรือ Patreon ของผมได้ครับ สมาชิกจะได้เข้าถึง insights เคล็ดลับ และชุดเครื่องมือ (kits) ที่ช่วยพัฒนาการจัดการความรู้และการใช้ AI รวมถึง Hindsight memory kit ที่ผมจัดทำขึ้นวันนี้ เพื่อให้ขั้นตอนทั้งหมดตั้งค่าได้ง่ายขึ้น คุณยังสามารถทำทุกอย่างที่ผมโชว์วันนี้ด้วยตัวเองได้ แต่ชุดเครื่องมือนี้จะช่วยให้ง่ายขึ้นถ้าคุณเริ่มจากศูนย์ และช่วยประหยัดเวลาให้คุณ
เอาล่ะ นี่คือหน้าตาของ Hindsight ครับ นี่คือสิ่งที่เราจะตั้งค่าและเชื่อมต่อกับ agents หลายตัว ในวิดีโอที่แล้ว ผมตั้งค่าระบบนี้ให้ Hermes ตัวเดียว วันนี้เราจะตั้งค่า bank (ธนาคารหน่วยความจำ) ใหม่แบบ global user ซึ่งเป็นสิ่งที่ Hindsight แนะนำสำหรับผู้ใช้คนเดียว นักพัฒนาเดี่ยว หรือคนที่ใช้ agents หลายตัวสำหรับโปรเจกต์ที่เกี่ยวข้องกัน เป้าหมายคือแทนที่จะให้แค่ Hermes เชื่อมต่อกับ bank นี้แล้วสร้างความทรงจำตรงนี้ ผมจะให้ Codex, Claude Code, Gemini หรือ agent อื่นใดก็ตามที่อยากได้มาเชื่อมต่อที่นี่ มาเริ่มตั้งค่ากันเลยครับ สิ่งแรกที่ผมทำคือสร้างโฟลเดอร์ Hindsight memory kit ซึ่งเป็นโฟลเดอร์สำหรับจัดระเบียบไฟล์ทั้งหมดที่ผมจะใช้ตั้งค่า Hindsight แบบอัตโนมัติและเชื่อมต่อกับเครื่องมือต่างๆ ของผม ผมจะไม่ไล่ดูทุกไฟล์ตอนนี้นะครับ แต่ในนี้มีของเสริมบางอย่างที่ใช้หรือไม่ใช้ก็ได้ ตัวอย่างเช่น การตั้งค่าการสำรองข้อมูล (backup) อัตโนมัติของระบบหน่วยความจำ ปุ่มลัดคลิกเดียวเพื่อรีสตาร์ทระบบหน่วยความจำถ้ามันปิดลง วิธีใช้ Docker Compose เพื่อให้รันต่อเนื่องได้ง่ายขึ้นโดยไม่ต้องตั้งค่าทุกครั้ง และอีกหลายอย่างที่ผมจะพูดถึงต่อไป ตอนนี้ ขอเข้าไปใน memory kit นี้ก่อนครับ
ต่อไป ผมแค่เช็คว่ามีสิ่งที่ต้องเตรียมครบไหม วันนี้ผมจะใช้ Docker, Python, Codex และ Hermes จะเห็นว่าทุกอย่างติดตั้งเรียบร้อยแล้ว ถ้าไม่แน่ใจวิธีติดตั้ง ผมมีวิดีโอที่ลงรายละเอียดแต่ละตัวครับ และผมก็รันคำสั่ง Hermes memory provider เพื่อโชว์ว่าตัวจัดการหน่วยความจำปัจจุบันคือ Memosyn ซึ่งเป็นหนึ่งในเครื่องมือที่ผมสอนติดตั้งในวิดีโอที่แล้ว วันนี้เราจะตั้งค่าให้ใช้ Hindsight แทนครับ เอาล่ะ สิ่งแรกที่ต้องสร้างคือ environment file (ไฟล์ตั้งค่าสภาพแวดล้อม) ซึ่งเพิ่งขึ้นมาทางด้านข้างนี่ ผมจะเปิดมันให้ดูครับ เหตุผลคือ ถ้ากลับไปที่ Hindsight สักครู่ จะเห็นว่า Hindsight instance นี้รันอยู่ที่ localhost:999 อย่างที่เห็น ตอนนี้ผมรันมันด้วย Docker container ที่ตั้งค่าไว้คราวที่แล้ว และผมสามารถจำกัดการเข้าถึง Docker container นี้และ control plane (แผงควบคุมกลาง) ได้ด้วยการสร้าง shared API key และรหัสเข้า control plane ผมจะสร้าง secrets (รหัสลับ) ตรงนี้แล้วเก็บไว้ใน environment file แปลว่าเมื่อรีสตาร์ท Hindsight รหัสลับเหล่านี้ก็จะยังอยู่ ผมจะสร้าง secret ขึ้นมาสักตัว ให้ดูหน้าตาก่อนแล้วจะลบทิ้ง แค่คัดลอกอันนี้ ไปแทนที่ด้วยสตริงยาวๆ นี้แล้วเซฟไฟล์ ทำตรงนี้กับตรงนี้ได้เลยครับ พอทำเสร็จ เราจะได้ environment file ที่มี API key สำหรับให้ Hermes, Codex, Claude Code หรือ connector ตัวอื่นๆ ที่อยากใช้กับ agent และอีกอันหนึ่งไว้ป้องกัน control plane
ขั้นตอนถัดไป ผมจะเปิด docker compose file แล้วมีบางอย่างอยากโชว์ อย่างแรก คุณต้องมี LLM (โมเดลภาษาขนาดใหญ่) มาขับเคลื่อนวิธีที่ Hindsight บันทึกข้อมูลและไตร่ตรองมัน วันนี้ผมจะสาธิตสั้นๆ วิธีใช้การยืนยันตัวตน (authentication) ของ Codex จาก OpenAI ในวิดีโอที่แล้ว ผมสาธิตวิธีใช้โมเดลในเครื่องด้วย Ollama (โปรแกรมรันโมเดล AI ในเครื่อง) ตรงนี้คือที่ตั้งค่าโมเดลเฉพาะที่ต้องการ ตัวอย่างเช่น ผมวางแผนใช้ Terra เป็นค่าเริ่มต้น แต่จะเปลี่ยนเป็น Luna สำหรับขั้นตอน retain เพราะประหยัดกว่า retain (การจัดเก็บ) คือการบันทึกหรือจดจำ แล้วผมจะใช้โมเดลที่แรงกว่าสำหรับการรวมข้อมูลและการไตร่ตรอง มีตั้งค่าอีกเยอะในนี้ครับ ผมปล่อย embedding (การแปลงข้อมูลเป็นเวกเตอร์) แบบ local ไว้ อันนี้ใช้สำหรับดึงข้อมูลตอน recall และที่สำคัญที่สุดสำหรับการตั้งค่ากับ Codex คือต้องสร้าง environment ใหม่สำหรับการยืนยันตัวตน เพราะถ้าอยากใช้โควต้า Codex เดิมที่มีอยู่มาขับเคลื่อนโมเดลเหล่านี้ เราต้องตั้งค่าการยืนยันตัวตนแยกต่างหากให้ Hindsight ใช้เชื่อมต่อ นี่คือสิ่งที่แสดงอยู่ตรงนี้ เดี๋ยวจะโชว์วิธีทำงานให้ดูครับ จากนั้นเรามีสองพอร์ตอยู่ด้านบน พอร์ตแรกสร้างคอนเทนเนอร์ที่รัน Hindsight จริงๆ ส่วนพอร์ตที่สองคือ control plane ตรงนี้ใช้ดูความทรงจำที่มีอยู่และตั้งค่าเพิ่มเติมอีกมากที่เดี๋ยวจะพูดถึง และอย่างสุดท้ายที่สำคัญคือการตั้งค่า restart unless stopped (รีสตาร์ทอัตโนมัติเว้นแต่สั่งหยุด) แปลว่าแม้คอมพิวเตอร์ปิดไป พอเปิด Docker อีกครั้ง มันจะรีสตาร์ทเองโดยอัตโนมัติ ไม่ต้องมาปรับแต่งการตั้งค่า Hindsight ใหม่ด้วยมือ เอาล่ะ นี่คือ docker compose file ซึ่งคุณจะรันด้วยตัวเองทุกครั้งก็ได้ถ้าต้องการ ผมแค่คิดว่าตั้งค่าแค่ครั้งเดียวง่ายกว่า ผมมีไฟล์นี้แล้วก็จะสร้างคำสั่ง launch hindsight ตัวเดียว ซึ่งเป็นเหมือนทางลัดให้ผมเรียกใช้ ตอนนี้เราอยากเช็คว่า compose file ถูกจดจำ และ environment file มองเห็น ถ้าไม่มี error ก็พร้อมใช้งาน เป้าหมายคือให้ Codex ขับเคลื่อนการประมวลผลหน่วยความจำภายในของ Hindsight แต่ให้บริการ Hindsight มีการล็อกอินถาวรเป็นของตัวเอง เพื่อไม่ให้ไปกวนแอป Codex ที่ผมใช้อยู่แล้ว ขั้นแรกคือสร้าง Docker volume (พื้นที่เก็บข้อมูลแยกของ Docker) เพื่อให้มีระบบยืนยันตัวตน Codex เฉพาะสำหรับ Hindsight ใน Docker มันคือพื้นที่เก็บข้อมูลแยกต่างหาก ไม่ใช่ memory database ไม่ใช่ Codex ปกติ ไม่ใช่ไฟล์อะไรทั้งนั้น มันมีไว้เพื่อให้การยืนยันตัวตนทำงาน เราจะได้เข้าสู่ระบบ Hindsight ด้วยบัญชี Codex ของเรา ขั้นต่อไป เราจะสร้างการยืนยันตัวตนภายใน volume แล้วกด run ตรงนี้จะเริ่ม node container แล้วดาวน์โหลด Codex CLI อย่างเป็นทางการลงไปข้างใน เพื่อให้เรายืนยันตัวตน Codex ได้จริง เยี่ยม ใช้ได้ มันให้ลิงก์มาให้เราเข้าสู่ระบบเพื่อยืนยันบัญชีนี้ จากนั้นผมจะเอาโค้ดที่มันให้มา แล้วกด continue เกร็ดเล็กน้อย ถ้าขั้นนี้พลาดสำหรับคุณ อาจต้องไปเปลี่ยนการตั้งค่าใน ChatGPT เพื่อเปิด device code authentication ใน Codex เยี่ยม เรียบร้อย มันบอกว่าเข้าสู่ระบบสำเร็จ ผมจะรีบเช็คว่าเข้าสู่ระบบถูกต้อง อ๋อ มันบอกว่า Codex login พร้อมแล้ว สรุปคือเราสร้าง volume แยกที่ยืนยันบัญชี Codex ของผมเรียบร้อย ทำให้ตอนนี้รัน Hindsight ผ่าน Docker container โดยใช้บัญชี Codex ได้ ย้ำอีกครั้ง ถ้าอยากได้ก็รันในเครื่องเหมือนวิดีโอที่แล้ว หรือจะกรอก API key ตรงๆ ก็ได้ถ้าอยากทดลองใช้แบบง่ายๆ ผมแค่อยากเข้าสู่ระบบด้วยโควต้า Codex ที่มีอยู่เฉยๆ ทำไมจะไม่ล่ะ
พอ Hindsight เชื่อมต่อกับ Codex และมี LLM พร้อมขับเคลื่อนแล้ว ถึงเวลาเปิด Hindsight จริงๆ มาทำกันเลยครับ ในวิดีโอที่แล้ว ผมเปิด Hindsight ด้วยการพิมพ์คำสั่ง docker run ซึ่งสร้างสิ่งนี้ขึ้นมา จะเห็นว่ามันมีไฟล์และ logs นี่คือข้อมูลทั้งหมด นี่คือจุดที่เราเข้าถึงระบบหน่วยความจำจริงและเชื่อมต่อกับ memory bank อย่างที่ผมโชว์ แต่ถ้าคุณไม่ถนัดเทคนิคหรือเป็นแบบผมที่ไม่อยากจำคำสั่ง docker เก็บไว้ทุกครั้ง เราสามารถเปลี่ยนมันเป็นปุ่มเดียวเพื่อให้เปิดใช้งานง่ายๆ ปุ่มดับเบิลคลิกนี้จริงๆ แล้วแค่รันสคริปต์ชื่อ start hindsight ซึ่งรัน docker compose คุณจะรันด้วยคำสั่ง docker compose ปกติก็ได้เหมือนกัน ผมปิด Docker ตัวเก่าแล้วก็กด setup hindsight อีกครั้ง เอาล่ะ ดูเหมือนทุกอย่างโอเค กลับมาที่ Docker container ครับ เยี่ยม จะเห็นว่าเรามี compose stack ใหม่อยู่ตรงนี้ ถ้ากดตรงนี้ มันจะเปิดขึ้นมาแล้วพาไปที่ Hindsight สคริปต์นี้จริงๆ แล้วแค่เช็คว่า Docker ติดตั้งแล้ว เช็คว่า env file อยู่ครบ ถ้า Docker Desktop ยังไม่รัน มันก็จะเปิดให้ จากนั้นรัน compose เพื่อเริ่มคอนเทนเนอร์ รอจน Hindsight ขึ้น แล้วเปิด control plane จะเห็นว่ามันบล็อกไม่ให้ผมเข้าถึง เพราะต้องกรอกรหัสเข้า control plane ที่เราใส่ไว้ใน environment file ถ้าอยากรู้ นี่คือสิ่งที่คุณจะรันตามปกติสำหรับ docker compose ผมแค่รวมทั้งหมดนี้กับอีกสองสามอย่างไว้ในสคริปต์ของมันเอง ทีนี้ไปเอา environment key ที่เซฟไว้ใน environment file มาวางแล้วกด sign in เรียบร้อย ผมเข้าสู่ระบบ Hindsight ได้แล้ว มันยังมี bank เก่าอยู่ แต่เราเพิ่มชั้นการยืนยันตัวตนด้วยการตั้งค่าใหม่ที่รันใน Docker แล้ว
พอเข้าสู่ระบบ Hindsight ได้แล้ว มี API เชื่อมแล้ว มี LLM เชื่อมแล้ว ขั้นต่อไปคือสร้าง memory bank ใหม่สำหรับ AI agents หลายตัว อย่างเช่นใน Hermes นี่คือโปรไฟล์ที่ผมตั้งไว้สำหรับ Hindsight เฉพาะ ซึ่งเดี๋ยวจะเปลี่ยนให้เป็นค่าเริ่มต้น ค่าเริ่มต้นตอนนี้ คุณจะเห็นว่าผมมี bank ID เป็น Hermes อยู่ คุณไม่จำเป็นต้องสร้าง bank ภายใน Hindsight ตรงๆ ตรงที่เห็นคำว่า create new bank เพราะมันจะสร้างให้อัตโนมัติถ้าเราใส่ไว้ตรงนี้ แต่มาสร้างตรงนี้กันดีกว่า จะได้เห็นหน้าตามัน มีตัวเลือก import จากเทมเพลตด้วย ผมจะตั้งชื่อ bank นี้ว่า Wanderloots สำหรับ memory bank แบบ global user ของผม กด create เรียบร้อย จะเห็นว่า bank นี้ยังไม่มีความทรงจำ ถ้าสลับไป Hermes มันจะโหลดความทรงจำของอีกฝั่ง เรากำลังเริ่มต้นด้วย bank ใหม่เอี่ยม ถ้าอยากรู้ว่าควรมี bank เดียวหรือหลาย bank เช่น ความสามารถสร้าง bank อัตโนมัติสำหรับทุกโปรเจกต์โค้ด ผมแนะนำให้อ่านบทความเรื่อง one bank or many strategy Hindsight มีเอกสารดีๆ เยอะมากที่สอนอะไรผมหลายอย่าง แนวคิดคือ ถ้าอยากได้ global bank ที่ใช้กับทุกอย่าง มันเหมาะกับผู้ใช้คนเดียวหรือนักพัฒนาเดี่ยว เหมาะถ้าคุณอยากให้ทุกโปรเจกต์หลอมรวมกันในระบบหน่วยความจำเดียว แต่ถ้าคุณมีโปรเจกต์โค้ดหลายอันที่ไม่เกี่ยวข้องกันเลย คุณอาจอยากใช้ bank แยกต่อโปรเจกต์หรือต่อ repo จุดสำคัญคือ bank เป็นขอบเขตแข็ง (hard limit) ที่ไม่สามารถเข้าถึงข้ามกันได้ อย่างที่เห็นใน Hermes ผมเลือกได้แค่ Hermes เป็น memory bank นั้น ไม่สามารถเชื่อมหลาย banks เข้ากับโปรไฟล์เดียวกันได้ คุณจึงมี bank ต่างกันสำหรับแต่ละ Hermes profile ได้ ถ้าต้องการ คล้ายกับแยกโปรไฟล์ต่อผู้ใช้ แต่สำหรับผม ตอนนี้จะใช้แบบ global ก่อน เพราะอยากให้มีผู้ใช้คนเดียวที่ agents ทั้งหมดเข้าใจและทำงานด้วยได้ และไม่จำเป็นต้องเป็นแค่คุณคนเดียว คุณสามารถตั้งค่า เช่น ผมมี Hindsight container รันอยู่ตรงนี้ ผมสามารถเปิดบริการผ่าน Tailscale แล้วให้คนอื่นเชื่อมต่อเข้ามาในระบบหน่วยความจำเดียวนี้ได้ โดยแต่ละคนได้ memory bank ของตัวเอง ผมเป็นคนรัน Hindsight memory container นี้ ส่วน Taylor คู่หมั้นของผมก็เชื่อมต่อจากคอมของเธอได้ แบบนี้คนเดียวก็ขับเคลื่อนระบบได้ แต่ทุกอย่างถูกแยกอย่างง่ายดายด้วย banks ถ้าอยากรู้วิธีเชื่อมต่อหลายอุปกรณ์เข้ากับระบบเดียว ลองดูวิดีโอ workflow ชื่อ one agent many devices ของผม เพราะมันทำงานคล้ายกันมากระหว่าง Hindsight กับ Hermes เดี๋ยวผมจะโชว์วิธีตั้งค่าการแยกแบบอ่อนๆ ด้วยการเพิ่ม tags (ป้ายกำกับ) แยกตามโปรเจกต์ เรื่องนั้นเกี่ยวกับการตั้งค่าของ Hindsight ไปดูกันสักครู่ครับ
ข้อดีอย่างหนึ่งของการตั้งค่า memory bank ใน Hindsight ก่อนคือ เราสามารถเข้าไปแก้ไขการตั้งค่าของ bank นี้ก่อนที่ agent ใดจะเชื่อมต่อ พอ agent เชื่อมต่อเข้ามา มันก็ได้การตั้งค่าที่เตรียมไว้ครบแล้ว มาลองตั้งค่าบางอย่างกัน ผมจะกดที่ configuration ตรงนี้ ผมแนะนำให้เปิด extraction mode (โหมดการดึงข้อมูล) เป็น concise (แบบกระชับ) ไว้ก่อน มันลดการใช้งาน tokens และทำให้ความทรงจำตรงเป้ามากขึ้น อันนี้อยู่ในส่วน retain ถ้าไปดูเอกสารของ Hindsight สักครู่ จะเห็นว่านี่คือสิ่งที่ retain ทำ คุณมีบทสนทนา แล้ว agent ดึงข้อเท็จจริง ระบุ entities (บุคคล สถานที่ และแนวคิด) สร้างความเชื่อมโยง แล้วเพิ่มเข้าไปใน memory bank สรุปคือ retain ดึงข้อมูลและบริบทจากบทสนทนากับ agent ของคุณ เก็บเข้าเซิร์ฟเวอร์ แล้วเพิ่มเข้า memory bank ซึ่งรวมข้อมูลทั้งหมดที่เดี๋ยวจะลงรายละเอียดทีหลัง ส่วน recall ทำตรงกันข้าม มันดึงข้อมูลจาก memory bank เข้าไปในบริบทของ AI agent หน้าตาของ recall คือ ถ้าคุณถามคำถาม agent มันจะ query ดึงความหมายเชิงความหมาย keywords ข้อมูลแบบกราฟ และข้อมูลเชิงเวลา มาหลอมรวมเป็นคำตอบเดียว เข้ารหัส แล้วส่งผลลัพธ์ให้คุณ นี่คือเหตุผลที่ Hindsight เป็นหนึ่งในระบบที่ทรงพลัง เพราะการตั้งค่า recall ตรงนี้ที่ดึงกลไกฐานข้อมูลหลากหลายแบบมาสังเคราะห์เป็นคำตอบเดียวจากหลายรูปแบบ ส่วน reflect (การไตร่ตรอง) ต่างออกไปเล็กน้อย มันค้นหา mental models (แบบจำลองความคิด) และ observations (ข้อสังเกต) โดยใช้ระบบที่ซับซ้อนกว่า ซึ่งรวบรวมหลักฐานอัตโนมัติ ใช้การดึงข้อมูลแบบลำดับชั้น (hierarchical retrieval) อ้างอิงแหล่งที่มา มีลูปการทำงานทั้งชุดตรงนี้ แนะนำให้ลองศึกษาเพิ่มเติมถ้าอยากรู้มากขึ้นครับ โดยเฉพาะ reflect มักต้องใช้โมเดลที่แรงขึ้นอีกนิด ยังมีอีกหลายอย่าง เช่น observations เมื่อคุณมีความทรงจำที่ถูกเก็บแล้ว Hindsight จะรวมมันเป็น observations อัตโนมัติโดยตัดรายการซ้ำ และติดตามการอ้างอิงและที่มาของข้อมูลตลอดเวลา น่าสนใจทีเดียวครับ
กลับมาที่การตั้งค่าอีกครั้ง เพราะนอกจากจะตั้ง extraction mode เป็น concise แล้ว เรายังมีหลายกลยุทธ์ได้ด้วย มีแบบสำหรับ Codex แบบสำหรับ Hermes มีอะไรได้หลายแบบ แต่เรายังมีส่วนที่เรียกว่า mission ด้วย นี่คือส่วนสำคัญที่สุดส่วนหนึ่ง มองมันเหมือน system prompt (คำสั่งระบบ) สำหรับการจัดเก็บข้อมูลของคุณ มันคือวิธีชี้นำ LLM โดยไม่ต้องแทนที่กฎการดึงข้อมูล แค่ช่วยให้มันดีขึ้น นี่เป็นแค่ตัวอย่าง แนะนำให้ปรับแต่ง เปลี่ยนแปลง ทดลอง จนกว่าจะได้แบบที่ใช่สำหรับคุณ ต่อไปคือ free form entities ตรงนี้เราจะให้ระบบดึง entities ซึ่งก็คือคน สถานที่ และแนวคิดออกมาโดยอัตโนมัติ ผมจะเปิดไว้ แล้วยังมี entity labels เป็นตัวเลือกเสริมที่สร้างป้ายกำกับเพิ่มจากข้อมูลที่ agent กำลังจัดเก็บระหว่างสนทนา ตัวอย่างอันที่ผมสนใจ ตรงนี้ผมจะเปลี่ยนเป็น text ตั้งชื่อว่า project แล้วให้คำใบ้กับตัวดึงข้อมูลว่า โปรเจกต์หลักหรือ code base ที่เกี่ยวข้องกับความทรงจำนี้คืออะไร ให้ใช้ชื่อมาตรฐานที่คงที่ และข้ามไปถ้าไม่ชัดเจนว่าเป็นโปรเจกต์ไหน ความหมายคือ สมมติผมทำงานกับโปรเจกต์โค้ดอันหนึ่งชื่อโปรเจกต์ A ถ้าโฟลเดอร์ที่ผมทำงานชื่อโปรเจกต์ A Hindsight ก็มีโอกาสที่จะจัดเก็บข้อมูลและติดป้ายด้วยชื่อโปรเจกต์นั้นโดยอัตโนมัติ สิ่งที่เราทำได้คือเปิด toggle ที่ tag ตรงนี้ ถ้ากลับไปดูกลยุทธ์ memory bank ถ้า bank เป็นขอบเขตของการ recall คุณจะไม่สามารถ query ข้าม bank ได้เลย เราจึงใช้ tags ภายใน bank เดียวเพื่อแบ่งเขตแบบอ่อนๆ ที่สามารถกรองและอ้างอิงข้ามกันได้ การตั้ง entity label กับโปรเจกต์ อาจไม่ได้ผล 100% แต่เพิ่มโอกาสที่ agent จะติดป้ายความทรงจำด้วยชื่อโปรเจกต์ อีกตัวอย่างหนึ่ง เราสามารถเพิ่ม label ที่สอง ชื่อว่า harness โดยบอกว่า ให้ระบุ harness ที่สร้างความทรงจำนี้ เฉพาะเมื่อระบุชัดเจน ไม่เช่นนั้นข้ามไป เราสามารถเปลี่ยนเป็น single value ได้ สิ่งที่ทำคือกำหนดแท็กที่เป็นไปได้ล่วงหน้า เพื่อที่เวลาเก็บความทรงจำใหม่ เราจะเห็น เช่น user Hermes profile แล้วเพิ่ม tags ตามข้อมูลที่เข้ามา เพื่อปรับปรุงระบบกรองที่อยากได้ในความทรงจำที่ถูกเก็บ เอาล่ะ ผมจะกด save changes กับอันนี้
ต่อไปลงไปที่ observations ซึ่งเป็นที่ควบคุมว่าข้อเท็จจริงถูกสังเคราะห์เป็น observations แบบถาวรอย่างไร อย่างที่โชว์ใน workflow ตรงนี้ มันคือรูปแบบหนึ่งของการรวมความรู้ จริงๆ แล้วคือวิธีระบุรูปแบบในงานของคุณ ซึ่งเป็นหนึ่งในเหตุผลที่คุ้มค่าที่สุดในการใช้เครื่องมืออย่าง Hindsight ผมจะเพิ่ม mission statement ตรงนี้ แนะนำให้ลองคุยกับ agent ของคุณ ดูว่าเป้าหมายของคุณคืออะไร อันนี้จะเปลี่ยน mission ของคุณ ผมปล่อยค่าเริ่มต้นไว้ก่อน กด save changes ต่อไปลงไปที่ reflect อย่างที่บอก reflect เป็นระบบที่ซับซ้อนกว่า ทำงานเป็นลูปเพื่อรวบรวมหลักฐานอัตโนมัติ แล้วใช้เหตุผลกับทั้งหมดเพื่อให้คำตอบที่อิงบริบทมากขึ้น มันคือชั้นการให้เหตุผลที่ลึกขึ้น เชื่อมโยงความทรงจำที่เกี่ยวข้อง โดยไม่เสแสร้งว่าความทรงจำที่ไม่แน่นอนหรือเก่าเป็นข้อเท็จจริงที่ตรวจสอบแล้ว ผมจะเพิ่มเป็น memory statement ของผม โดยระบุว่าเป็นผู้ช่วยหน่วยความจำส่วนตัวและด้านเทคนิคข้ามโปรเจกต์ การระบุระดับความมั่นใจก็มีค่ายิ่ง ผมใช้ค่าเริ่มต้นก่อน คุณเปลี่ยนได้ถ้าต้องการ แนะนำให้ศึกษาลึกลงไป ต่อไปคือขั้นถัดไปของการตั้งค่า bank นั่นคือ memory defense (การป้องกันความทรงจำ) อันนี้ให้คุณตั้งค่าให้เนื้อหาที่ละเอียดอ่อนถูกลบออก (redact) หรือกักกัน (quarantine) ตามที่คุณต้องการ เป็นตัวเลือกที่ดีให้เปิดไว้ ถ้าไม่อยากให้ agent จำความลับอะไรก็เปิดอันนี้ เลือกได้ว่าจะ redact, block หรือ allow ผมเลือก redact ไว้ก่อน เอาล่ะ รู้ว่าการตั้งค่า bank เยอะไปหน่อย แต่นี่เป็นงานครั้งเดียวที่ต้องทำ ยังมีอีกมากที่เจาะลึกได้ แนะนำให้ไล่อ่านเอกสารดู เพราะตามกรณีการใช้งานของคุณ อาจมีอะไรที่อยากเปิดเพิ่ม ตอนนี้ Hindsight พร้อมแล้ว รันอยู่ใน Docker container นี้ เข้าถึง control plane ได้ มีการตั้งค่า bank ครบ ลองทดสอบสั้นๆ ว่าใช้งานได้ไหม ผมจะกด add document แล้วเพิ่มอะไรประมาณนี้อย่างรวดเร็ว เยี่ยม มันเพิ่มได้แล้ว จะเห็นว่ามีข้อมูลนี้อยู่ ทีนี้ไปที่ recall พิมพ์ searching memories เรียบร้อย มันสามารถดึงความทรงจำกลับมาและตอบว่า ระบบหน่วยความจำของ Wanderloots ใช้ Hindsight bank ร่วมหนึ่งอันชื่อ Wanderloots นี่พิสูจน์ว่าการเรียกใช้งานทั้งหมดทำงาน ถ้าไปที่ settings แล้วเข้า background operations จะเห็นว่ามันรันได้ตรงนี้ แปลว่ามันเชื่อมต่อกับ LLM ที่เราตั้งให้ถูกต้อง ซึ่งสมบูรณ์แบบ ก่อนเชื่อมต่อกับ agent มีอีกสิ่งสำคัญที่แนะนำให้ตั้งค่า นั่นคือการสำรองข้อมูลอัตโนมัติ กลับไปที่ kit สักครู่ มีคำสั่ง install automatic backups ผมจะรันมัน มันสร้างโฟลเดอร์สำรองข้อมูลบนเครื่อง แล้วรันหนึ่งครั้งทันทีเพื่อเช็คว่าทำงานได้ ดูเหมือนใช้ได้ ผมไปที่โฟลเดอร์ของผม มีโฟลเดอร์ชื่อ hindsight backups และมีไฟล์ zip อยู่ตรงนี้ จริงๆ แล้วมันรันคำสั่งสำรองข้อมูลในตัวของ Hindsight admin แล้วกำหนดว่าให้ไปเก็บที่โฟลเดอร์ไหน คุณจะรันเองด้วยมือหรือตั้งเวลาให้รันอัตโนมัติก็ได้ ถ้าอยากรู้วิธีรันเองผ่าน Hindsight admin แนะนำให้ดู admin CLI แล้วส่งต่อคำสั่งนี้ให้ agents ของคุณ ซึ่งจะตั้งค่าให้ตามที่คุณพอใจ
เอาล่ะ นี่คือผมจากอนาคต ระหว่างอัดวิดีโอนี้ Hindsight ปล่อยเวอร์ชัน 0.9 ออกมา พร้อมฟีเจอร์เจ๋งๆ อีกหลายอย่างที่เดี๋ยวจะพูดถึง คิดว่านี่เป็นโอกาสดีที่จะโชว์วิธีอัปเกรด สิ่งแรกที่ทำคือใช้ระบบสำรองข้อมูลที่เพิ่งติดตั้ง จะเห็นว่าตอนนี้มีความทรงจำ 33,000 รายการ นี่คือหลังจากใช้งานประมาณสัปดาห์ครึ่ง จะเห็นว่าความทรงจำทั้งหมดถูกสำรองไว้แล้ว ซึ่งเป็นนิสัยที่ดี ต่อไปผมจะ pull Hindsight เรียบร้อย มันดาวน์โหลดเวอร์ชันล่าสุดเสร็จแล้ว ใช้เวลาประมาณนาทีเดียว ทีนี้ก็รันคำสั่งเปิด Hindsight อีกครั้ง เรียบร้อย จะเห็นว่าอินเทอร์เฟซต่างจากเมื่อกี้เล็กน้อย แต่มันยังโหลด bank เดิมที่สร้างไว้กับความทรงจำทั้งหมดเข้ามาได้ ระหว่างเรียนต่อจากนี้ จำไว้ว่าบางส่วนอาจอยู่ในอินเทอร์เฟซเก่า ตอนนี้มีฟีเจอร์ใหม่อย่างปุ่ม home, knowledge pages และ knowledge base เดี๋ยวจะพูดถึงทีหลัง ถึงเวลาเชื่อมต่อสิ่งนี้กับ agent ของเราจริงๆ แล้ว เอาล่ะ ผมจะเชื่อมต่อกับ Hermes ก่อนเพราะง่ายมาก ไปที่ settings มุมขวาบน หรือกด Command + Comma จากนั้นไปที่ memory and context ผมจะเปิด persistent memory และ user profile memory ไว้ เพราะทำได้ด้วย Hindsight แล้วจะสลับจาก Memosyn ซึ่งเป็นชั้นหน่วยความจำแบบหนึ่ง มาเป็น Hindsight พอทำแบบนั้น มันจะขึ้นการตั้งค่าของ Hindsight ตรงนี้มีสองโหมดคือ local external กับ cloud ผมจะเลือก local external เพราะรันอยู่ใน Docker container ของผม ผมพูดถึงข้อดีข้อเสียของการรันเองเทียบกับใช้ cloud ซึ่งเป็นบริการเสียเงิน ในวิดีโอที่แล้ว ตอนนี้ปล่อยเป็น local external ก่อน แล้วก็มาถึง API key ซึ่งต้องใช้คีย์ที่สองที่เราตั้งไว้ใน environment file ไปเอาคีย์นั้นมา แล้วตั้ง API URL ชี้ไปที่ Docker container ที่รันในเครื่อง จากนั้นเปลี่ยน bank ID เป็น Wanderloots และปล่อย recall budget ไว้ที่ mid คุณควบคุม tokens ที่อยากใช้ตรงนี้ได้เอง เสร็จแล้ว ตั้งค่าเรียบร้อย จากนั้นผมจะรีสตาร์ท gateway เพื่อให้แน่ใจว่าโปรไฟล์ค่าเริ่มต้นรับค่าอย่างถูกต้อง พอรีเซ็ตแล้วกลับมาที่ memory and context เยี่ยม ดูเหมือนทุกอย่างยังตั้งไว้ครบ วิธีตรวจสอบอีกทางคือกลับไปที่เทอร์มินัล พิมพ์ hermes memory status แล้วมันควรขึ้นมา ใช่ มี built-in memory เปิดอยู่ provider คือ Hindsight ติดตั้งแล้วและพร้อมใช้งาน เป๊ะ ตรงตามที่ต้องการ อันนี้สำหรับคนที่ใช้แอปเดสก์ท็อป ถ้าอยากทำผ่าน CLI ก็พิมพ์ hermes memory setup ได้ ซึ่งจะช่วยตั้งค่าเชื่อมต่อ Hindsight เป็น provider
เพื่อให้เห็นการทำงานเร็วๆ ผมจะเพิ่มข้อมูลเกี่ยวกับตัวเอง เอาล่ะ ผมชื่อ Callum หรือ Wanderloots เป็น patent agent (ตัวแทนสิทธิบัตร) ทนายความทรัพย์สินทางปัญญา และเรียนด้านวัสดุศาสตร์ วิศวกรรมเครื่องกล ฯลฯ จะเห็นว่ามันรัน hindsight retain แปลว่ามันเชื่อมต่อกับ Hindsight ได้โดยตรง เชื่อมต่อกับ LLM ที่ขับเคลื่อนระบบ และอัปเดตโปรไฟล์ผู้ใช้กับค่าความชอบหน่วยความจำได้ เยี่ยม กลับไปที่ Hindsight สักครู่แล้วเข้าไปที่ bank เราจะเห็นว่ามีความทรงจำเพิ่มขึ้นอีก จะเห็นว่ามันดึงโปรเจกต์ Wanderloots ขึ้นมา น่าสนใจ อาจเป็นเพราะเราอยู่ในโฟลเดอร์ tutorials ของ Wanderloots ไปที่ entities จะเห็นข้อมูลทั้งหมดที่ถูกดึงออกมาขณะจัดเก็บ ทุกอย่างทำงานเรียบร้อย แต่เราจะไม่จบแค่นี้ เราไม่อยากให้มีแค่ Hermes เชื่อมกับ Hindsight ประเด็นคือเรากำลังสร้างเครื่องยนต์หน่วยความจำร่วมที่เชื่อมเครื่องมือทั้งหมดเข้าด้วยกัน ต่อไปผมจะเชื่อมต่อ Codex แต่ขั้นตอนนี้ใช้กับ Claude Code ได้เหมือนกัน เป้าหมายคือให้ Codex กลายเป็นประตูสู่ memory bank เดียวกัน การเชื่อมต่อที่กำลังจะตั้งนี้ต่างจากการใช้ Codex ขับเคลื่อนระบบ Hindsight โดยสิ้นเชิง ตอนนี้ Codex ขับเคลื่อน Hindsight และ Codex ก็จะใช้ Hindsight ด้วย แต่จุดนี้ต่างกันเล็กน้อย
เอาล่ะ ก่อนเชื่อมต่อกับ Codex จริงๆ สักครู่ นี่คือผมจากอนาคตอีกครั้ง อยากบอกว่าในการอัปเดต 0.9.0 มีวิธีใหม่ในการเชื่อมต่อ Hindsight ที่ทำให้เชื่อมต่อปลั๊กอินหน่วยความจำเดียวนี้กับ coding agent ทุกตัวได้ง่ายขึ้น แปลว่าตอนนี้มีปลั๊กอิน coding agent ตัวเดียว และเราสามารถให้ประวัติ git ของ repo และบทสนทนาไหลเข้า memory bank โดยอัตโนมัติเบื้องหลังขณะทำงาน เมื่อก่อนถ้าเราติดตั้งการเชื่อมต่อ Codex แบบ hooks ไว้ ตอนนี้ถอนการติดตั้งได้แล้ว ผมจะถอนให้ดูสักครู่ ถ้ายังไม่ได้ติดตั้ง ไม่ต้องกังวล คุณไม่ต้องทำขั้นตอนนี้ เรียบร้อย ถอนแล้ว จากนั้นไปเอาคำสั่งนี้มา ซึ่งเป็นคำสั่ง npx คุณจะติดตั้งแบบ all เพื่อให้ใช้ได้กับทุก agent ที่ตรวจพบในคอมของคุณในครั้งเดียว หรือระบุเฉพาะตัวที่ต้องการก็ได้ สำหรับผม จะติดตั้งให้ Codex ก่อน แต่คุณทำทั้งหมดก็ได้ จากนั้นมีสอง flags อันหนึ่งบอกว่าเราทำงานบนเซิร์ฟเวอร์ self-hosted และนี่คือตำแหน่งที่อยากเปิดเซิร์ฟเวอร์ กด enter เยี่ยม เรียบร้อย ใช้เวลาแป๊บเดียว สิ่งที่น่าทึ่งคือมันติดตั้งสิ่งที่เรียกว่า Hindsight coding agents ถ้าผมใส่ all แทนที่จะเป็นแค่ Codex มันก็จะเชื่อมต่อกับ Antigravity, Claude Code และตัวอื่นๆ ทั้งหมด เราต้องเช็คว่า hooks ถูกเปิดใช้งานใน Codex ซึ่งเดี๋ยวจะโชว์ให้ดู แต่ก่อนอื่น ขอดูไฟล์ตั้งค่า coding agent ที่เพิ่งติดตั้งสักครู่ ถ้าไปที่โฟลเดอร์ Hindsight อันนี้คือไฟล์เวอร์ชันเก่าที่ติดตั้งตอนยังมีแค่ Codex แต่ตอนนี้เราจัดการกับระบบเต็มรูปแบบแล้ว จะเห็นว่าการติดตั้ง coding agent นี้มาพร้อมการดำเนินการทั้งหมดที่จำเป็นสำหรับ coding agent ทุกตัว ไฟล์ตั้งค่าอยู่ที่ hindsight/coding-agent.json ซึ่งดึงค่าเริ่มต้นมาให้ แต่ก็ให้คุณควบคุมระดับต่างๆ ได้ ขอเปิดดูสักครู่ จะเห็นว่าไฟล์ built-in มีแค่ server mode แบบ self-hosted และ API URL ซึ่งเป็นค่าที่เราตั้งตอนเริ่มแรก จากนั้นผมจะเพิ่มอีกสองสามชั้น ระบุ bank ID เจาะจง ใส่ shared private key ที่เราสร้างไว้ และอยากตั้ง dynamic bank ID เป็น false นี่เป็นความชอบส่วนตัวตอนนี้ เพราะอยากให้หลายโปรเจกต์ใช้ความทรงจำร่วมกัน เนื่องจากโปรเจกต์เกี่ยวข้องกัน ถ้าต้องการ คุณก็สร้าง bank แยกสำหรับทุก agent ได้ ซึ่งเดี๋ยวจะพูดถึงเพิ่ม จากนั้นก็เปลี่ยน private key ซึ่งผมจะทำตอนนี้ แล้วกด save
ทีนี้ย้ายไปที่ Codex ถ้าไปที่ settings ของ Codex แล้วเข้าไปที่ hooks จะเห็นว่ามีสาม hooks ที่ต้องตรวจสอบ เหล่านี้คือ hooks ที่ถูกดึงมาจากไฟล์ตั้งค่า Hindsight โดยอัตโนมัติ hooks ทำสามอย่าง คือ เริ่มต้นหน่วยความจำอัตโนมัติ เรียกบริบทที่เกี่ยวข้อง และจัดเก็บเซสชันที่เสร็จแล้ว ถ้าเพิ่งติดตั้งครั้งแรก หน้าตาอาจต่างออกไปหน่อย อย่างที่บอก ผมกำลังอัปเดตจากเวอร์ชันเก่า ต้องกดเชื่อถือไฟล์ที่เปลี่ยนอีกครั้ง เพราะมันรันนอก sandbox ได้ ต้องให้สิทธิ์ จากนั้นปิดแล้วเปิดใหม่ และที่ติดตั้งมาพร้อม hooks คือ MCP server (เซิร์ฟเวอร์เชื่อมต่อเครื่องมือตามมาตรฐาน Model Context Protocol) สำหรับ Hindsight แปลว่าถ้าไปที่ plugins จะเห็นส่วน Hindsight ติดตั้งเป็นปลั๊กอินอยู่ มันให้เครื่องมือเพิ่มเติมกับ Codex ในการทำงานกับ Hindsight เช่น ช่วยเลือก bank รันคำสั่งเฉพาะ มีรายการเครื่องมือทั้งหมดที่มากับ MCP แนะนำให้อ่านเอกสาร MCP server ถ้าอยากรู้เพิ่ม
เอาล่ะ พอตั้งค่าครบและเชื่อถือ hooks ทั้งหมดแล้ว เราน่าจะสั่งให้มันจำอะไรบางอย่างได้ ขอให้จำไว้ว่า โปรเจกต์ memory test ใช้สีม่วงเป็นสีทดสอบชั่วคราว จะเห็นว่า hooks ถูกเปิดใช้งานแล้ว กลับไปที่ Hindsight จะเห็นว่าเรามีแปดความทรงจำ กลับมาที่นี่แล้วกด refresh เยี่ยม มีความทรงจำเพิ่มขึ้น และอันเหล่านี้มีบริบทของ Codex จะเห็นว่า สีทดสอบชั่วคราวของโปรเจกต์ memory test คือสีม่วง ทีนี้ลองทดสอบใน Hermes ว่าผมเลือกสีทดสอบชั่วคราวอะไรให้โปรเจกต์ memory test จะเห็นว่ามันเรียกใช้ Hindsight recall แล้วตอบว่าสีม่วงเป็นสีชั่วคราวของโปรเจกต์ memory test สมบูรณ์แบบ สิ่งที่เกิดขึ้นคือ ผมให้ Codex จำบางอย่าง มันเก็บความทรงจำนั้นใน Hindsight แล้ว Hermes ก็เรียกกลับมาได้ทันที ทีนี้ลองย้อนกลับเป็นแบบทดสอบชั่วคราว ช่วยจำไว้ว่าสัตว์ที่ผมชอบคือลีเมอร์ (lemur) ตอนนี้เรากำลังเรียกใช้การจัดเก็บข้อมูลของ Hermes ผ่าน Hindsight มันเพิ่มข้อเท็จจริงทดสอบชั่วคราวแล้ว ถ้ากลับมากด refresh จะมีความทรงจำเพิ่มขึ้น ตอนนี้รวม 21 รายการแล้ว บางส่วนมาจากการทดสอบชั่วคราวที่ผมสั่ง บางส่วนถูกสร้างขึ้นจากคำถามที่ผมถาม Codex และ Hermes แต่จะเห็นว่ามีสัตว์ที่ผู้ใช้ชื่นชอบ ซึ่งผมรักลีเมอร์จริงๆ มันเป็นสัตว์เจ๋งมาก ผมชอบดูพวกมันที่มาดากัสการ์มาก กลับไปที่แชท Codex แล้วถามว่าสัตว์ที่ผมชอบคืออะไร จะเห็นว่ามันดึงข้อมูลทันทีว่า สัตว์ที่คุณชื่นชอบคือลีเมอร์ ซึ่งถูกบันทึกเป็นค่าความชอบทดสอบชั่วคราว เห็นไหมว่าแค่บทสนทนาพื้นฐาน ข้อมูลก็เริ่มขยายตัวเยอะแล้ว ตอนนี้มีความทรงจำ 22 รายการ และนี่เป็นแค่จุดเริ่มต้น
เราจะเห็น experiences ปรากฏภายใต้ observations และตรงนี้คือที่กรองด้วย tags ได้ ค้นหาได้ แต่กรองตาม harness ได้ด้วย เช่น เลือก harness แบบ Hermes แล้วเห็นความทรงจำทั้งหมดที่ Hermes สร้าง ล้างออกแล้วสลับเป็น harness แบบ Codex จะเห็นความทรงจำที่ Codex สร้างขึ้นโดยเฉพาะ ตรงนี้กลับไปที่การตั้งค่า คุณจะคิด tags เพิ่มเติมที่อยากมีได้ Hindsight จะสร้าง free form entities ต่อไปเรื่อยๆ แต่คุณก็จัดโครงสร้างข้อมูลของตัวเองในแบบที่อยากกรองในอนาคตได้ พอมีความทรงจำในนี้แล้ว เราสามารถรันฟีเจอร์อย่าง reflect ได้ ไม่ว่าจะจากในนี้โดยตรงหรือจาก Hermes เอง ตัวอย่างเช่น ผมถาม Hermes ว่า ช่วย reflect งานของผมแบบกระชับหน่อย แล้วจะเห็นว่ามันรัน Hindsight reflect ตรงนี้มันจะรวบรวมหลักฐานอัตโนมัติและให้เหตุผลผ่านมุมมองของ bank ทั้งหมด เพื่อให้คำตอบที่อิงบริบทดีขึ้น อันนี้อาจใช้เวลานานหน่อย ผมตั้งให้ใช้โมเดลที่แรงขึ้นนิดหน่อย แต่จะเห็นว่ามันตอบว่า workflow ของคุณคือให้ความทรงจำถาวรมาก่อน Hindsight เก็บข้อเท็จจริงข้ามเซสชัน การตัดสินใจ และข้อมูลทั้งหมดนี้ นี่เป็นข้อสังเกตที่ดีว่าระบบของผมทำงานอย่างไร จะเห็นว่าการสะท้อนนี้ถูกเก็บเป็น observation แล้ว ตรงนี้คือจุดที่ agent ฉลาดขึ้นเรื่อยๆ ขณะทำงาน เรียนรู้จากกระบวนการและความคาดหวังของผม พูดตรงๆ ยังมีอะไรให้ทำกับสิ่งนี้อีกมาก ทุกบทสนทนา ทุกข้อความ ทุกแชทกับ agent ใดก็ตามที่เชื่อมต่อกับ memory bank ร่วมนี้ จะทำงานบนชั้นหน่วยความจำเดียวกัน แล้ว Hindsight จะทำหน้าที่เป็นเครื่องยนต์ที่รวมความรู้เป็นรูปแบบและความชอบต่างๆ ซึ่งช่วยให้ทุก agent ที่คุณเชื่อมต่อเข้าใจตัวคุณและงานของคุณดีขึ้น เจ๋งมาก วิธีนี้ทำได้กับ Claude Code, Codex, Gemini, Hermes, OpenClaw หรือ agent ใดก็ตามที่ต้องการ และทั้งหมดใช้โปรไฟล์ผู้ใช้เดียวร่วมกัน เป็นระบบหน่วยความจำระดับ global เอาล่ะ นี่คือผมจากอนาคตอีกครั้ง ตอนนี้ผมใช้ Codex กับ Hermes สร้างความทรงจำจำนวนมากในช่วงที่ผ่านมา นี่คือหน้าตาของมัน เจ๋งมาก และตอนนี้ขอโชว์ฟีเจอร์ใหม่ที่มากับเวอร์ชัน 0.9 นั่นคือ knowledge pages (หน้าความรู้) จะเห็นว่าด้านข้างยังไม่มี knowledge pages ผมกด create my first page ได้ สิ่งที่เกิดขึ้นคือ ความทรงจำทั้งหมดทำงานอยู่เบื้องหลัง ส่วน knowledge pages คือการฉายภาพ (projection) จากข้อมูลนั้นที่อัปเดตเองตามเวลา มีข้อมูลเพิ่มเติมตรงนี้ว่าทำไมมันถึงทำงาน และวิธีเริ่มใช้งาน ขอชี้แจงว่าอันนี้ต่างจาก LLM wiki ที่ผมพูดถึงในวิดีโอก่อนๆ เพราะอันนี้ถูกสร้างและฉายออกมาจากความทรงจำของ agents โดยอัตโนมัติทั้งหมด ซึ่งแปลว่ามันไม่มีชั้นความน่าเชื่อถือ (trust layer) ที่แท้จริงอย่างที่ผมพูดถึงในวิดีโออัปเดต LLM wiki อันนี้เป็นวิธีช่วยสร้างแบบจำลองความคิดที่ถูกฉายออกมาจากไฟล์จริงโดยอัตโนมัติ และมันให้บทสรุปที่พัฒนาตลอดเวลาของ components, concepts, conventions, decisions และโครงการปัจจุบัน สำหรับผม เพราะใช้ bank เดียว หน้าทั้งหมดที่สร้างในพื้นที่ความรู้จึงเชื่อมโยงความรู้ข้ามโปรเจกต์ที่เกี่ยวข้องกันได้ ถ้าอยากลิงก์ตามโปรเจกต์เฉพาะก็ทำได้เหมือนกัน แต่นี่คือบริบทการทำงานที่ดูแลโดย agent ไม่ใช่ตัวแทนของเอกสารที่มนุษย์ตรวจทานอย่างระบบ Obsidian ของผม
มาลองสร้างกันสักหน้า ผมจะสร้างหน้าใหม่ที่สรุปปรัชญาหน่วยความจำของผม โดยใช้คำถามว่า วิธีปฏิบัติกับ Hindsight memory bank นี้สำหรับ Hermes และ Codex สอง agent ที่เชื่อมต่ออยู่คืออะไร จะเห็นว่ามันกำลังสร้างเนื้อหา เราสามารถดึง prompt มาตรงนี้ เปิดไฟล์เพื่อดูรายละเอียดการตั้งค่าและวิธีรีเฟรชอัตโนมัติ ปรับแต่งการตั้งค่าได้ทั้งหมดและดูประวัติได้ เรียบร้อย มันเพิ่งเสร็จ จะเห็นว่าปรัชญาการทำงานคือใช้ Hindsight เป็นตัวให้บริการหน่วยความจำภายนอกร่วม ไม่ใช่เป็น harness หรือโมเดล มันมีความเข้าใจเรื่องขอบเขตของ bank ที่เราตั้งวันนี้ และรายละเอียดว่าเซสชันปกติไหลอย่างไร สรุปคือมันนำความทรงจำทั้งหมดที่ผมพูดถึงมา แล้วสกัดจากความทรงจำ 33,000 รายการนั้น ถึงรูปแบบเฉพาะของบทสนทนาที่ผมมีกับ Codex และ Hermes เพื่อเข้าใจว่าผมอยากทำงานแบบไหน มันยังสร้างแนวคิดหลัก โครงการ และการปรับปรุงบางอย่างเป็นค่าเริ่มต้น ซึ่งผมแก้ไขและอัปเดตได้ตามเวลา ทั้งหมดถูกฉายออกมาจากความทรงจำที่มีอยู่ใน memory bank โดยอัตโนมัติ คิดว่าระบบแบบนี้สร้างขึ้นมาได้ถือว่าเจ๋งมาก ย้ำอีกครั้ง ตอนนี้ผมยังไม่คิดว่ามันจะแทนที่ LLM wiki ที่กำลังสร้างใน Obsidian เพราะอันนั้นมีชั้นความน่าเชื่อถือและกระบวนการอนุมัติที่เข้มกว่าว่าอะไรจะเข้าสู่ความทรงจำ แต่ผมพูดถึงเรื่องนี้เพิ่มในวิดีโออื่น ถ้าอยากรู้ว่าระบบนี้ทำงานเสริมกับที่ตั้งวันนี้และ knowledge pages ที่เชื่อมกับ LLM wiki เดิมได้อย่างไร
ตอนนี้เรามีระบบหน่วยความจำเดียวที่เชื่อม agents หลายตัวเข้าด้วยกัน แต่นี่เป็นแค่ชั้นหนึ่งในระบบหน่วยความจำทั้งหมด เป็นระบบอัตโนมัติที่อยู่ในการควบคุมของ agent เรายังต้องมีระบบความรู้ที่เชื่อถือได้โดยมีมนุษย์อยู่ในวงจร (human in the loop) เพื่อช่วยต่อสู้กับข้อผิดพลาดและภาพหลอน (hallucination) ของ AI นั่นคือสิ่งที่เราจะทำในวิดีโอหน้า ด้วยการสร้าง wiki ที่น่าเชื่อถือใน Obsidian และบรรณารักษ์ AI (Agentic librarian) ที่จัดการความรู้ที่เชื่อถือได้แยกจากระบบหน่วยความจำอัตโนมัติ เตือนอีกครั้ง ให้ไปอ่านบทความฟรีบน Patreon ที่จะลิงก์ไว้ในคำอธิบาย และสมาชิกจะได้เข้าถึง Hindsight memory kit ที่ผมจัดทำขึ้นเพื่อช่วยตั้งค่าระบบได้ง่ายขึ้น ถ้าวิดีโอนี้มีประโยชน์ ช่วยกด like และ subscribe ด้วยนะครับ ขอบคุณมากจริงๆ ขอบคุณที่รับชม แล้วพบกันใหม่ในวิดีโอหน้าครับ
หมายเหตุการแปล
ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ
- ## เซ็กเมนต์ที่ใช้ [ฟังไม่ชัด]
- ไม่มีเซ็กเมนต์ใดที่ต้องใช้เครื่องหมาย `[ฟังไม่ชัด]` ในการแปล เนื่องจากเสียงพูดโดยรวมชัดเจนพอ
- 10. **"paper use"** — คำบรรยายไม่ชัด น่าจะหมายถึงการทดลองใช้แบบง่ายๆ แปลเป็น "ทดลองใช้แบบง่ายๆ"
- จุดที่คำบรรยายต้นฉบับไม่ชัด/เพี้ยน ได้ระบุไว้ข้างต้นและแปลตามความหมายที่ตั้งใจโดยอิงบริบท ไม่มีการคิดค้นข้อมูลใหม่
อภิธานศัพท์เทคนิค
คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ
| ศัพท์ | คำแปล / คำอธิบาย |
|---|---|
| Hindsight | ระบบหน่วยความจำ (memory system) สำหรับ AI agents ทำหน้าที่เป็นสมุดบันทึกร่วมระหว่าง agents |
| agent | ตัวแทน AI ที่ทำงานตามคำสั่งได้ เช่น Hermes, Codex, Claude Code |
| harness | โครงสร้างตัวแทนที่ให้เครื่องมือและสภาพแวดล้อมการทำงานแก่ agent |
| model | โมเดล AI ที่ให้ความฉลาด/ความสามารถในการคิด |
| memory bank | ธนาคารหน่วยความจำ กลุ่มพื้นที่จัดเก็บความทรงจำ; เป็นขอบเขตแข็งที่ไม่สามารถ query ข้ามกันได้ |
| tag | ป้ายกำกับสำหรับกรองความทรงจำแบบแยกอ่อนๆ ภายใน bank เดียว |
| retain | การจัดเก็บ/จดจำ ข้อมูลจากบทสนทนาเข้าสู่ memory bank |
| recall | การเรียกค้น/ดึงความทรงจำจาก memory bank เข้าสู่บริบทของ agent |
| reflect | การไตร่ตรอง รวบรวมหลักฐานอัตโนมัติและให้เหตุผลเชิงลึกผ่านมุมมองของ bank ทั้งหมด |
| observation | ข้อสังเกตที่เกิดจากการรวมข้อเท็จจริงที่ถูกจัดเก็บเข้าด้วยกัน (knowledge consolidation) |
| entity | บุคคล สถานที่ หรือแนวคิดที่ถูกดึงออกมาจากข้อมูลอัตโนมัติ |
| free form entities | การตั้งค่าให้ระบบดึง entities ออกมาโดยอัตโนมัติโดยไม่จำกัดรูปแบบ |
| entity labels | ป้ายกำกับเพิ่มเติมที่กำหนดจากข้อมูลที่ agent จัดเก็บ (เช่น project, harness) |
| extraction mode | โหมดการดึงข้อมูล; แบบ concise = กระชับ ลดการใช้ tokens |
| mission statement | ข้อความกำหนดภารกิจ/ทิศทางของระบบ เปรียบเสมือน system prompt สำหรับการจัดเก็บข้อมูล |
| memory defense | การป้องกันความทรงจำ ตั้งค่าให้ข้อมูลอ่อนไหวถูกลบ (redact) กักกัน (quarantine) หรืออนุญาต (allow) |
| system prompt | คำสั่งระบบที่กำหนดพฤติกรรมของ LLM |
| environment file | ไฟล์ตั้งค่าสภาพแวดล้อม เก็บ API key และรหัสลับ (secrets) |
| API key | รหัสสำหรับยืนยันตัวตนในการเรียกใช้บริการ |
| control plane | แผงควบคุมกลางของ Hindsight สำหรับดูและตั้งค่าความทรงจำ |
| Docker | แพลตฟอร์มรันแอปพลิเคชันในคอนเทนเนอร์ |
| Docker Compose | เครื่องมือกำหนดค่าและรันคอนเทนเนอร์หลายตัวพร้อมกันจากไฟล์ compose |
| Docker volume | พื้นที่เก็บข้อมูลแยกของ Docker (ใช้เก็บระบบยืนยันตัวตน Codex สำหรับ Hindsight) |
| Docker Desktop | แอปพลิเคชันเดสก์ท็อปสำหรับจัดการ Docker |
| container | คอนเทนเนอร์ สภาพแวดล้อมรันแอปแบบแยกส่วน |
| restart unless stopped | การตั้งค่าให้รีสตาร์ทอัตโนมัติเว้นแต่ผู้ใช้สั่งหยุด |
| LLM | Large Language Model โมเดลภาษาขนาดใหญ่ |
| embedding | การแปลงข้อมูลเป็นเวกเตอร์สำหรับการค้นคืนข้อมูล (retrieval) |
| hierarchical retrieval | การดึงข้อมูลแบบลำดับชั้น |
| tokens | หน่วยย่อยของข้อความที่โมเดลใช้ประมวลผล |
| Codex | เครื่องมือเขียนโค้ดด้วย AI ของ OpenAI |
| Hermes | AI agent (แพลตฟอร์มตัวแทน AI) ที่ใช้เชื่อมต่อกับ Hindsight |
| Claude Code | เครื่องมือเขียนโค้ดด้วย AI ของ Anthropic |
| Gemini | โมเดล AI ของ Google |
| OpenClaw | AI agent อีกตัวที่รองรับการเชื่อมต่อกับ Hindsight |
| Antigravity | เครื่องมือ coding agent (Google) ที่ปลั๊กอิน Hindsight coding agents รองรับ |
| Memosyn | เครื่องมือหน่วยความจำ (memory layer) อีกตัวที่ Hermes ใช้ก่อนสลับมา Hindsight (คำบรรยายอัตโนมัติเขียนว่า Namosin/namask) |
| Ollama | โปรแกรมรันโมเดล AI ในเครื่อง (คำบรรยายอัตโนมัติเขียนว่า Olama) |
| MCP server | Model Context Protocol server เซิร์ฟเวอร์เชื่อมต่อเครื่องมือตามมาตรฐาน MCP |
| hooks | จุดเชื่อมต่ออัตโนมัติที่ทำงานเมื่อเกิดเหตุการณ์ (initialize memory, recall, retain) |
| CLI | Command Line Interface อินเทอร์เฟซคำสั่งในเทอร์มินัล |
| npx | คำสั่งรันแพ็กเกจ Node.js โดยไม่ต้องติดตั้งถาวร |
| self-hosted | การโฮสต์ระบบบนเซิร์ฟเวอร์ของตัวเอง |
| gateway | ตัวกลางเชื่อมต่อบริการ (Hermes) ที่ต้องรีสตาร์ทหลังเปลี่ยนการตั้งค่า |
| knowledge pages | หน้าความรู้ที่ฉาย (project) อัตโนมัติจากความทรงจำของ agents และอัปเดตตามเวลา |
| knowledge base | ฐานความรู้ |
| LLM wiki | วิกิที่สร้าง/ดูแลโดย AI |
| trust layer | ชั้นความน่าเชื่อถือ กลไกตรวจสอบว่าข้อมูลใดควรเข้าสู่ระบบ |
| human in the loop | ระบบที่มีมนุษย์อยู่ในวงจรการทำงาน/ตรวจทาน |
| hallucination | ภาพหลอน การที่ AI สร้างข้อมูลที่ไม่เป็นความจริง |
| Agentic librarian | บรรณารักษ์ AI ที่จัดการความรู้ที่เชื่อถือได้แยกจากระบบหน่วยความจำอัตโนมัติ |
| Obsidian | แอปจดบันทึก/จัดการความรู้ส่วนตัว (รองรับ wiki และการเชื่อมโยงโน้ต) |
| Tailscale | บริการ VPN/เครือข่ายส่วนตัวสำหรับเชื่อมต่ออุปกรณ์หลายเครื่อง |
| Patreon | แพลตฟอร์มสนับสนุนผู้สร้างคอนเทนต์ |
| backup | การสำรองข้อมูล |
| Hindsight memory kit | ชุดไฟล์/เครื่องมือที่เจ้าของช่องจัดทำเพื่อให้ตั้งค่า Hindsight ง่ายขึ้น |
| one bank or many strategy | กลยุทธ์การเลือกใช้ memory bank เดียวหรือหลาย bank |
| project memory test | ชื่อโปรเจกต์ทดสอบในวิดีโอ (ใช้สีม่วงเป็นสีทดสอบชั่วคราว) |
| Wanderloots | ชื่อช่อง/นามแฝงของเจ้าของวิดีโอ (Callum) และชื่อ memory bank แบบ global |
ซับไตเติ้ลภาษาไทย
ดาวน์โหลดหรือดูซับทั้งหมด
1 00:00:00,000 --> 00:00:02,928 เราจะเห็นว่าเรามีความทรงจำอยู่แปดรายการ กด 2 00:00:02,928 --> 00:00:04,461 Refresh ครับ เยี่ยมมาก 3 00:00:04,461 --> 00:00:06,273 มีความทรงจำเพิ่มขึ้นมาแล้ว 4 00:00:06,273 --> 00:00:08,504 สิ่งที่เกิดขึ้นก็คือ ผมให้ Codex
เปิดดูซับไตเติ้ลทั้งหมด (780 segments)
1 00:00:00,000 --> 00:00:02,928 เราจะเห็นว่าเรามีความทรงจำอยู่แปดรายการ กด 2 00:00:02,928 --> 00:00:04,461 Refresh ครับ เยี่ยมมาก 3 00:00:04,461 --> 00:00:06,273 มีความทรงจำเพิ่มขึ้นมาแล้ว 4 00:00:06,273 --> 00:00:08,504 สิ่งที่เกิดขึ้นก็คือ ผมให้ Codex 5 00:00:08,504 --> 00:00:11,711 จำอะไรบางอย่างเอาไว้ มันเก็บความทรงจำนั้นไว้ใน 6 00:00:11,711 --> 00:00:14,708 Hindsight (ระบบหน่วยความจำสำหรับ AI agents) 7 00:00:14,708 --> 00:00:17,705 แล้ว Hermes ก็เรียกข้อมูลนั้นกลับมาได้ทันที 8 00:00:17,705 --> 00:00:20,284 เจ๋งมากเลยครับ พวกเราหลายคนใช้ agents 9 00:00:20,284 --> 00:00:21,376 หลายตัวพร้อมกัน 10 00:00:21,376 --> 00:00:24,653 แต่จะดีแค่ไหนถ้าเรามีวิธีแชร์บริบทระหว่างพวกมัน 11 00:00:24,653 --> 00:00:25,745 เพื่อให้ agent 12 00:00:25,745 --> 00:00:28,533 ตัวหนึ่งรู้ทันทีว่าอีกตัวกำลังทำอะไรอยู่ 13 00:00:28,533 --> 00:00:29,857 โดยไม่ต้องคัดลอกวาง 14 00:00:29,857 --> 00:00:34,667 ไม่ต้องอธิบายงานที่คุณกำลังทำซ้ำแล้วซ้ำเล่าทุกครั้งที่สลับไปมาระหว่าง 15 00:00:34,667 --> 00:00:36,828 agents สวัสดีครับ ผมชื่อ Callum 16 00:00:36,828 --> 00:00:39,198 หรือที่รู้จักกันในชื่อ Wanderloots 17 00:00:39,198 --> 00:00:41,080 ยินดีต้อนรับสู่วิดีโอวันนี้ 18 00:00:41,080 --> 00:00:44,983 ว่าด้วยวิธีเชื่อมต่อเครื่องมือหน่วยความจำตัวเดียวเข้ากับ 19 00:00:44,983 --> 00:00:47,423 AI agents หลายตัว ผมจะใช้ Hindsight 20 00:00:47,423 --> 00:00:50,490 เป็นตัวเก็บความทรงจำ และใช้ Codex กับ Hermes 21 00:00:50,490 --> 00:00:53,627 เป็นตัวอย่าง agents แต่ระบบนี้ใช้ได้กับ agent 22 00:00:53,627 --> 00:00:54,719 ทุกตัวครับ 23 00:00:54,719 --> 00:00:57,856 เป้าหมายของผมคือการโชว์ว่าระบบหน่วยความจำข้าม 24 00:00:57,856 --> 00:01:00,435 agent ทำงานยังไง ถึงแม้คุณจะไม่ได้ใช้ 25 00:01:00,435 --> 00:01:01,527 Hindsight, 26 00:01:01,527 --> 00:01:07,522 Hermes หรือ Codex ก็ยังได้เรียนรู้เยอะมากเกี่ยวกับวิธีออกแบบระบบหน่วยความจำสำหรับหลายๆ 27 00:01:07,522 --> 00:01:10,240 agent อย่างมีประสิทธิภาพ ในวิดีโอวันนี้ 28 00:01:10,240 --> 00:01:12,053 เราจะตั้งค่าระบบ Hindsight 29 00:01:12,053 --> 00:01:14,562 แบบเต็มรูปแบบและเจาะลึกการใช้งานจริง 30 00:01:14,562 --> 00:01:16,583 เชื่อมต่อกับ Hermes และ Codex 31 00:01:16,583 --> 00:01:19,023 จัดระเบียบทุกอย่างด้วย memory banks 32 00:01:19,023 --> 00:01:20,975 (ธนาคารหน่วยความจำ) และ tags 33 00:01:20,975 --> 00:01:22,299 (แท็กหรือป้ายกำกับ) 34 00:01:22,299 --> 00:01:25,157 แล้วก็ทดสอบการย้ายความทรงจำระหว่าง agents 35 00:01:25,157 --> 00:01:28,364 โดยอัตโนมัติ เอาล่ะ มาซิงก์ความทรงจำของ agents 36 00:01:28,364 --> 00:01:29,456 กันครับ 37 00:01:29,456 --> 00:01:32,871 ถ้าอยากรู้ทฤษฎีของระบบหน่วยความจำและวิธีตั้งค่าใน 38 00:01:32,871 --> 00:01:34,126 agent อย่าง Hermes 39 00:01:34,126 --> 00:01:37,054 ให้ดูวิดีโอก่อนหน้าของผมที่เจาะลึกทั้งระบบ 40 00:01:37,054 --> 00:01:38,146 (full stack) 41 00:01:38,146 --> 00:01:41,282 วันนี้มีแค่สองอย่างที่ต้องเข้าใจเพื่อเริ่มต้น 42 00:01:41,282 --> 00:01:44,419 นั่นคือตัวระบบ และวิธีที่มันทำงานภายในบทสนทนา 43 00:01:44,419 --> 00:01:45,511 สำหรับตัวระบบ 44 00:01:45,511 --> 00:01:49,345 ลองนึกภาพว่าคุณมีสตูดิโอส่วนตัวที่มีเวิร์กสเตชันหลายจุด 45 00:01:49,345 --> 00:01:51,855 ที่จุดหนึ่ง Codex กำลังช่วยเขียนโค้ด 46 00:01:51,855 --> 00:01:54,782 อีกจุดหนึ่ง Hermes ทำหน้าที่ผู้ช่วยส่วนตัว 47 00:01:54,782 --> 00:01:57,989 แต่ละเวิร์กสเตชันประกอบด้วยโมเดลที่ให้ความฉลาด 48 00:01:57,989 --> 00:01:59,081 กับ harness 49 00:01:59,081 --> 00:02:02,915 (โครงสร้างตัวแทนที่ให้เครื่องมือและสภาพแวดล้อมการทำงาน) 50 00:02:02,915 --> 00:02:04,007 แต่ agents 51 00:02:04,007 --> 00:02:06,795 เหล่านี้ขาดช่องทางส่งข้อมูลในบริบทถึงกัน 52 00:02:06,795 --> 00:02:07,887 Hindsight 53 00:02:07,887 --> 00:02:10,466 ทำหน้าที่เป็นสะพานเชื่อมระหว่างพวกมัน 54 00:02:10,466 --> 00:02:15,067 เป็นระบบหน่วยความจำที่ทำงานเหมือนสมุดบันทึกร่วมที่ส่งต่อกันระหว่าง 55 00:02:15,067 --> 00:02:16,670 agents ของคุณ Hindsight 56 00:02:16,670 --> 00:02:19,458 ดึงข้อมูลสำคัญจากบทสนทนากับทั้งสอง agent 57 00:02:19,458 --> 00:02:22,455 แล้วจัดระเบียบให้อ่านได้ทั้งคู่เมื่อต้องการ 58 00:02:22,455 --> 00:02:25,244 เอาละ มาตั้งค่าระบบนี้สำหรับหลายๆ agents 59 00:02:25,244 --> 00:02:28,380 กันครับ ถ้าวิดีโอนี้มีประโยชน์ ช่วยกด like กด 60 00:02:28,380 --> 00:02:31,447 subscribe ด้วยนะครับ ผมซาบซึ้งในกำลังใจจริงๆ 61 00:02:31,447 --> 00:02:33,120 ถ้าอยากสนับสนุนเพิ่มเติม 62 00:02:33,120 --> 00:02:36,187 ก็สามารถสมัครสมาชิกช่อง YouTube หรือ Patreon 63 00:02:36,187 --> 00:02:38,976 ของผมได้ครับ สมาชิกจะได้เข้าถึง insights 64 00:02:38,976 --> 00:02:41,206 เคล็ดลับ และชุดเครื่องมือ (kits) 65 00:02:41,206 --> 00:02:43,994 ที่ช่วยพัฒนาการจัดการความรู้และการใช้ AI 66 00:02:43,994 --> 00:02:45,877 รวมถึง Hindsight memory kit 67 00:02:45,877 --> 00:02:47,271 ที่ผมจัดทำขึ้นวันนี้ 68 00:02:47,271 --> 00:02:50,059 เพื่อให้ขั้นตอนทั้งหมดตั้งค่าได้ง่ายขึ้น 69 00:02:50,059 --> 00:02:53,544 คุณยังสามารถทำทุกอย่างที่ผมโชว์วันนี้ด้วยตัวเองได้ 70 00:02:53,544 --> 00:02:57,378 แต่ชุดเครื่องมือนี้จะช่วยให้ง่ายขึ้นถ้าคุณเริ่มจากศูนย์ 71 00:02:57,378 --> 00:02:59,539 และช่วยประหยัดเวลาให้คุณ เอาล่ะ 72 00:02:59,539 --> 00:03:01,630 นี่คือหน้าตาของ Hindsight ครับ 73 00:03:01,630 --> 00:03:04,418 นี่คือสิ่งที่เราจะตั้งค่าและเชื่อมต่อกับ 74 00:03:04,418 --> 00:03:06,509 agents หลายตัว ในวิดีโอที่แล้ว 75 00:03:06,509 --> 00:03:08,949 ผมตั้งค่าระบบนี้ให้ Hermes ตัวเดียว 76 00:03:08,949 --> 00:03:11,946 วันนี้เราจะตั้งค่า bank (ธนาคารหน่วยความจำ) 77 00:03:11,946 --> 00:03:15,083 ใหม่แบบ global user ซึ่งเป็นสิ่งที่ Hindsight 78 00:03:15,083 --> 00:03:17,802 แนะนำสำหรับผู้ใช้คนเดียว นักพัฒนาเดี่ยว 79 00:03:17,802 --> 00:03:19,126 หรือคนที่ใช้ agents 80 00:03:19,126 --> 00:03:21,705 หลายตัวสำหรับโปรเจกต์ที่เกี่ยวข้องกัน 81 00:03:21,705 --> 00:03:24,842 เป้าหมายคือแทนที่จะให้แค่ Hermes เชื่อมต่อกับ 82 00:03:24,842 --> 00:03:27,630 bank นี้แล้วสร้างความทรงจำตรงนี้ ผมจะให้ 83 00:03:27,630 --> 00:03:30,209 Codex, Claude Code, Gemini หรือ agent 84 00:03:30,209 --> 00:03:32,858 อื่นใดก็ตามที่อยากได้มาเชื่อมต่อที่นี่ 85 00:03:32,858 --> 00:03:34,531 มาเริ่มตั้งค่ากันเลยครับ 86 00:03:34,531 --> 00:03:37,319 สิ่งแรกที่ผมทำคือสร้างโฟลเดอร์ Hindsight 87 00:03:37,319 --> 00:03:38,411 memory kit 88 00:03:38,411 --> 00:03:42,594 ซึ่งเป็นโฟลเดอร์สำหรับจัดระเบียบไฟล์ทั้งหมดที่ผมจะใช้ตั้งค่า 89 00:03:42,594 --> 00:03:43,686 Hindsight 90 00:03:43,686 --> 00:03:46,613 แบบอัตโนมัติและเชื่อมต่อกับเครื่องมือต่างๆ 91 00:03:46,613 --> 00:03:49,192 ของผม ผมจะไม่ไล่ดูทุกไฟล์ตอนนี้นะครับ 92 00:03:49,192 --> 00:03:52,469 แต่ในนี้มีของเสริมบางอย่างที่ใช้หรือไม่ใช้ก็ได้ 93 00:03:52,469 --> 00:03:55,675 ตัวอย่างเช่น การตั้งค่าการสำรองข้อมูล (backup) 94 00:03:55,675 --> 00:03:57,557 อัตโนมัติของระบบหน่วยความจำ 95 00:03:57,557 --> 00:04:01,391 ปุ่มลัดคลิกเดียวเพื่อรีสตาร์ทระบบหน่วยความจำถ้ามันปิดลง 96 00:04:01,391 --> 00:04:02,924 วิธีใช้ Docker Compose 97 00:04:02,924 --> 00:04:06,828 เพื่อให้รันต่อเนื่องได้ง่ายขึ้นโดยไม่ต้องตั้งค่าทุกครั้ง 98 00:04:06,828 --> 00:04:09,616 และอีกหลายอย่างที่ผมจะพูดถึงต่อไป ตอนนี้ 99 00:04:09,616 --> 00:04:12,335 ขอเข้าไปใน memory kit นี้ก่อนครับ ต่อไป 100 00:04:12,335 --> 00:04:14,914 ผมแค่เช็คว่ามีสิ่งที่ต้องเตรียมครบไหม 101 00:04:14,914 --> 00:04:18,120 วันนี้ผมจะใช้ Docker, Python, Codex และ Hermes 102 00:04:18,120 --> 00:04:20,699 จะเห็นว่าทุกอย่างติดตั้งเรียบร้อยแล้ว 103 00:04:20,699 --> 00:04:22,233 ถ้าไม่แน่ใจวิธีติดตั้ง 104 00:04:22,233 --> 00:04:24,812 ผมมีวิดีโอที่ลงรายละเอียดแต่ละตัวครับ 105 00:04:24,812 --> 00:04:27,530 และผมก็รันคำสั่ง Hermes memory provider 106 00:04:27,530 --> 00:04:30,528 เพื่อโชว์ว่าตัวจัดการหน่วยความจำปัจจุบันคือ 107 00:04:30,528 --> 00:04:31,620 Memosyn 108 00:04:31,620 --> 00:04:35,454 ซึ่งเป็นหนึ่งในเครื่องมือที่ผมสอนติดตั้งในวิดีโอที่แล้ว 109 00:04:35,454 --> 00:04:38,381 วันนี้เราจะตั้งค่าให้ใช้ Hindsight แทนครับ 110 00:04:38,381 --> 00:04:41,588 เอาล่ะ สิ่งแรกที่ต้องสร้างคือ environment file 111 00:04:41,588 --> 00:04:43,261 (ไฟล์ตั้งค่าสภาพแวดล้อม) 112 00:04:43,261 --> 00:04:45,282 ซึ่งเพิ่งขึ้นมาทางด้านข้างนี่ 113 00:04:45,282 --> 00:04:48,280 ผมจะเปิดมันให้ดูครับ เหตุผลคือ ถ้ากลับไปที่ 114 00:04:48,280 --> 00:04:51,486 Hindsight สักครู่ จะเห็นว่า Hindsight instance 115 00:04:51,486 --> 00:04:54,274 นี้รันอยู่ที่ localhost:999 อย่างที่เห็น 116 00:04:54,274 --> 00:04:56,714 ตอนนี้ผมรันมันด้วย Docker container 117 00:04:56,714 --> 00:04:58,387 ที่ตั้งค่าไว้คราวที่แล้ว 118 00:04:58,387 --> 00:05:01,384 และผมสามารถจำกัดการเข้าถึง Docker container 119 00:05:01,384 --> 00:05:03,894 นี้และ control plane (แผงควบคุมกลาง) 120 00:05:03,894 --> 00:05:06,821 ได้ด้วยการสร้าง shared API key และรหัสเข้า 121 00:05:06,821 --> 00:05:09,679 control plane ผมจะสร้าง secrets (รหัสลับ) 122 00:05:09,679 --> 00:05:12,189 ตรงนี้แล้วเก็บไว้ใน environment file 123 00:05:12,189 --> 00:05:14,210 แปลว่าเมื่อรีสตาร์ท Hindsight 124 00:05:14,210 --> 00:05:17,207 รหัสลับเหล่านี้ก็จะยังอยู่ ผมจะสร้าง secret 125 00:05:17,207 --> 00:05:19,996 ขึ้นมาสักตัว ให้ดูหน้าตาก่อนแล้วจะลบทิ้ง 126 00:05:19,996 --> 00:05:22,575 แค่คัดลอกอันนี้ ไปแทนที่ด้วยสตริงยาวๆ 127 00:05:22,575 --> 00:05:25,502 นี้แล้วเซฟไฟล์ ทำตรงนี้กับตรงนี้ได้เลยครับ 128 00:05:25,502 --> 00:05:28,639 พอทำเสร็จ เราจะได้ environment file ที่มี API 129 00:05:28,639 --> 00:05:30,591 key สำหรับให้ Hermes, Codex, 130 00:05:30,591 --> 00:05:33,030 Claude Code หรือ connector ตัวอื่นๆ 131 00:05:33,030 --> 00:05:36,097 ที่อยากใช้กับ agent และอีกอันหนึ่งไว้ป้องกัน 132 00:05:36,097 --> 00:05:39,025 control plane ขั้นตอนถัดไป ผมจะเปิด docker 133 00:05:39,025 --> 00:05:42,092 compose file แล้วมีบางอย่างอยากโชว์ อย่างแรก 134 00:05:42,092 --> 00:05:44,392 คุณต้องมี LLM (โมเดลภาษาขนาดใหญ่) 135 00:05:44,392 --> 00:05:46,414 มาขับเคลื่อนวิธีที่ Hindsight 136 00:05:46,414 --> 00:05:48,226 บันทึกข้อมูลและไตร่ตรองมัน 137 00:05:48,226 --> 00:05:51,154 วันนี้ผมจะสาธิตสั้นๆ วิธีใช้การยืนยันตัวตน 138 00:05:51,154 --> 00:05:53,733 (authentication) ของ Codex จาก OpenAI 139 00:05:53,733 --> 00:05:54,825 ในวิดีโอที่แล้ว 140 00:05:54,825 --> 00:05:57,544 ผมสาธิตวิธีใช้โมเดลในเครื่องด้วย Ollama 141 00:05:57,544 --> 00:05:59,635 (โปรแกรมรันโมเดล AI ในเครื่อง) 142 00:05:59,635 --> 00:06:02,353 ตรงนี้คือที่ตั้งค่าโมเดลเฉพาะที่ต้องการ 143 00:06:02,353 --> 00:06:05,560 ตัวอย่างเช่น ผมวางแผนใช้ Terra เป็นค่าเริ่มต้น 144 00:06:05,560 --> 00:06:08,487 แต่จะเปลี่ยนเป็น Luna สำหรับขั้นตอน retain 145 00:06:08,487 --> 00:06:10,997 เพราะประหยัดกว่า retain (การจัดเก็บ) 146 00:06:10,997 --> 00:06:12,391 คือการบันทึกหรือจดจำ 147 00:06:12,391 --> 00:06:16,434 แล้วผมจะใช้โมเดลที่แรงกว่าสำหรับการรวมข้อมูลและการไตร่ตรอง 148 00:06:16,434 --> 00:06:19,431 มีตั้งค่าอีกเยอะในนี้ครับ ผมปล่อย embedding 149 00:06:19,431 --> 00:06:22,289 (การแปลงข้อมูลเป็นเวกเตอร์) แบบ local ไว้ 150 00:06:22,289 --> 00:06:24,659 อันนี้ใช้สำหรับดึงข้อมูลตอน recall 151 00:06:24,659 --> 00:06:27,587 และที่สำคัญที่สุดสำหรับการตั้งค่ากับ Codex 152 00:06:27,587 --> 00:06:29,260 คือต้องสร้าง environment 153 00:06:29,260 --> 00:06:32,466 ใหม่สำหรับการยืนยันตัวตน เพราะถ้าอยากใช้โควต้า 154 00:06:32,466 --> 00:06:35,533 Codex เดิมที่มีอยู่มาขับเคลื่อนโมเดลเหล่านี้ 155 00:06:35,533 --> 00:06:38,391 เราต้องตั้งค่าการยืนยันตัวตนแยกต่างหากให้ 156 00:06:38,391 --> 00:06:39,925 Hindsight ใช้เชื่อมต่อ 157 00:06:39,925 --> 00:06:41,807 นี่คือสิ่งที่แสดงอยู่ตรงนี้ 158 00:06:41,807 --> 00:06:43,898 เดี๋ยวจะโชว์วิธีทำงานให้ดูครับ 159 00:06:43,898 --> 00:06:45,989 จากนั้นเรามีสองพอร์ตอยู่ด้านบน 160 00:06:45,989 --> 00:06:49,195 พอร์ตแรกสร้างคอนเทนเนอร์ที่รัน Hindsight จริงๆ 161 00:06:49,195 --> 00:06:51,426 ส่วนพอร์ตที่สองคือ control plane 162 00:06:51,426 --> 00:06:56,375 ตรงนี้ใช้ดูความทรงจำที่มีอยู่และตั้งค่าเพิ่มเติมอีกมากที่เดี๋ยวจะพูดถึง 163 00:06:56,375 --> 00:06:59,442 และอย่างสุดท้ายที่สำคัญคือการตั้งค่า restart 164 00:06:59,442 --> 00:07:00,534 unless stopped 165 00:07:00,534 --> 00:07:02,904 (รีสตาร์ทอัตโนมัติเว้นแต่สั่งหยุด) 166 00:07:02,904 --> 00:07:05,623 แปลว่าแม้คอมพิวเตอร์ปิดไป พอเปิด Docker 167 00:07:05,623 --> 00:07:08,202 อีกครั้ง มันจะรีสตาร์ทเองโดยอัตโนมัติ 168 00:07:08,202 --> 00:07:10,781 ไม่ต้องมาปรับแต่งการตั้งค่า Hindsight 169 00:07:10,781 --> 00:07:13,918 ใหม่ด้วยมือ เอาล่ะ นี่คือ docker compose file 170 00:07:13,918 --> 00:07:17,054 ซึ่งคุณจะรันด้วยตัวเองทุกครั้งก็ได้ถ้าต้องการ 171 00:07:17,054 --> 00:07:19,773 ผมแค่คิดว่าตั้งค่าแค่ครั้งเดียวง่ายกว่า 172 00:07:19,773 --> 00:07:22,352 ผมมีไฟล์นี้แล้วก็จะสร้างคำสั่ง launch 173 00:07:22,352 --> 00:07:23,607 hindsight ตัวเดียว 174 00:07:23,607 --> 00:07:25,907 ซึ่งเป็นเหมือนทางลัดให้ผมเรียกใช้ 175 00:07:25,907 --> 00:07:29,044 ตอนนี้เราอยากเช็คว่า compose file ถูกจดจำ และ 176 00:07:29,044 --> 00:07:31,762 environment file มองเห็น ถ้าไม่มี error 177 00:07:31,762 --> 00:07:34,132 ก็พร้อมใช้งาน เป้าหมายคือให้ Codex 178 00:07:34,132 --> 00:07:36,920 ขับเคลื่อนการประมวลผลหน่วยความจำภายในของ 179 00:07:36,920 --> 00:07:39,151 Hindsight แต่ให้บริการ Hindsight 180 00:07:39,151 --> 00:07:41,172 มีการล็อกอินถาวรเป็นของตัวเอง 181 00:07:41,172 --> 00:07:44,100 เพื่อไม่ให้ไปกวนแอป Codex ที่ผมใช้อยู่แล้ว 182 00:07:44,100 --> 00:07:46,122 ขั้นแรกคือสร้าง Docker volume 183 00:07:46,122 --> 00:07:48,352 (พื้นที่เก็บข้อมูลแยกของ Docker) 184 00:07:48,352 --> 00:07:51,349 เพื่อให้มีระบบยืนยันตัวตน Codex เฉพาะสำหรับ 185 00:07:51,349 --> 00:07:52,674 Hindsight ใน Docker 186 00:07:52,674 --> 00:07:55,462 มันคือพื้นที่เก็บข้อมูลแยกต่างหาก ไม่ใช่ 187 00:07:55,462 --> 00:07:57,762 memory database ไม่ใช่ Codex ปกติ 188 00:07:57,762 --> 00:07:59,296 ไม่ใช่ไฟล์อะไรทั้งนั้น 189 00:07:59,296 --> 00:08:01,736 มันมีไว้เพื่อให้การยืนยันตัวตนทำงาน 190 00:08:01,736 --> 00:08:04,872 เราจะได้เข้าสู่ระบบ Hindsight ด้วยบัญชี Codex 191 00:08:04,872 --> 00:08:08,079 ของเรา ขั้นต่อไป เราจะสร้างการยืนยันตัวตนภายใน 192 00:08:08,079 --> 00:08:11,285 volume แล้วกด run ตรงนี้จะเริ่ม node container 193 00:08:11,285 --> 00:08:12,888 แล้วดาวน์โหลด Codex CLI 194 00:08:12,888 --> 00:08:14,631 อย่างเป็นทางการลงไปข้างใน 195 00:08:14,631 --> 00:08:17,628 เพื่อให้เรายืนยันตัวตน Codex ได้จริง เยี่ยม 196 00:08:17,628 --> 00:08:18,721 ใช้ได้ 197 00:08:18,721 --> 00:08:22,136 มันให้ลิงก์มาให้เราเข้าสู่ระบบเพื่อยืนยันบัญชีนี้ 198 00:08:22,136 --> 00:08:25,273 จากนั้นผมจะเอาโค้ดที่มันให้มา แล้วกด continue 199 00:08:25,273 --> 00:08:27,852 เกร็ดเล็กน้อย ถ้าขั้นนี้พลาดสำหรับคุณ 200 00:08:27,852 --> 00:08:31,058 อาจต้องไปเปลี่ยนการตั้งค่าใน ChatGPT เพื่อเปิด 201 00:08:31,058 --> 00:08:33,986 device code authentication ใน Codex เยี่ยม 202 00:08:33,986 --> 00:08:36,495 เรียบร้อย มันบอกว่าเข้าสู่ระบบสำเร็จ 203 00:08:36,495 --> 00:08:39,702 ผมจะรีบเช็คว่าเข้าสู่ระบบถูกต้อง อ๋อ มันบอกว่า 204 00:08:39,702 --> 00:08:42,769 Codex login พร้อมแล้ว สรุปคือเราสร้าง volume 205 00:08:42,769 --> 00:08:45,418 แยกที่ยืนยันบัญชี Codex ของผมเรียบร้อย 206 00:08:45,418 --> 00:08:48,624 ทำให้ตอนนี้รัน Hindsight ผ่าน Docker container 207 00:08:48,624 --> 00:08:50,924 โดยใช้บัญชี Codex ได้ ย้ำอีกครั้ง 208 00:08:50,924 --> 00:08:53,922 ถ้าอยากได้ก็รันในเครื่องเหมือนวิดีโอที่แล้ว 209 00:08:53,922 --> 00:08:55,525 หรือจะกรอก API key ตรงๆ 210 00:08:55,525 --> 00:08:57,477 ก็ได้ถ้าอยากทดลองใช้แบบง่ายๆ 211 00:08:57,477 --> 00:09:00,962 ผมแค่อยากเข้าสู่ระบบด้วยโควต้า Codex ที่มีอยู่เฉยๆ 212 00:09:00,962 --> 00:09:04,029 ทำไมจะไม่ล่ะ พอ Hindsight เชื่อมต่อกับ Codex 213 00:09:04,029 --> 00:09:06,887 และมี LLM พร้อมขับเคลื่อนแล้ว ถึงเวลาเปิด 214 00:09:06,887 --> 00:09:10,093 Hindsight จริงๆ มาทำกันเลยครับ ในวิดีโอที่แล้ว 215 00:09:10,093 --> 00:09:13,300 ผมเปิด Hindsight ด้วยการพิมพ์คำสั่ง docker run 216 00:09:13,300 --> 00:09:16,367 ซึ่งสร้างสิ่งนี้ขึ้นมา จะเห็นว่ามันมีไฟล์และ 217 00:09:16,367 --> 00:09:18,040 logs นี่คือข้อมูลทั้งหมด 218 00:09:18,040 --> 00:09:21,943 นี่คือจุดที่เราเข้าถึงระบบหน่วยความจำจริงและเชื่อมต่อกับ 219 00:09:21,943 --> 00:09:23,756 memory bank อย่างที่ผมโชว์ 220 00:09:23,756 --> 00:09:27,450 แต่ถ้าคุณไม่ถนัดเทคนิคหรือเป็นแบบผมที่ไม่อยากจำคำสั่ง 221 00:09:27,450 --> 00:09:28,984 docker เก็บไว้ทุกครั้ง 222 00:09:28,984 --> 00:09:32,817 เราสามารถเปลี่ยนมันเป็นปุ่มเดียวเพื่อให้เปิดใช้งานง่ายๆ 223 00:09:32,817 --> 00:09:35,954 ปุ่มดับเบิลคลิกนี้จริงๆ แล้วแค่รันสคริปต์ชื่อ 224 00:09:35,954 --> 00:09:38,603 start hindsight ซึ่งรัน docker compose 225 00:09:38,603 --> 00:09:40,903 คุณจะรันด้วยคำสั่ง docker compose 226 00:09:40,903 --> 00:09:43,064 ปกติก็ได้เหมือนกัน ผมปิด Docker 227 00:09:43,064 --> 00:09:45,852 ตัวเก่าแล้วก็กด setup hindsight อีกครั้ง 228 00:09:45,852 --> 00:09:48,919 เอาล่ะ ดูเหมือนทุกอย่างโอเค กลับมาที่ Docker 229 00:09:48,919 --> 00:09:51,986 container ครับ เยี่ยม จะเห็นว่าเรามี compose 230 00:09:51,986 --> 00:09:54,217 stack ใหม่อยู่ตรงนี้ ถ้ากดตรงนี้ 231 00:09:54,217 --> 00:09:56,726 มันจะเปิดขึ้นมาแล้วพาไปที่ Hindsight 232 00:09:56,726 --> 00:09:59,306 สคริปต์นี้จริงๆ แล้วแค่เช็คว่า Docker 233 00:09:59,306 --> 00:10:02,094 ติดตั้งแล้ว เช็คว่า env file อยู่ครบ ถ้า 234 00:10:02,094 --> 00:10:04,812 Docker Desktop ยังไม่รัน มันก็จะเปิดให้ 235 00:10:04,812 --> 00:10:07,949 จากนั้นรัน compose เพื่อเริ่มคอนเทนเนอร์ รอจน 236 00:10:07,949 --> 00:10:10,528 Hindsight ขึ้น แล้วเปิด control plane 237 00:10:10,528 --> 00:10:12,759 จะเห็นว่ามันบล็อกไม่ให้ผมเข้าถึง 238 00:10:12,759 --> 00:10:15,198 เพราะต้องกรอกรหัสเข้า control plane 239 00:10:15,198 --> 00:10:18,126 ที่เราใส่ไว้ใน environment file ถ้าอยากรู้ 240 00:10:18,126 --> 00:10:20,984 นี่คือสิ่งที่คุณจะรันตามปกติสำหรับ docker 241 00:10:20,984 --> 00:10:22,076 compose 242 00:10:22,076 --> 00:10:25,980 ผมแค่รวมทั้งหมดนี้กับอีกสองสามอย่างไว้ในสคริปต์ของมันเอง 243 00:10:25,980 --> 00:10:28,628 ทีนี้ไปเอา environment key ที่เซฟไว้ใน 244 00:10:28,628 --> 00:10:31,835 environment file มาวางแล้วกด sign in เรียบร้อย 245 00:10:31,835 --> 00:10:34,972 ผมเข้าสู่ระบบ Hindsight ได้แล้ว มันยังมี bank 246 00:10:34,972 --> 00:10:36,064 เก่าอยู่ 247 00:10:36,064 --> 00:10:39,898 แต่เราเพิ่มชั้นการยืนยันตัวตนด้วยการตั้งค่าใหม่ที่รันใน 248 00:10:39,898 --> 00:10:43,104 Docker แล้ว พอเข้าสู่ระบบ Hindsight ได้แล้ว มี 249 00:10:43,104 --> 00:10:45,335 API เชื่อมแล้ว มี LLM เชื่อมแล้ว 250 00:10:45,335 --> 00:10:48,332 ขั้นต่อไปคือสร้าง memory bank ใหม่สำหรับ AI 251 00:10:48,332 --> 00:10:50,632 agents หลายตัว อย่างเช่นใน Hermes 252 00:10:50,632 --> 00:10:53,490 นี่คือโปรไฟล์ที่ผมตั้งไว้สำหรับ Hindsight 253 00:10:53,490 --> 00:10:56,487 เฉพาะ ซึ่งเดี๋ยวจะเปลี่ยนให้เป็นค่าเริ่มต้น 254 00:10:56,487 --> 00:10:59,415 ค่าเริ่มต้นตอนนี้ คุณจะเห็นว่าผมมี bank ID 255 00:10:59,415 --> 00:11:02,412 เป็น Hermes อยู่ คุณไม่จำเป็นต้องสร้าง bank 256 00:11:02,412 --> 00:11:05,410 ภายใน Hindsight ตรงๆ ตรงที่เห็นคำว่า create 257 00:11:05,410 --> 00:11:06,502 new bank 258 00:11:06,502 --> 00:11:09,639 เพราะมันจะสร้างให้อัตโนมัติถ้าเราใส่ไว้ตรงนี้ 259 00:11:09,639 --> 00:11:12,706 แต่มาสร้างตรงนี้กันดีกว่า จะได้เห็นหน้าตามัน 260 00:11:12,706 --> 00:11:15,842 มีตัวเลือก import จากเทมเพลตด้วย ผมจะตั้งชื่อ 261 00:11:15,842 --> 00:11:19,049 bank นี้ว่า Wanderloots สำหรับ memory bank แบบ 262 00:11:19,049 --> 00:11:21,628 global user ของผม กด create เรียบร้อย 263 00:11:21,628 --> 00:11:24,765 จะเห็นว่า bank นี้ยังไม่มีความทรงจำ ถ้าสลับไป 264 00:11:24,765 --> 00:11:27,204 Hermes มันจะโหลดความทรงจำของอีกฝั่ง 265 00:11:27,204 --> 00:11:29,714 เรากำลังเริ่มต้นด้วย bank ใหม่เอี่ยม 266 00:11:29,714 --> 00:11:32,641 ถ้าอยากรู้ว่าควรมี bank เดียวหรือหลาย bank 267 00:11:32,641 --> 00:11:34,384 เช่น ความสามารถสร้าง bank 268 00:11:34,384 --> 00:11:36,475 อัตโนมัติสำหรับทุกโปรเจกต์โค้ด 269 00:11:36,475 --> 00:11:39,473 ผมแนะนำให้อ่านบทความเรื่อง one bank or many 270 00:11:39,473 --> 00:11:41,564 strategy Hindsight มีเอกสารดีๆ 271 00:11:41,564 --> 00:11:44,212 เยอะมากที่สอนอะไรผมหลายอย่าง แนวคิดคือ 272 00:11:44,212 --> 00:11:47,001 ถ้าอยากได้ global bank ที่ใช้กับทุกอย่าง 273 00:11:47,001 --> 00:11:49,928 มันเหมาะกับผู้ใช้คนเดียวหรือนักพัฒนาเดี่ยว 274 00:11:49,928 --> 00:11:54,180 เหมาะถ้าคุณอยากให้ทุกโปรเจกต์หลอมรวมกันในระบบหน่วยความจำเดียว 275 00:11:54,180 --> 00:11:57,805 แต่ถ้าคุณมีโปรเจกต์โค้ดหลายอันที่ไม่เกี่ยวข้องกันเลย 276 00:11:57,805 --> 00:12:00,942 คุณอาจอยากใช้ bank แยกต่อโปรเจกต์หรือต่อ repo 277 00:12:00,942 --> 00:12:04,009 จุดสำคัญคือ bank เป็นขอบเขตแข็ง (hard limit) 278 00:12:04,009 --> 00:12:07,076 ที่ไม่สามารถเข้าถึงข้ามกันได้ อย่างที่เห็นใน 279 00:12:07,076 --> 00:12:10,143 Hermes ผมเลือกได้แค่ Hermes เป็น memory bank 280 00:12:10,143 --> 00:12:12,234 นั้น ไม่สามารถเชื่อมหลาย banks 281 00:12:12,234 --> 00:12:14,953 เข้ากับโปรไฟล์เดียวกันได้ คุณจึงมี bank 282 00:12:14,953 --> 00:12:17,532 ต่างกันสำหรับแต่ละ Hermes profile ได้ 283 00:12:17,532 --> 00:12:20,181 ถ้าต้องการ คล้ายกับแยกโปรไฟล์ต่อผู้ใช้ 284 00:12:20,181 --> 00:12:22,829 แต่สำหรับผม ตอนนี้จะใช้แบบ global ก่อน 285 00:12:22,829 --> 00:12:25,408 เพราะอยากให้มีผู้ใช้คนเดียวที่ agents 286 00:12:25,408 --> 00:12:27,360 ทั้งหมดเข้าใจและทำงานด้วยได้ 287 00:12:27,360 --> 00:12:29,660 และไม่จำเป็นต้องเป็นแค่คุณคนเดียว 288 00:12:29,660 --> 00:12:32,867 คุณสามารถตั้งค่า เช่น ผมมี Hindsight container 289 00:12:32,867 --> 00:12:36,073 รันอยู่ตรงนี้ ผมสามารถเปิดบริการผ่าน Tailscale 290 00:12:36,073 --> 00:12:39,977 แล้วให้คนอื่นเชื่อมต่อเข้ามาในระบบหน่วยความจำเดียวนี้ได้ 291 00:12:39,977 --> 00:12:42,417 โดยแต่ละคนได้ memory bank ของตัวเอง 292 00:12:42,417 --> 00:12:45,344 ผมเป็นคนรัน Hindsight memory container นี้ 293 00:12:45,344 --> 00:12:46,436 ส่วน Taylor 294 00:12:46,436 --> 00:12:49,155 คู่หมั้นของผมก็เชื่อมต่อจากคอมของเธอได้ 295 00:12:49,155 --> 00:12:51,385 แบบนี้คนเดียวก็ขับเคลื่อนระบบได้ 296 00:12:51,385 --> 00:12:54,104 แต่ทุกอย่างถูกแยกอย่างง่ายดายด้วย banks 297 00:12:54,104 --> 00:12:57,589 ถ้าอยากรู้วิธีเชื่อมต่อหลายอุปกรณ์เข้ากับระบบเดียว 298 00:12:57,589 --> 00:13:00,377 ลองดูวิดีโอ workflow ชื่อ one agent many 299 00:13:00,377 --> 00:13:03,514 devices ของผม เพราะมันทำงานคล้ายกันมากระหว่าง 300 00:13:03,514 --> 00:13:04,908 Hindsight กับ Hermes 301 00:13:04,908 --> 00:13:07,627 เดี๋ยวผมจะโชว์วิธีตั้งค่าการแยกแบบอ่อนๆ 302 00:13:07,627 --> 00:13:10,694 ด้วยการเพิ่ม tags (ป้ายกำกับ) แยกตามโปรเจกต์ 303 00:13:10,694 --> 00:13:13,621 เรื่องนั้นเกี่ยวกับการตั้งค่าของ Hindsight 304 00:13:13,621 --> 00:13:14,876 ไปดูกันสักครู่ครับ 305 00:13:14,876 --> 00:13:17,873 ข้อดีอย่างหนึ่งของการตั้งค่า memory bank ใน 306 00:13:17,873 --> 00:13:19,058 Hindsight ก่อนคือ 307 00:13:19,058 --> 00:13:21,707 เราสามารถเข้าไปแก้ไขการตั้งค่าของ bank 308 00:13:21,707 --> 00:13:24,426 นี้ก่อนที่ agent ใดจะเชื่อมต่อ พอ agent 309 00:13:24,426 --> 00:13:25,518 เชื่อมต่อเข้ามา 310 00:13:25,518 --> 00:13:28,097 มันก็ได้การตั้งค่าที่เตรียมไว้ครบแล้ว 311 00:13:28,097 --> 00:13:30,397 มาลองตั้งค่าบางอย่างกัน ผมจะกดที่ 312 00:13:30,397 --> 00:13:33,604 configuration ตรงนี้ ผมแนะนำให้เปิด extraction 313 00:13:33,604 --> 00:13:36,113 mode (โหมดการดึงข้อมูล) เป็น concise 314 00:13:36,113 --> 00:13:38,971 (แบบกระชับ) ไว้ก่อน มันลดการใช้งาน tokens 315 00:13:38,971 --> 00:13:41,132 และทำให้ความทรงจำตรงเป้ามากขึ้น 316 00:13:41,132 --> 00:13:43,920 อันนี้อยู่ในส่วน retain ถ้าไปดูเอกสารของ 317 00:13:43,920 --> 00:13:46,708 Hindsight สักครู่ จะเห็นว่านี่คือสิ่งที่ 318 00:13:46,708 --> 00:13:49,009 retain ทำ คุณมีบทสนทนา แล้ว agent 319 00:13:49,009 --> 00:13:52,006 ดึงข้อเท็จจริง ระบุ entities (บุคคล สถานที่ 320 00:13:52,006 --> 00:13:54,027 และแนวคิด) สร้างความเชื่อมโยง 321 00:13:54,027 --> 00:13:57,094 แล้วเพิ่มเข้าไปใน memory bank สรุปคือ retain 322 00:13:57,094 --> 00:14:00,092 ดึงข้อมูลและบริบทจากบทสนทนากับ agent ของคุณ 323 00:14:00,092 --> 00:14:03,229 เก็บเข้าเซิร์ฟเวอร์ แล้วเพิ่มเข้า memory bank 324 00:14:03,229 --> 00:14:06,644 ซึ่งรวมข้อมูลทั้งหมดที่เดี๋ยวจะลงรายละเอียดทีหลัง 325 00:14:06,644 --> 00:14:09,432 ส่วน recall ทำตรงกันข้าม มันดึงข้อมูลจาก 326 00:14:09,432 --> 00:14:12,011 memory bank เข้าไปในบริบทของ AI agent 327 00:14:12,011 --> 00:14:14,869 หน้าตาของ recall คือ ถ้าคุณถามคำถาม agent 328 00:14:14,869 --> 00:14:17,936 มันจะ query ดึงความหมายเชิงความหมาย keywords 329 00:14:17,936 --> 00:14:20,097 ข้อมูลแบบกราฟ และข้อมูลเชิงเวลา 330 00:14:20,097 --> 00:14:22,328 มาหลอมรวมเป็นคำตอบเดียว เข้ารหัส 331 00:14:22,328 --> 00:14:25,534 แล้วส่งผลลัพธ์ให้คุณ นี่คือเหตุผลที่ Hindsight 332 00:14:25,534 --> 00:14:28,392 เป็นหนึ่งในระบบที่ทรงพลัง เพราะการตั้งค่า 333 00:14:28,392 --> 00:14:29,484 recall 334 00:14:29,484 --> 00:14:34,712 ตรงนี้ที่ดึงกลไกฐานข้อมูลหลากหลายแบบมาสังเคราะห์เป็นคำตอบเดียวจากหลายรูปแบบ 335 00:14:34,712 --> 00:14:37,779 ส่วน reflect (การไตร่ตรอง) ต่างออกไปเล็กน้อย 336 00:14:37,779 --> 00:14:40,846 มันค้นหา mental models (แบบจำลองความคิด) และ 337 00:14:40,846 --> 00:14:42,519 observations (ข้อสังเกต) 338 00:14:42,519 --> 00:14:44,192 โดยใช้ระบบที่ซับซ้อนกว่า 339 00:14:44,192 --> 00:14:46,005 ซึ่งรวบรวมหลักฐานอัตโนมัติ 340 00:14:46,005 --> 00:14:48,862 ใช้การดึงข้อมูลแบบลำดับชั้น (hierarchical 341 00:14:48,862 --> 00:14:50,814 retrieval) อ้างอิงแหล่งที่มา 342 00:14:50,814 --> 00:14:52,627 มีลูปการทำงานทั้งชุดตรงนี้ 343 00:14:52,627 --> 00:14:55,833 แนะนำให้ลองศึกษาเพิ่มเติมถ้าอยากรู้มากขึ้นครับ 344 00:14:55,833 --> 00:14:56,948 โดยเฉพาะ reflect 345 00:14:56,948 --> 00:14:59,109 มักต้องใช้โมเดลที่แรงขึ้นอีกนิด 346 00:14:59,109 --> 00:15:01,549 ยังมีอีกหลายอย่าง เช่น observations 347 00:15:01,549 --> 00:15:04,546 เมื่อคุณมีความทรงจำที่ถูกเก็บแล้ว Hindsight 348 00:15:04,546 --> 00:15:06,289 จะรวมมันเป็น observations 349 00:15:06,289 --> 00:15:07,962 อัตโนมัติโดยตัดรายการซ้ำ 350 00:15:07,962 --> 00:15:11,029 และติดตามการอ้างอิงและที่มาของข้อมูลตลอดเวลา 351 00:15:11,029 --> 00:15:14,235 น่าสนใจทีเดียวครับ กลับมาที่การตั้งค่าอีกครั้ง 352 00:15:14,235 --> 00:15:17,442 เพราะนอกจากจะตั้ง extraction mode เป็น concise 353 00:15:17,442 --> 00:15:20,439 แล้ว เรายังมีหลายกลยุทธ์ได้ด้วย มีแบบสำหรับ 354 00:15:20,439 --> 00:15:23,158 Codex แบบสำหรับ Hermes มีอะไรได้หลายแบบ 355 00:15:23,158 --> 00:15:25,876 แต่เรายังมีส่วนที่เรียกว่า mission ด้วย 356 00:15:25,876 --> 00:15:28,873 นี่คือส่วนสำคัญที่สุดส่วนหนึ่ง มองมันเหมือน 357 00:15:28,873 --> 00:15:30,686 system prompt (คำสั่งระบบ) 358 00:15:30,686 --> 00:15:33,753 สำหรับการจัดเก็บข้อมูลของคุณ มันคือวิธีชี้นำ 359 00:15:33,753 --> 00:15:36,123 LLM โดยไม่ต้องแทนที่กฎการดึงข้อมูล 360 00:15:36,123 --> 00:15:38,772 แค่ช่วยให้มันดีขึ้น นี่เป็นแค่ตัวอย่าง 361 00:15:38,772 --> 00:15:41,142 แนะนำให้ปรับแต่ง เปลี่ยนแปลง ทดลอง 362 00:15:41,142 --> 00:15:44,139 จนกว่าจะได้แบบที่ใช่สำหรับคุณ ต่อไปคือ free 363 00:15:44,139 --> 00:15:47,206 form entities ตรงนี้เราจะให้ระบบดึง entities 364 00:15:47,206 --> 00:15:50,412 ซึ่งก็คือคน สถานที่ และแนวคิดออกมาโดยอัตโนมัติ 365 00:15:50,412 --> 00:15:52,852 ผมจะเปิดไว้ แล้วยังมี entity labels 366 00:15:52,852 --> 00:15:56,407 เป็นตัวเลือกเสริมที่สร้างป้ายกำกับเพิ่มจากข้อมูลที่ 367 00:15:56,407 --> 00:15:58,498 agent กำลังจัดเก็บระหว่างสนทนา 368 00:15:58,498 --> 00:16:01,426 ตัวอย่างอันที่ผมสนใจ ตรงนี้ผมจะเปลี่ยนเป็น 369 00:16:01,426 --> 00:16:03,099 text ตั้งชื่อว่า project 370 00:16:03,099 --> 00:16:05,190 แล้วให้คำใบ้กับตัวดึงข้อมูลว่า 371 00:16:05,190 --> 00:16:07,002 โปรเจกต์หลักหรือ code base 372 00:16:07,002 --> 00:16:09,442 ที่เกี่ยวข้องกับความทรงจำนี้คืออะไร 373 00:16:09,442 --> 00:16:11,185 ให้ใช้ชื่อมาตรฐานที่คงที่ 374 00:16:11,185 --> 00:16:13,903 และข้ามไปถ้าไม่ชัดเจนว่าเป็นโปรเจกต์ไหน 375 00:16:13,903 --> 00:16:14,995 ความหมายคือ 376 00:16:14,995 --> 00:16:18,271 สมมติผมทำงานกับโปรเจกต์โค้ดอันหนึ่งชื่อโปรเจกต์ 377 00:16:18,271 --> 00:16:20,851 A ถ้าโฟลเดอร์ที่ผมทำงานชื่อโปรเจกต์ A 378 00:16:20,851 --> 00:16:21,943 Hindsight 379 00:16:21,943 --> 00:16:26,752 ก็มีโอกาสที่จะจัดเก็บข้อมูลและติดป้ายด้วยชื่อโปรเจกต์นั้นโดยอัตโนมัติ 380 00:16:26,752 --> 00:16:29,819 สิ่งที่เราทำได้คือเปิด toggle ที่ tag ตรงนี้ 381 00:16:29,819 --> 00:16:32,538 ถ้ากลับไปดูกลยุทธ์ memory bank ถ้า bank 382 00:16:32,538 --> 00:16:35,605 เป็นขอบเขตของการ recall คุณจะไม่สามารถ query 383 00:16:35,605 --> 00:16:38,533 ข้าม bank ได้เลย เราจึงใช้ tags ภายใน bank 384 00:16:38,533 --> 00:16:40,275 เดียวเพื่อแบ่งเขตแบบอ่อนๆ 385 00:16:40,275 --> 00:16:43,133 ที่สามารถกรองและอ้างอิงข้ามกันได้ การตั้ง 386 00:16:43,133 --> 00:16:45,991 entity label กับโปรเจกต์ อาจไม่ได้ผล 100% 387 00:16:45,991 --> 00:16:47,525 แต่เพิ่มโอกาสที่ agent 388 00:16:47,525 --> 00:16:49,895 จะติดป้ายความทรงจำด้วยชื่อโปรเจกต์ 389 00:16:49,895 --> 00:16:52,962 อีกตัวอย่างหนึ่ง เราสามารถเพิ่ม label ที่สอง 390 00:16:52,962 --> 00:16:55,820 ชื่อว่า harness โดยบอกว่า ให้ระบุ harness 391 00:16:55,820 --> 00:16:58,677 ที่สร้างความทรงจำนี้ เฉพาะเมื่อระบุชัดเจน 392 00:16:58,677 --> 00:17:01,814 ไม่เช่นนั้นข้ามไป เราสามารถเปลี่ยนเป็น single 393 00:17:01,814 --> 00:17:02,906 value ได้ 394 00:17:02,906 --> 00:17:05,764 สิ่งที่ทำคือกำหนดแท็กที่เป็นไปได้ล่วงหน้า 395 00:17:05,764 --> 00:17:08,831 เพื่อที่เวลาเก็บความทรงจำใหม่ เราจะเห็น เช่น 396 00:17:08,831 --> 00:17:11,201 user Hermes profile แล้วเพิ่ม tags 397 00:17:11,201 --> 00:17:12,456 ตามข้อมูลที่เข้ามา 398 00:17:12,456 --> 00:17:16,081 เพื่อปรับปรุงระบบกรองที่อยากได้ในความทรงจำที่ถูกเก็บ 399 00:17:16,081 --> 00:17:18,590 เอาล่ะ ผมจะกด save changes กับอันนี้ 400 00:17:18,590 --> 00:17:20,333 ต่อไปลงไปที่ observations 401 00:17:20,333 --> 00:17:23,679 ซึ่งเป็นที่ควบคุมว่าข้อเท็จจริงถูกสังเคราะห์เป็น 402 00:17:23,679 --> 00:17:26,606 observations แบบถาวรอย่างไร อย่างที่โชว์ใน 403 00:17:26,606 --> 00:17:27,698 workflow ตรงนี้ 404 00:17:27,698 --> 00:17:30,417 มันคือรูปแบบหนึ่งของการรวมความรู้ จริงๆ 405 00:17:30,417 --> 00:17:32,647 แล้วคือวิธีระบุรูปแบบในงานของคุณ 406 00:17:32,647 --> 00:17:36,830 ซึ่งเป็นหนึ่งในเหตุผลที่คุ้มค่าที่สุดในการใช้เครื่องมืออย่าง 407 00:17:36,830 --> 00:17:39,897 Hindsight ผมจะเพิ่ม mission statement ตรงนี้ 408 00:17:39,897 --> 00:17:41,988 แนะนำให้ลองคุยกับ agent ของคุณ 409 00:17:41,988 --> 00:17:44,916 ดูว่าเป้าหมายของคุณคืออะไร อันนี้จะเปลี่ยน 410 00:17:44,916 --> 00:17:47,913 mission ของคุณ ผมปล่อยค่าเริ่มต้นไว้ก่อน กด 411 00:17:47,913 --> 00:17:51,050 save changes ต่อไปลงไปที่ reflect อย่างที่บอก 412 00:17:51,050 --> 00:17:53,141 reflect เป็นระบบที่ซับซ้อนกว่า 413 00:17:53,141 --> 00:17:55,859 ทำงานเป็นลูปเพื่อรวบรวมหลักฐานอัตโนมัติ 414 00:17:55,859 --> 00:17:59,623 แล้วใช้เหตุผลกับทั้งหมดเพื่อให้คำตอบที่อิงบริบทมากขึ้น 415 00:17:59,623 --> 00:18:01,854 มันคือชั้นการให้เหตุผลที่ลึกขึ้น 416 00:18:01,854 --> 00:18:04,015 เชื่อมโยงความทรงจำที่เกี่ยวข้อง 417 00:18:04,015 --> 00:18:09,173 โดยไม่เสแสร้งว่าความทรงจำที่ไม่แน่นอนหรือเก่าเป็นข้อเท็จจริงที่ตรวจสอบแล้ว 418 00:18:09,173 --> 00:18:11,682 ผมจะเพิ่มเป็น memory statement ของผม 419 00:18:11,682 --> 00:18:16,144 โดยระบุว่าเป็นผู้ช่วยหน่วยความจำส่วนตัวและด้านเทคนิคข้ามโปรเจกต์ 420 00:18:16,144 --> 00:18:18,444 การระบุระดับความมั่นใจก็มีค่ายิ่ง 421 00:18:18,444 --> 00:18:21,511 ผมใช้ค่าเริ่มต้นก่อน คุณเปลี่ยนได้ถ้าต้องการ 422 00:18:21,511 --> 00:18:22,905 แนะนำให้ศึกษาลึกลงไป 423 00:18:22,905 --> 00:18:25,902 ต่อไปคือขั้นถัดไปของการตั้งค่า bank นั่นคือ 424 00:18:25,902 --> 00:18:28,412 memory defense (การป้องกันความทรงจำ) 425 00:18:28,412 --> 00:18:31,967 อันนี้ให้คุณตั้งค่าให้เนื้อหาที่ละเอียดอ่อนถูกลบออก 426 00:18:31,967 --> 00:18:34,197 (redact) หรือกักกัน (quarantine) 427 00:18:34,197 --> 00:18:37,264 ตามที่คุณต้องการ เป็นตัวเลือกที่ดีให้เปิดไว้ 428 00:18:37,264 --> 00:18:40,401 ถ้าไม่อยากให้ agent จำความลับอะไรก็เปิดอันนี้ 429 00:18:40,401 --> 00:18:43,608 เลือกได้ว่าจะ redact, block หรือ allow ผมเลือก 430 00:18:43,608 --> 00:18:46,605 redact ไว้ก่อน เอาล่ะ รู้ว่าการตั้งค่า bank 431 00:18:46,605 --> 00:18:49,672 เยอะไปหน่อย แต่นี่เป็นงานครั้งเดียวที่ต้องทำ 432 00:18:49,672 --> 00:18:51,345 ยังมีอีกมากที่เจาะลึกได้ 433 00:18:51,345 --> 00:18:52,948 แนะนำให้ไล่อ่านเอกสารดู 434 00:18:52,948 --> 00:18:54,830 เพราะตามกรณีการใช้งานของคุณ 435 00:18:54,830 --> 00:18:57,758 อาจมีอะไรที่อยากเปิดเพิ่ม ตอนนี้ Hindsight 436 00:18:57,758 --> 00:19:00,546 พร้อมแล้ว รันอยู่ใน Docker container นี้ 437 00:19:00,546 --> 00:19:03,543 เข้าถึง control plane ได้ มีการตั้งค่า bank 438 00:19:03,543 --> 00:19:06,610 ครบ ลองทดสอบสั้นๆ ว่าใช้งานได้ไหม ผมจะกด add 439 00:19:06,610 --> 00:19:09,608 document แล้วเพิ่มอะไรประมาณนี้อย่างรวดเร็ว 440 00:19:09,608 --> 00:19:11,141 เยี่ยม มันเพิ่มได้แล้ว 441 00:19:11,141 --> 00:19:14,069 จะเห็นว่ามีข้อมูลนี้อยู่ ทีนี้ไปที่ recall 442 00:19:14,069 --> 00:19:16,439 พิมพ์ searching memories เรียบร้อย 443 00:19:16,439 --> 00:19:18,948 มันสามารถดึงความทรงจำกลับมาและตอบว่า 444 00:19:18,948 --> 00:19:22,015 ระบบหน่วยความจำของ Wanderloots ใช้ Hindsight 445 00:19:22,015 --> 00:19:24,316 bank ร่วมหนึ่งอันชื่อ Wanderloots 446 00:19:24,316 --> 00:19:27,034 นี่พิสูจน์ว่าการเรียกใช้งานทั้งหมดทำงาน 447 00:19:27,034 --> 00:19:29,613 ถ้าไปที่ settings แล้วเข้า background 448 00:19:29,613 --> 00:19:32,053 operations จะเห็นว่ามันรันได้ตรงนี้ 449 00:19:32,053 --> 00:19:35,259 แปลว่ามันเชื่อมต่อกับ LLM ที่เราตั้งให้ถูกต้อง 450 00:19:35,259 --> 00:19:37,838 ซึ่งสมบูรณ์แบบ ก่อนเชื่อมต่อกับ agent 451 00:19:37,838 --> 00:19:40,069 มีอีกสิ่งสำคัญที่แนะนำให้ตั้งค่า 452 00:19:40,069 --> 00:19:43,136 นั่นคือการสำรองข้อมูลอัตโนมัติ กลับไปที่ kit 453 00:19:43,136 --> 00:19:46,064 สักครู่ มีคำสั่ง install automatic backups 454 00:19:46,064 --> 00:19:47,156 ผมจะรันมัน 455 00:19:47,156 --> 00:19:49,665 มันสร้างโฟลเดอร์สำรองข้อมูลบนเครื่อง 456 00:19:49,665 --> 00:19:52,593 แล้วรันหนึ่งครั้งทันทีเพื่อเช็คว่าทำงานได้ 457 00:19:52,593 --> 00:19:55,033 ดูเหมือนใช้ได้ ผมไปที่โฟลเดอร์ของผม 458 00:19:55,033 --> 00:19:58,239 มีโฟลเดอร์ชื่อ hindsight backups และมีไฟล์ zip 459 00:19:58,239 --> 00:19:59,354 อยู่ตรงนี้ จริงๆ 460 00:19:59,354 --> 00:20:02,491 แล้วมันรันคำสั่งสำรองข้อมูลในตัวของ Hindsight 461 00:20:02,491 --> 00:20:05,349 admin แล้วกำหนดว่าให้ไปเก็บที่โฟลเดอร์ไหน 462 00:20:05,349 --> 00:20:08,834 คุณจะรันเองด้วยมือหรือตั้งเวลาให้รันอัตโนมัติก็ได้ 463 00:20:08,834 --> 00:20:11,622 ถ้าอยากรู้วิธีรันเองผ่าน Hindsight admin 464 00:20:11,622 --> 00:20:14,620 แนะนำให้ดู admin CLI แล้วส่งต่อคำสั่งนี้ให้ 465 00:20:14,620 --> 00:20:17,617 agents ของคุณ ซึ่งจะตั้งค่าให้ตามที่คุณพอใจ 466 00:20:17,617 --> 00:20:20,614 เอาล่ะ นี่คือผมจากอนาคต ระหว่างอัดวิดีโอนี้ 467 00:20:20,614 --> 00:20:22,915 Hindsight ปล่อยเวอร์ชัน 0.9 ออกมา 468 00:20:22,915 --> 00:20:24,100 พร้อมฟีเจอร์เจ๋งๆ 469 00:20:24,100 --> 00:20:26,121 อีกหลายอย่างที่เดี๋ยวจะพูดถึง 470 00:20:26,121 --> 00:20:28,909 คิดว่านี่เป็นโอกาสดีที่จะโชว์วิธีอัปเกรด 471 00:20:28,909 --> 00:20:32,255 สิ่งแรกที่ทำคือใช้ระบบสำรองข้อมูลที่เพิ่งติดตั้ง 472 00:20:32,255 --> 00:20:35,043 จะเห็นว่าตอนนี้มีความทรงจำ 33,000 รายการ 473 00:20:35,043 --> 00:20:37,623 นี่คือหลังจากใช้งานประมาณสัปดาห์ครึ่ง 474 00:20:37,623 --> 00:20:40,411 จะเห็นว่าความทรงจำทั้งหมดถูกสำรองไว้แล้ว 475 00:20:40,411 --> 00:20:43,408 ซึ่งเป็นนิสัยที่ดี ต่อไปผมจะ pull Hindsight 476 00:20:43,408 --> 00:20:46,545 เรียบร้อย มันดาวน์โหลดเวอร์ชันล่าสุดเสร็จแล้ว 477 00:20:46,545 --> 00:20:49,542 ใช้เวลาประมาณนาทีเดียว ทีนี้ก็รันคำสั่งเปิด 478 00:20:49,542 --> 00:20:51,494 Hindsight อีกครั้ง เรียบร้อย 479 00:20:51,494 --> 00:20:54,491 จะเห็นว่าอินเทอร์เฟซต่างจากเมื่อกี้เล็กน้อย 480 00:20:54,491 --> 00:20:55,746 แต่มันยังโหลด bank 481 00:20:55,746 --> 00:20:58,743 เดิมที่สร้างไว้กับความทรงจำทั้งหมดเข้ามาได้ 482 00:20:58,743 --> 00:21:00,207 ระหว่างเรียนต่อจากนี้ 483 00:21:00,207 --> 00:21:02,926 จำไว้ว่าบางส่วนอาจอยู่ในอินเทอร์เฟซเก่า 484 00:21:02,926 --> 00:21:05,993 ตอนนี้มีฟีเจอร์ใหม่อย่างปุ่ม home, knowledge 485 00:21:05,993 --> 00:21:09,129 pages และ knowledge base เดี๋ยวจะพูดถึงทีหลัง 486 00:21:09,129 --> 00:21:12,196 ถึงเวลาเชื่อมต่อสิ่งนี้กับ agent ของเราจริงๆ 487 00:21:12,196 --> 00:21:14,636 แล้ว เอาล่ะ ผมจะเชื่อมต่อกับ Hermes 488 00:21:14,636 --> 00:21:17,424 ก่อนเพราะง่ายมาก ไปที่ settings มุมขวาบน 489 00:21:17,424 --> 00:21:20,631 หรือกด Command + Comma จากนั้นไปที่ memory and 490 00:21:20,631 --> 00:21:23,628 context ผมจะเปิด persistent memory และ user 491 00:21:23,628 --> 00:21:26,625 profile memory ไว้ เพราะทำได้ด้วย Hindsight 492 00:21:26,625 --> 00:21:28,089 แล้วจะสลับจาก Memosyn 493 00:21:28,089 --> 00:21:30,738 ซึ่งเป็นชั้นหน่วยความจำแบบหนึ่ง มาเป็น 494 00:21:30,738 --> 00:21:33,805 Hindsight พอทำแบบนั้น มันจะขึ้นการตั้งค่าของ 495 00:21:33,805 --> 00:21:36,802 Hindsight ตรงนี้มีสองโหมดคือ local external 496 00:21:36,802 --> 00:21:39,172 กับ cloud ผมจะเลือก local external 497 00:21:39,172 --> 00:21:41,752 เพราะรันอยู่ใน Docker container ของผม 498 00:21:41,752 --> 00:21:44,749 ผมพูดถึงข้อดีข้อเสียของการรันเองเทียบกับใช้ 499 00:21:44,749 --> 00:21:47,816 cloud ซึ่งเป็นบริการเสียเงิน ในวิดีโอที่แล้ว 500 00:21:47,816 --> 00:21:50,256 ตอนนี้ปล่อยเป็น local external ก่อน 501 00:21:50,256 --> 00:21:51,580 แล้วก็มาถึง API key 502 00:21:51,580 --> 00:21:54,089 ซึ่งต้องใช้คีย์ที่สองที่เราตั้งไว้ใน 503 00:21:54,089 --> 00:21:57,226 environment file ไปเอาคีย์นั้นมา แล้วตั้ง API 504 00:21:57,226 --> 00:22:00,363 URL ชี้ไปที่ Docker container ที่รันในเครื่อง 505 00:22:00,363 --> 00:22:03,081 จากนั้นเปลี่ยน bank ID เป็น Wanderloots 506 00:22:03,081 --> 00:22:06,079 และปล่อย recall budget ไว้ที่ mid คุณควบคุม 507 00:22:06,079 --> 00:22:08,797 tokens ที่อยากใช้ตรงนี้ได้เอง เสร็จแล้ว 508 00:22:08,797 --> 00:22:11,864 ตั้งค่าเรียบร้อย จากนั้นผมจะรีสตาร์ท gateway 509 00:22:11,864 --> 00:22:15,489 เพื่อให้แน่ใจว่าโปรไฟล์ค่าเริ่มต้นรับค่าอย่างถูกต้อง 510 00:22:15,489 --> 00:22:18,277 พอรีเซ็ตแล้วกลับมาที่ memory and context 511 00:22:18,277 --> 00:22:20,787 เยี่ยม ดูเหมือนทุกอย่างยังตั้งไว้ครบ 512 00:22:20,787 --> 00:22:23,923 วิธีตรวจสอบอีกทางคือกลับไปที่เทอร์มินัล พิมพ์ 513 00:22:23,923 --> 00:22:26,990 hermes memory status แล้วมันควรขึ้นมา ใช่ มี 514 00:22:26,990 --> 00:22:29,570 built-in memory เปิดอยู่ provider คือ 515 00:22:29,570 --> 00:22:32,358 Hindsight ติดตั้งแล้วและพร้อมใช้งาน เป๊ะ 516 00:22:32,358 --> 00:22:33,473 ตรงตามที่ต้องการ 517 00:22:33,473 --> 00:22:36,679 อันนี้สำหรับคนที่ใช้แอปเดสก์ท็อป ถ้าอยากทำผ่าน 518 00:22:36,679 --> 00:22:39,119 CLI ก็พิมพ์ hermes memory setup ได้ 519 00:22:39,119 --> 00:22:41,977 ซึ่งจะช่วยตั้งค่าเชื่อมต่อ Hindsight เป็น 520 00:22:41,977 --> 00:22:44,347 provider เพื่อให้เห็นการทำงานเร็วๆ 521 00:22:44,347 --> 00:22:47,414 ผมจะเพิ่มข้อมูลเกี่ยวกับตัวเอง เอาล่ะ ผมชื่อ 522 00:22:47,414 --> 00:22:50,272 Callum หรือ Wanderloots เป็น patent agent 523 00:22:50,272 --> 00:22:53,269 (ตัวแทนสิทธิบัตร) ทนายความทรัพย์สินทางปัญญา 524 00:22:53,269 --> 00:22:56,406 และเรียนด้านวัสดุศาสตร์ วิศวกรรมเครื่องกล ฯลฯ 525 00:22:56,406 --> 00:22:58,637 จะเห็นว่ามันรัน hindsight retain 526 00:22:58,637 --> 00:23:01,495 แปลว่ามันเชื่อมต่อกับ Hindsight ได้โดยตรง 527 00:23:01,495 --> 00:23:03,865 เชื่อมต่อกับ LLM ที่ขับเคลื่อนระบบ 528 00:23:03,865 --> 00:23:07,280 และอัปเดตโปรไฟล์ผู้ใช้กับค่าความชอบหน่วยความจำได้ 529 00:23:07,280 --> 00:23:09,093 เยี่ยม กลับไปที่ Hindsight 530 00:23:09,093 --> 00:23:10,835 สักครู่แล้วเข้าไปที่ bank 531 00:23:10,835 --> 00:23:13,275 เราจะเห็นว่ามีความทรงจำเพิ่มขึ้นอีก 532 00:23:13,275 --> 00:23:16,202 จะเห็นว่ามันดึงโปรเจกต์ Wanderloots ขึ้นมา 533 00:23:16,202 --> 00:23:18,782 น่าสนใจ อาจเป็นเพราะเราอยู่ในโฟลเดอร์ 534 00:23:18,782 --> 00:23:21,570 tutorials ของ Wanderloots ไปที่ entities 535 00:23:21,570 --> 00:23:24,567 จะเห็นข้อมูลทั้งหมดที่ถูกดึงออกมาขณะจัดเก็บ 536 00:23:24,567 --> 00:23:27,495 ทุกอย่างทำงานเรียบร้อย แต่เราจะไม่จบแค่นี้ 537 00:23:27,495 --> 00:23:30,632 เราไม่อยากให้มีแค่ Hermes เชื่อมกับ Hindsight 538 00:23:30,632 --> 00:23:36,626 ประเด็นคือเรากำลังสร้างเครื่องยนต์หน่วยความจำร่วมที่เชื่อมเครื่องมือทั้งหมดเข้าด้วยกัน 539 00:23:36,626 --> 00:23:39,693 ต่อไปผมจะเชื่อมต่อ Codex แต่ขั้นตอนนี้ใช้กับ 540 00:23:39,693 --> 00:23:42,830 Claude Code ได้เหมือนกัน เป้าหมายคือให้ Codex 541 00:23:42,830 --> 00:23:45,409 กลายเป็นประตูสู่ memory bank เดียวกัน 542 00:23:45,409 --> 00:23:48,337 การเชื่อมต่อที่กำลังจะตั้งนี้ต่างจากการใช้ 543 00:23:48,337 --> 00:23:51,264 Codex ขับเคลื่อนระบบ Hindsight โดยสิ้นเชิง 544 00:23:51,264 --> 00:23:54,262 ตอนนี้ Codex ขับเคลื่อน Hindsight และ Codex 545 00:23:54,262 --> 00:23:55,795 ก็จะใช้ Hindsight ด้วย 546 00:23:55,795 --> 00:23:57,956 แต่จุดนี้ต่างกันเล็กน้อย เอาล่ะ 547 00:23:57,956 --> 00:24:00,465 ก่อนเชื่อมต่อกับ Codex จริงๆ สักครู่ 548 00:24:00,465 --> 00:24:03,672 นี่คือผมจากอนาคตอีกครั้ง อยากบอกว่าในการอัปเดต 549 00:24:03,672 --> 00:24:06,460 0.9.0 มีวิธีใหม่ในการเชื่อมต่อ Hindsight 550 00:24:06,460 --> 00:24:09,736 ที่ทำให้เชื่อมต่อปลั๊กอินหน่วยความจำเดียวนี้กับ 551 00:24:09,736 --> 00:24:11,827 coding agent ทุกตัวได้ง่ายขึ้น 552 00:24:11,827 --> 00:24:14,894 แปลว่าตอนนี้มีปลั๊กอิน coding agent ตัวเดียว 553 00:24:14,894 --> 00:24:17,334 และเราสามารถให้ประวัติ git ของ repo 554 00:24:17,334 --> 00:24:19,356 และบทสนทนาไหลเข้า memory bank 555 00:24:19,356 --> 00:24:21,447 โดยอัตโนมัติเบื้องหลังขณะทำงาน 556 00:24:21,447 --> 00:24:24,514 เมื่อก่อนถ้าเราติดตั้งการเชื่อมต่อ Codex แบบ 557 00:24:24,514 --> 00:24:27,023 hooks ไว้ ตอนนี้ถอนการติดตั้งได้แล้ว 558 00:24:27,023 --> 00:24:29,742 ผมจะถอนให้ดูสักครู่ ถ้ายังไม่ได้ติดตั้ง 559 00:24:29,742 --> 00:24:32,879 ไม่ต้องกังวล คุณไม่ต้องทำขั้นตอนนี้ เรียบร้อย 560 00:24:32,879 --> 00:24:36,085 ถอนแล้ว จากนั้นไปเอาคำสั่งนี้มา ซึ่งเป็นคำสั่ง 561 00:24:36,085 --> 00:24:39,152 npx คุณจะติดตั้งแบบ all เพื่อให้ใช้ได้กับทุก 562 00:24:39,152 --> 00:24:41,801 agent ที่ตรวจพบในคอมของคุณในครั้งเดียว 563 00:24:41,801 --> 00:24:44,589 หรือระบุเฉพาะตัวที่ต้องการก็ได้ สำหรับผม 564 00:24:44,589 --> 00:24:47,656 จะติดตั้งให้ Codex ก่อน แต่คุณทำทั้งหมดก็ได้ 565 00:24:47,656 --> 00:24:48,911 จากนั้นมีสอง flags 566 00:24:48,911 --> 00:24:51,350 อันหนึ่งบอกว่าเราทำงานบนเซิร์ฟเวอร์ 567 00:24:51,350 --> 00:24:52,443 self-hosted 568 00:24:52,443 --> 00:24:55,301 และนี่คือตำแหน่งที่อยากเปิดเซิร์ฟเวอร์ กด 569 00:24:55,301 --> 00:24:58,019 enter เยี่ยม เรียบร้อย ใช้เวลาแป๊บเดียว 570 00:24:58,019 --> 00:25:00,947 สิ่งที่น่าทึ่งคือมันติดตั้งสิ่งที่เรียกว่า 571 00:25:00,947 --> 00:25:03,456 Hindsight coding agents ถ้าผมใส่ all 572 00:25:03,456 --> 00:25:06,314 แทนที่จะเป็นแค่ Codex มันก็จะเชื่อมต่อกับ 573 00:25:06,314 --> 00:25:09,381 Antigravity, Claude Code และตัวอื่นๆ ทั้งหมด 574 00:25:09,381 --> 00:25:12,309 เราต้องเช็คว่า hooks ถูกเปิดใช้งานใน Codex 575 00:25:12,309 --> 00:25:14,609 ซึ่งเดี๋ยวจะโชว์ให้ดู แต่ก่อนอื่น 576 00:25:14,609 --> 00:25:16,561 ขอดูไฟล์ตั้งค่า coding agent 577 00:25:16,561 --> 00:25:19,279 ที่เพิ่งติดตั้งสักครู่ ถ้าไปที่โฟลเดอร์ 578 00:25:19,279 --> 00:25:20,371 Hindsight 579 00:25:20,371 --> 00:25:23,578 อันนี้คือไฟล์เวอร์ชันเก่าที่ติดตั้งตอนยังมีแค่ 580 00:25:23,578 --> 00:25:26,715 Codex แต่ตอนนี้เราจัดการกับระบบเต็มรูปแบบแล้ว 581 00:25:26,715 --> 00:25:28,945 จะเห็นว่าการติดตั้ง coding agent 582 00:25:28,945 --> 00:25:32,012 นี้มาพร้อมการดำเนินการทั้งหมดที่จำเป็นสำหรับ 583 00:25:32,012 --> 00:25:34,661 coding agent ทุกตัว ไฟล์ตั้งค่าอยู่ที่ 584 00:25:34,661 --> 00:25:36,543 hindsight/coding-agent.json 585 00:25:36,543 --> 00:25:38,146 ซึ่งดึงค่าเริ่มต้นมาให้ 586 00:25:38,146 --> 00:25:40,307 แต่ก็ให้คุณควบคุมระดับต่างๆ ได้ 587 00:25:40,307 --> 00:25:43,374 ขอเปิดดูสักครู่ จะเห็นว่าไฟล์ built-in มีแค่ 588 00:25:43,374 --> 00:25:46,093 server mode แบบ self-hosted และ API URL 589 00:25:46,093 --> 00:25:48,323 ซึ่งเป็นค่าที่เราตั้งตอนเริ่มแรก 590 00:25:48,323 --> 00:25:51,251 จากนั้นผมจะเพิ่มอีกสองสามชั้น ระบุ bank ID 591 00:25:51,251 --> 00:25:54,318 เจาะจง ใส่ shared private key ที่เราสร้างไว้ 592 00:25:54,318 --> 00:25:56,967 และอยากตั้ง dynamic bank ID เป็น false 593 00:25:56,967 --> 00:25:58,849 นี่เป็นความชอบส่วนตัวตอนนี้ 594 00:25:58,849 --> 00:26:01,846 เพราะอยากให้หลายโปรเจกต์ใช้ความทรงจำร่วมกัน 595 00:26:01,846 --> 00:26:04,704 เนื่องจากโปรเจกต์เกี่ยวข้องกัน ถ้าต้องการ 596 00:26:04,704 --> 00:26:07,353 คุณก็สร้าง bank แยกสำหรับทุก agent ได้ 597 00:26:07,353 --> 00:26:10,141 ซึ่งเดี๋ยวจะพูดถึงเพิ่ม จากนั้นก็เปลี่ยน 598 00:26:10,141 --> 00:26:12,929 private key ซึ่งผมจะทำตอนนี้ แล้วกด save 599 00:26:12,929 --> 00:26:15,857 ทีนี้ย้ายไปที่ Codex ถ้าไปที่ settings ของ 600 00:26:15,857 --> 00:26:19,063 Codex แล้วเข้าไปที่ hooks จะเห็นว่ามีสาม hooks 601 00:26:19,063 --> 00:26:21,294 ที่ต้องตรวจสอบ เหล่านี้คือ hooks 602 00:26:21,294 --> 00:26:23,734 ที่ถูกดึงมาจากไฟล์ตั้งค่า Hindsight 603 00:26:23,734 --> 00:26:26,034 โดยอัตโนมัติ hooks ทำสามอย่าง คือ 604 00:26:26,034 --> 00:26:27,986 เริ่มต้นหน่วยความจำอัตโนมัติ 605 00:26:27,986 --> 00:26:29,589 เรียกบริบทที่เกี่ยวข้อง 606 00:26:29,589 --> 00:26:31,541 และจัดเก็บเซสชันที่เสร็จแล้ว 607 00:26:31,541 --> 00:26:33,144 ถ้าเพิ่งติดตั้งครั้งแรก 608 00:26:33,144 --> 00:26:35,584 หน้าตาอาจต่างออกไปหน่อย อย่างที่บอก 609 00:26:35,584 --> 00:26:37,535 ผมกำลังอัปเดตจากเวอร์ชันเก่า 610 00:26:37,535 --> 00:26:40,045 ต้องกดเชื่อถือไฟล์ที่เปลี่ยนอีกครั้ง 611 00:26:40,045 --> 00:26:42,833 เพราะมันรันนอก sandbox ได้ ต้องให้สิทธิ์ 612 00:26:42,833 --> 00:26:45,830 จากนั้นปิดแล้วเปิดใหม่ และที่ติดตั้งมาพร้อม 613 00:26:45,830 --> 00:26:47,224 hooks คือ MCP server 614 00:26:47,224 --> 00:26:50,082 (เซิร์ฟเวอร์เชื่อมต่อเครื่องมือตามมาตรฐาน 615 00:26:50,082 --> 00:26:52,870 Model Context Protocol) สำหรับ Hindsight 616 00:26:52,870 --> 00:26:55,868 แปลว่าถ้าไปที่ plugins จะเห็นส่วน Hindsight 617 00:26:55,868 --> 00:26:57,471 ติดตั้งเป็นปลั๊กอินอยู่ 618 00:26:57,471 --> 00:26:59,841 มันให้เครื่องมือเพิ่มเติมกับ Codex 619 00:26:59,841 --> 00:27:02,838 ในการทำงานกับ Hindsight เช่น ช่วยเลือก bank 620 00:27:02,838 --> 00:27:03,930 รันคำสั่งเฉพาะ 621 00:27:03,930 --> 00:27:06,510 มีรายการเครื่องมือทั้งหมดที่มากับ MCP 622 00:27:06,510 --> 00:27:09,646 แนะนำให้อ่านเอกสาร MCP server ถ้าอยากรู้เพิ่ม 623 00:27:09,646 --> 00:27:12,156 เอาล่ะ พอตั้งค่าครบและเชื่อถือ hooks 624 00:27:12,156 --> 00:27:13,248 ทั้งหมดแล้ว 625 00:27:13,248 --> 00:27:15,688 เราน่าจะสั่งให้มันจำอะไรบางอย่างได้ 626 00:27:15,688 --> 00:27:18,058 ขอให้จำไว้ว่า โปรเจกต์ memory test 627 00:27:18,058 --> 00:27:21,125 ใช้สีม่วงเป็นสีทดสอบชั่วคราว จะเห็นว่า hooks 628 00:27:21,125 --> 00:27:23,704 ถูกเปิดใช้งานแล้ว กลับไปที่ Hindsight 629 00:27:23,704 --> 00:27:26,840 จะเห็นว่าเรามีแปดความทรงจำ กลับมาที่นี่แล้วกด 630 00:27:26,840 --> 00:27:29,280 refresh เยี่ยม มีความทรงจำเพิ่มขึ้น 631 00:27:29,280 --> 00:27:32,068 และอันเหล่านี้มีบริบทของ Codex จะเห็นว่า 632 00:27:32,068 --> 00:27:34,717 สีทดสอบชั่วคราวของโปรเจกต์ memory test 633 00:27:34,717 --> 00:27:36,948 คือสีม่วง ทีนี้ลองทดสอบใน Hermes 634 00:27:36,948 --> 00:27:39,736 ว่าผมเลือกสีทดสอบชั่วคราวอะไรให้โปรเจกต์ 635 00:27:39,736 --> 00:27:42,664 memory test จะเห็นว่ามันเรียกใช้ Hindsight 636 00:27:42,664 --> 00:27:43,756 recall 637 00:27:43,756 --> 00:27:46,614 แล้วตอบว่าสีม่วงเป็นสีชั่วคราวของโปรเจกต์ 638 00:27:46,614 --> 00:27:49,472 memory test สมบูรณ์แบบ สิ่งที่เกิดขึ้นคือ 639 00:27:49,472 --> 00:27:52,608 ผมให้ Codex จำบางอย่าง มันเก็บความทรงจำนั้นใน 640 00:27:52,608 --> 00:27:55,606 Hindsight แล้ว Hermes ก็เรียกกลับมาได้ทันที 641 00:27:55,606 --> 00:27:58,115 ทีนี้ลองย้อนกลับเป็นแบบทดสอบชั่วคราว 642 00:27:58,115 --> 00:28:01,112 ช่วยจำไว้ว่าสัตว์ที่ผมชอบคือลีเมอร์ (lemur) 643 00:28:01,112 --> 00:28:03,970 ตอนนี้เรากำลังเรียกใช้การจัดเก็บข้อมูลของ 644 00:28:03,970 --> 00:28:05,434 Hermes ผ่าน Hindsight 645 00:28:05,434 --> 00:28:07,943 มันเพิ่มข้อเท็จจริงทดสอบชั่วคราวแล้ว 646 00:28:07,943 --> 00:28:10,871 ถ้ากลับมากด refresh จะมีความทรงจำเพิ่มขึ้น 647 00:28:10,871 --> 00:28:12,474 ตอนนี้รวม 21 รายการแล้ว 648 00:28:12,474 --> 00:28:15,053 บางส่วนมาจากการทดสอบชั่วคราวที่ผมสั่ง 649 00:28:15,053 --> 00:28:18,190 บางส่วนถูกสร้างขึ้นจากคำถามที่ผมถาม Codex และ 650 00:28:18,190 --> 00:28:21,118 Hermes แต่จะเห็นว่ามีสัตว์ที่ผู้ใช้ชื่นชอบ 651 00:28:21,118 --> 00:28:23,976 ซึ่งผมรักลีเมอร์จริงๆ มันเป็นสัตว์เจ๋งมาก 652 00:28:23,976 --> 00:28:26,973 ผมชอบดูพวกมันที่มาดากัสการ์มาก กลับไปที่แชท 653 00:28:26,973 --> 00:28:29,482 Codex แล้วถามว่าสัตว์ที่ผมชอบคืออะไร 654 00:28:29,482 --> 00:28:31,504 จะเห็นว่ามันดึงข้อมูลทันทีว่า 655 00:28:31,504 --> 00:28:33,456 สัตว์ที่คุณชื่นชอบคือลีเมอร์ 656 00:28:33,456 --> 00:28:36,244 ซึ่งถูกบันทึกเป็นค่าความชอบทดสอบชั่วคราว 657 00:28:36,244 --> 00:28:38,126 เห็นไหมว่าแค่บทสนทนาพื้นฐาน 658 00:28:38,126 --> 00:28:41,332 ข้อมูลก็เริ่มขยายตัวเยอะแล้ว ตอนนี้มีความทรงจำ 659 00:28:41,332 --> 00:28:44,399 22 รายการ และนี่เป็นแค่จุดเริ่มต้น เราจะเห็น 660 00:28:44,399 --> 00:28:46,909 experiences ปรากฏภายใต้ observations 661 00:28:46,909 --> 00:28:49,767 และตรงนี้คือที่กรองด้วย tags ได้ ค้นหาได้ 662 00:28:49,767 --> 00:28:52,903 แต่กรองตาม harness ได้ด้วย เช่น เลือก harness 663 00:28:52,903 --> 00:28:56,040 แบบ Hermes แล้วเห็นความทรงจำทั้งหมดที่ Hermes 664 00:28:56,040 --> 00:28:59,038 สร้าง ล้างออกแล้วสลับเป็น harness แบบ Codex 665 00:28:59,038 --> 00:29:01,965 จะเห็นความทรงจำที่ Codex สร้างขึ้นโดยเฉพาะ 666 00:29:01,965 --> 00:29:04,684 ตรงนี้กลับไปที่การตั้งค่า คุณจะคิด tags 667 00:29:04,684 --> 00:29:07,751 เพิ่มเติมที่อยากมีได้ Hindsight จะสร้าง free 668 00:29:07,751 --> 00:29:09,563 form entities ต่อไปเรื่อยๆ 669 00:29:09,563 --> 00:29:13,815 แต่คุณก็จัดโครงสร้างข้อมูลของตัวเองในแบบที่อยากกรองในอนาคตได้ 670 00:29:13,815 --> 00:29:15,349 พอมีความทรงจำในนี้แล้ว 671 00:29:15,349 --> 00:29:17,858 เราสามารถรันฟีเจอร์อย่าง reflect ได้ 672 00:29:17,858 --> 00:29:20,646 ไม่ว่าจะจากในนี้โดยตรงหรือจาก Hermes เอง 673 00:29:20,646 --> 00:29:23,574 ตัวอย่างเช่น ผมถาม Hermes ว่า ช่วย reflect 674 00:29:23,574 --> 00:29:26,502 งานของผมแบบกระชับหน่อย แล้วจะเห็นว่ามันรัน 675 00:29:26,502 --> 00:29:27,687 Hindsight reflect 676 00:29:27,687 --> 00:29:31,729 ตรงนี้มันจะรวบรวมหลักฐานอัตโนมัติและให้เหตุผลผ่านมุมมองของ 677 00:29:31,729 --> 00:29:34,727 bank ทั้งหมด เพื่อให้คำตอบที่อิงบริบทดีขึ้น 678 00:29:34,727 --> 00:29:36,400 อันนี้อาจใช้เวลานานหน่อย 679 00:29:36,400 --> 00:29:38,839 ผมตั้งให้ใช้โมเดลที่แรงขึ้นนิดหน่อย 680 00:29:38,839 --> 00:29:40,931 แต่จะเห็นว่ามันตอบว่า workflow 681 00:29:40,931 --> 00:29:43,788 ของคุณคือให้ความทรงจำถาวรมาก่อน Hindsight 682 00:29:43,788 --> 00:29:46,368 เก็บข้อเท็จจริงข้ามเซสชัน การตัดสินใจ 683 00:29:46,368 --> 00:29:47,692 และข้อมูลทั้งหมดนี้ 684 00:29:47,692 --> 00:29:50,829 นี่เป็นข้อสังเกตที่ดีว่าระบบของผมทำงานอย่างไร 685 00:29:50,829 --> 00:29:53,896 จะเห็นว่าการสะท้อนนี้ถูกเก็บเป็น observation 686 00:29:53,896 --> 00:29:56,823 แล้ว ตรงนี้คือจุดที่ agent ฉลาดขึ้นเรื่อยๆ 687 00:29:56,823 --> 00:30:00,727 ขณะทำงาน เรียนรู้จากกระบวนการและความคาดหวังของผม พูดตรงๆ 688 00:30:00,727 --> 00:30:03,585 ยังมีอะไรให้ทำกับสิ่งนี้อีกมาก ทุกบทสนทนา 689 00:30:03,585 --> 00:30:05,397 ทุกข้อความ ทุกแชทกับ agent 690 00:30:05,397 --> 00:30:08,325 ใดก็ตามที่เชื่อมต่อกับ memory bank ร่วมนี้ 691 00:30:08,325 --> 00:30:10,904 จะทำงานบนชั้นหน่วยความจำเดียวกัน แล้ว 692 00:30:10,904 --> 00:30:11,996 Hindsight 693 00:30:11,996 --> 00:30:16,457 จะทำหน้าที่เป็นเครื่องยนต์ที่รวมความรู้เป็นรูปแบบและความชอบต่างๆ 694 00:30:16,457 --> 00:30:17,851 ซึ่งช่วยให้ทุก agent 695 00:30:17,851 --> 00:30:20,988 ที่คุณเชื่อมต่อเข้าใจตัวคุณและงานของคุณดีขึ้น 696 00:30:20,988 --> 00:30:23,985 เจ๋งมาก วิธีนี้ทำได้กับ Claude Code, Codex, 697 00:30:23,985 --> 00:30:26,425 Gemini, Hermes, OpenClaw หรือ agent 698 00:30:26,425 --> 00:30:27,610 ใดก็ตามที่ต้องการ 699 00:30:27,610 --> 00:30:30,259 และทั้งหมดใช้โปรไฟล์ผู้ใช้เดียวร่วมกัน 700 00:30:30,259 --> 00:30:32,908 เป็นระบบหน่วยความจำระดับ global เอาล่ะ 701 00:30:32,908 --> 00:30:36,114 นี่คือผมจากอนาคตอีกครั้ง ตอนนี้ผมใช้ Codex กับ 702 00:30:36,114 --> 00:30:39,181 Hermes สร้างความทรงจำจำนวนมากในช่วงที่ผ่านมา 703 00:30:39,181 --> 00:30:40,994 นี่คือหน้าตาของมัน เจ๋งมาก 704 00:30:40,994 --> 00:30:44,200 และตอนนี้ขอโชว์ฟีเจอร์ใหม่ที่มากับเวอร์ชัน 0.9 705 00:30:44,200 --> 00:30:46,779 นั่นคือ knowledge pages (หน้าความรู้) 706 00:30:46,779 --> 00:30:49,986 จะเห็นว่าด้านข้างยังไม่มี knowledge pages ผมกด 707 00:30:49,986 --> 00:30:52,983 create my first page ได้ สิ่งที่เกิดขึ้นคือ 708 00:30:52,983 --> 00:30:55,771 ความทรงจำทั้งหมดทำงานอยู่เบื้องหลัง ส่วน 709 00:30:55,771 --> 00:30:58,629 knowledge pages คือการฉายภาพ (projection) 710 00:30:58,629 --> 00:31:00,860 จากข้อมูลนั้นที่อัปเดตเองตามเวลา 711 00:31:00,860 --> 00:31:03,717 มีข้อมูลเพิ่มเติมตรงนี้ว่าทำไมมันถึงทำงาน 712 00:31:03,717 --> 00:31:06,715 และวิธีเริ่มใช้งาน ขอชี้แจงว่าอันนี้ต่างจาก 713 00:31:06,715 --> 00:31:09,015 LLM wiki ที่ผมพูดถึงในวิดีโอก่อนๆ 714 00:31:09,015 --> 00:31:12,152 เพราะอันนี้ถูกสร้างและฉายออกมาจากความทรงจำของ 715 00:31:12,152 --> 00:31:13,964 agents โดยอัตโนมัติทั้งหมด 716 00:31:13,964 --> 00:31:17,031 ซึ่งแปลว่ามันไม่มีชั้นความน่าเชื่อถือ (trust 717 00:31:17,031 --> 00:31:18,123 layer) 718 00:31:18,123 --> 00:31:21,190 ที่แท้จริงอย่างที่ผมพูดถึงในวิดีโออัปเดต LLM 719 00:31:21,190 --> 00:31:22,283 wiki 720 00:31:22,283 --> 00:31:27,510 อันนี้เป็นวิธีช่วยสร้างแบบจำลองความคิดที่ถูกฉายออกมาจากไฟล์จริงโดยอัตโนมัติ 721 00:31:27,510 --> 00:31:30,717 และมันให้บทสรุปที่พัฒนาตลอดเวลาของ components, 722 00:31:30,717 --> 00:31:32,947 concepts, conventions, decisions 723 00:31:32,947 --> 00:31:35,805 และโครงการปัจจุบัน สำหรับผม เพราะใช้ bank 724 00:31:35,805 --> 00:31:36,898 เดียว 725 00:31:36,898 --> 00:31:42,822 หน้าทั้งหมดที่สร้างในพื้นที่ความรู้จึงเชื่อมโยงความรู้ข้ามโปรเจกต์ที่เกี่ยวข้องกันได้ 726 00:31:42,822 --> 00:31:45,890 ถ้าอยากลิงก์ตามโปรเจกต์เฉพาะก็ทำได้เหมือนกัน 727 00:31:45,890 --> 00:31:48,538 แต่นี่คือบริบทการทำงานที่ดูแลโดย agent 728 00:31:48,538 --> 00:31:51,745 ไม่ใช่ตัวแทนของเอกสารที่มนุษย์ตรวจทานอย่างระบบ 729 00:31:51,745 --> 00:31:54,184 Obsidian ของผม มาลองสร้างกันสักหน้า 730 00:31:54,184 --> 00:31:57,391 ผมจะสร้างหน้าใหม่ที่สรุปปรัชญาหน่วยความจำของผม 731 00:31:57,391 --> 00:32:00,597 โดยใช้คำถามว่า วิธีปฏิบัติกับ Hindsight memory 732 00:32:00,597 --> 00:32:03,455 bank นี้สำหรับ Hermes และ Codex สอง agent 733 00:32:03,455 --> 00:32:05,059 ที่เชื่อมต่ออยู่คืออะไร 734 00:32:05,059 --> 00:32:07,986 จะเห็นว่ามันกำลังสร้างเนื้อหา เราสามารถดึง 735 00:32:07,986 --> 00:32:09,078 prompt มาตรงนี้ 736 00:32:09,078 --> 00:32:13,051 เปิดไฟล์เพื่อดูรายละเอียดการตั้งค่าและวิธีรีเฟรชอัตโนมัติ 737 00:32:13,051 --> 00:32:16,049 ปรับแต่งการตั้งค่าได้ทั้งหมดและดูประวัติได้ 738 00:32:16,049 --> 00:32:17,652 เรียบร้อย มันเพิ่งเสร็จ 739 00:32:17,652 --> 00:32:20,371 จะเห็นว่าปรัชญาการทำงานคือใช้ Hindsight 740 00:32:20,371 --> 00:32:22,950 เป็นตัวให้บริการหน่วยความจำภายนอกร่วม 741 00:32:22,950 --> 00:32:24,901 ไม่ใช่เป็น harness หรือโมเดล 742 00:32:24,901 --> 00:32:27,341 มันมีความเข้าใจเรื่องขอบเขตของ bank 743 00:32:27,341 --> 00:32:28,456 ที่เราตั้งวันนี้ 744 00:32:28,456 --> 00:32:30,966 และรายละเอียดว่าเซสชันปกติไหลอย่างไร 745 00:32:30,966 --> 00:32:33,824 สรุปคือมันนำความทรงจำทั้งหมดที่ผมพูดถึงมา 746 00:32:33,824 --> 00:32:36,473 แล้วสกัดจากความทรงจำ 33,000 รายการนั้น 747 00:32:36,473 --> 00:32:39,540 ถึงรูปแบบเฉพาะของบทสนทนาที่ผมมีกับ Codex และ 748 00:32:39,540 --> 00:32:42,188 Hermes เพื่อเข้าใจว่าผมอยากทำงานแบบไหน 749 00:32:42,188 --> 00:32:44,210 มันยังสร้างแนวคิดหลัก โครงการ 750 00:32:44,210 --> 00:32:46,789 และการปรับปรุงบางอย่างเป็นค่าเริ่มต้น 751 00:32:46,789 --> 00:32:48,880 ซึ่งผมแก้ไขและอัปเดตได้ตามเวลา 752 00:32:48,880 --> 00:32:51,738 ทั้งหมดถูกฉายออกมาจากความทรงจำที่มีอยู่ใน 753 00:32:51,738 --> 00:32:53,411 memory bank โดยอัตโนมัติ 754 00:32:53,411 --> 00:32:56,408 คิดว่าระบบแบบนี้สร้างขึ้นมาได้ถือว่าเจ๋งมาก 755 00:32:56,408 --> 00:32:59,406 ย้ำอีกครั้ง ตอนนี้ผมยังไม่คิดว่ามันจะแทนที่ 756 00:32:59,406 --> 00:33:01,706 LLM wiki ที่กำลังสร้างใน Obsidian 757 00:33:01,706 --> 00:33:07,840 เพราะอันนั้นมีชั้นความน่าเชื่อถือและกระบวนการอนุมัติที่เข้มกว่าว่าอะไรจะเข้าสู่ความทรงจำ 758 00:33:07,840 --> 00:33:10,419 แต่ผมพูดถึงเรื่องนี้เพิ่มในวิดีโออื่น 759 00:33:10,419 --> 00:33:13,835 ถ้าอยากรู้ว่าระบบนี้ทำงานเสริมกับที่ตั้งวันนี้และ 760 00:33:13,835 --> 00:33:16,414 knowledge pages ที่เชื่อมกับ LLM wiki 761 00:33:16,414 --> 00:33:17,506 เดิมได้อย่างไร 762 00:33:17,506 --> 00:33:20,294 ตอนนี้เรามีระบบหน่วยความจำเดียวที่เชื่อม 763 00:33:20,294 --> 00:33:22,037 agents หลายตัวเข้าด้วยกัน 764 00:33:22,037 --> 00:33:25,243 แต่นี่เป็นแค่ชั้นหนึ่งในระบบหน่วยความจำทั้งหมด 765 00:33:25,243 --> 00:33:28,310 เป็นระบบอัตโนมัติที่อยู่ในการควบคุมของ agent 766 00:33:28,310 --> 00:33:32,353 เรายังต้องมีระบบความรู้ที่เชื่อถือได้โดยมีมนุษย์อยู่ในวงจร 767 00:33:32,353 --> 00:33:33,678 (human in the loop) 768 00:33:33,678 --> 00:33:36,326 เพื่อช่วยต่อสู้กับข้อผิดพลาดและภาพหลอน 769 00:33:36,326 --> 00:33:37,860 (hallucination) ของ AI 770 00:33:37,860 --> 00:33:41,066 นั่นคือสิ่งที่เราจะทำในวิดีโอหน้า ด้วยการสร้าง 771 00:33:41,066 --> 00:33:44,133 wiki ที่น่าเชื่อถือใน Obsidian และบรรณารักษ์ 772 00:33:44,133 --> 00:33:45,667 AI (Agentic librarian) 773 00:33:45,667 --> 00:33:49,849 ที่จัดการความรู้ที่เชื่อถือได้แยกจากระบบหน่วยความจำอัตโนมัติ 774 00:33:49,849 --> 00:33:52,777 เตือนอีกครั้ง ให้ไปอ่านบทความฟรีบน Patreon 775 00:33:52,777 --> 00:33:55,914 ที่จะลิงก์ไว้ในคำอธิบาย และสมาชิกจะได้เข้าถึง 776 00:33:55,914 --> 00:33:57,308 Hindsight memory kit 777 00:33:57,308 --> 00:34:00,444 ที่ผมจัดทำขึ้นเพื่อช่วยตั้งค่าระบบได้ง่ายขึ้น 778 00:34:00,444 --> 00:34:03,093 ถ้าวิดีโอนี้มีประโยชน์ ช่วยกด like และ 779 00:34:03,093 --> 00:34:05,533 subscribe ด้วยนะครับ ขอบคุณมากจริงๆ 780 00:34:05,533 --> 00:34:08,600 ขอบคุณที่รับชม แล้วพบกันใหม่ในวิดีโอหน้าครับ