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

Hermes Agent Masterclass: 10. Security

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

สรุปย่อ

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

- **ช่อง:** Tonbi's AI Garage · **ความยาว:** ~28 นาที · **ลิงก์:** https://www.youtube.com/watch?v=KtlY6ETPyKo

# สรุป: Hermes Agent Masterclass: 10. Security

- **ช่อง:** Tonbi's AI Garage · **ความยาว:** ~28 นาที · **ลิงก์:** https://www.youtube.com/watch?v=KtlY6ETPyKo

## ประเด็นหลัก

- วิดีโอนี้เป็นตอนจบของซีรีส์ Hermes Agent Masterclass ทั้ง 10 ตอน โดยเน้นเรื่องความปลอดภัย (Security) ของ agent
- ไม่มี agent ที่ปลอดภัยและมีความสามารถสูงสุดพร้อมกันได้ — ต้องเลือก trade-off ระหว่างความสามารถกับความปลอดภัยให้เหมาะกับงาน
- 7 ชั้นความปลอดภัยทำงานเป็น "dial" หรือปุ่มปรับระดับ ไม่ใช่ checklist ที่ต้องเปิดให้หมด
- Trust Layer: ใครสามารถคุยกับ agent ได้บ้าง — ค่าเริ่มต้นคือปฏิเสธทุกคน (deny by default)
- Approvals: มีหลายโหมด — Manual, Smart (LLM ประเมินความเสี่ยง), และ YOLO (ทำทุกอย่างไม่ต้องถาม)
- แม้ใน YOLO mode ก็มี hard block สำหรับคำสั่งที่อันตรายระดับหายนะ เช่น `rm -rf /`
- Containment: ใช้ Docker เป็น boundary — host file system ไม่ถูกเข้าถึงได้ แต่ต้องระวัง ENV ที่ forward เข้า container
- Filtering: MCP เห็น secret น้อยมาก ทุกอย่างถูก strip/redact ก่อนถึง LLM
- ไฟล์เองก็โจมตีคุณได้ (prompt injection) — agents.md, soul.md ฯลฯ ถูก scan ก่อน load
- SSRF protection และ website block list ทำงานตลอดเวลาที่ network level
- Tyrith/Teereth: เครื่องมือ pre-exec scanning จับ homograph URL spoofing และ Unicode look-alike attacks
- ทุกชั้นความปลอดภัยปรับได้ตาม profile (agent แยกกัน) เพื่อให้แต่ละ agent มีสิทธิ์น้อยที่สุดเท่าที่งานต้องการ

## ความเห็นสรุป

วิดีโอนี้เป็นบทสรุปที่ครอบคลุมและเป็นประโยชน์มาก แสดงให้เห็นว่า Hermes Agent ออกแบบมาด้วย defense in depth 7 ชั้นที่ซ้อนทับกัน ผู้ใช้สามารถปรับแต่งระดับความปลอดภัยได้ตามความเหมาะสม ตั้งแต่ใช้คนเดียวบนแล็ปท็อปไปจนถึงการ deploy สาธารณะ เป็นการปิด Masterclass ได้อย่างสมบูรณ์และทรงพลังครับ
02

คำแปลเต็ม

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

ยินดีต้อนรับกลับมาสู่ Hermes Agent Masterclass โมดูลที่ 10 เรื่องความปลอดภัย (Security) และนี่จะเป็นตอนจบของเรา ถ้าใครฝ่าฟันมาดูครบทั้ง 10 ตอน ขอแสดงความยินดีด้วยนะครับ คุณทำสำเร็จถึงบทสุดท้ายแล้ว เราได้เรียนรู้กันมาเยอะมากเกี่ยวกับวิธีใช้ Hermes Agent และสิ่งที่มันทำได้ แต่ผมคิดว่าสมควรมีตอนจบที่พูดถึงเรื่องความปลอดภัยโดยเฉพาะ เพราะมันเป็นหัวข้อใหญ่มากเวลาเราใช้ agent ประเภทใดก็ตาม

ก่อนอื่นมาทบทวนกันก่อนว่า 9 โมดูลที่ผ่านมาสร้างอะไรขึ้นมาบ้าง ตอนนี้คุณมี agent ที่สามารถอ่านและเขียนไฟล์ รันคำสั่ง shell ใช้จ่ายเงินด้วยซ้ำ ส่งข้อความหาคุณบนโทรศัพท์ และจากโมดูลล่าสุดยังรันทีมงานทั้งทีมได้ โดยมีหลาย profile ประสานงานกันบน Kanban board ได้ นั่นเป็นอำนาจที่ยิ่งใหญ่มากที่เรามอบให้กับสิ่งหนึ่ง และวันนี้จะเป็นอีกครึ่งหนึ่งของเรื่อง นั่นคือ Hermes จะปกป้องอำนาจนั้นไม่ให้กลายเป็นความรับผิด และที่สำคัญกว่านั้นคือ คุณจะปรับแต่งมันให้เข้ากับระดับความไว้วางใจที่คุณมีจริงได้อย่างไร

ผมทราบว่าในวิดีโอก่อนๆ บางครั้งผมใช้ WSL บางครั้งใช้ Windows แต่ในวิดีโอนี้ผมจะใช้ WSL เพราะฟีเจอร์บางอย่างมีให้ใช้บน Linux เท่านั้น ผมจะชี้ให้เห็นตอนที่มันเจอ แต่ส่วนใหญ่คุณทำบน Windows ได้เหมือนกันนะครับ

งั้นมาดูกันว่าวันนี้เราจะพูดถึงอะไรบ้าง อันดับแรกคือ trade-off ระหว่างความสามารถกับความปลอดภัย จากนั้นพูดถึง trust หรือใครสามารถเข้าถึงและคุยกับ agent ของคุณได้ จะพูดเรื่อง approvals หรือการอนุมัติเยอะมาก พูดถึง containers หรือว่ามันรันอยู่ที่ไหน filters หรือข้อมูลอะไรรั่วไหลได้บ้าง การทำ security hardening แล้วก็จะสร้างระบบ hardening จริงๆ และลองโจมตีมันดู งั้นเริ่มกันเลย

และถ้าใครรัน agent เองและอยากเข้าถึง LLM wikis ที่ผมใช้เองสำหรับทำวิดีโอเหล่านี้เพื่อค้นคว้าและสร้างเนื้อหา ลองแวะชมโปรเจกต์ของผมที่ agentwikis.com ครับ ผมให้ wikis ทั้งหมดนี้ฟรีในหัวข้อต่างๆ มากมาย หรือจะสมัคร pro account ในราคา $9.99 ต่อเดือน ก็จะได้เข้าถึง wikis ขนาดใหญ่พิเศษ ซึ่งจะมีจำนวนหน้าและรายละเอียดมากกว่าในแต่ละหัวข้อ งั้นกลับเข้าสู่วิดีโอกันต่อ

แต่ก่อนที่เราจะเริ่มพูดถึงฟีเจอร์ความปลอดภัย สำคัญมากที่จะต้องชี้ให้เห็นถึง trade-off ตรงนี้ เพราะน่าเสียดายที่ไม่มี agent ที่ปลอดภัยเต็มที่และมีความสามารถเต็มที่พร้อมกันได้ ผมเชื่อว่าหลายคนที่อยู่ตอนที่ Open Claw ออกมาครั้งแรก คงมีความกังวลเรื่องความปลอดภัยเยอะมาก มีเรื่องสยองขวัญเกี่ยวกับปัญหาความปลอดภัยอยู่เยอะ แต่ตอนนี้ส่วนใหญ่ได้รับการแก้ไขไปแล้ว มีองค์ประกอบความปลอดภัยหลายอย่างถูกเพิ่มเข้ามา ทำให้ agent ปลอดภัยขึ้นมาก

แต่ก็ยังมี trade-off ระหว่าง agent ที่มีความสามารถเต็มที่ เข้าถึงไฟล์ทั้งหมดของคุณ ข้อมูลทั้งหมด เชื่อมต่อกับอีเมลและทุกแพลตฟอร์มที่คุณใช้ ทุกส่วนของชีวิตคุณ โดยไม่ต้องขออนุมัติใดๆ รันในโหมด YOLO สมบูรณ์บน PC หรืออุปกรณ์หลักของคุณ กับทุก tool ที่มี นี่คือความเป็นประโยชน์สูงสุด แต่ก็เป็นอันตรายสูงสุดเช่นกันใช่มั้ยครับ เพราะคำสั่งเดียวก็สามารถทำลายไฟล์สำคัญของคุณได้เยอะ หรือทำให้ข้อมูลรั่วไหล

อีกด้านหนึ่งคือ agent ที่ปลอดภัยอย่างสมบูรณ์ แบบ Docker in Docker ที่ทุกอย่างถูก sandbox ไว้ ไม่มีสิทธิ์ทำอะไรเลย ทำอันตรายอะไรไม่ได้ แต่มันก็ทำอะไรที่มีประโยชน์มากไม่ได้เช่นกัน ดังนั้นมันขึ้นอยู่กับคุณว่าจะยืนตรงไหนระหว่างสองขั้วนี้ อะไรที่เหมาะกับงานของคุณ และคุณยอมรับความเสี่ยงแค่ไหน

7 ชั้นความปลอดภัยที่เราจะพูดถึงเป็น "dial" หรือปุ่มปรับระดับนะครับ ไม่ใช่ checklist ที่ต้องเปิดให้หมด คุณต้องคิดว่า สำหรับ agent นี้ใน environment นี้ ผมอยากให้มันทำ X, Y, Z วิธีที่ปลอดภัยที่สุดในการทำสิ่งนั้นคืออะไร นั่นคือสิ่งที่ security hardening เป็นจริงๆ

งั้น dial เหล่านั้นอยู่ตรงไหน? มันขึ้นอยู่กับว่าคุณใช้ agent นี้อย่างไร สำหรับคนส่วนใหญ่ที่รันบนเครื่องของตัวเอง กับแล็ปท็อปเครื่องเดียวหรืออุปกรณ์ส่วนตัว การทำพิธีกรรมน้อยๆ ที่นี่ถือว่าถูกต้องแล้ว การทำ allow list หนักๆ และ sandbox บนแล็ปท็อปของตัวเองเป็นแค่อุปสรรคโดยไม่มีภัยคุกคามที่คุ้มค่า เพราะคุณเป็นคนเดียวที่จะคุยกับมันอยู่แล้วใช่มั้ยครับ คุณไม่ได้แชร์มันกับใคร

แต่มีคนที่ใช้ agent กับทีมเล็กๆ มากขึ้นเรื่อยๆ และอาจมี shared gateway ตรงนี้คือจุดที่คุณควรเริ่มใช้ allow list จริงจัง ใช้ manual smart approval และอาจใช้ sandbox back end สำหรับทุกอย่างที่ trigger ผ่าน gateway และก็มีการ deploy ที่เปิดสาธารณะ รับ input ที่ไม่น่าไว้วางใจ เช่น webhooks, open DMs, cron บนเนื้อหาที่ scrape มา สิ่งที่คุณควบคุมไม่ได้และมาจากแหล่งภายนอก ในกรณีนี้คุณอาจต้องการปฏิเสธการอนุมัติเป็นค่าเริ่มต้น ใช้ sandbox back end ใช้ Tyrites ซึ่งเราจะพูดถึงภายหลัง block list เว็บไซต์ และปิดการเข้าถึง private URLs เราจะกลับมาพูดเรื่องนี้ท้ายวิดีโอ แต่ให้ลองคิดไว้บ้างตามการใช้งานของคุณ

พาร์ต 2 คือ trust layer หรือชั้นความไว้วางใจ ซึ่งเกี่ยวกับว่า agent จะคุยกับใครได้บ้าง ก่อนที่เราจะถามว่ามันทำอะไรได้ เรากำลังพูดถึง gateway ที่นี่ และการพูดถึง Hermes gateway คือการเชื่อมต่อกับ messaging platforms และ cron scheduler เป็นหลัก

