ยินดีต้อนรับกลับสู่ปาร์ตี้ระบบอัตโนมัติ
Tutorial 21: Scheduled Tasks (Cron) — easy-to-understand guide based on official docs
ยินดีต้อนรับกลับสู่ปาร์ตี้ระบบอัตโนมัติ
ในบทช่วยสอนที่ 20 เราได้สร้างบอทสรุปข่าวประจำวันที่มาทักทายคุณทุกเช้า น่ารักใช่มั้ยล่ะ? วันนี้เราจะอัพระดับขึ้นไปอีก ระบบ cron ใน Hermes ทำได้มากกว่าแค่พูดว่า “สวัสดีตอนเช้า” เรากำลังพูดถึงตัวเฝ้าดูเว็บไซต์ สรุปข่าวรายสัปดาห์ ตัวติดตาม GitHub และแม้แต่ไปป์ไลน์ข้อมูล — ทั้งหมดทำงานแบบอัตโนมัติเต็มรูปแบบ
จุดเด่นที่สุด? คุณไม่จำเป็นต้องเป็นโปรแกรมเมอร์เพื่อตั้งค่าสิ่งเหล่านี้ แค่คุณรู้ว่าอยากให้อะไรทำงานอัตโนมัติ แล้ว Hermes จะจัดการส่วนที่หนักๆ ให้เอง
กฎทอง: โพรอมต์แบบครบวงจรในตัวเอง
ก่อนจะลงลึกถึงแพตเทิร์นต่างๆ มีแนวคิดหนึ่งที่คุณต้องเข้าใจอย่างแท้จริง: งาน cron ทำงานในเซสชันเอเจนต์ใหม่เอี่ยม นั่นหมายความว่าเอเจนต์ของคุณไม่มีความทรงจำใดๆ จากการแชทปัจจุบันของคุณ ไม่มี “จำได้มั้ยว่าเมื่อวานเราคุยอะไรกัน” — ไม่มีอะไรแบบนั้นทั้งนั้น
ดังนั้นทุกโพรอมต์ที่คุณเขียนต้อง ครบวงจรในตัวเองอย่างสมบูรณ์ ใส่ทุกอย่างที่เอเจนต์ต้องรู้: คำสั่งที่ต้องรัน แหล่งข้อมูลที่ต้องเช็ค รูปแบบที่คุณต้องการ พิมพ์ออกมาให้หมด
ให้คิดว่ามันเหมือนการเขียนคำแนะนำให้เด็กฝึกงานที่ฉลาดมากๆ คนหนึ่งที่เพิ่งเดินเข้าประตูมา คุณจะไม่พูดว่า “ทำสิ่งนั้นที่เราคุยกันไว้” แต่คุณจะพูดว่า “นี่คือสิ่งที่ต้องทำ ทีละขั้นตอน”
แพตเทิร์น 1: ตัวเฝ้าดูการเปลี่ยนแปลงเว็บไซต์
อยากรู้ทันทีที่คู่แข่งเปลี่ยนหน้าราคา? หรือตอนที่บล็อกโปรดของคุณอัปเดต? แพตเทิร์นนี้จะเฝ้าดู URL และจะรบกวนคุณเมื่อมีอะไรเปลี่ยนแปลงจริงๆ เท่านั้น
เคล็ดลับอยู่ที่พารามิเตอร์ --script สคริปต์ Python จะรันก่อนทุกครั้งที่ทำงาน ดูแลงานเชิงกล (การดึงข้อมูล การเปรียบเทียบ) และผลลัพธ์ของมันจะกลายเป็นบริบทให้เอเจนต์ เอเจนต์จะตัดสินใจว่า: การเปลี่ยนแปลงนี้น่าสนใจหรือไม่?
นี่คือสคริปต์ที่จัดการงานหนัก:
# ~/.hermes/scripts/watch-site.py
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")
req = urllib.request.Request(URL, headers={"User-Agent": "Hermes-Monitor/1.0"})
content = urllib.request.urlopen(req, timeout=30).read().decode()
current_hash = hashlib.sha256(content.encode()).hexdigest()
prev_hash = None
if os.path.exists(STATE_FILE):
with open(STATE_FILE) as f:
prev_hash = json.load(f).get("hash")
with open(STATE_FILE, "w") as f:
json.dump({"hash": current_hash, "url": URL}, f)
if prev_hash and prev_hash != current_hash:
print(f"CHANGE DETECTED on {URL}")
print(f"Previous hash: {prev_hash}")
print(f"Current hash: {current_hash}")
print(f"\nCurrent content (first 2000 chars):\n{content[:2000]}")
else:
print("NO_CHANGE")
จากนั้นตั้งค่างาน cron:
/cron add "every 1h" "If the script output says CHANGE DETECTED, summarize what changed on the page and why it might matter. If it says NO_CHANGE, respond with just [SILENT]." --script ~/.hermes/scripts/watch-site.py --name "Pricing monitor" --deliver telegram
เคล็ดลับมือโปร: สังเกตคำสั่ง [SILENT] ไหม? นั่นคือสัญญาณเงียบของคุณ เมื่อเอเจนต์ตอบกลับด้วยแค่ [SILENT] Hermes จะรู้ว่าไม่ต้องรบกวนคุณ ไม่มีสแปมในช่วงเวลาพักผ่อนของคุณ
แพตเทิร์น 2: รายงานประจำสัปดาห์
อันนี้เหมาะสำหรับการติดตามข่าวสารในวงการของคุณ มันจะรันทุกวันจันทร์ตอน 9 โมงเช้าและรวบรวมสรุปจากหลายแหล่งข้อมูล
/cron add "0 9 * * 1" "Generate a weekly report covering:
1. Search the web for the top 5 AI news stories from the past week
2. Search GitHub for trending repositories in the 'machine-learning' topic
3. Check Hacker News for the most discussed AI/ML posts
Format as a clean summary with sections for each source. Include links.
Keep it under 500 words — highlight only what matters." --name "Weekly AI digest" --deliver telegram
0 9 * * 1 คือไวยากรณ์ cron มาตรฐาน: นาทีที่ 0 ชั่วโมงที่ 9 วันใดก็ได้ของเดือน เดือนใดก็ได้ วันจันทร์ (1) พอรู้แล้วก็ง่ายนิดเดียว
แพตเทิร์น 3: ตัวเฝ้าดู GitHub Repository
ติดตาม repo ไหนก็ได้โดยไม่ต้องรีเฟรชหน้าทุกห้านาที
/cron add "every 6h" "Check the GitHub repository NousResearch/hermes-agent for:
- New issues opened in the last 6 hours
- New PRs opened or merged in the last 6 hours
- Any new releases
Use the terminal to run gh commands:
gh issue list --repo NousResearch/hermes-agent --state open --json number,title,author,createdAt --limit 10
gh pr list --repo NousResearch/hermes-agent --state all --json number,title,author,createdAt,mergedAt --limit 10
Filter to only items from the last 6 hours. If nothing new, respond with [SILENT].
Otherwise, provide a concise summary of the activity." --name "Repo watcher" --deliver discord
สังเกตว่าโพรอมต์รวมคำสั่ง gh ที่แน่นอนไว้ด้วย? นั่นคือกฎครบวงจรในตัวเองที่ทำงานจริง เอเจนต์จะจำไม่ได้ว่าคุณทำแบบนี้ครั้งที่แล้วยังไง — คุณต้องบอกมันทุกครั้ง
แพตเทิร์น 4: ไปป์ไลน์เก็บข้อมูล
อันนี้สำหรับสายข้อมูล เก็บราคา เมตริก หรือข้อมูล API ใดๆ เป็นระยะๆ บันทึกลงไฟล์ แล้วให้เอเจนต์ช่วยหันแนวโน้ม
สคริปต์จัดการเรื่องการเก็บข้อมูล (ไม่เสียโทเค็น LLM ไปกับการดึงข้อมูล) และเอเจนต์จัดการเรื่องการวิเคราะห์ รวมกันเป็นระบบตรวจจับแนวโน้มที่ทรงพลัง
ทางเลือกแบบ Zero-Token
ไม่ต้องการ LLM เลย? มีสองตัวเลือก:
-
งาน cron ที่ใช้สคริปต์อย่างเดียว: ถ้าสคริปต์ของคุณสร้างข้อความที่ต้องการได้อยู่แล้ว (การแจ้งเตือนหน่วยความจำ คำเตือนพื้นที่ดิสก์ สัญญาณ heartbeat) ข้ามเอเจนต์ไปเลย แค่ขอให้ Hermes ตั้งค่าให้ — เครื่องมือ
cronjobรู้ว่าเมื่อไหร่ควรใช้no_agent=True -
ส่งครั้งเดียวจากสคริปต์ที่รันอยู่: ใช้
hermes sendเพื่อส่ง stdout หรือไฟล์ตรงไปยัง Telegram, Discord หรือ Slack เหมาะสำหรับขั้นตอน CI, ฮุคหลัง commit หรือสคริปต์ deploy
สรุปส่งท้าย
คุณได้แพตเทิร์นครบแล้ว ไปทำให้อะไรก็ตามที่น่าเบื่อเป็นระบบอัตโนมัติเถอะ ตัวคุณในอนาคตจะขอบคุณ
สำหรับเอกสารอ้างอิงฟีเจอร์ทั้งหมด ดูได้ที่ เอกสาร Scheduled Tasks (Cron) และจำไว้: โพรอมต์แบบครบวงจรในตัวเอง [SILENT] สำหรับความเงียบ และสคริปต์สำหรับงานเชิงกล นั่นคือกติกาทั้งหมดของเกมนี้
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › guides/automate-with-cron