Hermes Flightplan #1: คู่มือฉบับสมบูรณ์ในการสร้าง Telegram AI Agent แบบ Always-On (พร้อมโค้ดสำหรับคัดลอกไปใช้)

@witcheer
อังกฤษ4 สัปดาห์ที่ผ่านมา · 22 มิ.ย. 2569
111K
232
34
5
759

TL;DR

คู่มือนี้ให้คำแนะนำอย่างละเอียดสำหรับการติดตั้ง Hermes AI agent บน VPS หรือ Mac พร้อมการเชื่อมต่อกับ Telegram, ระบบกู้คืนอัตโนมัติเมื่อเกิดข้อผิดพลาด และการตั้งค่าความปลอดภัยผ่าน Nous Portal

คุณต้องการเอเจนต์ AI ที่คุณสามารถส่งข้อความจากโทรศัพท์ได้ ตัวที่ยังคงทำงานต่อไปหลังจากที่คุณปิดแล็ปท็อป และกลับมาทำงานเองหลังจากรีบูตเครื่องหรือไม่? Hermes Agent ทำสิ่งนี้ได้: มันทำงานเป็นเกตเวย์ที่คุณคุยผ่าน Telegram และเมื่อคุณตั้งค่ามันอย่างถูกต้อง มันจะรีสตาร์ทตัวเองหลังจากที่ระบบล่มหรือไฟดับ

ฉันสร้างระบบเดียวกันนี้บนเครื่องสองเครื่อง คือ VPS ราคาถูกบนคลาวด์ และ Mac Mini บนโต๊ะทำงานของฉัน เพื่อที่ฉันจะได้เขียนขั้นตอนทั้งหมดโดยไม่ข้ามอะไรเลย มันเป็นเส้นทางเดียว สิ่งที่เปลี่ยนไปตามเครื่องมีเพียงสองจุดที่คุณพิมพ์คำสั่ง: คำสั่งติดตั้ง และส่วนที่ทำให้เกตเวย์ทำงานต่อเนื่อง ทุกอย่างที่อยู่ระหว่างกลางนั้นเหมือนกันทุกประการ

ทุกอย่างด้านล่างนี้รันบนฮาร์ดแวร์ของฉันเอง เส้นทาง Linux คือ Hetzner CX23 (x86, 2 vCPU, 4GB RAM, 40GB disk) บน Ubuntu 24.04.4 LTS ส่วนเส้นทาง Mac คือ Mac Mini M4 บน macOS 15 ทั้งคู่รัน Hermes Agent v0.16.0

สิ่งที่คุณจะได้เมื่อทำเสร็จ

  • ติดตั้ง Hermes Agent แล้ว ทำงานในฐานะผู้ใช้ทั่วไป ไม่ใช่ root
  • บอท Telegram ที่คุณส่งข้อความจากโทรศัพท์ได้ ล็อกให้เฉพาะบัญชีคุณเท่านั้น
  • เกตเวย์ทำงานเป็นบริการที่มีการจัดการ ดังนั้นมันจะกลับมาทำงานหลังจากระบบล่มหรือรีบูต
  • บน VPS จะเป็นเครื่องที่แข็งแกร่ง: SSH แบบใช้คีย์เท่านั้น, ไม่มีการล็อกอิน root, มีไฟร์วอลล์

เลือกเครื่องของคุณ

VPS เป็นวิธีที่ถูกที่สุด เครื่อง x86 ทุกเครื่องที่มี RAM 4GB และพื้นที่ว่างประมาณ 20GB ก็รันสิ่งนี้ได้ เครื่องของฉันคือ Hetzner CX23 ราคา $7.79/เดือน (ราคา Hetzner สหรัฐอเมริกา, 18 มิ.ย. 2026) เช่ามัน แล้วมันจะเปิดตลอดเวลาโดยอัตโนมัติ

