Cron scheduler của Hermes Agent là hình dạng lớn thứ ba của công việc agent, sau chat lượt-một-lượt và vòng lặp /goal. Với cron, agent chạy không cần giám sát theo lịch, kết quả giao tới nền tảng nhắn tin nào bạn muốn — hoặc tới tất cả cùng lúc qua deliver=all (#21495).
Bài này đi qua việc dựng một job cụ thể — báo cáo buổi sáng hằng ngày — và dùng nó để giải thích scheduler thực sự hoạt động ra sao. Cùng mẫu này lo cả backup ban đêm, audit bảo mật hằng tuần, ping luân phiên on-call, hay bất cứ thứ gì khác mà ngược lại bạn sẽ nối bằng bash + cron dễ vỡ.
Cái chúng ta đang dựng
Mỗi ngày trong tuần lúc 8 giờ sáng:
- 1.Đọc email qua đêm (từ 5 giờ chiều hôm qua)
- 2.Lấy notification GitHub (issue, PR review, mention)
- 3.Kiểm lịch hôm nay cho 4 giờ đầu
- 4.Tóm cả ba lại thành một tin nhắn Telegram
Nếu có chuyện gì quan trọng xảy ra, tin nhắn chi tiết. Nếu không có gì xảy ra, tin nhắn là một câu: "Đêm yên ắng. Lịch nhẹ tới 11 giờ."
Bước 1: định nghĩa job
hermes cron add dẫn bạn qua. CLI hỏi: tên, lịch, mô tả job (ngôn ngữ tự nhiên), và đích giao.
$ hermes cron add
Name: daily-morning-report
Schedule (cron expression or natural language): 0 8 * * MON-FRI
Description: |
Read overnight email (since 5 PM yesterday).
Pull GitHub notifications via the github skill.
Check today's calendar via google-calendar for the first 4 hours.
Summarize all three into one Telegram message.
Be brief when nothing important happened.
Delivery: telegram
0 8 <em class="italic text-slate-200"> </em> MON-FRI là cú pháp cron chuẩn: phút 0, giờ 8, mọi ngày trong tháng, mọi tháng, thứ Hai đến thứ Sáu. Hermes nhận cả cú pháp cron lẫn cách diễn đạt ngôn ngữ tự nhiên lỏng hơn như "every weekday at 8 AM".
Bước 2: lúc 8 giờ sáng cái gì chạy
Ngày làm việc tiếp theo lúc 8 giờ sáng, Hermes dựng một session agent cách ly với:
- •Mô tả job làm tin nhắn user khởi tạo
- •Skill nào agent quyết gọi (
email,github,google-calendar) - •Một delivery hook chuyển câu trả lời cuối tới Telegram
Không có context tồn tại lâu, không có user đang gõ. Agent đọc mô tả, gọi skill, soạn tin, gửi. Thường 15–30 giây là xong.
Output xuất hiện trên Telegram dưới dạng tin nhắn từ bot Hermes của bạn. Nếu job mất nhiều thời gian hơn bình thường hay gặp lỗi, bạn cũng nhận một tin nhắn lỗi trên cùng kênh.
Bước 3: deliver=all — quạt ra tới mọi nền tảng
Mặc định, việc giao đi một nền tảng — cái bạn chỉ định ở cron add. Nếu bạn muốn báo cáo đáp xuống mọi nơi mà bạn có thể với tới, đặt:
hermes cron edit daily-morning-report --deliver all
Giờ tin nhắn đi tới mọi nền tảng nhắn tin đã nối cùng lúc — Telegram, Discord, Slack, WhatsApp, Signal, LINE, SimpleX của bạn, bất cứ cái nào bạn đã cấu hình. v0.14.0 nối việc giao theo nền tảng cho cron một cách rõ ràng (#21495).
Khi nào điều này hữu ích: bạn muốn đảm bảo nhìn thấy tin nhắn bất kể bạn đang ở trong app nào.
Khi nào điều này quá đà: buổi sáng bạn chỉ kiểm một nền tảng. Chọn cái đó thôi.
Bước 4: xem cái gì đã lên lịch
hermes cron list
Hiển thị mọi thứ đã lên lịch, lần chạy tiếp theo, trạng thái lần chạy gần nhất. v0.14.0 thêm tra cứu theo tên cho các thao tác job (#26231), nên bạn có thể tham chiếu job bằng tên thay vì ID:
hermes cron logs daily-morning-report --last 5
hermes cron disable daily-morning-report
hermes cron run-now daily-morning-report # kích ngay, ngoài lịch
Khi một job hỏng thì sao
Job cron chạy trong session sandbox riêng của chúng (cùng backend với Hermes tương tác — xem bài về sandbox backend). Nếu một cuộc gọi skill hỏng, agent nhận lỗi và hoặc thử lại hoặc báo cáo.
Nếu cả job sập (chính agent lỗi văng ra), Hermes thông báo cho bạn trên nền tảng nhắn tin mặc định với lỗi và link tới log. Việc bền vững session của v0.13.0 nghĩa là restart gateway không làm mất các lần giao cron đang chờ — dedupe đi qua việc claim atomic kèm rewind khi hỏng (#23401).
Vài job thực tế hữu dụng
Đây là các mẫu người ta thực sự chạy:
Xác minh backup ban đêm. Cron lúc 3 giờ sáng: liệt kê snapshot backup, kiểm xem cái hôm nay có tồn tại và không rỗng, ré lên nếu thiếu. deliver=all để khi có chuyện bạn tỉnh dậy là thấy.
Audit bảo mật hằng tuần. Cron Chủ nhật 10 giờ tối: kéo advisory dependency, quét CVE đã biết trong lockfile, tóm tắt các lỗ hổng mới. Supply-chain advisory checker của v0.14.0 (#24220) làm việc này gọn hơn so với script tự chế.
Chuyển ca on-call. Cron thứ Sáu 5 giờ chiều: đọc page tuần này, viết một đoạn chuyển ca cho on-call tuần tới. Giao tới kênh Slack chia sẻ.
Watchers (skill v0.14.0 #21881). Poll một RSS feed, một endpoint HTTP JSON, hay một repo GitHub cho thay đổi; chỉ báo khi có gì đổi. Kết hợp với cron, cái này thành "báo tôi khi X thay đổi", là một trong những primitive tự động hóa bị dùng dưới mức nhất.
Log đi đâu
hermes cron logs daily-morning-report
Mặc định, 10 lần chạy gần nhất. Mỗi cái hiện: timestamp, thời lượng, skill nào được gọi, cái gì được giao, cái gì hỏng nếu có. Log nằm ở ~/.hermes/cron/logs/ và xoay tự động.
Tại sao điều này hơn việc viết một shell script
Bạn có thể viết cùng báo cáo hằng ngày đó bằng một script bash + cron + curl-tới-Telegram + có thể một cuộc gọi LLM nhỏ. Nhiều người đã làm vậy.
Lý do cron-trên-một-agent thú vị:
- 1.Mô tả job là spec. Không có code để bảo trì. Đổi "4 giờ đầu" thành "6 giờ đầu" — sửa mô tả, không redeploy.
- 2.Skill compose được. Thêm "cũng kiểm Linear cho ticket mới" là một câu trong mô tả. Với shell script, đó là một API client mới.
- 3.Việc giao được tách rời.
deliver=allnghĩa là bạn không viết 5 webhook khác nhau cho 5 app chat khác nhau. Gateway đã nói cả 22. - 4.Lỗi debug được. Khi một job hỏng, agent kể cho bạn nó đã thử gì và tại sao hỏng, bằng tiếng người. Shell script trả cho bạn exit code 1.
Cái đó không khiến agent-cron luôn là câu trả lời đúng — với job cần xác định 100% và chạy trong 30 ms, shell script vẫn tốt hơn. Nhưng với "làm gì đó có suy nghĩ vào giờ này và kể tôi nghe", cron-trên-Hermes là công cụ sạch nhất trong hộp.