เมื่อข้อความมาถึง gateway Hermes จะส่งมันผ่านห่วงโซ่ของการตรวจสอบตามลำดับ และค่าเริ่มต้นสุดท้ายคือปฏิเสธ Hermes จะตรวจสอบ per platform allow all เช่น คุณสามารถตั้ง Discord อนุญาตผู้ใช้ทั้งหมด และตรงนี้เรามี dashboard ถ้าเข้าไปที่ channels แล้วสมมติว่าคุณตั้งค่า Discord ไว้ แม้ใน WSL agent นี้ผมจะไม่มี แต่คุณเลื่อนลงมาดูได้ว่า allow all users เป็น true หรือ false โดยค่าเริ่มต้นจะเป็นการปฏิเสธ แต่นี่เป็น dial หนึ่งที่คุณปรับได้ เป็นอันที่รุนแรงหน่อย แต่ก็ทำได้

ต่อไปคือ DM pairing approved list Hermes จะตรวจสอบว่าคุณอยู่ใน approved list หรือไม่ แล้วก็มี platform allow list เช่น Telegram allowed users คล้ายกับ Discord ที่ผมเพิ่งแสดงให้ดู คุณสามารถตั้งค่า Telegram user IDs ที่นี่ได้ ส่วน user ID ของคุณหาได้จาก get user info bot บน Telegram ยังมี global allow list คือ gateway allowed users และ global allow all คือ gateway allow all users ถ้าไม่มีอันไหนตรงเลย ค่าเริ่มต้นคือปฏิเสธข้อความ ทำให้มันไม่มาถึง agent เลย ดังนั้นไม่ตั้งค่าอะไรเลยหมายความว่าทุกคนถูกปฏิเสธ โดยจะมี startup warning บอกคุณตรงๆ แบบนั้น คุณต้อง opt-in เพื่อเปิดสิ่งนี้ คุณไม่สามารถลืมเข้าไปได้ คุณต้องตั้งค่าให้ชัดเจนว่าใครจะได้รับอนุญาตให้สื่อสารกับ agent ของคุณ

ใน Hermes agent เครื่องนี้ผมไม่ได้ตั้งค่าอะไรไว้เหมือนที่คุณเห็น แต่ผมจะอนุมัติ Telegram กับ allowed users สำหรับ user ID ของผม มีหลายวิธีที่ทำได้ คุณเคยเห็นผมทำมาก่อน แต่เช่นใน configure Telegram ตั้งค่า Telegram bot token และ allowed Telegram user ID นี่คือ ID ของผม และสำหรับส่วนนี้ผมจะปล่อยว่างไว้ เพื่อให้ไม่อนุญาตผู้ใช้ทั้งหมด ตอนนี้เริ่ม gateway ขึ้นมา ก็เห็นได้ว่าผมพิมพ์ hello ไปใน Telegram bot ตอบกลับมาว่า "Hello Tommy, what are you working on?" ผมถามว่าใครอยู่ใน allow list และก็เห็นได้ว่ามีแค่ผม Tommy ใน DM นี้ ซึ่งก็เป็น home channel ด้วย และไม่มีใครใน pairing list เพราะผมใส่เป็น ID ตรงๆ และ Telegram allowed chats ใน config ก็ว่างเปล่า ดังนั้นมีแค่ chat นี้เท่านั้นที่จะเข้าถึง agent ของผมได้ ถ้ามีคนอื่นพยายามคุยกับ Hermes agent ของผม แม้จะรู้ชื่อ bot ก็ตาม agent จะไม่ตอบ จะถูกปฏิเสธโดยอัตโนมัติเลยครับ

พาร์ต 3 คือเรื่อง approvals หรือการอนุมัติ ซึ่งก็มี dial ให้ปรับหลายตัวเช่นกัน

งั้นมาดูวิธีตั้งค่า approvals ต่างๆ กัน ค่าเริ่มต้นคือ Manual ซึ่งคุณสามารถใช้ CLI ได้ การอนุมัติทุกครั้งจะมี timeout 60 วินาทีเป็นค่าเริ่มต้น และถ้าหมดเวลาจะถือว่าปฏิเสธ (fail close) สำหรับ gateway คุณใช้ปุ่ม native หรือตอบ yes เพื่ออนุมัติได้ ตัวเลือกพื้นฐานมี 4 แบบคือ approve once (อนุมัติครั้งเดียว), approve in session (อนุมัติใน session นี้), approve always (อนุมัติตลอดไป) หรือ deny (ปฏิเสธ) ตัวอย่างเช่น ถ้าผมบอกให้ลบ directory หนึ่ง ซึ่งเป็นการทำลายล้างอย่างชัดเจน มันจะขึ้นว่า command approval required เหตุผล: recursive delete ซึ่งมักจะถูก flag เสมอ แล้วคุณเลือกได้ว่าจะ allow once, session หรือ deny ครับ

จากนั้นมี smart approvals ซึ่งใช้ auxiliary LLM มาประเมินความเสี่ยง คำสั่งที่ปลอดภัยอย่างชัดเจนจะถูกอนุมัติอัตโนมัติ คำสั่งที่เป็นอันตรายจริงๆ จะถูกปฏิเสธอัตโนมัติ และกรณีที่ไม่แน่ใจจะส่งไปที่ manual ให้คุณเลือกหนึ่งในสี่ตัวเลือก คุณทำได้ใน CLI เช่นกัน ด้วย `Hermes config set approvals.mode smart` แล้วก็จะเห็นผลเหมือนกัน ผม restart gateway แล้วบอกให้ลบ directory นั้น แล้วมันก็ถูกลบไปเลยโดยไม่ถามอะไร เพราะ smart mode เปิดอยู่ และมันตัดสินใจว่า directory นี้ลบได้ปลอดภัย ซึ่งก็จริงเพราะมันว่างเปล่า คุณเห็นได้ว่าผมถามว่าทำไมมันถึงตัดสินใจว่าลบได้ปลอดภัย ข้อแรกคือเป็นคำสั่งชัดเจน ผมบอกเจาะจงว่าให้ลบ directory นี้ และมี path ชัดเจน ผมให้ path ที่แน่นอน มีการตรวจสอบ scope ก่อนลบ พบว่ามีแค่ไฟล์ readme หนึ่งไฟล์ทิ้งไว้ ไม่ใช่ project path ใหญ่โต เป็นแค่ markdown file ธรรมดา และไม่มีความคลุมเครือ นี่คือสิ่งที่ smart mode มอบให้ agent จะมองเห็นและตัดสินใจแบบนี้ได้ ผมมักใช้ smart mode หรือที่เรียกว่า auto approve ใน Codex และ Claude Code เพราะไม่อยากต้องมาอนุมัติทีละอย่าง และก็ไม่เคยมีปัญหาใหญ่ๆ เลยครับ

คุณยังสามารถปิดการตรวจสอบ approval ทั้งหมดได้ ซึ่งเทียบเท่าการรัน YOLO ตลอดเวลา YOLO mode คือมันจะทำทุกอย่างตามใจชอบโดยไม่ถามคุณในเกือบทุกกรณี ใน dashboard ที่หมวด security ตรง mode คุณจะเห็นตัวเลือก ask, manual ask, และ YOLO พูดง่ายๆ คืออนุมัติคำสั่งอันตรายทั้งหมด หรือปฏิเสธ คุณสลับไปมาได้ที่นี่ และอีกนิดเรื่อง YOLO mode คุณเปิดได้จาก CLI flag เช่น `Hermes chat --yolo` หรือเปิดใน chat โดยพิมพ์ YOLO เพื่อสลับโหมด ข้ามการอนุมัติคำสั่งอันตรายทั้งหมด หรือตั้งเป็น environment variable หรือตามที่ผมแสดงให้ดูก่อนหน้านี้ ถ้าเปิดใน TUI จะมี warning สีแดงสดพร้อมเครื่องหมาย caution เพื่อให้คุณรู้ชัดว่ามันเปิดอยู่ และคุณ toggle ปิดได้ครับ

แต่ YOLO ก็มีขีดจำกัด มีคำสั่งบางอย่างที่จะถูกปฏิเสธไม่ว่าจะเปิด YOLO หรือไม่ก็ตาม เช่น `rm -rf` และ variants ที่ชัดเจน ซึ่งจะลบทั้ง file system root เห็นได้ชัดว่าไม่ต้องการสิ่งนั้น คำสั่งเหล่านี้เสี่ยงเกินไปแม้จะตั้ง YOLO mode ไว้ มันถูกตั้งให้ trip ก่อนที่ approval layer จะเห็นคำสั่งด้วยซ้ำ ไม่มี override flag ใดๆ ถ้าคุณจำเป็นต้องรันจริงๆ ก็รันนอก agent ไปเลย อย่าทำใน agent ทำด้วยตัวเอง manual เถอะครับ

ใน default profile ผมสั่งให้มันหยุด gateway process ที่ Hermes รันอยู่ ซึ่งถูก flag เป็นคำสั่งอันตราย และนี่คือ manual mode คุณตัดสินใจได้ว่าจะทำอย่างไร ผมขอ deny ที่นี่ ลองเปลี่ยนเป็น YOLO mode บ้าง เปิด YOLO สั่งเดิม "Can you kill the Hermes gateway process?" และผลคือก่อนที่มันจะตอบกลับ gateway ก็ถูก kill ไปแล้ว เพราะอยู่ใน YOLO mode แต่ YOLO ไม่ได้ทำทุกอย่างนะครับ ลองสั่งให้ remove root file system โดยไม่มี preserve root ซึ่งไม่เพียงแต่เป็นการทำลายล้างแต่ยังกู้คืนไม่ได้ด้วย นี่จึงถูก hard block ก่อนที่ agent จะได้ทำงานเลย พอผมสั่งให้รัน agent ตอบชัดเจนว่า "I will not run that" เพราะมันจะลบทั้ง file system และทำลายระบบ ดังนั้นแม้ใน YOLO mode ก็มีบางสิ่งที่มันไม่ทำ ซึ่งก็ดี เราคงไม่อยากลบ file system ทั้งหมดผ่าน agent โดยไม่ได้ตั้งใจ ถ้าจำเป็นจริงๆ ก็ทำเอง manual ไปเลยครับ

พาร์ต 4 คือเรื่อง containment หรือการจำกัดขอบเขต container คือขอบเขต ถ้าคุณรันในเครื่องเหมือนที่ผมทำตอนนี้ หรือบางครั้ง SSH เข้า VPS agent ก็ไม่มีขอบเขต container approval layer คือเกราะป้องกันเดียวของคุณ ในกรณีนี้การตรวจสอบ dangerous command จะเปิดอยู่ อย่างไรก็ตาม ถ้าคุณใช้ Docker หรืออะไรที่คล้ายกัน การตรวจสอบ dangerous command จะถูกข้ามไป เพราะสมมติฐานคือ host file system ไม่สามารถเข้าถึงได้ กรณีแย่ที่สุดคือ container พัง ไม่ใช่ host แต่สิ่งที่ต้องทราบคือ นี่เป็นแค่ส่วนของ back end ดังนั้น sandbox ไม่ได้แปลว่าปลอดภัยอย่างไม่มีเงื่อนไข เราเคยพูดถึงเรื่องนี้ในโมดูล 2 ตอนที่ผมแสดง Docker เป็น back end แต่ Docker forward ENV จะว่างเปล่าเป็นค่าเริ่มต้น สิ่งใดที่คุณ forward เข้า container จะถูกอ่านได้ และสามารถถูกขโมยได้โดย code ที่รันอยู่ในนั้น นี่คือสิ่งที่เราเห็นใช่มั้ยครับ และนี่คือเหตุผลที่การเลือก deployment back end เป็นโมดูลยาวทั้งโมดูล

คุณยังสามารถติดตั้ง Hermes agent บน Docker Desktop ได้ ภายใน container และใช้ Docker เป็น back end ได้ด้วย นั่นคือสถานการณ์ Docker in Docker แต่มันค่อนข้างซับซ้อน เลยไม่ขออธิบายในวิดีโอนี้ ผมจะแสดงวิธีรัน Hermes ภายใน Docker ให้ดูแทน และอย่างที่บอก นี่คือวิธีที่ 2 คือ Docker เป็น terminal back end ซึ่งทำในโมดูล 2 ถ้าสนใจทำแบบที่ agent รันบน host แต่ execute คำสั่งทุกอย่างภายใน Docker sandbox container เดียวที่ persistent อยู่ ดูได้ในโมดูล 2 แต่ตอนนี้ผมจะแสดงวิธีรัน Hermes ภายใน Docker เอง ซึ่งเป็นการเพิ่มความปลอดภัย