Mac ที่คุณมีอยู่แล้วเป็นอีกทางเลือกหนึ่ง Mac Apple silicon ทุกเครื่องที่เสียบปลั๊กทิ้งไว้ก็ใช้ได้ และค่าใช้จ่ายในการรันเป็นศูนย์นอกเหนือจากตัวเครื่อง ข้อแลกเปลี่ยนคือเลเยอร์ความทนทานจะยุ่งยากกว่าบน macOS ซึ่งฉันจะอธิบายในตอนท้าย

คุณต้องมี SSH key บนเครื่องของคุณเอง (ใช้ ssh-keygen -t ed25519 ถ้าคุณยังไม่มี), บัญชี Telegram, และโมเดลสำหรับเอเจนต์ คู่มือนี้ชี้ไปที่ Nous Portal ซึ่งใช้ OAuth ดังนั้นจึงไม่มี API key ต้องเก็บไว้ในไฟล์ Hermes ต้องการโมเดลที่มีบริบทอย่างน้อย 64k

ขั้นตอนที่ 1: เตรียมเครื่องให้พร้อม

บน VPS

สร้างเซิร์ฟเวอร์ที่ผู้ให้บริการของคุณ: Ubuntu 24.04, อินสแตนซ์ x86 (ไม่ใช่ Arm, ดูหมายเหตุเรื่องค่าใช้จ่าย), และวาง SSH public key ของคุณตอนสร้าง

เครื่องสาธารณะใหม่ต้องใช้เวลาไม่กี่นาทีในการทำให้แข็งแกร่งก่อนที่จะวางเอเจนต์ไว้บนนั้น สคริปต์ secure-box.sh ในสูตรนี้ทำได้ในครั้งเดียว: อัปเกรด apt, สร้าง swapfile ขนาด 2GB, ผู้ใช้ sudo ที่ไม่ใช่ root พร้อมคีย์ของคุณ, SSH แบบใช้คีย์เท่านั้นโดยปิดการล็อกอิน root, และไฟร์วอลล์ที่อนุญาตเฉพาะ SSH แก้ไขตัวแปรสองตัวที่ด้านบน คัดลอกไป รันในฐานะ root:

bash
1scp secure-box.sh root@<your-vps-ip>:
2ssh root@<your-vps-ip> 'bash secure-box.sh'

อิมเมจ Ubuntu นี้มาพร้อมกับ PasswordAuthentication ที่ตั้งค่าเป็น yes แม้ว่าฉันจะสร้างเครื่องด้วย SSH key ก็ตาม สคริปต์จะปิดมัน ก่อนที่คุณจะปิดเซสชัน root ให้เปิดเทอร์มินัลอีกอันแล้วยืนยันว่าผู้ใช้ใหม่สามารถล็อกอินได้ เพื่อที่ความผิดพลาดจะไม่ล็อกคุณออก:

bash
1ssh hermes@<your-vps-ip>

จากนี้ไปคุณคือ hermes ไม่ใช่ root

บน Mac

ไม่ต้องทำขั้นตอนทำให้แข็งแกร่ง มันคือเครื่องของคุณบนเครือข่ายของคุณเอง ไม่ใช่เครื่องสาธารณะ ติดตั้ง Homebrew ถ้าคุณยังไม่มี (ตัวติดตั้งจะใช้มันในขั้นตอนถัดไป) แล้วคุณก็พร้อม

ขั้นตอนที่ 2: ติดตั้ง Hermes

การติดตั้งเป็นคำสั่งเดียว เหมือนกันทั้งสองเครื่อง รันในฐานะผู้ใช้ทั่วไปของคุณ:

bash
1curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
2source ~/.bashrc
3hermes --version

ตัวติดตั้งจะตรวจจับ OS ของคุณและดึงชุดเครื่องมือของตัวเอง (uv, Python 3.11, Node.js 22, ripgrep, ffmpeg, Playwright Chromium สำหรับเครื่องมือเบราว์เซอร์) ไปไว้ใน ~/.hermes ดังนั้นมันจะไม่แตะต้อง Python ของระบบ บนเครื่อง Hetzner ของฉัน มันติดตั้ง Hermes Agent v0.16.0 บน Python 3.11.15

