บันทึกวิจัย

Hermes Agent: agent ประจำตัวที่เขียน skill ให้ตัวเอง ลงยังไงให้ปลอดภัย

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

เผยแพร่ 12 ตุลาคม 2026


บทนี้เขียนจากเอกสาร ยังไม่ได้ลองรันจริง

ทุกอย่างในบทนี้มาจากเอกสารทางการบนเว็บ hermes-agent.nousresearch.com และ README บน GitHub ที่อ่านเมื่อ 12 ตุลาคม 2026 ยังไม่ได้ลงโปรแกรมแล้วลองเอง ตรงไหนที่ต้องลองถึงจะรู้ บทความจะบอกไว้ตรงนั้น โปรเจกต์นี้อัปเดตบ่อย ถ้าคำสั่งหรือค่าตั้งไม่ตรงกับที่เห็น ให้เชื่อเอกสารล่าสุดของเขา

ในบท pstack Lauren Tan เล่าเรื่อง "วงนอก" (outer loop) คือ bot ที่คอยฟังแชตใน Slack ฟังรายงานบั๊ก แล้วส่งงานต่อให้ agent ที่เขียนโค้ด Lauren ใช้ Grok Bot ทำหน้าที่นี้ Hermes Agent ของ Nous Research เป็นของประเภทเดียวกันในฉบับ open source (สัญญาอนุญาต MIT) ใช้โมเดลของเจ้าไหนก็ได้ และรันบนเครื่องเรา บน VPS ราคาถูก หรือบน cloud ก็ได้

แกะคำศัพท์

Hermes อ่านว่า "เฮอร์มีส" เป็นชื่อเทพผู้ส่งสารของกรีก เทพที่วิ่งส่งข่าวระหว่างเทพกับมนุษย์ ชื่อนี้เข้ากับ agent ที่อยู่ในแอปแชตทุกแอปของเราพอดี ส่วน Nous อ่านว่า "นูส" เป็นคำกรีกแปลว่า "ปัญญา" หรือ "ใจที่คิดได้" Nous Research มีโมเดลภาษาตระกูลชื่อ Hermes อยู่ก่อนแล้วด้วย แต่ Hermes Agent คือตัว agent ที่ห่อโมเดลอะไรก็ได้ ไม่ได้ผูกกับโมเดลของเขาเอง


Hermes อยู่ตรงไหน เทียบกับของที่เรามี

ถ้าเอาสามบทมาวางเรียงกัน ของแต่ละตัวตอบคำถามคนละข้อ

Claude CodeT3 CodeHermes Agent
มันคืออะไรagent เขียนโค้ดแผงคุม agent หลายตัวagent ผู้ช่วยประจำตัว
โมเดลClaudeของ agent ที่มันคุมเจ้าไหนก็ได้
อยู่ที่ไหนเครื่องเรา เปิดเมื่อสั่งเครื่องเรา คุมจากมือถือได้เครื่องเรา, VPS หรือ cloud เปิดทิ้งไว้
คุยทางไหนเทอร์มินัล, แอปเว็บ, เดสก์ท็อป, มือถือTelegram, Discord, Slack, WhatsApp, Signal, CLI
skillเราเขียนใช้ของ agent ที่คุมเราเขียน และ agent เขียนเองได้
เหมาะกับงานโค้ดตรงหน้าคุมงานโค้ดหลายสายงานประจำ งานตามเวลา งานที่สั่งจากแชต

สรุปแบบสั้นคือ งานเขียนโค้ดตรงหน้ายังเป็นของ Claude Code ส่วน Hermes เหมาะกับงานที่ต้องมีคนเฝ้าอยู่ตลอด เช่น สรุปข่าวทุกเช้า สำรองไฟล์ทุกคืน รับคำสั่งจากมือถือระหว่างเดินทาง ซึ่งเป็นงานที่ Claude Code ในเทอร์มินัลไม่ได้ออกแบบมาให้ทำ