หน้านี้ใน News Research docs จะให้ข้อมูลส่วนใหญ่ที่คุณต้องการ ผมจะรันคำสั่งเหล่านี้ให้ดู เราจะเห็นว่ากำลัง download agent ผม copy และ paste คำสั่งนี้มา ทำผ่าน WSL ใน PowerShell กำลัง pull image จาก nousresearch/hermes-agent และผมมี Docker รันอยู่ พอติดตั้งเสร็จก็เข้าสู่ setup เลย image ก็ขึ้นมา ไม่ต้องทำอะไรใน Docker เอง มาตั้งค่ากัน เมื่อตั้งค่าเสร็จแล้ว คุณรันใน gateway mode ได้ เมื่อ configure แล้ว คุณรัน container ใน background เป็น persistent gateway ได้ ด้วยคำสั่ง `docker run` ตามนี้ คุณต้องตั้งค่าสิ่งที่ gateway จะทำ เช่น expose OpenAI-compatible API server และ health endpoint ซึ่งเป็น optional ถ้าคุณใช้แค่ chat platforms เช่น Telegram ครับ

แต่จำเป็นถ้าคุณต้องการใช้ dashboard หรือ external tools เข้าถึง gateway ผมรันคำสั่งนี้ ก็ copy และ paste มาอีกเช่นกัน และตอนนี้มันรันอยู่แล้ว มาดูอีกครั้ง มันอยู่บน port localhost นี่คือคำสั่งที่คุณต้องใช้รัน CLI ด้วย ตอนนี้เราอยู่ใน CLI คุณสามารถมี CLI chat ปกติได้ที่นี่ session นี้อยู่ใน Hermes Docker container และมี container ID ครบ Docker container บน WSL ไม่ใช่ bare metal Windows และ Linux การรันใน Docker ซับซ้อนกว่ารันในเครื่องเองนิดหน่อย ดังนั้นคุณควรอ่าน docs เหล่านี้เพื่อหลีกเลี่ยงปัญหาใหญ่ๆ ครับ

พาร์ต 5 คือเรื่อง filters ซึ่งเป็นชั้นที่ 4 และ 5 จาก 7 ชั้น บวกกับ network controls เนื้อหาคืออะไรรั่วไหลได้บ้าง และข้อความใดพยายามจะ hijack ระบบ MCP เห็นแทบไม่มีอะไรเลย นี่เป็นการเรียกกลับไปโมดูล 6 ที่เราพูดถึง MCP เมื่อ MCP server ทำงานเป็น sub process มันจะไม่ inherit environment ของคุณ สิ่งที่ผ่านเข้าไปมีเพียงของพื้นฐาน เช่น PATH, HOME, USER และสิ่งที่คุณตั้งใน ENV อย่างชัดเจน ส่วนที่เหลือถูก strip ออกหมด Provider API keys, gateway tokens, secret ทุกอย่างที่คุณไม่ได้ให้สิทธิ์อย่างชัดเจน error messages ก็ถูก sanitize ด้วย ดังนั้น GitHub PATs หรือ keys และ tokens ทุกชนิดจะถูก redact ก่อนถึง LLM เสมอ และ version 18 ยังเพิ่ม Slack token reduction ด้วยครับ

มีอีกเรื่องที่ควรทราบ เพราะไฟล์ของคุณก็โจมตีคุณได้ agents.md, soul.md, .cursorrules หรืออะไรก็ตามที่กลายเป็นส่วนหนึ่งของ system prompt จะถูก scan ก่อน load มันจะตรวจหาข้อความ "ignore prior instructions" HTML comments ที่ซ่อนคำน่าสงสัย ความพยายามอ่าน ENV หรือ credentials และรูปแบบการ exfiltration ผ่าน curl นี่คือ prompt injection เบื้องต้น และจะถูก block อัตโนมัติ ไม่ใช่ fail แบบเงียบๆ คุณจะได้รับ block message ชัดเจนว่าอะไรถูกหยุดและเพราะเหตุใด

ยังมี network-level guards อีกสองตัวที่ทำงานตลอดเวลา อันแรกคือ SSRF protection ที่เปิดอยู่เสมอ ตรวจสอบทุก URL ที่ tool ใดๆ ใช้ บล็อก private network ranges และ link-local addresses รวมถึง cloud metadata endpoints และจะ fail closed เมื่อ DNS failure ส่วน redirect chains จะถูก revalidate ทุก hop อีกอันคือ website block list ที่คุณกำหนด rules เองได้ ใน security settings ตรง website block list คุณสามารถตั้ง domains ใน shared block list file ได้ชัดเจน ซึ่งจะถูก enforce บน web search, web extract และ browser navigate ครบทุก tool ที่ใช้ URL คุณเห็นได้ใน dashboard ที่หมวด security เลย เปิดใช้ website block list enabled แล้วใส่ domain ที่ต้องการบล็อก

ยังมี opt-out โดยตั้งใจ คือตั้ง `security.allow_private_urls` เป็น true ค่าเริ่มต้นคือ false เพื่อให้ web tools เข้าถึง LAN ของคุณได้ ซึ่ง legit สำหรับเครือข่าย Alama ภายในบ้าน แต่อันตรายมากบน public-facing gateway ดังนั้นปล่อยปิดไว้ ยกเว้นรู้ว่าทำไมต้องเปิดครับ

ต่อมาเราจะมาพูดถึง Tyrith หรือ Teereth (ไม่แน่ใจว่าออกเสียงอย่างไร) แต่นี่เป็น open source tool แยกต่างหากที่ Hermes รองรับอย่างเป็นทางการ ไม่ใช่ core Hermes code แต่ก็ไม่ใช่ bolt-on ที่คุณต้อง configure เอง ถ้าเข้าไปที่ config security คุณจะเห็น Tyrith ตั้งค่าเป็น enabled แล้วใส่ path พร้อม config เพิ่มเติมอีกสองสามตัว

Tyrith คืออะไร? มันจับสิ่งที่ pattern matching ทำไม่ได้ เช่น homograph URL spoofing ที่ domain ดูเหมือนของจริงแต่ไม่ใช่ หรือรูปแบบ pipe to interpreter เช่น curl หรือ bash และ terminal injection attacks มัน auto install ครั้งแรกที่ใช้จาก GitHub releases พร้อม SHA checksum ค่าเริ่มต้นคือเปิดใช้ การโจมตีที่พบบ่อยคือใช้ spoofing แบบนี้ และ Teereth จะทำ pre-exec security scanning ที่ผมพูดถึง มีรูปแบบ spoofing หลายแบบที่มันจับได้ ในตัวอย่างนี้ตัว I จริงๆ แล้วเป็น Cyrillic I ใน hostname ไม่ใช่ Latin I อย่างที่ควรเป็น นี่เป็น Teereth verdict จริงไม่ใช่จำลอง ใน Hermes agent ผมสั่งให้รัน URL ที่ถูก spoof นี้ และมันจับได้ ขึ้นว่าเป็น dangerous command เหตุผล: confusable Unicode characters in the text คือใช้ Cyrillic look-alike แทน I จริง และ "appearing near ASCII text which may indicate a homoglyph attack" นี่คือ Teereth ทำงาน ปฏิเสธคำสั่ง คุณยัง allow ได้อยู่ แต่ถ้าปล่อยให้หมดเวลา 60 วินาที (ค่าเริ่มต้น) มันจะถูกปฏิเสธอัตโนมัติ นี่คือสิ่งที่ Teereth จับได้ เป็นฟีเจอร์ความปลอดภัยที่ดีมาก มันอธิบายชัดเจนว่า ตัว I ดูเหมือนจะเป็น Cyrillic small letter I ไม่ใช่ Latin I ปกติ ซึ่งเป็นเทคนิค phishing ที่พบบ่อยครับ

ที่ดีคือทั้งหมดนี้ปรับได้ตาม profile ซึ่งจำากโมดูลที่แล้วได้ว่า profile เป็น agent แยกกัน สมมติผมอยากให้ Coder profile หรือ Coder agent มีความปลอดภัยสูงขึ้น ผมเปลี่ยน back end จาก local เป็น Docker หรือ SSH หรืออื่นๆ ตามต้องการได้ เช่น ผมต้องการให้ Coder รันใน Docker อย่างเดียว เมื่อ config เป็น backend option แล้ว ก็ตั้งได้ตรงนี้ แล้ว save สมมติ Researcher profile ผมไปที่ security แล้วเปิด website block list เพราะ researcher จะเข้าเว็บเยอะ ผมใส่ domains ที่อยากหลีกเลี่ยงได้ ส่วน Writer profile ผมไปที่ approvals สลับ approval mode ได้ Writer อาจเป็น YOLO ได้ แต่ Builder หรือ Coder คุณอาจอยากให้ ask ตลอดเวลา คุณตั้งแยกกันแล้ว save ทั้งหมด เพื่อให้แต่ละ profile มี security profile เฉพาะตัวตามสิทธิ์น้อยที่สุดที่งานนั้นต้องการ เชื่อมกับโมดูลก่อนหน้า ตรงนี้ก็เชื่อมกับ security คุณปรับแต่งในระดับนี้ได้ครับ

นี่คือทั้ง 7 ชั้น ไม่ใช่ชั้นเดียว ไม่มีชั้นไหนสมบูรณ์ด้วยตัวมันเอง คุณเลือกได้ว่าใครเข้าประตูได้ด้วย allow lists ตั้งค่า approvals ให้ตรงความต้องการ ใช้ containment ด้วย Docker หรือ backends อื่นเพื่อจำกัด blast radius filtering คือตัดสินใจว่า secret ใดออกไปได้ แล้วก็ security hardening ต่างๆ นี่คือ defense in depth คือ 7 ชั้นที่ซ้อนทับกันและเป็นอิสระจากกัน แต่ละชั้นจับสิ่งที่ชั้นอื่นพลาด และตามที่ผมแสดง คุณตั้งค่าเหล่านี้ได้ตาม profile ทำให้คุณขอบเขตได้ตรงตามที่ต้องการเลยครับ

นี่คือจุดจบของวิดีโอ security และจุดจบของ Hermes Agent Masterclass ครบทั้ง 10 โมดูล ขอสรุปสั้นๆ ว่าเราทำอะไรบ้าง โมดูล 1 คือ install และ basic chat โมดูล 2 เรื่อง deploy และใช้ gateway โมดูล 3 memory โมดูล 4 skills โมดูล 5 models และ local models โมดูล 6 tools และ MCP โมดูล 7 cron และ automation โมดูล 8 sub agents โมดูล 9 profiles และ Kanban และโมดูลนี้คือ security เราเริ่มจากแค่ install Hermes Agent จนถึงมีทีม multi-agent ที่ปลอดภัย hardened สามารถใช้ดุลยพินิจได้และสร้างขึ้นมาด้วยกันทั้งหมด

คลาสนี้ผมมีไอเดียตั้งแต่เดือนเมษายน จริงๆ แล้วเริ่มค้นคว้าเพื่อสร้างภาพรวมที่ละเอียดของ Hermes Agent ซึ่งค่อนข้างซับซ้อน docs ก็ละเอียดมาก

มันมี component ต่างๆ มากมาย ไอเดียคือผมอยากทำให้ละเอียดที่สุดเท่าที่จะทำได้ ในหัวข้อที่ค่อนข้าง evergreen คือ Hermes Agent เปลี่ยนตลอดเวลา มี feature ใหม่เพิ่มเข้ามาตลอด แต่บางอย่างเช่น memories, skills, sub agents สิ่งเหล่านี้จะไม่หายไปไหน อาจเปลี่ยนแปลงบ้าง เพิ่มเติมขึ้นมา ได้รับการอัปเดต แต่ core features หลักจะยังเป็นส่วนหนึ่งของ agent อยู่เสมอ นี่คือแนวคิดเบื้องหลัง Masterclass นี้ครับ

ผมได้เรียนรู้ไปเยอะมาก หวังว่าทุกคนจะได้เรียนรู้ไปด้วย ผมเริ่ม Masterclass ทั้งหมดนี้ด้วยความหวังว่าจะได้เรียนรู้จากการสอน และผมคิดว่าทำได้สำเร็จ เพราะผมชำนาญหลายส่วนมากขึ้น โดยเฉพาะในส่วนหลังๆ เช่น cron และ automation jobs, การตั้งค่า profiles และการใช้ Kanban ผมเรียนรู้ไปเยอะแม้จะเป็นคนสอนเองก็ตาม