นี่คือขั้นตอนที่หนักหน่วง บน VPS มันใช้พื้นที่ดิสก์จาก 1.2GB ที่ใช้ไปเป็น 7.8GB เพิ่มขึ้นประมาณ 6.6GB ซึ่งส่วนใหญ่เป็นเอ็นจิ้นเบราว์เซอร์และ Node วางแผนพื้นที่ว่าง 20GB แล้วเลิกกังวล รันผ่านคำสั่ง ssh ธรรมดาที่ไม่มีเทอร์มินัล ตัวติดตั้งจะพิมพ์ "Setup wizard skipped (no terminal available)" ซึ่งไม่เป็นไร เพราะการตั้งค่าคือขั้นตอนถัดไป

บน Mac คำสั่งเดียวกันก็รันได้ แต่มีข้อแม้หนึ่งข้อ: ติดตั้ง Homebrew ก่อน เมื่อมี Homebrew ตัวติดตั้งจะดึง git และ dependencies โดยไม่ต้องมีพรอมต์ หากไม่มี Homebrew มันจะถอยไปใช้ Command Line Tools ของ Apple ซึ่งอาจเปิดกล่องโต้ตอบ macOS ที่คุณต้องคลิก และกล่องโต้ตอบไม่ดีเมื่อใช้ผ่าน ssh (นี่คือในสาขา macOS ของตัวติดตั้ง) หลังจากนั้นก็เป็นขั้นตอนเดียวกันกับข้างบน

ขั้นตอนที่ 3: ชี้ไปที่โมเดล

bash
1hermes setup --portal

นี่คือ OAuth กับ Nous Portal: มันจะพิมพ์ URL และโค้ด คุณอนุมัติในเบราว์เซอร์ จากนั้นเครื่องจะคุยกับโมเดลโดยไม่มี API key อยู่ในไฟล์ Nous Portal มีฟรี tier และฉันรันทุกอย่างบนโมเดลฟรี ถ้าคุณต้องการใช้ผู้ให้บริการของคุณเอง ให้รัน hermes model แล้วเลือกอันหนึ่ง คีย์จะอยู่ใน ~/.hermes/.env

ขั้นตอนที่ 4: พูดคุยกับมัน

บน VPS

ทันทีที่ ssh ของคุณหลุด เซสชันที่ทำงานอยู่เบื้องหน้าจะตายไปด้วย tmux ช่วยให้เซสชันทำงานต่อไป: เริ่มภายใน tmux, ดีแทช, แล้วมันจะทำงานต่อไป

bash
1sudo apt-get install -y tmux
2tmux new -s hermes # จากนั้น, ข้างใน: hermes

ดีแทชด้วย Ctrl-b แล้ว d และเชื่อมต่อใหม่จากที่ใดก็ได้ในภายหลัง:

bash
1ssh hermes@<your-vps-ip>
2tmux attach -t hermes

การบูตครั้งแรกของเอเจนต์แบบโต้ตอบใช้เวลาสักครู่ เครื่องของฉันใช้เวลาประมาณ 30 วินาทีในการโหลดโมเดลและสกิล ก่อนที่พรอมต์จะปรากฏขึ้น เมื่อมันพร้อมแล้ว คำสั่ง slash ก็ใช้งานได้

/goal เป็นคำสั่งที่ควรค่าแก่การแสดง: มันตั้งเป้าหมายประจำที่เอเจนต์จะทำงานข้ามเทิร์น โดยมีโมเดลผู้ตัดสินตรวจสอบหลังจากแต่ละเทิร์นว่าเสร็จหรือยัง

bash
1/goal check this box total RAM and free disk using shell tools, then report both on one line and mark the goal done

