บันทึกวิจัย
สองบทก่อนพูดถึงเครื่องมือที่ช่วยให้ 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 ที่ห่อโมเดลอะไรก็ได้ ไม่ได้ผูกกับโมเดลของเขาเอง
ถ้าเอาสามบทมาวางเรียงกัน ของแต่ละตัวตอบคำถามคนละข้อ
สรุปแบบสั้นคือ งานเขียนโค้ดตรงหน้ายังเป็นของ Claude Code ส่วน Hermes เหมาะกับงานที่ต้องมีคนเฝ้าอยู่ตลอด เช่น สรุปข่าวทุกเช้า สำรองไฟล์ทุกคืน รับคำสั่งจากมือถือระหว่างเดินทาง ซึ่งเป็นงานที่ Claude Code ในเทอร์มินัลไม่ได้ออกแบบมาให้ทำ
gateway อ่านว่า "เกตเวย์" แปลว่า "ประตูทางผ่าน" ในที่นี้คือ process ตัวเดียวที่ต่อกับทุกแอปแชต รับข้อความเข้ามา ตรวจว่าคนส่งมีสิทธิ์ไหม แล้วส่งต่อให้ตัว agent ส่วน backend คือที่ที่คำสั่ง terminal ของ agent ไปรันจริง ค่าเริ่มต้นคือ local หรือเครื่องที่ Hermes ลงอยู่นั่นเอง ซึ่งเป็นตัวเดียวในรายการที่ไม่มีกำแพงกั้นอะไรเลย
เอกสารแนะนำให้คนใช้ macOS กับ Windows ลงผ่านแอปเดสก์ท็อปจากหน้าเว็บ ซึ่งจะได้ทั้ง CLI และแอปมาพร้อมกัน ถ้าอยากได้แค่ CLI ใช้คำสั่งข้างล่าง Windows รองรับแบบ native ไม่ต้องผ่าน WSL2 (แต่ถ้าใช้ WSL2 อยู่แล้วก็ใช้คำสั่งของ Linux ได้)
# 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 (ตั้งก่อนคุยครั้งแรก)
auth:
adopt_external_logins: false # ไม่ยืม login ของ Claude Code / Codex
approvals:
mode: manual # ถามทุกคำสั่งที่เสี่ยง
skills:
write_approval: true # skill ที่ agent เขียนเอง ต้องรอเราอนุมัติ
memory:
write_approval: true # ความจำใหม่ ต้องรอเราอนุมัติ true แปลว่า Hermes จะยืม login ของ Claude Code และ Codex CLI ที่อยู่ในเครื่องไปใช้เอง เอกสารด้านความปลอดภัยของเขาเตือนเองว่า token ของสองโปรแกรมนี้หมุนเปลี่ยนตลอด ถ้าใช้ร่วมกันอาจทำให้ฝั่งใดฝั่งหนึ่ง login หลุด ใครใช้ Claude Code ทำงานทุกวันควรปิดข้อนี้ก่อนรันครั้งแรกsmart ใช้โมเดลอีกตัวช่วยตัดสินว่าคำสั่งไหนเสี่ยง ตั้งเป็น manual ช่วงแรกเพื่อให้ถามทุกครั้ง พอเห็นนิสัยของมันแล้วค่อยผ่อนfalse agent เขียนและแก้ skill ของตัวเองได้ทันที เปิดข้อนี้แล้วทุกการเขียนจะรอเราดูก่อน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 หัวไฟล์เป็น 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 นั้นแล้วเท่านั้น
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 ที่เป็นขั้นตอนล้วน ๆ ไม่ผูกกับเครื่องมือ น่าจะใช้ได้เลย ข้อนี้ยังไม่ได้ลองจริง
จุดที่ Hermes ต่างจากของในสองบทก่อนคือมันเขียน skill เองได้ เอกสารเรียก skill ว่า "ความจำเชิงขั้นตอน" (procedural memory) เมื่อ agent หาวิธีทำงานหลายขั้นตอนสำเร็จ หรือถูกเราแก้ มันจะบันทึกวิธีนั้นเป็น skill ผ่านเครื่องมือ skill_manage และหลังจบแต่ละเทิร์นยังมีการทบทวนเบื้องหลัง (background review) ที่อาจเพิ่มความจำหรือแก้ skill ด้วย
วงจรนี้คือจุดขายหลักของ Hermes และเป็นจุดที่ควรระวังที่สุดด้วย skill ที่ agent เขียนเองจะถูกใช้ในงานถัดไปโดยอัตโนมัติ ถ้ามันสรุปบทเรียนผิด ความผิดก็จะถูกทำซ้ำต่อไปเรื่อย ๆ ซึ่งเป็นปัญหาเดียวกับที่ Lauren เรียกว่าทางเลี่ยงที่ลามเป็นแพตเทิร์นในบท pstack การเปิด skills.write_approval ทำให้เราเห็นทุกครั้งที่มันอยากเขียน และได้ตรวจก่อน
/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 ตัวอักษร) รวมกันประมาณหนึ่งหน้ากระดาษ
/new เมื่อจบเรื่องหนึ่งmemory จริง ถ้ามันตอบว่า "จำไว้แล้ว" โดยไม่มีการเรียกเครื่องมือ แปลว่าไม่ได้จำอะไรเลย บทเรียนนี้ใช้ได้กับ agent ทุกตัว ให้เชื่อสิ่งที่เกิดขึ้นจริงมากกว่าคำบอกเล่าของ agent~/.hermes/state.db และค้นด้วย session_search ได้ ส่วนนี้ไม่กินที่ความจำใน Hermes มีที่เก็บความรู้สามแบบที่ทำงานต่างกัน ถ้าวางของผิดลิ้นชัก จะเปลืองที่หรือโหลดไม่ขึ้นตอนต้องใช้
เอกสารเองแนะนำว่าคำสั่งที่ต้องใช้ทุกครั้งที่ทำงานประจำอย่างหนึ่ง ควรเก็บเป็น 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 อยู่แล้ว การให้ Hermes มาเขียนโค้ดแทนไม่ได้อะไรเพิ่มมาก ที่ Hermes เติมให้ได้คือ "วงนอก" ส่วนที่ Lauren ใช้ Grok Bot
แต่อย่าให้มันกับ Claude Code แย่ง login กัน (ปิด adopt_external_logins ตามที่ตั้งไว้ข้างบน) และอย่ารัน Hermes สองตัวบนโฟลเดอร์ .hermes เดียวกัน เอกสารหน้า Memory เตือนว่าสอง process ที่เขียนที่เดียวกันจะทำให้ข้อมูลเพี้ยนแบบที่ไม่มีใครตั้งใจ
เมื่อไหร่ไม่ควรใช้
ถ้าต้องการแค่ agent เขียนโค้ดในเครื่อง Claude Code ทำได้ดีอยู่แล้วโดยไม่ต้องดูแล process ที่เปิดทิ้งไว้ ถ้าไม่มีเครื่องที่เปิดตลอดหรือไม่อยากดูแล VPS จุดเด่นเรื่องอยู่ประจำของ Hermes ก็แทบไม่ได้ใช้ และถ้าทำงานกับข้อมูลที่หลุดไม่ได้ การปล่อย agent ที่ต่อกับแอปแชตและรันคำสั่งได้ไว้บนเครื่องงาน ต้องผ่านการคิดเรื่องสิทธิ์อย่างจริงจังก่อน
config.yaml ตามที่บทความนี้ให้ไว้ ก่อนคุยครั้งแรกhermes setup แบบ Blank Slate แล้วเปิดความสามารถเพิ่มทีละอย่าง/skills pending ว่ามันอยากเขียน skill อะไร อ่าน diff ก่อนอนุมัติ/new แล้วเปิด ~/.hermes/memories/USER.md ดูว่ามันจำจริงไหม