🤖HermesBlog
Hermes Official Tutorials · Parte 298/9/2026

บทช่วยสอน 29: เจาะลึกความปลอดภัย

Tutorial 29: Security Deep Dive — easy-to-understand guide based on official docs

Hermes tutorial

บทช่วยสอน 29: เจาะลึกความปลอดภัย

ยินดีต้อนรับกลับมา ผู้จัดการเอเจนต์ทั้งหลาย! วันนี้เราจะสวมหมวกนิรภัยและดำดิ่งลงไปในโมเดลความปลอดภัยของ Hermes Agent อย่างจริงจัง หากคุณเคยสงสัยว่าเบื้องหลังมีอะไรเกิดขึ้นเพื่อรักษาความปลอดภัยให้กับเซสชันของคุณ บทช่วยสอนนี้เหมาะสำหรับคุณ

ภาพรวมใหญ่: การป้องกันแปดชั้น

Hermes ไม่ได้พึ่งพากุญแจล็อกเพียงอันเดียวที่ประตู แต่ใช้แนวทาง การป้องกันแบบหลายชั้น (defense-in-depth) ด้วยชั้นความปลอดภัยที่แตกต่างกันแปดชั้น ลองนึกภาพเหมือนปราสาท: ต่อให้ใครบางคนผ่านคูน้ำไปได้ พวกเขายังต้องเผชิญกับกำแพง ประตู และทหารยามที่อยู่ด้านใน

นี่คือรายการทั้งหมด:

  1. การอนุญาตผู้ใช้ — ใครบ้างที่สามารถพูดคุยกับเอเจนต์ได้
  2. การอนุมัติคำสั่งอันตราย — มนุษย์ตรวจสอบการกระทำที่ทำลายล้าง
  3. ความปลอดภัยในการเขียนไฟล์ — รายการบล็อกและแซนด์บ็อกซ์สำหรับการดำเนินการกับไฟล์
  4. การแยกคอนเทนเนอร์ — แซนด์บ็อกซ์ Docker/Singularity/Modal
  5. การกรองข้อมูลรับรอง MCP — เก็บความลับให้ห่างจากซับโพรเซส
  6. การสแกนไฟล์บริบท — ตรวจจับการฉีดพรอมป์ต์ในไฟล์โปรเจกต์
  7. การแยกข้ามเซสชัน — เซสชันไม่สามารถมองเห็นข้อมูลของกันและกันได้
  8. การทำความสะอาดอินพุต — ปิดกั้นการฉีดเชลล์ผ่านพารามิเตอร์ไดเรกทอรีทำงาน

แต่ละชั้นมีความสำคัญ แต่วันนี้เราจะโฟกัสที่ชั้นที่คุณจะโต้ตอบด้วยมากที่สุด: การอนุมัติคำสั่งอันตราย

การอนุมัติคำสั่งอันตรายทำงานอย่างไร

ก่อนที่ Hermes จะรันคำสั่งใดๆ มันจะตรวจสอบกับรายการรูปแบบอันตรายที่คัดสรรมา หากมีการตรงกัน คุณจะเป็นคนตัดสินใจว่าจะเกิดอะไรขึ้นต่อไป

คุณควบคุมพฤติกรรมนี้ผ่านส่วน approvals ใน ~/.hermes/config.yaml:

approvals:
  mode: smart                     # smart | manual | off
  timeout: 300                    # seconds to wait for user response
  cron_mode: deny                 # deny | approve
  single_query_mode: deny         # deny | approve
  mcp_reload_confirm: true        # confirm before reloading MCP tools
  destructive_slash_confirm: true # confirm before /clear, /new, etc.

โหมดการอนุมัติสามแบบ

คีย์ mode ให้ตัวเลือกสามแบบแก่คุณ:

โหมด พฤติกรรม
smart (ค่าเริ่มต้น) ใช้ LLM เสริมในการประเมินความเสี่ยง คำสั่งความเสี่ยงต่ำ (เช่น python -c "print('hello')") จะได้รับการอนุมัติอัตโนมัติ คำสั่งที่อันตรายจริงๆ จะถูกปฏิเสธอัตโนมัติ กรณีที่ไม่แน่ใจจะถูกส่งต่อไปยังพรอมป์ต์แบบแมนนวล
manual จะถามคุณเสมอสำหรับการอนุมัติคำสั่งอันตราย ไม่มีข้อยกเว้น
off ปิดการตรวจสอบการอนุมัติทั้งหมด เทียบเท่ากับการรันด้วย --yolo

⚠️ คำเตือน: การตั้งค่า approvals.mode: off จะปิดพรอมป์ต์ความปลอดภัยทั้งหมด ควรทำในสภาพแวดล้อมที่เชื่อถือได้เท่านั้น เช่น ไพพ์ไลน์ CI/CD หรือคอนเทนเนอร์แบบใช้แล้วทิ้ง

โหมด YOLO: ปุ่มแดงใหญ่

โหมด YOLO ข้าม ทั้งหมด พรอมป์ต์การอนุมัติคำสั่งอันตรายสำหรับเซสชันปัจจุบัน คุณสามารถเปิดใช้งานได้สามวิธี:

  1. แฟล็ก CLI: hermes --yolo หรือ hermes chat --yolo
  2. คำสั่งสแลช: พิมพ์ /yolo ระหว่างเซสชัน
  3. ตัวแปรสภาพแวดล้อม: ตั้งค่า HERMES_YOLO_MODE=1