ผมอยากขอบคุณทุกคนที่รับชม ทั้งหมดนี้น่าจะเกิน 5 ชั่วโมง และ Nous Research ก็ใจดีนำ playlist นี้ไปใส่ใน docs page ของพวกเขาด้วย คุณเห็นได้ว่าพวกเขาใส่ไว้ตรงนี้ มีรูป Tonby เล็กๆ นั่นคือ playlist ทั้งหมด

แต่ยังไม่จบ เราจะสำรวจ Hermes Agent ต่อไปเรื่อยๆ ตามที่มันเปลี่ยนแปลง แม้ผมจะครอบคลุมเยอะใน 10 วิดีโอนี้ แต่ก็ยังมีอีกมากที่ต้องไปต่อ และผมอาจกลับไปอัปเดตบางตอน เพราะตอนแรกๆ ทำไว้ตั้งแต่เดือนเมษายน หลายอย่างเปลี่ยนไปตั้งแต่ตอนนั้น

ขอบคุณทุกคนที่รับชมครับ โปรดแสดงความคิดเห็น บอกได้เลยว่าคุณคิดอย่างไรกับวิดีโอนี้และ Masterclass series ทั้งหมด ติดตาม Tonbi's AI Garage ต่อไปเพื่อดูวิดีโอเพิ่มเติมเกี่ยวกับ Hermes Agent และ AI และ agents โดยทั่วไป แล้วพบกันใหม่ในวิดีโอหน้า ขอบคุณทุกคนที่รับชมนะครับ

03

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

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

  • 2. **"Tyrith" / "Teereth"** — the speaker themselves expresses uncertainty about pronunciation. This is the name of the security scanning tool (likely **Tyr** or **Teereth**). Translated both variants as heard; noted the speaker's own uncertainty.
  • ## `[ฟังไม่ชัด]` Segments
  • [x] No unaddressed `[ฟังไม่ชัด]` markers
04

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

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

ศัพท์คำแปล / คำอธิบาย
Hermes Agentชื่อผลิตภัณฑ์ AI agent ของ Nous Research (ไม่แปล)
Masterclassชื่อซีรีส์วิดีโอสอนการใช้งาน (ไม่แปล)
Securityความปลอดภัย
Trade-offการแลกเปลี่ยนระหว่างสองสิ่งที่ไม่สามารถมีพร้อมกันได้อย่างสมบูรณ์
Agentเอเจนต์ AI ที่ทำงานอัตโนมัติ
WSLWindows Subsystem for Linux — สภาพแวดล้อม Linux บน Windows (ไม่แปล)
Kanban boardบอร์ดจัดการงานแบบคานบัน (ไม่แปล)
Trust layerชั้นความไว้วางใจ — ควบคุมว่าใครสามารถสื่อสารกับ agent ได้
Gatewayประตูเชื่อมต่อระหว่าง agent กับ messaging platforms และ cron
Allow listรายการที่อนุญาต — กำหนดผู้ใช้/โดเมนที่ได้รับอนุญาต
Deny by defaultปฏิเสธเป็นค่าเริ่มต้น — ไม่ตั้งค่าหมายความว่าปฏิเสธทั้งหมด
Approvalsการอนุมัติ — ระบบขออนุญาตก่อนรันคำสั่งที่เสี่ยง
Manual modeโหมดที่ต้องอนุมัติทุกคำสั่งด้วยตนเอง
Smart approvalsระบบอนุมัติอัจฉริยะ — ใช้ LLM ประเมินความเสี่ยงและอนุมัติอัตโนมัติ
YOLO modeโหมดที่ข้ามการอนุมัติทั้งหมด — "You Only Live Once"
Hard blockการบล็อกที่ไม่สามารถ override ได้แม้ใน YOLO mode
Containerคอนเทนเนอร์สำหรับจำกัดขอบเขตการทำงาน (เช่น Docker)
Containmentการจำกัดขอบเขต — ป้องกันไม่ให้ความเสียหายลุกลาม
Sandboxสภาพแวดล้อมที่แยกออกมา ปลอดภัยจากระบบหลัก
Docker in Dockerการรัน Docker ภายใน Docker container
Blast radiusขอบเขตความเสียหายที่อาจเกิดขึ้น
Filterตัวกรองข้อมูล/คำสั่งเพื่อความปลอดภัย
MCPModel Context Protocol — โปรโตคอลเชื่อมต่อ external tools
Prompt injectionการแทรกคำสั่งอันตรายผ่านข้อความหรือไฟล์
Sanitizeทำความสะอาด/กรองข้อมูลที่อ่อนไหวออก
Redactลบหรือปกปิดข้อมูลลับ (เช่น API keys) ก่อนส่งไปยัง LLM
SSRF protectionServer-Side Request Forgery protection — บล็อกการเข้าถึง private network
Website block listรายการเว็บไซต์ที่ถูกบล็อก
Tyrith / Teerethเครื่องมือ pre-exec security scanning จับ homograph และ injection attacks
Homograph attackการโจมตีโดยใช้ตัวอักษรที่ดูเหมือนกันแต่มาจากชุดอักขระต่างกัน (เช่น Cyrillic vs Latin)
Homoglyphตัวอักษรที่มีรูปลักษณ์เหมือนกันแต่เป็นคนละตัว
Defense in depthการป้องกันแบบหลายชั้นซ้อนทับกัน
Profileโปรไฟล์ agent แยกกัน แต่ละอันมีการตั้งค่าความปลอดภัยเฉพาะ
Security hardeningการเสริมความแข็งแกร่งด้านความปลอดภัย
Opt-in / Opt-outเลือกเข้าร่วม / เลือกไม่เข้าร่วม
Fail closedเมื่อเกิดข้อผิดพลาด ให้ปฏิเสธ/บล็อกเป็นค่าเริ่มต้น
Cronตัวกำหนดเวลาทำงานอัตโนมัติ (ไม่แปล)
Sub agentsagent ย่อยที่ถูกเรียกโดย agent หลัก
Evergreenเนื้อหาที่ยังคงใช้ได้ตลอดเวลา ไม่ล้าสมัยง่าย
05

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

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

1
00:00:00,000 --> 00:00:04,832
ยินดีต้อนรับกลับมาสู่ Hermes Agent Masterclass โมดูลที่

2
00:00:04,832 --> 00:00:09,663
10 เรื่องความปลอดภัย (Security) และนี่จะเป็นตอนจบของเรา

3
00:00:09,663 --> 00:00:14,583
ถ้าใครฝ่าฟันมาดูครบทั้ง 10 ตอน ขอแสดงความยินดีด้วยนะครับ

4
00:00:14,583 --> 00:00:20,732
คุณทำสำเร็จถึงบทสุดท้ายแล้ว เราได้เรียนรู้กันมาเยอะมากเกี่ยวกับวิธีใช้
thai-subtitles.srt
SubRip — ใช้กับเครื่องเล่นวิดีโอส่วนใหญ่
↓ ดาวน์โหลด
thai-subtitles.vtt
WebVTT — ใช้กับเว็บ / YouTube
↓ ดาวน์โหลด
เปิดดูซับไตเติ้ลทั้งหมด (345 segments)
1
00:00:00,000 --> 00:00:04,832
ยินดีต้อนรับกลับมาสู่ Hermes Agent Masterclass โมดูลที่

2
00:00:04,832 --> 00:00:09,663
10 เรื่องความปลอดภัย (Security) และนี่จะเป็นตอนจบของเรา

3
00:00:09,663 --> 00:00:14,583
ถ้าใครฝ่าฟันมาดูครบทั้ง 10 ตอน ขอแสดงความยินดีด้วยนะครับ

4
00:00:14,583 --> 00:00:20,732
คุณทำสำเร็จถึงบทสุดท้ายแล้ว เราได้เรียนรู้กันมาเยอะมากเกี่ยวกับวิธีใช้

5
00:00:20,732 --> 00:00:28,550
Hermes Agent และสิ่งที่มันทำได้ แต่ผมคิดว่าสมควรมีตอนจบที่พูดถึงเรื่องความปลอดภัยโดยเฉพาะ

6
00:00:28,550 --> 00:00:33,382
เพราะมันเป็นหัวข้อใหญ่มากเวลาเราใช้ agent ประเภทใดก็ตาม

7
00:00:33,382 --> 00:00:38,741
ก่อนอื่นมาทบทวนกันก่อนว่า 9 โมดูลที่ผ่านมาสร้างอะไรขึ้นมาบ้าง

8
00:00:38,741 --> 00:00:43,396
ตอนนี้คุณมี agent ที่สามารถอ่านและเขียนไฟล์ รันคำสั่ง

9
00:00:43,396 --> 00:00:47,789
shell ใช้จ่ายเงินด้วยซ้ำ ส่งข้อความหาคุณบนโทรศัพท์

10
00:00:47,789 --> 00:00:52,093
และจากโมดูลล่าสุดยังรันทีมงานทั้งทีมได้ โดยมีหลาย

11
00:00:52,093 --> 00:01:00,087
profile ประสานงานกันบน Kanban board ได้ นั่นเป็นอำนาจที่ยิ่งใหญ่มากที่เรามอบให้กับสิ่งหนึ่ง

12
00:01:00,087 --> 00:01:04,655
และวันนี้จะเป็นอีกครึ่งหนึ่งของเรื่อง นั่นคือ Hermes

13
00:01:04,655 --> 00:01:10,278
จะปกป้องอำนาจนั้นไม่ให้กลายเป็นความรับผิด และที่สำคัญกว่านั้นคือ

14
00:01:10,278 --> 00:01:15,988
คุณจะปรับแต่งมันให้เข้ากับระดับความไว้วางใจที่คุณมีจริงได้อย่างไร

15
00:01:15,988 --> 00:01:20,556
ผมทราบว่าในวิดีโอก่อนๆ บางครั้งผมใช้ WSL บางครั้งใช้

16
00:01:20,556 --> 00:01:26,178
Windows แต่ในวิดีโอนี้ผมจะใช้ WSL เพราะฟีเจอร์บางอย่างมีให้ใช้บน

17
00:01:26,178 --> 00:01:31,449
Linux เท่านั้น ผมจะชี้ให้เห็นตอนที่มันเจอ แต่ส่วนใหญ่คุณทำบน

18
00:01:31,449 --> 00:01:37,247
Windows ได้เหมือนกันนะครับ งั้นมาดูกันว่าวันนี้เราจะพูดถึงอะไรบ้าง

19
00:01:37,247 --> 00:01:41,990
อันดับแรกคือ trade-off ระหว่างความสามารถกับความปลอดภัย

20
00:01:41,990 --> 00:01:46,295
จากนั้นพูดถึง trust หรือใครสามารถเข้าถึงและคุยกับ

21
00:01:46,295 --> 00:01:51,478
agent ของคุณได้ จะพูดเรื่อง approvals หรือการอนุมัติเยอะมาก

22
00:01:51,478 --> 00:01:55,782
พูดถึง containers หรือว่ามันรันอยู่ที่ไหน filters

23
00:01:55,782 --> 00:02:00,438
หรือข้อมูลอะไรรั่วไหลได้บ้าง การทำ security hardening

24
00:02:00,438 --> 00:02:04,831
แล้วก็จะสร้างระบบ hardening จริงๆ และลองโจมตีมันดู

25
00:02:04,831 --> 00:02:09,399
งั้นเริ่มกันเลย และถ้าใครรัน agent เองและอยากเข้าถึง

26
00:02:09,399 --> 00:02:15,548
LLM wikis ที่ผมใช้เองสำหรับทำวิดีโอเหล่านี้เพื่อค้นคว้าและสร้างเนื้อหา

27
00:02:15,548 --> 00:02:19,940
ลองแวะชมโปรเจกต์ของผมที่ agentwikis.com ครับ ผมให้

28
00:02:19,940 --> 00:02:24,421
wikis ทั้งหมดนี้ฟรีในหัวข้อต่างๆ มากมาย หรือจะสมัคร

