Xử lý sự cố Cron
Khi một cron job không hoạt động như mong đợi, hãy kiểm tra theo thứ tự các bước sau. Hầu hết các sự cố thuộc một trong bốn loại: thời gian, gửi, quyền hoặc tải kỹ năng.
Job không chạy
Kiểm tra 1: Xác minh job tồn tại và đang hoạt động
hermes cron list
Tìm job và xác nhận trạng thái là [active] (không phải [paused] hoặc [completed]). Nếu hiển thị [completed], số lần lặp có thể đã hết — chỉnh sửa job để đặt lại.
Kiểm tra 2: Xác nhận lịch trình đúng
Lịch trình định dạng sai sẽ mặc định thành chạy một lần hoặc bị từ chối hoàn toàn. Kiểm tra biểu thức:
| Biểu thức | Kết quả mong đợi |
|---|---|
0 9 * * * | 9:00 sáng mỗi ngày |
0 9 * * 1 | 9:00 sáng mỗi thứ Hai |
every 2h | Mỗi 2 giờ từ bây giờ |
30m | 30 phút kể từ bây giờ |
2025-06-01T09:00:00 | 1/6/2025 lúc 9:00 UTC |
Nếu job chạy một lần rồi biến mất khỏi danh sách, đó là lịch trình chạy một lần (30m, 1d, hoặc timestamp ISO) — đây là hành vi mong đợi.
Kiểm tra 3: Gateway có đang chạy không?
Cron job được kích hoạt bởi luồng ticker nền của gateway, tick mỗi 60 giây. Phiên chat CLI thông thường không tự động kích hoạt cron job.
Nếu bạn mong đợi job chạy tự động, bạn cần gateway đang chạy (hermes gateway hoặc hermes serve). Để gỡ lỗi một lần, bạn có thể kích hoạt tick thủ công bằng hermes cron tick.
Kiểm tra 4: Kiểm tra đồng hồ hệ thống và múi giờ
Job sử dụng múi giờ cục bộ. Nếu đồng hồ máy bị sai hoặc ở múi giờ khác mong đợi, job sẽ chạy vào thời điểm sai. Kiểm tra:
date
hermes cron list # So sánh thời gian next_run với giờ cục bộ
Lỗi gửi
Kiểm tra 1: Xác minh đích gửi đúng
Đích gửi phân biệt chữ hoa chữ thường và yêu cầu nền tảng tương ứng phải được cấu hình. Đích cấu hình sai sẽ bỏ qua phản hồi một cách im lặng.
| Đích | Yêu cầu |
|---|---|
telegram | TELEGRAM_BOT_TOKEN trong ~/.hermes/.env |
discord | DISCORD_BOT_TOKEN trong ~/.hermes/.env |
slack | SLACK_BOT_TOKEN trong ~/.hermes/.env |
whatsapp | Gateway WhatsApp đã cấu hình |
signal | Gateway Signal đã cấu hình |
matrix | Homeserver Matrix đã cấu hình |
email | SMTP đã cấu hình trong config.yaml |
sms | Nhà cung cấp SMS đã cấu hình |
local | Quyền ghi vào ~/.hermes/cron/output/ |
origin | Gửi đến chat nơi job được tạo |
Các nền tảng được hỗ trợ khác bao gồm mattermost, homeassistant, dingtalk, feishu, wecom, weixin, bluebubbles, qqbot và webhook. Bạn cũng có thể nhắm vào chat cụ thể bằng cú pháp platform:chat_id (ví dụ telegram:-1001234567890).
Nếu gửi thất bại, job vẫn chạy — chỉ là không gửi đi đâu cả. Kiểm tra hermes cron list để xem trường last_error (nếu có).
Kiểm tra 2: Kiểm tra cách sử dụng [SILENT]
Nếu cron job không tạo đầu ra hoặc agent phản hồi bằng [SILENT], việc gửi sẽ bị bỏ qua. Điều này là có chủ đích cho các job giám sát — nhưng hãy đảm bảo prompt của bạn không vô tình bỏ qua mọi thứ.
Prompt nói "respond with [SILENT] if nothing changed" sẽ nuốt cả các phản hồi không trống. Kiểm tra logic điều kiện của bạn.
Kiểm tra 3: Quyền token nền tảng
Bot của mỗi nền tảng nhắn tin cần quyền cụ thể để nhận tin nhắn. Nếu gửi thất bại im lặng:
- Telegram: Bot phải là admin trong nhóm/kênh đích
- Discord: Bot phải có quyền gửi trong kênh đích
- Slack: Bot phải được thêm vào workspace và có scope
chat:write
Kiểm tra 4: Bọc phản hồi
Mặc định, phản hồi cron được bọc với header và footer (cron.wrap_response: true trong config.yaml). Một số nền tảng hoặc tích hợp có thể không xử lý tốt điều này. Để tắt:
cron:
wrap_response: false
Lỗi tải kỹ năng
Kiểm tra 1: Xác minh kỹ năng đã được cài đặt
hermes skills list
Kỹ năng phải được cài đặt trước khi có thể gắn vào cron job. Nếu thiếu kỹ năng, hãy cài đặt trước bằng hermes skills install <skill-name> hoặc qua /skills trong CLI.
Kiểm tra 2: Kiểm tra tên kỹ năng so với tên thư mục
Tên kỹ năng phân biệt chữ hoa chữ thường và phải khớp với tên thư mục của kỹ năng đã cài. Nếu job chỉ định ai-funding-daily-report nhưng thư mục kỹ năng là tên khác, xác nhận tên chính xác từ hermes skills list.
Kiểm tra 3: Kỹ năng yêu cầu công cụ tương tác
Cron job chạy với các toolset cronjob, messaging và clarify bị tắt. Điều này ngăn tạo cron đệ quy, gửi tin nhắn trực tiếp (việc gửi do bộ lập lịch xử lý) và prompt tương tác. Nếu kỹ năng phụ thuộc vào các toolset này, nó sẽ không hoạt động trong ngữ cảnh cron.
Kiểm tra tài liệu của kỹ năng để xác nhận nó hoạt động trong chế độ không tương tác (headless).
Kiểm tra 4: Thứ tự đa kỹ năng
Khi sử dụng nhiều kỹ năng, chúng tải theo thứ tự. Nếu Kỹ năng A phụ thuộc vào ngữ cảnh từ Kỹ năng B, đảm bảo B tải trước:
/cron add "0 9 * * *" "..." --skill context-skill --skill target-skill
Trong ví dụ này, context-skill tải trước target-skill.
Lỗi và sự cố Job
Kiểm tra 1: Xem kết quả job gần đây
Nếu job chạy và thất bại, bạn có thể thấy ngữ cảnh lỗi tại:
- Chat nơi job gửi (nếu gửi thành công)
~/.hermes/logs/agent.logcho tin nhắn bộ lập lịch (hoặcerrors.logcho cảnh báo)- Metadata
last_runcủa job quahermes cron list
Kiểm tra 2: Các mẫu lỗi thường gặp
"No such file or directory" cho scripts
Đường dẫn script phải là đường dẫn tuyệt đối (hoặc tương đối so với thư mục cấu hình Hermes). Kiểm tra:
ls ~/.hermes/scripts/your-script.py # Phải tồn tại
hermes cron edit <job_id> --script ~/.hermes/scripts/your-script.py
"Skill not found" khi thực thi job
Kỹ năng phải được cài đặt trên máy chạy bộ lập lịch. Nếu bạn chuyển giữa các máy, kỹ năng không tự động đồng bộ — cài đặt lại bằng hermes skills install <skill-name>.
Job chạy nhưng không gửi gì
Có thể là vấn đề đích gửi (xem Lỗi gửi ở trên) hoặc phản hồi bị bỏ qua im lặng ([SILENT]).
Job treo hoặc timeout
Bộ lập lịch sử dụng timeout dựa trên không hoạt động (mặc định 600 giây, cấu hình qua biến môi trường HERMES_CRON_TIMEOUT, 0 cho không giới hạn). Agent có thể chạy miễn là đang gọi công cụ — timer chỉ kích hoạt sau khi không hoạt động kéo dài. Job chạy lâu nên sử dụng script để thu thập dữ liệu và chỉ gửi kết quả.
Kiểm tra 3: Tranh chấp khóa
Bộ lập lịch sử dụng khóa dựa trên file để ngăn tick chồng chéo. Nếu hai instance gateway đang chạy (hoặc phiên CLI xung đột với gateway), job có thể bị trì hoãn hoặc bỏ qua.
Tắt các tiến trình gateway trùng lặp:
ps aux | grep hermes
# Tắt các tiến trình trùng, chỉ giữ một
Kiểm tra 4: Quyền trên jobs.json
Job được lưu trong ~/.hermes/cron/jobs.json. Nếu file này không thể đọc/ghi bởi user của bạn, bộ lập lịch sẽ thất bại im lặng:
ls -la ~/.hermes/cron/jobs.json
chmod 600 ~/.hermes/cron/jobs.json # User của bạn nên sở hữu nó
Vấn đề hiệu suất
Khởi động job chậm
Mỗi cron job tạo phiên AIAgent mới, có thể liên quan đến xác thực nhà cung cấp và tải model. Với lịch trình nhạy cảm thời gian, hãy thêm thời gian đệm (ví dụ 0 8 * * * thay vì 0 9 * * *).
Quá nhiều job chồng chéo
Bộ lập lịch thực thi job tuần tự trong mỗi tick. Nếu nhiều job đến hạn cùng lúc, chúng chạy lần lượt. Hãy cân nhắc dàn đều lịch (ví dụ 0 9 * * * và 5 9 * * * thay vì cả hai lúc 0 9 * * *) để tránh trì hoãn.
Đầu ra script lớn
Script xuất ra hàng megabyte dữ liệu sẽ làm chậm agent và có thể vượt giới hạn token. Lọc/tóm tắt ở cấp script — chỉ xuất ra những gì agent cần để phân tích.
Lệnh chẩn đoán
hermes cron list # Hiển thị tất cả job, trạng thái, thời gian next_run
hermes cron run <job_id> # Lên lịch cho tick tiếp theo (để kiểm thử)
hermes cron edit <job_id> # Sửa vấn đề cấu hình
hermes logs # Xem nhật ký Hermes gần đây
hermes skills list # Xác minh kỹ năng đã cài
Nhận thêm trợ giúp
Nếu bạn đã làm qua hướng dẫn này mà sự cố vẫn còn:
- Chạy job bằng
hermes cron run <job_id>(kích hoạt ở tick gateway tiếp theo) và theo dõi lỗi trong đầu ra chat - Kiểm tra
~/.hermes/logs/agent.logđể tìm tin nhắn bộ lập lịch và~/.hermes/logs/errors.logđể tìm cảnh báo - Mở issue tại github.com/NousResearch/hermes-agent với:
- ID job và lịch trình
- Đích gửi
- Mong đợi gì so với thực tế
- Tin nhắn lỗi liên quan từ nhật ký
Để xem tham chiếu cron đầy đủ, xem Tự động hóa mọi thứ với Cron và Tác vụ lên lịch (Cron).