คำสั่ง /yolo เป็น สวิตช์สลับ — แต่ละครั้งที่ใช้จะเปิดหรือปิด:

> /yolo
  ⚡ โหมด YOLO เปิด — คำสั่งทั้งหมดได้รับการอนุมัติอัตโนมัติ ใช้ด้วยความระมัดระวัง

> /yolo
  ⚠ โหมด YOLO ปิด — คำสั่งอันตรายจะต้องได้รับการอนุมัติ

เมื่อ YOLO ทำงาน Hermes จะทำให้แน่ใจว่าคุณไม่ลืมมัน คุณจะเห็นแบนเนอร์สีแดงเมื่อเริ่มเซสชันและส่วน ⚠ YOLO ในแถบสถานะ ซึ่งอัปเดตแบบเรียลไทม์เมื่อคุณสลับ

⚠️ อันตราย: โหมด YOLO ปิดการตรวจสอบความปลอดภัยคำสั่งอันตราย ทั้งหมดยกเว้น รายการบล็อกแบบฮาร์ดไลน์ ใช้เฉพาะเมื่อคุณไว้วางใจคำสั่งที่ถูกสร้างขึ้นอย่างเต็มที่ (เช่น สคริปต์อัตโนมัติที่ทดสอบอย่างดีในสภาพแวดล้อมแบบใช้แล้วทิ้ง)

ใหม่ในเวอร์ชันนี้: คีย์คอนฟิกที่ชาญฉลาดขึ้น

คีย์คอนฟิกใหม่สองตัวสมควรได้รับความสนใจเป็นพิเศษ:

mcp_reload_confirm (ค่าเริ่มต้น: true) — เมื่อเป็น true คำสั่ง /reload-mcp จะถามก่อนสร้างชุดเครื่องมือ MCP ใหม่ ทำไม? เพราะการสร้างใหม่จะทำให้แคชพรอมป์ต์ของผู้ให้บริการไม่ถูกต้อง หมายความว่าข้อความถัดไปจะส่งโทเค็นอินพุตเต็มรูปแบบอีกครั้ง นั่นคือค่าใช้จ่ายที่คุณอาจต้องการอนุมัติก่อน

destructive_slash_confirm (ค่าเริ่มต้น: true) — เมื่อเป็น true คำสั่งเซสชันที่ทำลายล้าง (/clear, /new, /reset, /undo) จะถามก่อนทิ้งสถานะการสนทนา คุณจะได้รับไดอะล็อกสามตัวเลือก: อนุมัติครั้งเดียว / อนุมัติเสมอ / ยกเลิก บน Telegram, Discord และ Slack จะใช้ปุ่มใช่/ไม่ใช่แบบเนทีฟ ในที่อื่นจะใช้ข้อความแทน

TUI ยังให้เกียรติการตั้งค่านี้สำหรับโมดอล /clear, /new และ /reset และหากคุณกำลังทำระบบอัตโนมัติ HERMES_TUI_NO_CONFIRM=1 จะข้ามโมดอลนั้นทั้งหมด

เซสชันแบบไม่มีหัว: Cron และ Single-Query

จะเกิดอะไรขึ้นเมื่องาน cron หรือเซสชัน hermes chat -q แบบครั้งเดียวเจอคำสั่งอันตราย? ไม่มีมนุษย์คอยตอบพรอมป์ต์

นั่นคือจุดที่ cron_mode และ single_query_mode เข้ามามีบทบาท:

  • deny (ค่าเริ่มต้น) — บล็อกคำสั่ง เอเจนต์ต้องหาทางอื่น
  • approve — อนุมัติอัตโนมัติทุกอย่างในบริบทนั้น

ทั้งคู่มีค่าเริ่มต้นเป็น deny ด้วยเหตุผลที่ดี: ปลอดภัยไว้ก่อนดีกว่าเสียใจเมื่อไม่มีใครเฝ้าดู

สรุป

โมเดลความปลอดภัยของ Hermes Agent คือการให้คุณควบคุมโดยไม่ขวางทางคุณ โหมดการอนุมัติอัจฉริยะจัดการเรื่องน่าเบื่อโดยอัตโนมัติ ในขณะที่โหมดแมนนวลให้คุณควบคุมได้เต็มที่เมื่อต้องการ และหากคุณอยู่ในสภาพแวดล้อมที่เชื่อถือได้ โหมด YOLO ช่วยให้คุณทำงานได้อย่างรวดเร็ว

เพียงจำไว้ว่า: พลังอันยิ่งใหญ่มาพร้อมความรับผิดชอบอันยิ่งใหญ่ ใช้ YOLO อย่างชาญฉลาด!

ครั้งหน้า เราจะสำรวจวิธีปรับแต่งระบบการอนุมัติให้เข้ากับเวิร์กโฟลว์เฉพาะของคุณ จนกว่าจะถึงตอนนั้น รักษาความปลอดภัยไว้เสมอ!

📖 เอกสารทางการ

この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/security