29
00:02:24,421 --> 00:02:28,637
pro account ในราคา $9.99 ต่อเดือน ก็จะได้เข้าถึง

30
00:02:28,637 --> 00:02:34,787
wikis ขนาดใหญ่พิเศษ ซึ่งจะมีจำนวนหน้าและรายละเอียดมากกว่าในแต่ละหัวข้อ

31
00:02:34,787 --> 00:02:41,112
งั้นกลับเข้าสู่วิดีโอกันต่อ แต่ก่อนที่เราจะเริ่มพูดถึงฟีเจอร์ความปลอดภัย

32
00:02:41,112 --> 00:02:45,240
สำคัญมากที่จะต้องชี้ให้เห็นถึง trade-off ตรงนี้

33
00:02:45,240 --> 00:02:52,268
เพราะน่าเสียดายที่ไม่มี agent ที่ปลอดภัยเต็มที่และมีความสามารถเต็มที่พร้อมกันได้

34
00:02:52,268 --> 00:02:56,924
ผมเชื่อว่าหลายคนที่อยู่ตอนที่ Open Claw ออกมาครั้งแรก

35
00:02:56,924 --> 00:03:04,567
คงมีความกังวลเรื่องความปลอดภัยเยอะมาก มีเรื่องสยองขวัญเกี่ยวกับปัญหาความปลอดภัยอยู่เยอะ

36
00:03:04,567 --> 00:03:11,946
แต่ตอนนี้ส่วนใหญ่ได้รับการแก้ไขไปแล้ว มีองค์ประกอบความปลอดภัยหลายอย่างถูกเพิ่มเข้ามา

37
00:03:11,946 --> 00:03:16,075
ทำให้ agent ปลอดภัยขึ้นมาก แต่ก็ยังมี trade-off

38
00:03:16,075 --> 00:03:21,433
ระหว่าง agent ที่มีความสามารถเต็มที่ เข้าถึงไฟล์ทั้งหมดของคุณ

39
00:03:21,433 --> 00:03:26,265
ข้อมูลทั้งหมด เชื่อมต่อกับอีเมลและทุกแพลตฟอร์มที่คุณใช้

40
00:03:26,265 --> 00:03:30,745
ทุกส่วนของชีวิตคุณ โดยไม่ต้องขออนุมัติใดๆ รันในโหมด

41
00:03:30,745 --> 00:03:35,225
YOLO สมบูรณ์บน PC หรืออุปกรณ์หลักของคุณ กับทุก tool

42
00:03:35,225 --> 00:03:41,814
ที่มี นี่คือความเป็นประโยชน์สูงสุด แต่ก็เป็นอันตรายสูงสุดเช่นกันใช่มั้ยครับ

43
00:03:41,814 --> 00:03:46,294
เพราะคำสั่งเดียวก็สามารถทำลายไฟล์สำคัญของคุณได้เยอะ

44
00:03:46,294 --> 00:03:52,180
หรือทำให้ข้อมูลรั่วไหล อีกด้านหนึ่งคือ agent ที่ปลอดภัยอย่างสมบูรณ์

45
00:03:52,180 --> 00:03:56,309
แบบ Docker in Docker ที่ทุกอย่างถูก sandbox ไว้

46
00:03:56,309 --> 00:04:03,688
ไม่มีสิทธิ์ทำอะไรเลย ทำอันตรายอะไรไม่ได้ แต่มันก็ทำอะไรที่มีประโยชน์มากไม่ได้เช่นกัน

47
00:04:03,688 --> 00:04:08,519
ดังนั้นมันขึ้นอยู่กับคุณว่าจะยืนตรงไหนระหว่างสองขั้วนี้

48
00:04:08,519 --> 00:04:13,175
อะไรที่เหมาะกับงานของคุณ และคุณยอมรับความเสี่ยงแค่ไหน

49
00:04:13,175 --> 00:04:18,973
7 ชั้นความปลอดภัยที่เราจะพูดถึงเป็น "dial" หรือปุ่มปรับระดับนะครับ

50
00:04:18,973 --> 00:04:23,190
ไม่ใช่ checklist ที่ต้องเปิดให้หมด คุณต้องคิดว่า

51
00:04:23,190 --> 00:04:27,494
สำหรับ agent นี้ใน environment นี้ ผมอยากให้มันทำ

52
00:04:27,494 --> 00:04:31,887
X, Y, Z วิธีที่ปลอดภัยที่สุดในการทำสิ่งนั้นคืออะไร

53
00:04:31,887 --> 00:04:36,103
นั่นคือสิ่งที่ security hardening เป็นจริงๆ งั้น

54
00:04:36,103 --> 00:04:40,408
dial เหล่านั้นอยู่ตรงไหน? มันขึ้นอยู่กับว่าคุณใช้

55
00:04:40,408 --> 00:04:45,415
agent นี้อย่างไร สำหรับคนส่วนใหญ่ที่รันบนเครื่องของตัวเอง

56
00:04:45,415 --> 00:04:50,686
กับแล็ปท็อปเครื่องเดียวหรืออุปกรณ์ส่วนตัว การทำพิธีกรรมน้อยๆ

57
00:04:50,686 --> 00:04:55,078
ที่นี่ถือว่าถูกต้องแล้ว การทำ allow list หนักๆ และ

58
00:04:55,078 --> 00:05:01,052
sandbox บนแล็ปท็อปของตัวเองเป็นแค่อุปสรรคโดยไม่มีภัยคุกคามที่คุ้มค่า

59
00:05:01,052 --> 00:05:05,620
เพราะคุณเป็นคนเดียวที่จะคุยกับมันอยู่แล้วใช่มั้ยครับ

60
00:05:05,620 --> 00:05:10,364
คุณไม่ได้แชร์มันกับใคร แต่มีคนที่ใช้ agent กับทีมเล็กๆ

61
00:05:10,364 --> 00:05:16,337
มากขึ้นเรื่อยๆ และอาจมี shared gateway ตรงนี้คือจุดที่คุณควรเริ่มใช้

62
00:05:16,337 --> 00:05:21,081
allow list จริงจัง ใช้ manual smart approval และอาจใช้

63
00:05:21,081 --> 00:05:25,210
sandbox back end สำหรับทุกอย่างที่ trigger ผ่าน

64
00:05:25,210 --> 00:05:29,602
gateway และก็มีการ deploy ที่เปิดสาธารณะ รับ input

65
00:05:29,602 --> 00:05:33,731
ที่ไม่น่าไว้วางใจ เช่น webhooks, open DMs, cron

66
00:05:33,731 --> 00:05:39,353
บนเนื้อหาที่ scrape มา สิ่งที่คุณควบคุมไม่ได้และมาจากแหล่งภายนอก

67
00:05:39,353 --> 00:05:44,009
ในกรณีนี้คุณอาจต้องการปฏิเสธการอนุมัติเป็นค่าเริ่มต้น

68
00:05:44,009 --> 00:05:48,841
ใช้ sandbox back end ใช้ Tyrites ซึ่งเราจะพูดถึงภายหลัง

69
00:05:48,841 --> 00:05:53,145
block list เว็บไซต์ และปิดการเข้าถึง private URLs

70
00:05:53,145 --> 00:05:59,382
เราจะกลับมาพูดเรื่องนี้ท้ายวิดีโอ แต่ให้ลองคิดไว้บ้างตามการใช้งานของคุณ

71
00:05:59,382 --> 00:06:04,741
พาร์ต 2 คือ trust layer หรือชั้นความไว้วางใจ ซึ่งเกี่ยวกับว่า

72
00:06:04,741 --> 00:06:09,573
agent จะคุยกับใครได้บ้าง ก่อนที่เราจะถามว่ามันทำอะไรได้

73
00:06:09,573 --> 00:06:13,877
เรากำลังพูดถึง gateway ที่นี่ และการพูดถึง Hermes

74
00:06:13,877 --> 00:06:18,270
gateway คือการเชื่อมต่อกับ messaging platforms และ

75
00:06:18,270 --> 00:06:22,574
cron scheduler เป็นหลัก เมื่อข้อความมาถึง gateway

76
00:06:22,574 --> 00:06:26,703
Hermes จะส่งมันผ่านห่วงโซ่ของการตรวจสอบตามลำดับ

77
00:06:26,703 --> 00:06:30,832
และค่าเริ่มต้นสุดท้ายคือปฏิเสธ Hermes จะตรวจสอบ

78
00:06:30,832 --> 00:06:35,136
per platform allow all เช่น คุณสามารถตั้ง Discord

79
00:06:35,136 --> 00:06:40,143
อนุญาตผู้ใช้ทั้งหมด และตรงนี้เรามี dashboard ถ้าเข้าไปที่

80
00:06:40,143 --> 00:06:44,448
channels แล้วสมมติว่าคุณตั้งค่า Discord ไว้ แม้ใน

81
00:06:44,448 --> 00:06:48,577
WSL agent นี้ผมจะไม่มี แต่คุณเลื่อนลงมาดูได้ว่า

82
00:06:48,577 --> 00:06:54,375
allow all users เป็น true หรือ false โดยค่าเริ่มต้นจะเป็นการปฏิเสธ

83
00:06:54,375 --> 00:06:59,294
แต่นี่เป็น dial หนึ่งที่คุณปรับได้ เป็นอันที่รุนแรงหน่อย

84
00:06:59,294 --> 00:07:03,774
แต่ก็ทำได้ ต่อไปคือ DM pairing approved list Hermes

85
00:07:03,774 --> 00:07:08,342
จะตรวจสอบว่าคุณอยู่ใน approved list หรือไม่ แล้วก็มี

86
00:07:08,342 --> 00:07:12,471
platform allow list เช่น Telegram allowed users

87
00:07:12,471 --> 00:07:17,127
คล้ายกับ Discord ที่ผมเพิ่งแสดงให้ดู คุณสามารถตั้งค่า

88
00:07:17,127 --> 00:07:21,959
Telegram user IDs ที่นี่ได้ ส่วน user ID ของคุณหาได้จาก

89
00:07:21,959 --> 00:07:26,175
get user info bot บน Telegram ยังมี global allow

90
00:07:26,175 --> 00:07:30,304
list คือ gateway allowed users และ global allow

91
00:07:30,304 --> 00:07:34,872
all คือ gateway allow all users ถ้าไม่มีอันไหนตรงเลย

92
00:07:34,872 --> 00:07:39,265
ค่าเริ่มต้นคือปฏิเสธข้อความ ทำให้มันไม่มาถึง agent

93
00:07:39,265 --> 00:07:43,920
เลย ดังนั้นไม่ตั้งค่าอะไรเลยหมายความว่าทุกคนถูกปฏิเสธ

94
00:07:43,920 --> 00:07:48,313
โดยจะมี startup warning บอกคุณตรงๆ แบบนั้น คุณต้อง

95
00:07:48,313 --> 00:07:52,529
opt-in เพื่อเปิดสิ่งนี้ คุณไม่สามารถลืมเข้าไปได้

96
00:07:52,529 --> 00:07:57,449
คุณต้องตั้งค่าให้ชัดเจนว่าใครจะได้รับอนุญาตให้สื่อสารกับ

97
00:07:57,449 --> 00:08:04,213
agent ของคุณ ใน Hermes agent เครื่องนี้ผมไม่ได้ตั้งค่าอะไรไว้เหมือนที่คุณเห็น

98
00:08:04,213 --> 00:08:08,430
แต่ผมจะอนุมัติ Telegram กับ allowed users สำหรับ

99
00:08:08,430 --> 00:08:13,086
user ID ของผม มีหลายวิธีที่ทำได้ คุณเคยเห็นผมทำมาก่อน

100
00:08:13,086 --> 00:08:17,390
แต่เช่นใน configure Telegram ตั้งค่า Telegram bot

101
00:08:17,390 --> 00:08:21,783
token และ allowed Telegram user ID นี่คือ ID ของผม

102
00:08:21,783 --> 00:08:27,317
และสำหรับส่วนนี้ผมจะปล่อยว่างไว้ เพื่อให้ไม่อนุญาตผู้ใช้ทั้งหมด

103
00:08:27,317 --> 00:08:31,885
ตอนนี้เริ่ม gateway ขึ้นมา ก็เห็นได้ว่าผมพิมพ์ hello