ช่องทางคุย Telegram Discord Slack WhatsApp Signal CLI / TUI gateway ตรวจสิทธิ์ผู้ส่ง Hermes Agent โมเดลเจ้าไหนก็ได้ terminal, ไฟล์, เบราว์เซอร์, เว็บ memory, skills, session_search cronjob (งานตามเวลา) delegate_task (ส่งงานให้ subagent) ที่รันคำสั่ง (backend) local (ค่าเริ่มต้น) รันบนเครื่องจริง ไม่มีกำแพง docker ssh singularity, modal daytona, vercel sandbox โฟลเดอร์ .hermes memories, skills, state.db, .env
โครงของ Hermes Agent วาดจาก README และหน้า Features, Tools และ Security ในเอกสารทางการ

gateway อ่านว่า "เกตเวย์" แปลว่า "ประตูทางผ่าน" ในที่นี้คือ process ตัวเดียวที่ต่อกับทุกแอปแชต รับข้อความเข้ามา ตรวจว่าคนส่งมีสิทธิ์ไหม แล้วส่งต่อให้ตัว agent ส่วน backend คือที่ที่คำสั่ง terminal ของ agent ไปรันจริง ค่าเริ่มต้นคือ local หรือเครื่องที่ Hermes ลงอยู่นั่นเอง ซึ่งเป็นตัวเดียวในรายการที่ไม่มีกำแพงกั้นอะไรเลย


ลงให้ปลอดภัยตั้งแต่วันแรก

เอกสารแนะนำให้คนใช้ macOS กับ Windows ลงผ่านแอปเดสก์ท็อปจากหน้าเว็บ ซึ่งจะได้ทั้ง CLI และแอปมาพร้อมกัน ถ้าอยากได้แค่ CLI ใช้คำสั่งข้างล่าง Windows รองรับแบบ native ไม่ต้องผ่าน WSL2 (แต่ถ้าใช้ WSL2 อยู่แล้วก็ใช้คำสั่งของ Linux ได้)

ติดตั้ง CLI
# Linux / macOS / WSL2
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