เครื่องของฉันรันคำสั่ง shell เองและกลับมาพร้อมกับ "VPS total RAM: 3.7Gi, free disk space: 28G" ในเวลาประมาณ 15 วินาที นั่นคือเอเจนต์ที่ใช้เครื่องมือของตัวเอง

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

บน Mac

คุณนั่งอยู่หน้าเครื่อง ดังนั้นคุณสามารถรัน hermes ในเทอร์มินัลได้ tmux ยังมีประโยชน์ถ้าคุณ ssh เข้ามาจากแล็ปท็อป แต่มันเป็นทางเลือกที่นี่

ขั้นตอนที่ 5: เกตเวย์ Telegram

ส่วนนี้เหมือนกันทั้งสองเครื่อง สร้างบอท: ส่งข้อความหา @BotFather บน Telegram, ส่ง /newbot, และคัดลอกโทเค็น หา user ID ตัวเลขของคุณจาก @userinfobot จากนั้นกำหนดค่าเกตเวย์:

bash
1hermes gateway setup

เลือก Telegram, วางโทเค็น, และตั้งค่าผู้ใช้ที่อนุญาตเป็น ID ตัวเลขของคุณ เพื่อให้มีแต่คุณเท่านั้นที่คุยกับมันได้ โทเค็นจะอยู่ใน ~/.hermes/.env ส่วนที่เหลืออยู่ใน ~/.hermes/gateway.json

การตั้งค่าเขียนเฉพาะคอนฟิกเท่านั้น มันไม่ได้เริ่มอะไร ดังนั้นบอทจะเงียบ และนั่นคือสิ่งที่ทำให้คนตกใจ: ยังไม่มีอะไรกำลังสอบถาม Telegram อยู่ เริ่มมันในเบื้องหน้าสักครั้งเพื่อตรวจสอบว่ามันเชื่อมต่อได้:

bash
1hermes gateway run

คุณต้องการเห็น, ในล็อก:

bash
1gateway.run: Connecting to telegram...
2[Telegram] Connected to Telegram (polling mode)
3gateway.run: ✓ telegram connected

โหมด polling หมายถึงเกตเวย์เป็นฝ่ายติดต่อ Telegram ไม่มีอะไรเชื่อมต่อเข้ามาที่เครื่องของคุณ ซึ่งเป็นสาเหตุที่ไฟร์วอลล์ไม่ต้องเปิดพอร์ตขาเข้านอกเหนือจาก ssh ส่งข้อความถึงบอทของคุณ มันควรตอบกลับ จากนั้นหยุดเกตเวย์เบื้องหน้าด้วย Ctrl-C เพราะคุณไม่สามารถมีสองสิ่งที่สอบถามโทเค็นเดียวกันพร้อมกันได้ และขั้นตอนถัดไปจะรันมันเป็นบริการ

ขั้นตอนที่ 6: ทำให้มันอยู่รอดหลังการรีบูต

นี่คือจุดเดียวที่เครื่องทั้งสองแตกต่างกัน

บน VPS: systemd

hermes gateway install จะลงทะเบียนเกตเวย์เป็นบริการ systemd เพื่อให้มันรีสตาร์ทเมื่อล่มและกลับมาทำงานหลังรีบูต ในเวอร์ชันนี้ ตัวติดตั้งจะถามคำถาม [Y/n] สองข้อ และไม่มีแฟล็กให้ข้าม รันผ่านคำสั่ง ssh แบบไม่โต้ตอบ ซึ่งเป็นเรื่องปกติเมื่อเขียนสคริปต์ให้เครื่อง และมันจะไม่ได้รับคำตอบ ยกเลิก และไม่ติดตั้งอะไรเลย ป้อนคำตอบผ่าน stdin:

bash
1printf 'n\nY\n' | hermes gateway install

