Công việc định kỳ chỉ có tập lệnh
Đôi khi bạn đã biết chính xác thông điệp mình muốn gửi. Bạn không cần người đại diện giải thích về điều đó - bạn chỉ cần một tập lệnh chạy trên đồng hồ hẹn giờ và đầu ra của nó (nếu có) sẽ xuất hiện trên Telegram / Discord / Slack / Signal.
Hermes gọi đây là chế độ không có đại lý. Đó là hệ thống cron trừ LLM.
┌──────────────────┐ ┌──────────────────┐
│ scheduler tick │ every │ run script │
│ (every N minutes)│ ──────▶ │ (bash or python) │
└──────────────────┘ └──────────────────┘
│
│ stdout
▼
┌──────────────────┐
│ delivery router │
│ (telegram/disc…) │
└──────────────────┘
- Không có cuộc gọi LLM. Không có mã thông báo, không có vòng lặp đại lý, không có chi tiêu cho mô hình.
- Tập lệnh là công việc. Tập lệnh quyết định có cảnh báo hay không. Phát ra đầu ra → tin nhắn được gửi. Không phát ra gì → tích tắc im lặng.
- Bash hoặc Python. Các tệp
.sh/.bashchạy dưới/bin/bash; bất kỳ tiện ích mở rộng nào khác đều chạy dưới trình thông dịch Python hiện tại. Mọi thứ trong~/.hermes/scripts/đều được chấp nhận. - Cùng một bộ lập lịch. Sống trong
cronjobcùng với các công việc LLM — tạm dừng, tiếp tục, liệt kê, ghi nhật ký và nhắm mục tiêu phân phối đều hoạt động theo cùng một cách.
Khi nào nên sử dụng nó
Sử dụng chế độ không có tác nhân cho:
- Cơ quan giám sát bộ nhớ / đĩa / GPU. Chạy 5 phút một lần, chỉ cảnh báo khi vượt ngưỡng.
- CI hooks. Triển khai xong → đăng SHA cam kết. Quá trình xây dựng không thành công → gửi 100 dòng cuối cùng của nhật ký.
- Số liệu định kỳ. "Doanh thu hàng ngày của Stripe lúc 9 giờ sáng" dưới dạng lệnh gọi API đơn giản + bản in đẹp.
- Công cụ thăm dò sự kiện bên ngoài. Kiểm tra API, cảnh báo về sự thay đổi trạng thái.
- Heartbeats. Ping trang tổng quan N phút một lần để chứng minh máy chủ còn sống.
Sử dụng công việc định kỳ (do LLM điều khiển) thông thường khi bạn cần nhân viên quyết định phải nói gì — tóm tắt một tài liệu dài, chọn các mục thú vị từ nguồn cấp dữ liệu, soạn thảo một thông điệp thân thiện với con người. Đường dẫn không có tác nhân dành cho các trường hợp thiết bị xuất chuẩn của tập lệnh đã LÀ thông báo.
Tạo một từ Trò chuyện
Lợi ích thực sự của chế độ không có tác nhân là chính tác nhân có thể thiết lập cơ quan giám sát cho bạn - không có trình soạn thảo, không có shell, không ghi nhớ cờ CLI. Bạn mô tả những gì bạn muốn, Hermes viết kịch bản, lên lịch và cho bạn biết khi nào nó sẽ khai hỏa.
Bản ghi ví dụ
Bạn: ping tôi qua điện tín nếu RAM trên 85% cứ sau 5 phút
Hermes: (viết
~/.hermes/scripts/memory-watchdog.sh, sau đó gọicronjob(...)vớino_agent=true)Thiết lập. Chạy 5 phút một lần, chỉ cảnh báo Telegram khi RAM trên 85%. Kịch bản:
memory-watchdog.sh. Mã công việc:abc123.
Dưới mui xe, tác nhân thực hiện hai lệnh gọi công cụ:
# 1. Write the check script
write_file(
path="~/.hermes/scripts/memory-watchdog.sh",
content='''#!/usr/bin/env bash
ram_pct=$(free | awk '/^Mem:/ {printf "%d", $3 * 100 / $2}')
if [ "$ram_pct" -ge 85 ]; then
echo "RAM ${ram_pct}% on $(hostname)"
fi
# Empty stdout = silent tick; no message sent.
''',
)
# 2. Lên lịch - no_agent=True bỏ qua LLM trong mỗi tích tắc
cronjob(
hành động="tạo",
lịch trình="mỗi 5 phút",
script="bộ nhớ-watchdog.sh",
no_agent=Đúng,
gửi="điện tín",
name="bộ nhớ-watchdog",
)
Từ thời điểm đó, mọi đánh dấu đều miễn phí: bộ lập lịch chạy tập lệnh, chuyển thiết bị xuất chuẩn của nó sang Telegram nếu không trống và không bao giờ chạm vào mô hình.
Điều gì người đại diện quyết định cho bạn
Khi bạn thực hiện một yêu cầu như "cảnh báo tôi khi X" hoặc "cứ N phút hãy kiểm tra Y và cho tôi biết nếu Z", mô tả công cụ cronjob của Hermes sẽ yêu cầu nó tiếp cận no_agent=True bất cứ khi nào nội dung tin nhắn được xác định hoàn toàn bởi tập lệnh. Nó quay trở lại đường dẫn LLM thông thường khi yêu cầu cần lý do ("tóm tắt các vấn đề mới"*, "chọn các tiêu đề thú vị nhất", "soạn thảo lời nhắc thân thiện").
Bạn không cần phải tự mình chỉ định --no-agent. Chỉ cần mô tả hành vi.
Quản lý cơ quan giám sát từ cuộc trò chuyện
Tác nhân có thể tạm dừng, tiếp tục, chỉnh sửa và xóa công việc giống như cách nó tạo ra chúng:
Bạn: dừng việc giám sát ký ức tối nay lại
Hermes: (gọi
cronjob(action='pause', job_id='abc123'))Đã tạm dừng. Tiếp tục bằng "bật lại" hoặc thông qua
hermes cron sơ yếu lý lịch abc123.
Bạn: thay đổi thành 15 phút một lần
Hermes: (gọi
cronjob(action='update', job_id='abc123', Schedule='cứ 15 phút'))
Toàn bộ vòng đời (tạo / liệt kê / cập nhật / tạm dừng / tiếp tục / chạy ngay / xóa) có sẵn cho tổng đài viên mà bạn không cần phải học bất kỳ lệnh CLI nào.
Tạo một cái từ CLI
Thích vỏ hơn? Đường dẫn CLI cho bạn kết quả tương tự với ba lệnh:
# 1. Write your script
cat > ~/.hermes/scripts/memory-watchdog.sh <<'EOF'
#!/usr/bin/env bash
# Alert when RAM usage is over 85%. Silent otherwise.
RAM_PCT=$(free | awk '/^Mem:/ {printf "%d", $3 * 100 / $2}')
if [ "$RAM_PCT" -ge 85 ]; then
echo "⚠ RAM ${RAM_PCT}% on $(hostname)"
fi
# Empty stdout = silent run; no message sent.
EOF
chmod +x ~/.hermes/scripts/memory-watchdog.sh
# 2. Schedule it
hermes cron create "every 5m" \
--no-agent \
--script memory-watchdog.sh \
--deliver telegram \
--name "memory-watchdog"
# 3. Xác minh
danh sách cron của hermes
hermes cron run <job_id> # kích hoạt nó một lần để kiểm tra
Đó là toàn bộ sự việc. Không có lời nhắc, không có kỹ năng, không có mô hình.
Cách xuất tập lệnh ánh xạ tới phân phối
| Script behavior | Result |
|---|---|
| Exit 0, non-empty stdout | stdout is delivered verbatim |
| Exit 0, empty stdout | Silent tick — no delivery |
Exit 0, stdout contains {"wakeAgent": false} on the last line | Silent tick (shared gate with LLM jobs) |
| Non-zero exit code | Error alert is delivered (so a broken watchdog doesn't fail silently) |
| Script timeout | Error alert is delivered |
Hành vi "im lặng khi trống" là chìa khóa của mẫu cơ quan giám sát cổ điển: tập lệnh được chạy miễn phí mỗi phút nhưng kênh chỉ nhìn thấy thông báo khi có nội dung nào đó thực sự cần được chú ý.
Quy tắc tập lệnh
Các tập lệnh phải tồn tại trong ~/.hermes/scripts/. Điều này được thực thi ở cả thời gian tạo công việc và thời gian chạy — các đường dẫn tuyệt đối, mở rộng ~/ và các mẫu truyền tải đường dẫn (../) đều bị từ chối. Thư mục tương tự được chia sẻ với cổng tập lệnh kiểm tra trước được sử dụng bởi các công việc LLM.
Lựa chọn thông dịch viên là theo phần mở rộng tập tin:
| Extension | Interpreter |
|---|---|
.sh, .bash | /bin/bash |
| anything else | sys.executable (current Python) |
Chúng tôi cố tình KHÔNG tôn trọng các shebang #!/... — việc giữ cho bộ thông dịch rõ ràng và nhỏ sẽ làm giảm bề mặt mà người lập lịch tin cậy.
Cú pháp lịch trình
Tương tự như tất cả các công việc định kỳ khác:
hermes cron create "every 5m" # interval
hermes cron create "every 2h"
hermes cron create "0 9 * * *" # standard cron: 9am daily
hermes cron create "30m" # one-shot: run once in 30 minutes
Xem tài liệu tham khảo tính năng cron để biết cú pháp đầy đủ.
Mục tiêu phân phối
--deliver chấp nhận mọi thứ mà cổng biết. Một số hình dạng phổ biến:
--deliver telegram # platform home channel
--deliver telegram:-1001234567890 # specific chat
--deliver telegram:-1001234567890:17585 # specific Telegram forum topic
--deliver discord:#ops
--deliver slack:#engineering
--deliver signal:+15551234567
--deliver local # just save to ~/.hermes/cron/output/
Không cần cổng chạy vào thời gian chạy tập lệnh cho các nền tảng mã thông báo bot (Telegram, Discord, Slack, Signal, SMS, WhatsApp) — công cụ này gọi trực tiếp điểm cuối REST của mỗi nền tảng bằng thông tin xác thực đã có trong ~/.hermes/.env / ~/.hermes/config.yaml.
Chỉnh sửa và Vòng đời
hermes cron list # see all jobs
hermes cron pause <job_id> # stop firing, keep definition
hermes cron resume <job_id>
hermes cron edit <job_id> --schedule "every 10m" # adjust cadence
hermes cron edit <job_id> --agent # flip to LLM mode
hermes cron edit <job_id> --no-agent --script … # flip back
hermes cron remove <job_id> # delete it
Mọi thứ hoạt động trên các công việc LLM (tạm dừng, tiếp tục, kích hoạt thủ công, thay đổi mục tiêu phân phối) cũng hoạt động trên các công việc không có tác nhân.
Ví dụ đã hoạt động: Cảnh báo dung lượng ổ đĩa
cat > ~/.hermes/scripts/disk-alert.sh <<'EOF'
#!/usr/bin/env bash
# Alert when / or /home is over 90% full.
THRESHOLD=90
df -h / /home 2>/dev/null | awk -v t="$THRESHOLD" '
NR > 1 && $5+0 >= t {
printf "⚠ Disk %s full on %s\n", $5, $6
}
'
EOF
chmod +x ~/.hermes/scripts/disk-alert.sh
Hermes cron tạo "*/15 * * * *" \
--không có đại lý \
--script disk-alert.sh \
--gửi điện tín \
--name "cảnh báo đĩa"
Im lặng khi cả hai hệ thống tập tin đều dưới 90%; kích hoạt chính xác một dòng trên mỗi hệ thống tệp vượt ngưỡng khi một dòng đầy.
So sánh với các mẫu khác
| Approach | What runs | When to use |
|---|---|---|
cronjob --no-agent (this page) | Your script on Hermes' schedule | Recurring watchdogs / alerts / metrics that don't need reasoning |
cronjob (default, LLM) | Agent with optional pre-check script | When the message content requires reasoning over data |
OS cron + curl to a webhook subscription | Your script on the OS schedule | When Hermes might be unhealthy (the thing you're monitoring) |
Đối với các cơ quan giám sát tình trạng hệ thống quan trọng phải kích hoạt ngay cả khi cổng ngừng hoạt động, hãy sử dụng cron cấp hệ điều hành với một curl đơn giản đối với đăng ký webhook của Hermes (hoặc bất kỳ điểm cuối cảnh báo bên ngoài nào) — những cơ quan này chạy dưới dạng quy trình hệ điều hành độc lập và không phụ thuộc vào việc Hermes có hoạt động hay không. Bộ lập lịch trong cổng là lựa chọn phù hợp khi đối tượng được giám sát ở bên ngoài.
Có liên quan
- Tự động hóa mọi thứ với Cron — Các mẫu cron do LLM điều khiển.
- Tham khảo Nhiệm vụ theo lịch trình (Cron) — cú pháp lịch trình đầy đủ, vòng đời, định tuyến phân phối.
- Đăng ký Webhook — điểm truy cập HTTP kích hoạt và quên cho các bộ lập lịch bên ngoài.
- Gateway Internals — nội bộ của bộ định tuyến phân phối.