104
00:08:31,885 --> 00:08:36,189
ไปใน Telegram bot ตอบกลับมาว่า "Hello Tommy, what

105
00:08:36,189 --> 00:08:40,494
are you working on?" ผมถามว่าใครอยู่ใน allow list

106
00:08:40,494 --> 00:08:44,798
และก็เห็นได้ว่ามีแค่ผม Tommy ใน DM นี้ ซึ่งก็เป็น

107
00:08:44,798 --> 00:08:49,981
home channel ด้วย และไม่มีใครใน pairing list เพราะผมใส่เป็น

108
00:08:49,981 --> 00:08:54,901
ID ตรงๆ และ Telegram allowed chats ใน config ก็ว่างเปล่า

109
00:08:54,901 --> 00:08:59,030
ดังนั้นมีแค่ chat นี้เท่านั้นที่จะเข้าถึง agent

110
00:08:59,030 --> 00:09:03,510
ของผมได้ ถ้ามีคนอื่นพยายามคุยกับ Hermes agent ของผม

111
00:09:03,510 --> 00:09:09,484
แม้จะรู้ชื่อ bot ก็ตาม agent จะไม่ตอบ จะถูกปฏิเสธโดยอัตโนมัติเลยครับ

112
00:09:09,484 --> 00:09:13,964
พาร์ต 3 คือเรื่อง approvals หรือการอนุมัติ ซึ่งก็มี

113
00:09:13,964 --> 00:09:18,883
dial ให้ปรับหลายตัวเช่นกัน งั้นมาดูวิธีตั้งค่า approvals

114
00:09:18,883 --> 00:09:23,100
ต่างๆ กัน ค่าเริ่มต้นคือ Manual ซึ่งคุณสามารถใช้

115
00:09:23,100 --> 00:09:28,634
CLI ได้ การอนุมัติทุกครั้งจะมี timeout 60 วินาทีเป็นค่าเริ่มต้น

116
00:09:28,634 --> 00:09:32,763
และถ้าหมดเวลาจะถือว่าปฏิเสธ (fail close) สำหรับ

117
00:09:32,763 --> 00:09:37,419
gateway คุณใช้ปุ่ม native หรือตอบ yes เพื่ออนุมัติได้

118
00:09:37,419 --> 00:09:42,690
ตัวเลือกพื้นฐานมี 4 แบบคือ approve once (อนุมัติครั้งเดียว),

119
00:09:42,690 --> 00:09:47,170
approve in session (อนุมัติใน session นี้), approve

120
00:09:47,170 --> 00:09:51,914
always (อนุมัติตลอดไป) หรือ deny (ปฏิเสธ) ตัวอย่างเช่น

121
00:09:51,914 --> 00:09:57,272
ถ้าผมบอกให้ลบ directory หนึ่ง ซึ่งเป็นการทำลายล้างอย่างชัดเจน

122
00:09:57,272 --> 00:10:02,192
มันจะขึ้นว่า command approval required เหตุผล: recursive

123
00:10:02,192 --> 00:10:06,584
delete ซึ่งมักจะถูก flag เสมอ แล้วคุณเลือกได้ว่าจะ

124
00:10:06,584 --> 00:10:10,976
allow once, session หรือ deny ครับ จากนั้นมี smart

125
00:10:10,976 --> 00:10:15,457
approvals ซึ่งใช้ auxiliary LLM มาประเมินความเสี่ยง

126
00:10:15,457 --> 00:10:19,673
คำสั่งที่ปลอดภัยอย่างชัดเจนจะถูกอนุมัติอัตโนมัติ

127
00:10:19,673 --> 00:10:26,262
คำสั่งที่เป็นอันตรายจริงๆ จะถูกปฏิเสธอัตโนมัติ และกรณีที่ไม่แน่ใจจะส่งไปที่

128
00:10:26,262 --> 00:10:30,391
manual ให้คุณเลือกหนึ่งในสี่ตัวเลือก คุณทำได้ใน

129
00:10:30,391 --> 00:10:34,783
CLI เช่นกัน ด้วย `Hermes config set approvals.mode

130
00:10:34,783 --> 00:10:39,088
smart` แล้วก็จะเห็นผลเหมือนกัน ผม restart gateway

131
00:10:39,088 --> 00:10:44,358
แล้วบอกให้ลบ directory นั้น แล้วมันก็ถูกลบไปเลยโดยไม่ถามอะไร

132
00:10:44,358 --> 00:10:49,014
เพราะ smart mode เปิดอยู่ และมันตัดสินใจว่า directory

133
00:10:49,014 --> 00:10:57,623
นี้ลบได้ปลอดภัย ซึ่งก็จริงเพราะมันว่างเปล่า คุณเห็นได้ว่าผมถามว่าทำไมมันถึงตัดสินใจว่าลบได้ปลอดภัย

134
00:10:57,623 --> 00:11:02,455
ข้อแรกคือเป็นคำสั่งชัดเจน ผมบอกเจาะจงว่าให้ลบ directory

135
00:11:02,455 --> 00:11:07,286
นี้ และมี path ชัดเจน ผมให้ path ที่แน่นอน มีการตรวจสอบ

136
00:11:07,286 --> 00:11:11,767
scope ก่อนลบ พบว่ามีแค่ไฟล์ readme หนึ่งไฟล์ทิ้งไว้

137
00:11:11,767 --> 00:11:15,983
ไม่ใช่ project path ใหญ่โต เป็นแค่ markdown file

138
00:11:15,983 --> 00:11:20,200
ธรรมดา และไม่มีความคลุมเครือ นี่คือสิ่งที่ smart

139
00:11:20,200 --> 00:11:24,329
mode มอบให้ agent จะมองเห็นและตัดสินใจแบบนี้ได้

140
00:11:24,329 --> 00:11:28,545
ผมมักใช้ smart mode หรือที่เรียกว่า auto approve

141
00:11:28,545 --> 00:11:33,728
ใน Codex และ Claude Code เพราะไม่อยากต้องมาอนุมัติทีละอย่าง

142
00:11:33,728 --> 00:11:38,736
และก็ไม่เคยมีปัญหาใหญ่ๆ เลยครับ คุณยังสามารถปิดการตรวจสอบ

143
00:11:38,736 --> 00:11:43,392
approval ทั้งหมดได้ ซึ่งเทียบเท่าการรัน YOLO ตลอดเวลา

144
00:11:43,392 --> 00:11:48,838
YOLO mode คือมันจะทำทุกอย่างตามใจชอบโดยไม่ถามคุณในเกือบทุกกรณี

145
00:11:48,838 --> 00:11:53,758
ใน dashboard ที่หมวด security ตรง mode คุณจะเห็นตัวเลือก

146
00:11:53,758 --> 00:11:59,468
ask, manual ask, และ YOLO พูดง่ายๆ คืออนุมัติคำสั่งอันตรายทั้งหมด

147
00:11:59,468 --> 00:12:03,596
หรือปฏิเสธ คุณสลับไปมาได้ที่นี่ และอีกนิดเรื่อง

148
00:12:03,596 --> 00:12:07,989
YOLO mode คุณเปิดได้จาก CLI flag เช่น `Hermes chat

149
00:12:07,989 --> 00:12:12,469
--yolo` หรือเปิดใน chat โดยพิมพ์ YOLO เพื่อสลับโหมด

150
00:12:12,469 --> 00:12:16,598
ข้ามการอนุมัติคำสั่งอันตรายทั้งหมด หรือตั้งเป็น

151
00:12:16,598 --> 00:12:21,254
environment variable หรือตามที่ผมแสดงให้ดูก่อนหน้านี้

152
00:12:21,254 --> 00:12:25,646
ถ้าเปิดใน TUI จะมี warning สีแดงสดพร้อมเครื่องหมาย

153
00:12:25,646 --> 00:12:30,302
caution เพื่อให้คุณรู้ชัดว่ามันเปิดอยู่ และคุณ toggle

154
00:12:30,302 --> 00:12:36,890
ปิดได้ครับ แต่ YOLO ก็มีขีดจำกัด มีคำสั่งบางอย่างที่จะถูกปฏิเสธไม่ว่าจะเปิด

155
00:12:36,890 --> 00:12:41,634
YOLO หรือไม่ก็ตาม เช่น `rm -rf` และ variants ที่ชัดเจน

156
00:12:41,634 --> 00:12:46,993
ซึ่งจะลบทั้ง file system root เห็นได้ชัดว่าไม่ต้องการสิ่งนั้น

157
00:12:46,993 --> 00:12:51,297
คำสั่งเหล่านี้เสี่ยงเกินไปแม้จะตั้ง YOLO mode ไว้

158
00:12:51,297 --> 00:12:56,656
มันถูกตั้งให้ trip ก่อนที่ approval layer จะเห็นคำสั่งด้วยซ้ำ

159
00:12:56,656 --> 00:13:00,873
ไม่มี override flag ใดๆ ถ้าคุณจำเป็นต้องรันจริงๆ

160
00:13:00,873 --> 00:13:05,089
ก็รันนอก agent ไปเลย อย่าทำใน agent ทำด้วยตัวเอง

161
00:13:05,089 --> 00:13:09,570
manual เถอะครับ ใน default profile ผมสั่งให้มันหยุด

162
00:13:09,570 --> 00:13:13,698
gateway process ที่ Hermes รันอยู่ ซึ่งถูก flag

163
00:13:13,698 --> 00:13:19,672
เป็นคำสั่งอันตราย และนี่คือ manual mode คุณตัดสินใจได้ว่าจะทำอย่างไร

164
00:13:19,672 --> 00:13:24,152
ผมขอ deny ที่นี่ ลองเปลี่ยนเป็น YOLO mode บ้าง เปิด

165
00:13:24,152 --> 00:13:29,072
YOLO สั่งเดิม "Can you kill the Hermes gateway process?"

166
00:13:29,072 --> 00:13:33,728
และผลคือก่อนที่มันจะตอบกลับ gateway ก็ถูก kill ไปแล้ว

167
00:13:33,728 --> 00:13:38,383
เพราะอยู่ใน YOLO mode แต่ YOLO ไม่ได้ทำทุกอย่างนะครับ

168
00:13:38,383 --> 00:13:42,951
ลองสั่งให้ remove root file system โดยไม่มี preserve

169
00:13:42,951 --> 00:13:48,047
root ซึ่งไม่เพียงแต่เป็นการทำลายล้างแต่ยังกู้คืนไม่ได้ด้วย

170
00:13:48,047 --> 00:13:52,263
นี่จึงถูก hard block ก่อนที่ agent จะได้ทำงานเลย

171
00:13:52,263 --> 00:13:56,568
พอผมสั่งให้รัน agent ตอบชัดเจนว่า "I will not run

172
00:13:56,568 --> 00:14:00,697
that" เพราะมันจะลบทั้ง file system และทำลายระบบ

173
00:14:00,697 --> 00:14:05,440
ดังนั้นแม้ใน YOLO mode ก็มีบางสิ่งที่มันไม่ทำ ซึ่งก็ดี

174
00:14:05,440 --> 00:14:10,711
เราคงไม่อยากลบ file system ทั้งหมดผ่าน agent โดยไม่ได้ตั้งใจ

175
00:14:10,711 --> 00:14:14,840
ถ้าจำเป็นจริงๆ ก็ทำเอง manual ไปเลยครับ พาร์ต 4

176
00:14:14,840 --> 00:14:19,232
คือเรื่อง containment หรือการจำกัดขอบเขต container

177
00:14:19,232 --> 00:14:23,361
คือขอบเขต ถ้าคุณรันในเครื่องเหมือนที่ผมทำตอนนี้

178
00:14:23,361 --> 00:14:28,193
หรือบางครั้ง SSH เข้า VPS agent ก็ไม่มีขอบเขต container

179
00:14:28,193 --> 00:14:33,551
approval layer คือเกราะป้องกันเดียวของคุณ ในกรณีนี้การตรวจสอบ

180
00:14:33,551 --> 00:14:38,032
dangerous command จะเปิดอยู่ อย่างไรก็ตาม ถ้าคุณใช้

181
00:14:38,032 --> 00:14:42,160
Docker หรืออะไรที่คล้ายกัน การตรวจสอบ dangerous

182
00:14:42,160 --> 00:14:46,816
command จะถูกข้ามไป เพราะสมมติฐานคือ host file system