คำถามสองข้อคือ "เริ่มเกตเวย์ตอนนี้?" และ "เริ่มอัตโนมัติเมื่อล็อกอิน/บูต?" n ตามด้วย Y หมายถึง: อย่าเริ่มมันตอนนี้ แต่ให้เปิดใช้งานเมื่อบูต ตัวติดตั้งยังเปิดใช้งาน user-session lingering ซึ่งเป็นสิ่งที่ทำให้บริการผู้ใช้ทำงานได้ก่อนที่คุณจะล็อกอิน ยืนยันมัน เพราะนี่คือสิ่งที่ทำให้ "อยู่รอดหลังรีบูต" เป็นจริง ไม่ใช่แค่ "อยู่รอดหลังออกจากระบบ":

bash
1loginctl show-user $USER -p Linger # ต้องการ: Linger=yes

เริ่มมันและตรวจสอบ:

bash
1hermes gateway start
2systemctl --user status hermes-gateway

คุณต้องการ active (running) และ NRestarts=0 บนเครื่องของฉัน เกตเวย์ใช้ RAM ประมาณ 280MB และทั้งเครื่องอยู่ที่ประมาณ 556MB สบายๆ บน RAM 4GB

ตอนนี้ทดสอบจริง รีบูตและอย่าแตะต้องมัน:

bash
1sudo reboot

เครื่องของฉันกลับมาภายในประมาณ 15 วินาที เกตเวย์เริ่มทำงานเอง เชื่อมต่อกับ Telegram อีกครั้ง และตอบข้อความถัดไปโดยมีประวัติการสนทนาก่อนรีบูต intact นั่นคือประเด็นทั้งหมด

บน Mac: launchd และ watchdog

macOS ใช้ launchd ไม่ใช่ systemd และมีกับดักอยู่ บน macOS 15 กับ Hermes v0.16.0, hermes gateway start อาจล้มเหลวในการลงทะเบียนบริการ launchd และถอยกลับ โดยไม่บอกคุณ ไปเป็นกระบวนการพื้นหลังที่ไม่ได้รับการดูแล คุณจะเห็นสิ่งนี้:

bash
1Bootstrap failed: 5: Input/output error
2⚠ launchd cannot manage the gateway on this macOS version (launchctl exit 5)
3✓ Started gateway as a background process instead
4 It will NOT auto-start at login or auto-restart on crash.

ถ้าคุณมีงาน launchd ที่ทำงานได้มาก่อน คำสั่งนี้จะยกเลิกการโหลดมัน และการถอยกลับจะทำงานได้ดีจนกระทั่งการล่มหรือรีบูตครั้งแรก จากนั้นเอเจนต์ของคุณจะหายไปโดยไม่มีอะไรบอกคุณ launchctl แบบดิบๆ ทำงานได้ในขณะที่ CLI ล้มเหลว รวมถึงผ่าน ssh:

bash
1launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.hermes.gateway.plist
2launchctl print gui/$(id -u)/ai.hermes.gateway | grep state # ต้องการ: state = running

plist จะเริ่มเกตเวย์เมื่อล็อกอิน แต่ไม่รีสตาร์ทเมื่อล่ม cron watchdog จะปิดช่องว่างทั้งสอง และ cron จะทำงานเมื่อบูตโดยไม่ต้องล็อกอิน สูตรนี้มาพร้อมกับ gateway-watchdog.sh; มันจะตรวจสอบทุก 5 นาทีว่าโปรเซสเกตเวย์ยังมีชีวิตอยู่หรือไม่ และบูตสแตรปใหม่ถ้าไม่มี ติดตั้งตามตารางเวลา:

bash
1(crontab -l 2>/dev/null; echo '*/5 * * * * $HOME/scripts/gateway-watchdog.sh >/dev/null 2>&1') | crontab -

ฉันได้เห็นลำดับนี้กู้คืนเกตเวย์ที่ถูกลดระดับบน Mac Mini ของฉันเอง รีบูตมันและยืนยันว่าเกตเวย์กลับมาภายในห้านาทีโดยไม่ต้องล็อกอิน

