🤖HermesBlog
Hermes Feature Guides · Parte 88/9/2026

Tự động hóa mọi thứ với Cron

Automate Everything with Cron — easy-to-understand guide based on official docs

guide-automate-cron

Tự động hóa mọi thứ với Cron

Nếu bạn đã đọc hướng dẫn bot điểm tin hàng ngày, bạn đã biết những kiến thức cơ bản về cron jobs. Nhưng đó mới chỉ là phần nổi của tảng băng chìm. Hôm nay, chúng ta sẽ đi sâu hơn — năm mẫu tự động hóa thực tế mà bạn có thể học hỏi và điều chỉnh cho quy trình làm việc của riêng mình.

Trước khi bắt đầu, đây là nguyên tắc vàng: cron jobs chạy trong các phiên agent mới hoàn toàn, không có bộ nhớ về cuộc trò chuyện hiện tại của bạn. Prompt của bạn phải hoàn toàn độc lập. Bao gồm mọi thứ agent cần biết — lệnh, ngữ cảnh, kỳ vọng. Hãy nghĩ về nó như viết hướng dẫn cho một thực tập sinh cực kỳ thông minh vừa mới bước vào cửa.

Giải pháp Không dùng Token (Tiết kiệm chi phí LLM của bạn)

Không phải tự động hóa nào cũng cần LLM. Hai lựa chọn giúp bạn bỏ qua hoàn toàn chi phí token:

  • Watchdog định kỳ — nếu script của bạn đã tạo ra thông điệp chính xác (cảnh báo bộ nhớ, cảnh báo đĩa, tín hiệu heartbeat), hãy dùng cron jobs chỉ-script. Cùng bộ lập lịch, không cần LLM. Chỉ cần yêu cầu Hermes trong chat — công cụ cronjob biết khi nào nên chọn no_agent=True và viết script cho bạn.
  • Một lần từ script đang chạy — cho các bước CI, hook sau commit, hoặc script triển khai, hãy dùng hermes send để chuyển stdout hoặc một file trực tiếp đến Telegram, Discord, Slack, v.v. Không cần cron entry.

Mẫu 1: Trình theo dõi thay đổi Website

Theo dõi một URL và chỉ nhận thông báo khi có gì đó thực sự thay đổi. Vũ khí bí mật ở đây là tham số script — một script Python chạy trước mỗi lần thực thi, và stdout của nó trở thành ngữ cảnh cho agent. Script xử lý công việc cơ học (tải dữ liệu, so sánh); agent xử lý việc suy luận (thay đổi này có thú vị không?).

Đầu tiên, tạo script giám sát:

mkdir -p ~/.hermes/scripts
import hashlib, json, os, urllib.request

URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")

# Fetch current content
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()

# Load previous state
prev_hash = None
if os.path.exists(STATE_FILE):
    with open(STATE_FILE) as f:
        prev_hash = json.load(f).get("hash")

# Save current state
with open(STATE_FILE, "w") as f:
    json.dump({"hash": current_hash, "url": URL}, f)

# Output for the agent
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")

Bây giờ thiết lập cron job:

/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

Mẹo [SILENT]: Đối với các công việc giám sát, hãy yêu cầu agent chỉ phản hồi bằng [SILENT] khi không có gì thay đổi. Cron delivery coi đây là dấu hiệu im lặng — bạn chỉ nhận thông báo khi có gì đó thực sự xảy ra. Không spam trong những giờ yên tĩnh.


Mẫu 2: Báo cáo hàng tuần

Tổng hợp thông tin từ nhiều nguồn thành một bản tóm tắt có định dạng. Công việc này chạy mỗi tuần một lần và gửi đến kênh chính của bạn.

/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

Từ CLI:

hermes cron create "0 9 * * 1" \
  "Generate a weekly report covering the top AI news, trending ML GitHub repos, and most-discussed HN posts. Format with sections, include links, keep under 500 words." \
  --name "Weekly AI digest" \
  --deliver telegram

0 9 * * 1 là biểu thức cron chuẩn: 9:00 sáng mỗi thứ Hai.


Mẫu 3: Trình theo dõi GitHub Repository

Theo dõi một repository để phát hiện issue, PR, hoặc release mới.

/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

Prompt độc lập rất quan trọng. Chú ý cách prompt bao gồm các lệnh gh chính xác. Cron agent không có lịch sử hội thoại từ các lần chạy trước — hãy viết rõ ràng mọi thứ. (Bộ nhớ bền vững có được tải, vì vậy các tùy chọn lâu dài được lưu trong MEMORY.md sẽ được kế thừa, nhưng đừng dựa vào nó cho các chi tiết quan trọng của công việc.)


Mẫu 4: Pipeline thu thập dữ liệu

Thu thập dữ liệu theo khoảng thời gian đều đặn, lưu vào file, và phát hiện xu hướng theo thời gian. Mẫu này kết hợp script (để thu thập) với agent (để phân tích).

import json, os, urllib.request
from datetime import datetime

DATA_DIR = os.path.expanduser("~/.hermes/data/prices")
os.makedirs(DATA_DIR, exist_ok=True)

# Fetch current data (example: crypto prices)
url = "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd"
data = json.loads(urllib.request.urlopen(url, timeout=30).read())

# Append to history file
entry = {"timestamp": datetime.now().isoformat(), "prices": data}
history_file = os.path.join(DATA_DIR, "history.jsonl")
with open(history_file, "a") as f:
    f.write(json.dumps(entry) + "\n")

# Output for the agent
print(f"Collected prices at {entry['timestamp']}: {data}")

Sau đó thiết lập một cron job chạy script và yêu cầu agent phân tích dữ liệu đã thu thập:

/cron add "every 30m" "Run the collection script, then analyze the price history in ~/.hermes/data/prices/history.jsonl. If you notice a significant trend (more than 5% change in the last hour), summarize it. Otherwise respond with [SILENT]." --script ~/.hermes/scripts/collect-prices.py --name "Price tracker" --deliver telegram

Mẫu 5: Cách tiếp cận “Chỉ cần hỏi”

Không muốn viết script hay nhớ cú pháp cron? Chỉ cần mô tả những gì bạn muốn bằng tiếng Việt đơn giản:

/cron add "every 2h" "Check if there are any new articles about AI regulation on Google News. If there are, summarize the top 3. If nothing new, respond with [SILENT]." --name "AI regulation watch" --deliver telegram

Agent sẽ tự tìm ra phần còn lại — tìm kiếm trên web, lọc kết quả, và định dạng đầu ra.


Tổng kết

Năm mẫu này bao phủ các tình huống tự động hóa phổ biến nhất: giám sát, báo cáo, theo dõi repo, thu thập dữ liệu, và các công việc “chỉ cần hỏi” đơn giản. Những điểm chính cần nhớ:

  1. Script xử lý công việc cơ học — tải dữ liệu, so sánh, thu thập
  2. Agent xử lý việc suy luận — điều này có thú vị không? điều gì đã thay đổi? tại sao nó quan trọng?
  3. [SILENT] giúp bạn không bị spam — chỉ nhận thông báo khi có điều gì đó thực sự quan trọng
  4. Prompt độc lập là bắt buộc — agent bắt đầu mới hoàn toàn mỗi lần

Để tham khảo đầy đủ tính năng, hãy xem tài liệu Tác vụ định kỳ (Cron). Chúc bạn tự động hóa vui vẻ!

📖 Tài liệu chính thức

この記事は Hermes Agent のTài liệu chính thứcに基づいています:Tài liệu chính thức › guides/automate-with-cron