183
00:14:46,816 --> 00:14:51,209
ไม่สามารถเข้าถึงได้ กรณีแย่ที่สุดคือ container พัง

184
00:14:51,209 --> 00:14:55,689
ไม่ใช่ host แต่สิ่งที่ต้องทราบคือ นี่เป็นแค่ส่วนของ

185
00:14:55,689 --> 00:15:01,135
back end ดังนั้น sandbox ไม่ได้แปลว่าปลอดภัยอย่างไม่มีเงื่อนไข

186
00:15:01,135 --> 00:15:05,528
เราเคยพูดถึงเรื่องนี้ในโมดูล 2 ตอนที่ผมแสดง Docker

187
00:15:05,528 --> 00:15:11,062
เป็น back end แต่ Docker forward ENV จะว่างเปล่าเป็นค่าเริ่มต้น

188
00:15:11,062 --> 00:15:15,279
สิ่งใดที่คุณ forward เข้า container จะถูกอ่านได้

189
00:15:15,279 --> 00:15:21,955
และสามารถถูกขโมยได้โดย code ที่รันอยู่ในนั้น นี่คือสิ่งที่เราเห็นใช่มั้ยครับ

190
00:15:21,955 --> 00:15:27,929
และนี่คือเหตุผลที่การเลือก deployment back end เป็นโมดูลยาวทั้งโมดูล

191
00:15:27,929 --> 00:15:32,321
คุณยังสามารถติดตั้ง Hermes agent บน Docker Desktop

192
00:15:32,321 --> 00:15:36,450
ได้ ภายใน container และใช้ Docker เป็น back end

193
00:15:36,450 --> 00:15:41,984
ได้ด้วย นั่นคือสถานการณ์ Docker in Docker แต่มันค่อนข้างซับซ้อน

194
00:15:41,984 --> 00:15:46,201
เลยไม่ขออธิบายในวิดีโอนี้ ผมจะแสดงวิธีรัน Hermes

195
00:15:46,201 --> 00:15:50,593
ภายใน Docker ให้ดูแทน และอย่างที่บอก นี่คือวิธีที่

196
00:15:50,593 --> 00:15:54,898
2 คือ Docker เป็น terminal back end ซึ่งทำในโมดูล

197
00:15:54,898 --> 00:16:00,696
2 ถ้าสนใจทำแบบที่ agent รันบน host แต่ execute คำสั่งทุกอย่างภายใน

198
00:16:00,696 --> 00:16:05,000
Docker sandbox container เดียวที่ persistent อยู่

199
00:16:05,000 --> 00:16:09,568
ดูได้ในโมดูล 2 แต่ตอนนี้ผมจะแสดงวิธีรัน Hermes ภายใน

200
00:16:09,568 --> 00:16:13,785
Docker เอง ซึ่งเป็นการเพิ่มความปลอดภัย หน้านี้ใน

201
00:16:13,785 --> 00:16:18,265
News Research docs จะให้ข้อมูลส่วนใหญ่ที่คุณต้องการ

202
00:16:18,265 --> 00:16:22,921
ผมจะรันคำสั่งเหล่านี้ให้ดู เราจะเห็นว่ากำลัง download

203
00:16:22,921 --> 00:16:27,226
agent ผม copy และ paste คำสั่งนี้มา ทำผ่าน WSL ใน

204
00:16:27,226 --> 00:16:32,233
PowerShell กำลัง pull image จาก nousresearch/hermes-agent

205
00:16:32,233 --> 00:16:36,801
และผมมี Docker รันอยู่ พอติดตั้งเสร็จก็เข้าสู่ setup

206
00:16:36,801 --> 00:16:41,896
เลย image ก็ขึ้นมา ไม่ต้องทำอะไรใน Docker เอง มาตั้งค่ากัน

207
00:16:41,896 --> 00:16:46,025
เมื่อตั้งค่าเสร็จแล้ว คุณรันใน gateway mode ได้

208
00:16:46,025 --> 00:16:50,505
เมื่อ configure แล้ว คุณรัน container ใน background

209
00:16:50,505 --> 00:16:54,985
เป็น persistent gateway ได้ ด้วยคำสั่ง `docker run`

210
00:16:54,985 --> 00:16:59,641
ตามนี้ คุณต้องตั้งค่าสิ่งที่ gateway จะทำ เช่น expose

211
00:16:59,641 --> 00:17:03,858
OpenAI-compatible API server และ health endpoint

212
00:17:03,858 --> 00:17:08,250
ซึ่งเป็น optional ถ้าคุณใช้แค่ chat platforms เช่น

213
00:17:08,250 --> 00:17:12,555
Telegram ครับ แต่จำเป็นถ้าคุณต้องการใช้ dashboard

214
00:17:12,555 --> 00:17:16,947
หรือ external tools เข้าถึง gateway ผมรันคำสั่งนี้

215
00:17:16,947 --> 00:17:21,691
ก็ copy และ paste มาอีกเช่นกัน และตอนนี้มันรันอยู่แล้ว

216
00:17:21,691 --> 00:17:27,489
มาดูอีกครั้ง มันอยู่บน port localhost นี่คือคำสั่งที่คุณต้องใช้รัน

217
00:17:27,489 --> 00:17:31,793
CLI ด้วย ตอนนี้เราอยู่ใน CLI คุณสามารถมี CLI chat

218
00:17:31,793 --> 00:17:36,625
ปกติได้ที่นี่ session นี้อยู่ใน Hermes Docker container

219
00:17:36,625 --> 00:17:41,281
และมี container ID ครบ Docker container บน WSL ไม่ใช่

220
00:17:41,281 --> 00:17:48,221
bare metal Windows และ Linux การรันใน Docker ซับซ้อนกว่ารันในเครื่องเองนิดหน่อย

221
00:17:48,221 --> 00:17:53,140
ดังนั้นคุณควรอ่าน docs เหล่านี้เพื่อหลีกเลี่ยงปัญหาใหญ่ๆ

222
00:17:53,140 --> 00:17:57,357
ครับ พาร์ต 5 คือเรื่อง filters ซึ่งเป็นชั้นที่ 4

223
00:17:57,357 --> 00:18:03,418
และ 5 จาก 7 ชั้น บวกกับ network controls เนื้อหาคืออะไรรั่วไหลได้บ้าง

224
00:18:03,418 --> 00:18:08,338
และข้อความใดพยายามจะ hijack ระบบ MCP เห็นแทบไม่มีอะไรเลย

225
00:18:08,338 --> 00:18:12,818
นี่เป็นการเรียกกลับไปโมดูล 6 ที่เราพูดถึง MCP เมื่อ

226
00:18:12,818 --> 00:18:17,122
MCP server ทำงานเป็น sub process มันจะไม่ inherit

227
00:18:17,122 --> 00:18:21,778
environment ของคุณ สิ่งที่ผ่านเข้าไปมีเพียงของพื้นฐาน

228
00:18:21,778 --> 00:18:26,785
เช่น PATH, HOME, USER และสิ่งที่คุณตั้งใน ENV อย่างชัดเจน

229
00:18:26,785 --> 00:18:30,914
ส่วนที่เหลือถูก strip ออกหมด Provider API keys,

230
00:18:30,914 --> 00:18:36,449
gateway tokens, secret ทุกอย่างที่คุณไม่ได้ให้สิทธิ์อย่างชัดเจน

231
00:18:36,449 --> 00:18:40,753
error messages ก็ถูก sanitize ด้วย ดังนั้น GitHub

232
00:18:40,753 --> 00:18:45,409
PATs หรือ keys และ tokens ทุกชนิดจะถูก redact ก่อนถึง

233
00:18:45,409 --> 00:18:50,153
LLM เสมอ และ version 18 ยังเพิ่ม Slack token reduction

234
00:18:50,153 --> 00:18:55,336
ด้วยครับ มีอีกเรื่องที่ควรทราบ เพราะไฟล์ของคุณก็โจมตีคุณได้

235
00:18:55,336 --> 00:19:01,397
agents.md, soul.md, .cursorrules หรืออะไรก็ตามที่กลายเป็นส่วนหนึ่งของ

236
00:19:01,397 --> 00:19:06,053
system prompt จะถูก scan ก่อน load มันจะตรวจหาข้อความ

237
00:19:06,053 --> 00:19:11,236
"ignore prior instructions" HTML comments ที่ซ่อนคำน่าสงสัย

238
00:19:11,236 --> 00:19:15,453
ความพยายามอ่าน ENV หรือ credentials และรูปแบบการ

239
00:19:15,453 --> 00:19:20,372
exfiltration ผ่าน curl นี่คือ prompt injection เบื้องต้น

240
00:19:20,372 --> 00:19:25,467
และจะถูก block อัตโนมัติ ไม่ใช่ fail แบบเงียบๆ คุณจะได้รับ

241
00:19:25,467 --> 00:19:29,684
block message ชัดเจนว่าอะไรถูกหยุดและเพราะเหตุใด

242
00:19:29,684 --> 00:19:34,252
ยังมี network-level guards อีกสองตัวที่ทำงานตลอดเวลา

243
00:19:34,252 --> 00:19:38,820
อันแรกคือ SSRF protection ที่เปิดอยู่เสมอ ตรวจสอบทุก

244
00:19:38,820 --> 00:19:43,125
URL ที่ tool ใดๆ ใช้ บล็อก private network ranges

245
00:19:43,125 --> 00:19:48,044
และ link-local addresses รวมถึง cloud metadata endpoints

246
00:19:48,044 --> 00:19:52,348
และจะ fail closed เมื่อ DNS failure ส่วน redirect

247
00:19:52,348 --> 00:19:56,653
chains จะถูก revalidate ทุก hop อีกอันคือ website

248
00:19:56,653 --> 00:20:00,782
block list ที่คุณกำหนด rules เองได้ ใน security

249
00:20:00,782 --> 00:20:05,438
settings ตรง website block list คุณสามารถตั้ง domains

250
00:20:05,438 --> 00:20:10,094
ใน shared block list file ได้ชัดเจน ซึ่งจะถูก enforce

251
00:20:10,094 --> 00:20:14,222
บน web search, web extract และ browser navigate

252
00:20:14,222 --> 00:20:18,878
ครบทุก tool ที่ใช้ URL คุณเห็นได้ใน dashboard ที่หมวด

253
00:20:18,878 --> 00:20:23,007
security เลย เปิดใช้ website block list enabled

254
00:20:23,007 --> 00:20:27,751
แล้วใส่ domain ที่ต้องการบล็อก ยังมี opt-out โดยตั้งใจ

255
00:20:27,751 --> 00:20:31,880
คือตั้ง `security.allow_private_urls` เป็น true

256
00:20:31,880 --> 00:20:36,008
ค่าเริ่มต้นคือ false เพื่อให้ web tools เข้าถึง

257
00:20:36,008 --> 00:20:40,928
LAN ของคุณได้ ซึ่ง legit สำหรับเครือข่าย Alama ภายในบ้าน

258
00:20:40,928 --> 00:20:45,847
แต่อันตรายมากบน public-facing gateway ดังนั้นปล่อยปิดไว้

259
00:20:45,847 --> 00:20:49,976
ยกเว้นรู้ว่าทำไมต้องเปิดครับ ต่อมาเราจะมาพูดถึง

260
00:20:49,976 --> 00:20:54,193
Tyrith หรือ Teereth (ไม่แน่ใจว่าออกเสียงอย่างไร)

261
00:20:54,193 --> 00:20:58,409
แต่นี่เป็น open source tool แยกต่างหากที่ Hermes

262
00:20:58,409 --> 00:21:03,417
รองรับอย่างเป็นทางการ ไม่ใช่ core Hermes code แต่ก็ไม่ใช่

263
00:21:03,417 --> 00:21:07,985
bolt-on ที่คุณต้อง configure เอง ถ้าเข้าไปที่ config

264
00:21:07,985 --> 00:21:12,641
security คุณจะเห็น Tyrith ตั้งค่าเป็น enabled แล้วใส่

265
00:21:12,641 --> 00:21:17,472
path พร้อม config เพิ่มเติมอีกสองสามตัว Tyrith คืออะไร?

266
00:21:17,472 --> 00:21:22,216
มันจับสิ่งที่ pattern matching ทำไม่ได้ เช่น homograph