ตรวจสอบการตั้งค่าของคุณ

  1. บริการทำงานอยู่: systemctl --user status hermes-gateway บน Linux (active (running)), หรือ launchctl print gui/$(id -u)/ai.hermes.gateway | grep state บน macOS (state = running)
  2. ส่งข้อความถึงบอทของคุณ: มันตอบคุณ และไม่สนใจใครก็ตามที่ไม่ได้อยู่ในรายชื่อผู้ใช้ที่อนุญาต
  3. บน Linux, loginctl show-user [$USER](https://x.com/search?q=%24USER&src=cashtag_click) -p Linger อ่านว่า Linger=yes
  4. รีบูตเครื่อง รอสักครู่ ส่งข้อความถึงบอทอีกครั้งโดยไม่ต้องล็อกอินกลับเข้าไป: มันตอบ

ค่าใช้จ่าย

บน VPS ค่าใช้จ่ายมีเพียงเครื่องเท่านั้น เครื่องของฉันคือ Hetzner CX23 ที่ $0.012/ชั่วโมง, สูงสุดที่ $7.79/เดือน (ราคา Hetzner สหรัฐอเมริกา, 18 มิ.ย. 2026; EU CX22 มีสเปกเดียวกันและถูกกว่า)

บน Mac มันคือเครื่องที่คุณมีอยู่แล้ว ไม่มีบริการเพิ่มเติม โมเดลฟรีบนฟรี tier ของ Nous Portal ในทั้งสองกรณี

ที่นี่ หน่วยความจำไม่ใช่ข้อจำกัด: เกตเวย์ใช้ประมาณ 280MB, ทั้งเครื่องประมาณ 556MB ดังนั้น RAM 1GB ก็เพียงพอ ดิสก์คือข้อจำกัดที่แท้จริง: การติดตั้งประมาณ 6.6GB ดังนั้นอิมเมจ 1GB หรือ 10GB จะคับ ให้ใช้ 20GB และใช้ x86 มันเป็นตัวเลือกที่ปลอดภัย

รันด้วยตัวเอง และอะไรต่อไป

ทั้งสองเครื่องมีสูตรอาหารฉบับเต็มพร้อมสคริปต์ที่แน่นอน รันได้ทันที:

ตอนนี้คุณมีเอเจนต์ที่ทำงานตลอดเวลาบน Telegram ที่อยู่รอดหลังการรีบูต

Flightplan ถัดไปจะต่อยอดจากสิ่งนี้: งานตามกำหนดการที่จะส่งข้อความถึงคุณเมื่อมีบางอย่างสำคัญเท่านั้น, พื้นที่ทำงานที่ซิงค์กับ git ที่เอเจนต์อ่านและเขียน, และขั้นตอนการร่างและอนุมัติที่ให้มนุษย์อยู่ในทุกการกระทำสาธารณะ

ขอบคุณที่อ่าน

บันทึกในคลิกเดียว

อ่านบทความไวรัลเชิงลึกด้วย AI ใน YouMind

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

สำรวจ YouMind
สำหรับครีเอเตอร์

เปลี่ยน Markdown ของคุณให้เป็นบทความ 𝕏 ที่สะอาดตา

เวลาคุณเผยแพร่งานเขียนยาวของตัวเอง การจัดรูปแบบรูปภาพ ตาราง และบล็อกโค้ดให้เข้ากับ 𝕏 นั้นน่าปวดหัว YouMind เปลี่ยนร่าง Markdown ทั้งฉบับให้เป็นบทความ 𝕏 ที่สะอาดตาและพร้อมโพสต์ทันที

ลอง Markdown เป็น 𝕏

แพตเทิร์นให้ถอดรหัสเพิ่มเติม

บทความไวรัลล่าสุด

สำรวจบทความไวรัลเพิ่มเติม