# Windows (PowerShell) ติดตั้งไว้ที่ %LOCALAPPDATA%\hermes
iex (irm https://hermes-agent.nousresearch.com/install.ps1)

README เตือนไว้ด้วยว่าบน Windows โปรแกรมกันไวรัสอาจจับ uv.exe ที่มากับ Hermes ว่าเป็นมัลแวร์ เขาบอกว่าเป็นการแจ้งเตือนผิด และอธิบายวิธีตรวจว่าไฟล์เป็นของแท้ไว้ใน README ให้ตรวจตามนั้นก่อน อย่ารีบสั่งยกเว้นทั้งโฟลเดอร์

ก่อนคุยครั้งแรก ตั้งสี่ค่านี้

ค่าเริ่มต้นของ Hermes ตั้งมาให้ลื่น ไม่ได้ตั้งมาให้ระวัง มีสี่ค่าที่ควรเปลี่ยนก่อนเริ่มใช้งานจริง โดยเฉพาะข้อแรก

~/.hermes/config.yaml
# ~/.hermes/config.yaml (ตั้งก่อนคุยครั้งแรก)
auth:
  adopt_external_logins: false   # ไม่ยืม login ของ Claude Code / Codex
approvals:
  mode: manual                   # ถามทุกคำสั่งที่เสี่ยง
skills:
  write_approval: true           # skill ที่ agent เขียนเอง ต้องรอเราอนุมัติ
memory:
  write_approval: true           # ความจำใหม่ ต้องรอเราอนุมัติ

รันครั้งแรก

ในเทอร์มินัล
hermes setup        # เลือก Blank Slate ถ้าอยากเริ่มจากเครื่องมือน้อยที่สุด
hermes model        # เลือกเจ้าของโมเดลกับตัวโมเดล
hermes doctor       # ตรวจว่าลงครบ
hermes --tui        # เริ่มคุย (หน้าจอแบบใหม่)

ตอน hermes setup จะมีให้เลือกสามแบบ แบบ Quick Setup ผูกกับ Nous Portal ซึ่งเป็นบริการเสียเงินรายเดือนของ Nous (มีแบบฟรีด้วย) แบบ Full Setup ให้ใส่ key ของแต่ละเจ้าเอง และแบบ Blank Slate ที่เปิดแค่เครื่องมือไฟล์กับ terminal ปิดความจำอัตโนมัติไว้ด้วย แบบสุดท้ายเหมาะกับการเรียนรู้ เพราะเราจะเห็นว่าความสามารถแต่ละอย่างที่เปิดเพิ่มทำอะไร ข้อจำกัดหนึ่งที่ควรรู้คือโมเดลต้องมี context อย่างน้อย 64,000 token ถ้าน้อยกว่านี้ Hermes จะไม่ยอมเริ่ม คนที่อยากรันโมเดลในเครื่องเองต้องตั้งค่านี้ให้ถึง


skill ของ Hermes คือ SKILL.md แบบเดียวกับที่เรารู้จัก

skill ของ Hermes เป็นโฟลเดอร์ที่มี SKILL.md หัวไฟล์เป็น YAML มี name กับ description ตามด้วยเนื้อหา Markdown และมีโฟลเดอร์ references/, scripts/, templates/ แนบได้ หน้าตาเดียวกับ skill ของ Claude Code และ test-t3-app ในบทก่อน README บอกว่ารองรับมาตรฐานเปิดของ agentskills.io

การโหลดก็ใช้หลักเดียวกับที่ test-t3-app ใช้ คือเปิดเผยทีละชั้น agent เห็นแค่ชื่อกับคำอธิบายของทุก skill ก่อน (skills_list) เลือกตัวที่ตรงงานแล้วค่อยโหลดเนื้อหาเต็ม (skill_view) และโหลดไฟล์ใน references ทีละไฟล์เมื่อต้องใช้

ที่เก็บหลักอยู่ที่ ~/.hermes/skills/ แต่สั่งให้มันไปอ่านโฟลเดอร์อื่นเพิ่มได้ เช่น ~/.agents/skills/ ซึ่งเป็นที่เดียวกับที่ T3 Code และ Codex อ่าน ส่วน skill ของโปรเจกต์ใน .hermes/skills/ หรือ .agents/skills/ ของ repo จะโหลดหลังจากเราบอกว่าไว้ใจ repo นั้นแล้วเท่านั้น

~/.hermes/config.yaml
skills:
  external_dirs:
    - ~/.agents/skills   # ที่เดียวกับที่ T3 Code และ Codex อ่าน

skill จากสองบทก่อนใช้กับ Hermes ได้ไหม

รูปแบบไฟล์ใช้ได้ แต่เนื้อหาอาจใช้ไม่ได้ skill ที่ดีมักเรียกชื่อเครื่องมือของ harness ที่มันเขียนให้ test-t3-app เรียก preview_* ของ T3 ส่วน pstack ฉบับ Claude Code เรียกเครื่องมือของ Claude อย่าง Agent กับ AskUserQuestion ใน Hermes เครื่องมือชื่อไม่ตรงกัน (เช่น ส่งงานให้ subagent ใช้ delegate_task ส่วนเบราว์เซอร์ใช้ browser_navigate) skill ที่เรียกเครื่องมือเฉพาะจึงต้องแปลงชื่อก่อน แบบเดียวกับที่ p3-stack แปลง pstack ให้ T3 skill ที่เป็นขั้นตอนล้วน ๆ ไม่ผูกกับเครื่องมือ น่าจะใช้ได้เลย ข้อนี้ยังไม่ได้ลองจริง

วงจรเรียนรู้: agent เขียน skill ให้ตัวเอง

จุดที่ Hermes ต่างจากของในสองบทก่อนคือมันเขียน skill เองได้ เอกสารเรียก skill ว่า "ความจำเชิงขั้นตอน" (procedural memory) เมื่อ agent หาวิธีทำงานหลายขั้นตอนสำเร็จ หรือถูกเราแก้ มันจะบันทึกวิธีนั้นเป็น skill ผ่านเครื่องมือ skill_manage และหลังจบแต่ละเทิร์นยังมีการทบทวนเบื้องหลัง (background review) ที่อาจเพิ่มความจำหรือแก้ skill ด้วย

ทำงานเสร็จ หรือถูกเราแก้ ทบทวนเบื้องหลัง หลังจบเทิร์น skill_manage สร้าง หรือ patch ประตูอนุมัติ write_approval (ปิดอยู่โดยค่าเริ่มต้น) ~/.hermes/skills พร้อมใช้รอบหน้า งานถัดไป: skills_list เห็น skill ใหม่ แล้วโหลดตัวที่ตรงงาน
วงจรเรียนรู้ของ Hermes ตามเอกสารหน้า Skills และ Memory ประตูอนุมัติตรงกลางปิดอยู่โดยค่าเริ่มต้น

วงจรนี้คือจุดขายหลักของ Hermes และเป็นจุดที่ควรระวังที่สุดด้วย skill ที่ agent เขียนเองจะถูกใช้ในงานถัดไปโดยอัตโนมัติ ถ้ามันสรุปบทเรียนผิด ความผิดก็จะถูกทำซ้ำต่อไปเรื่อย ๆ ซึ่งเป็นปัญหาเดียวกับที่ Lauren เรียกว่าทางเลี่ยงที่ลามเป็นแพตเทิร์นในบท pstack การเปิด skills.write_approval ทำให้เราเห็นทุกครั้งที่มันอยากเขียน และได้ตรวจก่อน

คำสั่งในแชตของ Hermes
/skills pending          # ดู skill ที่ agent อยากเขียน
/skills diff <id>        # ดูว่ามันจะแก้อะไร
/skills approve <id>     # อนุมัติ
/skills reject <id>      # ปฏิเสธ
/memory pending          # แบบเดียวกันสำหรับความจำ

เอกสารมีตัวตรวจ skill ที่เตือนเมื่อเนื้อหายาวเกินหรือแนบไฟล์เยอะเกิน แต่ตัวนี้แค่เตือน ไม่ได้ห้ามเขียน ส่วน skill ที่ติดตั้งจากที่อื่น (hermes skills install) จะถูกสแกนหาการขโมยข้อมูล prompt injection และคำสั่งอันตรายก่อนติดตั้ง ผลสแกนระดับ dangerous ใช้ --force ข้ามไม่ได้


ความจำ: ลิ้นชักเล็กสองใบ

ความจำของ Hermes เล็กกว่าที่ชื่อชวนให้คิดมาก มีแค่สองไฟล์ใน ~/.hermes/memories/ คือ MEMORY.md สำหรับเรื่องสภาพแวดล้อมและบทเรียน (จำกัด 2,200 ตัวอักษร) กับ USER.md สำหรับเรื่องตัวเรา (จำกัด 1,375 ตัวอักษร) รวมกันประมาณหนึ่งหน้ากระดาษ

ใน Hermes มีที่เก็บความรู้สามแบบที่ทำงานต่างกัน ถ้าวางของผิดลิ้นชัก จะเปลืองที่หรือโหลดไม่ขึ้นตอนต้องใช้

ความจำ (memory) MEMORY.md + USER.md รวมราว 3,500 ตัวอักษร โหลดครั้งเดียวตอนเริ่ม agent เขียนผ่าน memory เหมาะกับ: ข้อเท็จจริงสั้น ๆ skill โฟลเดอร์ละ SKILL.md ยาวได้ แนบ references ได้ โหลดเมื่องานตรง เราเขียน หรือ agent เขียน เหมาะกับ: ขั้นตอนที่ทำซ้ำ ไฟล์บริบท .hermes.md, AGENTS.md, CLAUDE.md อ่านไฟล์แรกที่เจอไฟล์เดียว โหลดตอนเริ่ม คนเขียน อยู่ใน repo เหมาะกับ: กติกาของโปรเจกต์
สามที่เก็บความรู้ของ Hermes ตามเอกสารหน้า Memory, Skills และ Context Files

เอกสารเองแนะนำว่าคำสั่งที่ต้องใช้ทุกครั้งที่ทำงานประจำอย่างหนึ่ง ควรเก็บเป็น skill มากกว่าความจำ เพราะ skill โหลดเฉพาะตอนเกี่ยวข้องและไม่กินโควตา 2,200 ตัวอักษร

เรื่องไฟล์บริบทมีจุดที่ควรรู้ Hermes อ่านไฟล์บริบทของโปรเจกต์แค่แบบเดียวต่อ session ไล่ตามลำดับ .hermes.md แล้ว AGENTS.override.md แล้ว AGENTS.md แล้ว CLAUDE.md แล้ว .cursorrules เจอแบบไหนก่อนก็ใช้แบบนั้นแบบเดียว ถ้า repo ของเรามีทั้ง AGENTS.md และ CLAUDE.md ที่เนื้อหาไม่เหมือนกัน Hermes จะเห็นแค่ AGENTS.md เรื่องนี้เป็นอีกเหตุผลที่ทีม T3 เขียน CLAUDE.md ไว้บรรทัดเดียวว่า @AGENTS.md ให้กติกาอยู่ที่เดียว ส่วนบุคลิกของตัว agent อยู่ในไฟล์ SOUL.md ซึ่งโหลดแยกต่างหากเสมอ


บทเรียนเรื่องความปลอดภัยจากเอกสารของเขาเอง

หน้า Security ของ Hermes เขียนตรงไปตรงมาดี หลายข้อยอมรับเองว่าเป็นแค่ราวกั้น ข้างล่างคือข้อที่ควรจำ

local ไม่มีกำแพง

backend ค่าเริ่มต้นรันบนเครื่องจริง ตัวที่กั้นได้จริงคือ container หรือเครื่องอื่น เอกสารแนะนำให้ gateway ที่เปิดใช้งานจริงรันใน container หรือเครื่องแยก

รายการห้ามเขียนไม่ใช่กล่องขัง

เครื่องมือเขียนไฟล์ห้ามแตะ ~/.ssh หรือ .env แต่ terminal รันด้วยสิทธิ์ผู้ใช้คนเดียวกัน จึงยังอ่านหรือเขียนไฟล์พวกนั้นผ่านคำสั่ง shell ได้

งานตามเวลา ถูกปฏิเสธโดยค่าเริ่มต้น

งานที่รันโดยไม่มีคนเฝ้า (cron, webhook) จะปฏิเสธคำสั่งที่ต้องขออนุมัติ งานกลางคืนที่ต้องใช้คำสั่งพวกนั้นต้องใส่ไว้ใน allowlist ล่วงหน้า แทนที่จะเปิด YOLO

แชตปิดไว้ก่อน

ถ้าไม่ตั้ง allowlist ไว้ gateway จะปฏิเสธทุกคน คนแปลกหน้าต้องจับคู่ด้วยรหัสที่เราอนุมัติ และเอกสารห้ามเปิด GATEWAY_ALLOW_ALL_USERS ในงานจริง

skill ส่ง env ต่อได้

ตัวแปรแวดล้อมและไฟล์ credential ที่ skill ประกาศไว้ จะถูกส่งต่อให้อัตโนมัติเมื่อโหลด skill นั้น ต้องอ่าน skill จากคนอื่นก่อนติดตั้งทุกครั้ง

hook รันโดยไม่ถาม

ไฟล์ใน ~/.hermes/hooks/ ถูกโหลดเข้า gateway โดยไม่มีขั้นยืนยัน เอกสารบอกให้ดูแลโฟลเดอร์นี้เหมือนดูแลไฟล์ config

ข้อสังเกตหนึ่ง เอกสารของ Hermes ให้กำแพงระดับระบบเป็นของที่เชื่อได้ (container, เครื่องแยก, allowlist) และให้กฎที่ต้องพึ่งการตีความ (รายการห้าม, การสแกนข้อความ) เป็นแค่ราวกั้น หลักนี้ตรงกับกฎห้าชั้นของ Lauren ในบท pstack ว่าอะไรที่บังคับด้วยโครงสร้างได้ เชื่อได้มากกว่าสิ่งที่เขียนเป็นคำแนะนำ


จะใช้คู่กับ Claude Code และ pstack ยังไง

ถ้าทำงานโค้ดด้วย Claude Code กับ pstack อยู่แล้ว การให้ Hermes มาเขียนโค้ดแทนไม่ได้อะไรเพิ่มมาก ที่ Hermes เติมให้ได้คือ "วงนอก" ส่วนที่ Lauren ใช้ Grok Bot

แต่อย่าให้มันกับ Claude Code แย่ง login กัน (ปิด adopt_external_logins ตามที่ตั้งไว้ข้างบน) และอย่ารัน Hermes สองตัวบนโฟลเดอร์ .hermes เดียวกัน เอกสารหน้า Memory เตือนว่าสอง process ที่เขียนที่เดียวกันจะทำให้ข้อมูลเพี้ยนแบบที่ไม่มีใครตั้งใจ

เมื่อไหร่ไม่ควรใช้

ถ้าต้องการแค่ agent เขียนโค้ดในเครื่อง Claude Code ทำได้ดีอยู่แล้วโดยไม่ต้องดูแล process ที่เปิดทิ้งไว้ ถ้าไม่มีเครื่องที่เปิดตลอดหรือไม่อยากดูแล VPS จุดเด่นเรื่องอยู่ประจำของ Hermes ก็แทบไม่ได้ใช้ และถ้าทำงานกับข้อมูลที่หลุดไม่ได้ การปล่อย agent ที่ต่อกับแอปแชตและรันคำสั่งได้ไว้บนเครื่องงาน ต้องผ่านการคิดเรื่องสิทธิ์อย่างจริงจังก่อน


ถ้าจะลอง ทำตามนี้

  1. อ่านหน้า Security ของเอกสารให้จบก่อนลง ใช้เวลาไม่ถึงสิบห้านาที
  2. ลงในเครื่องที่ไม่ใช่เครื่องงานหลักถ้ามี หรือใช้ backend เป็น docker ตั้งแต่ต้น
  3. ตั้งสี่ค่าใน config.yaml ตามที่บทความนี้ให้ไว้ ก่อนคุยครั้งแรก
  4. รัน hermes setup แบบ Blank Slate แล้วเปิดความสามารถเพิ่มทีละอย่าง
  5. ให้มันทำงานเล็ก ๆ ที่ทำซ้ำได้สักสามรอบ แล้วดูใน /skills pending ว่ามันอยากเขียน skill อะไร อ่าน diff ก่อนอนุมัติ
  6. บอกเรื่องตัวเราสักข้อ พิมพ์ /new แล้วเปิด ~/.hermes/memories/USER.md ดูว่ามันจำจริงไหม
  7. ถ้าจะต่อกับแอปแชต ให้ใช้การจับคู่ด้วยรหัสและ allowlist ห้ามเปิดรับทุกคน

แหล่งอ้างอิง

  1. Nous Research, Hermes Agent · hermes-agent.nousresearch.com (หน้าแรก ช่องทางคุย แพ็กเกจ Nous Portal)
  2. Nous Research, hermes-agent README · github.com/NousResearch/hermes-agent (สัญญาอนุญาต MIT, คำสั่งติดตั้ง, backend เจ็ดแบบ, คำเตือน uv.exe บน Windows, ความเข้ากันได้กับ agentskills.io)
  3. เอกสาร Hermes Agent หน้า Quickstart และ Platform Support · docs/getting-started (ขั้นตอนติดตั้ง, สามโหมดของ setup, context ขั้นต่ำ 64,000 token, การรองรับ Windows)
  4. เอกสาร Hermes Agent หน้า Skills · docs/user-guide/features/skills (รูปแบบ SKILL.md, ที่เก็บ, skill_manage, write_approval, การสแกนตอนติดตั้ง)
  5. เอกสาร Hermes Agent หน้า Memory และ Context Files · docs/user-guide/features/memory และ context-files (ขนาดความจำ, การโหลดครั้งเดียวตอนเริ่ม, ลำดับไฟล์บริบท)
  6. เอกสาร Hermes Agent หน้า Tools และ Security · docs/user-guide/features/tools และ docs/user-guide/security (เครื่องมือ, การอนุมัติคำสั่ง, backend, gateway, adopt_external_logins)