267
00:21:22,216 --> 00:21:26,433
URL spoofing ที่ domain ดูเหมือนของจริงแต่ไม่ใช่

268
00:21:26,433 --> 00:21:30,825
หรือรูปแบบ pipe to interpreter เช่น curl หรือ bash

269
00:21:30,825 --> 00:21:34,954
และ terminal injection attacks มัน auto install

270
00:21:34,954 --> 00:21:39,522
ครั้งแรกที่ใช้จาก GitHub releases พร้อม SHA checksum

271
00:21:39,522 --> 00:21:44,266
ค่าเริ่มต้นคือเปิดใช้ การโจมตีที่พบบ่อยคือใช้ spoofing

272
00:21:44,266 --> 00:21:48,658
แบบนี้ และ Teereth จะทำ pre-exec security scanning

273
00:21:48,658 --> 00:21:52,962
ที่ผมพูดถึง มีรูปแบบ spoofing หลายแบบที่มันจับได้

274
00:21:52,962 --> 00:21:57,091
ในตัวอย่างนี้ตัว I จริงๆ แล้วเป็น Cyrillic I ใน

275
00:21:57,091 --> 00:22:01,220
hostname ไม่ใช่ Latin I อย่างที่ควรเป็น นี่เป็น

276
00:22:01,220 --> 00:22:05,349
Teereth verdict จริงไม่ใช่จำลอง ใน Hermes agent

277
00:22:05,349 --> 00:22:10,444
ผมสั่งให้รัน URL ที่ถูก spoof นี้ และมันจับได้ ขึ้นว่าเป็น

278
00:22:10,444 --> 00:22:15,276
dangerous command เหตุผล: confusable Unicode characters

279
00:22:15,276 --> 00:22:19,580
in the text คือใช้ Cyrillic look-alike แทน I จริง

280
00:22:19,580 --> 00:22:23,885
และ "appearing near ASCII text which may indicate

281
00:22:23,885 --> 00:22:28,541
a homoglyph attack" นี่คือ Teereth ทำงาน ปฏิเสธคำสั่ง

282
00:22:28,541 --> 00:22:33,109
คุณยัง allow ได้อยู่ แต่ถ้าปล่อยให้หมดเวลา 60 วินาที

283
00:22:33,109 --> 00:22:37,589
(ค่าเริ่มต้น) มันจะถูกปฏิเสธอัตโนมัติ นี่คือสิ่งที่

284
00:22:37,589 --> 00:22:43,211
Teereth จับได้ เป็นฟีเจอร์ความปลอดภัยที่ดีมาก มันอธิบายชัดเจนว่า

285
00:22:43,211 --> 00:22:47,691
ตัว I ดูเหมือนจะเป็น Cyrillic small letter I ไม่ใช่

286
00:22:47,691 --> 00:22:52,084
Latin I ปกติ ซึ่งเป็นเทคนิค phishing ที่พบบ่อยครับ

287
00:22:52,084 --> 00:22:57,618
ที่ดีคือทั้งหมดนี้ปรับได้ตาม profile ซึ่งจำากโมดูลที่แล้วได้ว่า

288
00:22:57,618 --> 00:23:02,362
profile เป็น agent แยกกัน สมมติผมอยากให้ Coder profile

289
00:23:02,362 --> 00:23:06,491
หรือ Coder agent มีความปลอดภัยสูงขึ้น ผมเปลี่ยน

290
00:23:06,491 --> 00:23:10,795
back end จาก local เป็น Docker หรือ SSH หรืออื่นๆ

291
00:23:10,795 --> 00:23:15,187
ตามต้องการได้ เช่น ผมต้องการให้ Coder รันใน Docker

292
00:23:15,187 --> 00:23:19,404
อย่างเดียว เมื่อ config เป็น backend option แล้ว

293
00:23:19,404 --> 00:23:23,796
ก็ตั้งได้ตรงนี้ แล้ว save สมมติ Researcher profile

294
00:23:23,796 --> 00:23:28,189
ผมไปที่ security แล้วเปิด website block list เพราะ

295
00:23:28,189 --> 00:23:33,460
researcher จะเข้าเว็บเยอะ ผมใส่ domains ที่อยากหลีกเลี่ยงได้

296
00:23:33,460 --> 00:23:37,940
ส่วน Writer profile ผมไปที่ approvals สลับ approval

297
00:23:37,940 --> 00:23:42,244
mode ได้ Writer อาจเป็น YOLO ได้ แต่ Builder หรือ

298
00:23:42,244 --> 00:23:46,637
Coder คุณอาจอยากให้ ask ตลอดเวลา คุณตั้งแยกกันแล้ว

299
00:23:46,637 --> 00:23:51,380
save ทั้งหมด เพื่อให้แต่ละ profile มี security profile

300
00:23:51,380 --> 00:23:57,266
เฉพาะตัวตามสิทธิ์น้อยที่สุดที่งานนั้นต้องการ เชื่อมกับโมดูลก่อนหน้า

301
00:23:57,266 --> 00:24:02,098
ตรงนี้ก็เชื่อมกับ security คุณปรับแต่งในระดับนี้ได้ครับ

302
00:24:02,098 --> 00:24:07,896
นี่คือทั้ง 7 ชั้น ไม่ใช่ชั้นเดียว ไม่มีชั้นไหนสมบูรณ์ด้วยตัวมันเอง

303
00:24:07,896 --> 00:24:12,552
คุณเลือกได้ว่าใครเข้าประตูได้ด้วย allow lists ตั้งค่า

304
00:24:12,552 --> 00:24:16,768
approvals ให้ตรงความต้องการ ใช้ containment ด้วย

305
00:24:16,768 --> 00:24:20,985
Docker หรือ backends อื่นเพื่อจำกัด blast radius

306
00:24:20,985 --> 00:24:25,289
filtering คือตัดสินใจว่า secret ใดออกไปได้ แล้วก็

307
00:24:25,289 --> 00:24:29,506
security hardening ต่างๆ นี่คือ defense in depth

308
00:24:29,506 --> 00:24:35,919
คือ 7 ชั้นที่ซ้อนทับกันและเป็นอิสระจากกัน แต่ละชั้นจับสิ่งที่ชั้นอื่นพลาด

309
00:24:35,919 --> 00:24:40,135
และตามที่ผมแสดง คุณตั้งค่าเหล่านี้ได้ตาม profile

310
00:24:40,135 --> 00:24:45,494
ทำให้คุณขอบเขตได้ตรงตามที่ต้องการเลยครับ นี่คือจุดจบของวิดีโอ

311
00:24:45,494 --> 00:24:50,150
security และจุดจบของ Hermes Agent Masterclass ครบทั้ง

312
00:24:50,150 --> 00:24:54,455
10 โมดูล ขอสรุปสั้นๆ ว่าเราทำอะไรบ้าง โมดูล 1 คือ

313
00:24:54,455 --> 00:24:58,935
install และ basic chat โมดูล 2 เรื่อง deploy และใช้

314
00:24:58,935 --> 00:25:03,503
gateway โมดูล 3 memory โมดูล 4 skills โมดูล 5 models

315
00:25:03,503 --> 00:25:07,983
และ local models โมดูล 6 tools และ MCP โมดูล 7 cron

316
00:25:07,983 --> 00:25:12,375
และ automation โมดูล 8 sub agents โมดูล 9 profiles

317
00:25:12,375 --> 00:25:16,680
และ Kanban และโมดูลนี้คือ security เราเริ่มจากแค่

318
00:25:16,680 --> 00:25:21,424
install Hermes Agent จนถึงมีทีม multi-agent ที่ปลอดภัย

319
00:25:21,424 --> 00:25:26,519
hardened สามารถใช้ดุลยพินิจได้และสร้างขึ้นมาด้วยกันทั้งหมด

320
00:25:26,519 --> 00:25:34,161
คลาสนี้ผมมีไอเดียตั้งแต่เดือนเมษายน จริงๆ แล้วเริ่มค้นคว้าเพื่อสร้างภาพรวมที่ละเอียดของ

321
00:25:34,161 --> 00:25:38,554
Hermes Agent ซึ่งค่อนข้างซับซ้อน docs ก็ละเอียดมาก

322
00:25:38,554 --> 00:25:45,230
มันมี component ต่างๆ มากมาย ไอเดียคือผมอยากทำให้ละเอียดที่สุดเท่าที่จะทำได้

323
00:25:45,230 --> 00:25:50,677
ในหัวข้อที่ค่อนข้าง evergreen คือ Hermes Agent เปลี่ยนตลอดเวลา

324
00:25:50,677 --> 00:25:55,596
มี feature ใหม่เพิ่มเข้ามาตลอด แต่บางอย่างเช่น memories,

325
00:25:55,596 --> 00:26:01,131
skills, sub agents สิ่งเหล่านี้จะไม่หายไปไหน อาจเปลี่ยนแปลงบ้าง

326
00:26:01,131 --> 00:26:05,435
เพิ่มเติมขึ้นมา ได้รับการอัปเดต แต่ core features

327
00:26:05,435 --> 00:26:10,969
หลักจะยังเป็นส่วนหนึ่งของ agent อยู่เสมอ นี่คือแนวคิดเบื้องหลัง

328
00:26:10,969 --> 00:26:17,470
Masterclass นี้ครับ ผมได้เรียนรู้ไปเยอะมาก หวังว่าทุกคนจะได้เรียนรู้ไปด้วย

329
00:26:17,470 --> 00:26:23,356
ผมเริ่ม Masterclass ทั้งหมดนี้ด้วยความหวังว่าจะได้เรียนรู้จากการสอน

330
00:26:23,356 --> 00:26:27,748
และผมคิดว่าทำได้สำเร็จ เพราะผมชำนาญหลายส่วนมากขึ้น

331
00:26:27,748 --> 00:26:32,141
โดยเฉพาะในส่วนหลังๆ เช่น cron และ automation jobs,

332
00:26:32,141 --> 00:26:38,729
การตั้งค่า profiles และการใช้ Kanban ผมเรียนรู้ไปเยอะแม้จะเป็นคนสอนเองก็ตาม

333
00:26:38,729 --> 00:26:42,858
ผมอยากขอบคุณทุกคนที่รับชม ทั้งหมดนี้น่าจะเกิน 5

334
00:26:42,858 --> 00:26:47,602
ชั่วโมง และ Nous Research ก็ใจดีนำ playlist นี้ไปใส่ใน

335
00:26:47,602 --> 00:26:52,433
docs page ของพวกเขาด้วย คุณเห็นได้ว่าพวกเขาใส่ไว้ตรงนี้

336
00:26:52,433 --> 00:26:57,177
มีรูป Tonby เล็กๆ นั่นคือ playlist ทั้งหมด แต่ยังไม่จบ

337
00:26:57,177 --> 00:27:02,184
เราจะสำรวจ Hermes Agent ต่อไปเรื่อยๆ ตามที่มันเปลี่ยนแปลง

338
00:27:02,184 --> 00:27:07,719
แม้ผมจะครอบคลุมเยอะใน 10 วิดีโอนี้ แต่ก็ยังมีอีกมากที่ต้องไปต่อ

339
00:27:07,719 --> 00:27:13,253
และผมอาจกลับไปอัปเดตบางตอน เพราะตอนแรกๆ ทำไว้ตั้งแต่เดือนเมษายน

340
00:27:13,253 --> 00:27:18,172
หลายอย่างเปลี่ยนไปตั้งแต่ตอนนั้น ขอบคุณทุกคนที่รับชมครับ

341
00:27:18,172 --> 00:27:23,443
โปรดแสดงความคิดเห็น บอกได้เลยว่าคุณคิดอย่างไรกับวิดีโอนี้และ

342
00:27:23,443 --> 00:27:27,923
Masterclass series ทั้งหมด ติดตาม Tonbi's AI Garage

343
00:27:27,923 --> 00:27:32,228
ต่อไปเพื่อดูวิดีโอเพิ่มเติมเกี่ยวกับ Hermes Agent

344
00:27:32,228 --> 00:27:36,884
และ AI และ agents โดยทั่วไป แล้วพบกันใหม่ในวิดีโอหน้า

345
00:27:36,884 --> 00:27:39,080
ขอบคุณทุกคนที่รับชมนะครับ