▶SUBTHAIแปลไทย · ซับ · พากย์⚙
บทความแปลภาษาไทย · YouTube

One Memory, Many Agents?

0:000:00
เล่นเสียงต้นฉบับของวิดีโอ พร้อมแสดงซับไทยซิงก์ตามเวลา
กำลังโหลดวิดีโอ…
01

สรุปย่อ

ประเด็นสำคัญจากวิดีโอ

- **ช่อง:** 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 ซึ่งอาจมีการเปลี่ยนแปลงในภายหลัง
02

คำแปลเต็ม

แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ

เราจะเห็นว่าเรามีความทรงจำอยู่แปดรายการ กด 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 ด้วยนะครับ ขอบคุณมากจริงๆ ขอบคุณที่รับชม แล้วพบกันใหม่ในวิดีโอหน้าครับ

03

หมายเหตุการแปล

ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ

  • ## เซ็กเมนต์ที่ใช้ [ฟังไม่ชัด]
  • ไม่มีเซ็กเมนต์ใดที่ต้องใช้เครื่องหมาย `[ฟังไม่ชัด]` ในการแปล เนื่องจากเสียงพูดโดยรวมชัดเจนพอ
  • 10. **"paper use"** — คำบรรยายไม่ชัด น่าจะหมายถึงการทดลองใช้แบบง่ายๆ แปลเป็น "ทดลองใช้แบบง่ายๆ"
  • จุดที่คำบรรยายต้นฉบับไม่ชัด/เพี้ยน ได้ระบุไว้ข้างต้นและแปลตามความหมายที่ตั้งใจโดยอิงบริบท ไม่มีการคิดค้นข้อมูลใหม่
04

อภิธานศัพท์เทคนิค

คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ

ศัพท์คำแปล / คำอธิบาย
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การตั้งค่าให้รีสตาร์ทอัตโนมัติเว้นแต่ผู้ใช้สั่งหยุด
LLMLarge Language Model โมเดลภาษาขนาดใหญ่
embeddingการแปลงข้อมูลเป็นเวกเตอร์สำหรับการค้นคืนข้อมูล (retrieval)
hierarchical retrievalการดึงข้อมูลแบบลำดับชั้น
tokensหน่วยย่อยของข้อความที่โมเดลใช้ประมวลผล
Codexเครื่องมือเขียนโค้ดด้วย AI ของ OpenAI
HermesAI agent (แพลตฟอร์มตัวแทน AI) ที่ใช้เชื่อมต่อกับ Hindsight
Claude Codeเครื่องมือเขียนโค้ดด้วย AI ของ Anthropic
Geminiโมเดล AI ของ Google
OpenClawAI agent อีกตัวที่รองรับการเชื่อมต่อกับ Hindsight
Antigravityเครื่องมือ coding agent (Google) ที่ปลั๊กอิน Hindsight coding agents รองรับ
Memosynเครื่องมือหน่วยความจำ (memory layer) อีกตัวที่ Hermes ใช้ก่อนสลับมา Hindsight (คำบรรยายอัตโนมัติเขียนว่า Namosin/namask)
Ollamaโปรแกรมรันโมเดล AI ในเครื่อง (คำบรรยายอัตโนมัติเขียนว่า Olama)
MCP serverModel Context Protocol server เซิร์ฟเวอร์เชื่อมต่อเครื่องมือตามมาตรฐาน MCP
hooksจุดเชื่อมต่ออัตโนมัติที่ทำงานเมื่อเกิดเหตุการณ์ (initialize memory, recall, retain)
CLICommand 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
05

ซับไตเติ้ลภาษาไทย

ดาวน์โหลดหรือดูซับทั้งหมด

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
thai-subtitles.srt
SubRip — ใช้กับเครื่องเล่นวิดีโอส่วนใหญ่
↓ ดาวน์โหลด
thai-subtitles.vtt
WebVTT — ใช้กับเว็บ / YouTube
↓ ดาวน์โหลด
เปิดดูซับไตเติ้ลทั้งหมด (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
ขอบคุณที่รับชม แล้วพบกันใหม่ในวิดีโอหน้าครับ