Chuyển tới nội dung chính

Xử lý sự cố Cron

Khi công việc định kỳ không hoạt động như mong đợi, hãy thực hiện các bước kiểm tra này theo thứ tự. Hầu hết các vấn đề đều thuộc một trong bốn loại: thời gian, phân phối, quyền hoặc tải kỹ năng.


Công việc không sa thải

Kiểm tra 1: Xác minh công việc tồn tại và đang hoạt động

Hermes cron list

Hãy tìm công việc và xác nhận trạng thái của nó là [active] (không phải [paused] hoặc [completed]). Nếu nó hiển thị [completed], số lần lặp lại có thể đã hết — hãy chỉnh sửa công việc để đặt lại.

Kiểm tra 2: Xác nhận lịch trình đã chính xác

Lịch trình bị định dạng sai sẽ mặc định được mặc định là một lần hoặc bị từ chối hoàn toàn. Kiểm tra biểu hiện của bạn:

Biểu hiện của bạnNên đánh giá tới
0 9 * * *9:00 sáng hàng ngày
0 9 * * 19:00 sáng Thứ Hai hàng tuần
every 2hCứ sau 2 giờ kể từ bây giờ
30m30 phút kể từ bây giờ
2025-06-01T09:00:00Ngày 1 tháng 6 năm 2025 lúc 9:00 sáng UTC

Nếu công việc thực hiện một lần rồi biến mất khỏi danh sách thì đó là lịch trình một lần (30m, 1d hoặc dấu thời gian ISO) — hành vi dự kiến.

Kiểm tra 3: Cổng có chạy không?

Các công việc định kỳ được thực hiện bởi chuỗi mã đánh dấu nền của cổng, hoạt động tích tắc sau mỗi 60 giây. Phiên trò chuyện CLI thông thường không tự động thực hiện các công việc định kỳ.

Nếu bạn mong đợi các công việc sẽ tự động kích hoạt, bạn cần có một cổng đang chạy (Hermes gateway hoặc Hermes serve). Để gỡ lỗi một lần, bạn có thể kích hoạt đánh dấu theo cách thủ công bằng Hermes cron tick.

Kiểm tra 4: Kiểm tra đồng hồ hệ thống và múi giờ

Công việc sử dụng múi giờ địa phương. Nếu đồng hồ trên máy của bạn sai hoặc ở múi giờ khác với dự kiến, công việc sẽ thực hiện không đúng thời điểm. Xác minh:

date
Hermes cron list # Compare next_run times with local time

Lỗi giao hàng

Kiểm tra 1: Xác minh mục tiêu giao hàng là chính xác

Mục tiêu phân phối phân biệt chữ hoa chữ thường và yêu cầu cấu hình nền tảng chính xác. Mục tiêu được định cấu hình sai sẽ âm thầm loại bỏ phản hồi.

Mục tiêuYêu cầu
TelegramTelegram_BOT_TOKEN trong ~/.Hermes/.env
DiscordDiscord_BOT_TOKEN trong ~/.Hermes/.env
SlackSlack_BOT_TOKEN trong ~/.Hermes/.env
WhatsAppCổng WhatsApp được định cấu hình
SignalCổng Signal được cấu hình
MatrixCấu hình máy chủ Matrix
emailSMTP được định cấu hình trong config.yaml
smsNhà cung cấp SMS được định cấu hình
localViết quyền truy cập vào ~/.Hermes/cron/output/
originGửi đến cuộc trò chuyện nơi công việc được tạo

Các nền tảng được hỗ trợ khác bao gồm Mattermost, homeassistant, DingTalk, Feishu, WeCom, weixin, BlueBubbleswebhook. Bạn cũng có thể nhắm mục tiêu một cuộc trò chuyện cụ thể bằng cú pháp platform:chat_id (ví dụ: Telegram:-1001234567890).

Nếu quá trình phân phối không thành công, công việc vẫn chạy — chỉ là nó sẽ không gửi đi đâu cả. Kiểm tra Hermes cron list để biết trường last_error được cập nhật (nếu có).

Kiểm tra 2: Kiểm tra mức sử dụng [SILENT]

Nếu công việc định kỳ của bạn không tạo ra kết quả hoặc tác nhân phản hồi bằng [SILENT] thì quá trình phân phối sẽ bị dừng. Điều này là có chủ đích để giám sát công việc — nhưng hãy đảm bảo rằng lời nhắc của bạn không vô tình chặn mọi thứ.

Lời nhắc có nội dung "trả lời bằng [SILENT] nếu không có gì thay đổi" cũng sẽ âm thầm nuốt những câu trả lời không trống. Kiểm tra logic có điều kiện của bạn.

Kiểm tra 3: Quyền của mã thông báo nền tảng

Mỗi bot nền tảng nhắn tin cần có quyền cụ thể để nhận tin nhắn. Nếu việc giao hàng âm thầm thất bại:

  • Telegram: Bot phải là quản trị viên trong nhóm/kênh mục tiêu
  • Discord: Bot phải có quyền gửi kênh mục tiêu
  • Slack: Bot phải được thêm vào không gian làm việc và có phạm vi chat:write

Kiểm tra 4: Gói phản hồi

Theo mặc định, phản hồi cron được gói bằng đầu trang và chân trang (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 vấn đề này. Để vô hiệu hóa:

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

Các kỹ năng phải được cài đặt trước khi chúng có thể được gắn vào các công việc định kỳ. Nếu thiếu một kỹ năng, trước tiên hãy cài đặt nó 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 và tên thư mục kỹ năngTên kỹ năng có 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 đặt. Nếu công việc của bạn chỉ định ai-funding-daily-report nhưng thư mục kỹ năng là ai-funding-daily-report, hãy xác nhận tên chính xác từ Hermes skills list.

Kiểm tra 3: Kỹ năng cần có công cụ tương tác

Các công việc định kỳ chạy với bộ công cụ cronjob, messagingclarify bị vô hiệu hóa. Điều này ngăn cản việc tạo cron đệ quy, gửi tin nhắn trực tiếp (việc gửi được xử lý bởi bộ lập lịch) và các lời nhắc tương tác. Nếu một kỹ năng dựa vào các bộ công cụ 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 rằng nó hoạt động ở chế độ không tương tác (không đầu).

Kiểm tra 4: Thứ tự đa kỹ năng

Khi sử dụng nhiều kỹ năng, chúng sẽ tải theo thứ tự. Nếu Kỹ năng A phụ thuộc vào ngữ cảnh của Kỹ năng B, hãy đảm bảo Kỹ năng 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à thất bại trong công việc

Kiểm tra 1: Xem lại kết quả công việc gần đây

Nếu một công việc đã chạy và không thành công, bạn có thể thấy ngữ cảnh lỗi trong:

  1. Cuộc trò chuyện nơi công việc được giao (nếu giao hàng thành công)
  2. ~/.Hermes/logs/agent.log cho các tin nhắn lên lịch (hoặc errors.log cho các cảnh báo)
  3. Siêu dữ liệu last_run của công việc thông qua Hermes cron list

Kiểm tra 2: Các mẫu lỗi thường gặp

"Không có tập tin hoặc thư mục như vậy" cho các tập lệnh Đường dẫn script phải là đường dẫn tuyệt đối (hoặc liên quan đến thư mục cấu hình Hermes). Xác minh:

ls ~/.Hermes/scripts/your-script.py   # Must exist
Hermes cron edit <job_id> --script ~/.Hermes/scripts/your-script.py

"Không tìm thấy kỹ năng" khi thực hiện công việc Kỹ năng phải được cài đặt trên máy chạy bộ lập lịch. Nếu bạn di chuyển giữa các máy, các kỹ năng sẽ không tự động đồng bộ hóa - hãy cài đặt lại chúng bằng Hermes skills install <skill-name>.

Công việc tiến hành nhưng không mang lại kết quả gì Có thể là sự cố về mục tiêu phân phối (xem Lỗi phân phối ở trên) hoặc phản hồi bị chặn âm thầm ([SILENT]).

Công việc bị treo hoặc hết thời gian Bộ lập lịch sử dụng thời gian chờ dựa trên không hoạt động (600 giây mặc định, có thể định cấu hình qua Hermes_CRON_TIMEOUT env var, 0 không giới hạn). Tác nhân có thể chạy miễn là nó đang tích cực gọi các công cụ — bộ hẹn giờ chỉ kích hoạt sau khi không hoạt động liên tục. Các công việc chạy dài nên sử dụng tập lệnh để xử lý việc thu thập dữ liệu và chỉ cung cấp kết quả.

Kiểm tra 3: Khóa tranh chấp

Bộ lập lịch sử dụng khóa dựa trên tệp để ngăn các dấu tích chồng chéo. Nếu hai phiên bản cổng đang chạy (hoặc phiên CLI xung đột với một cổng), công việc có thể bị trì hoãn hoặc bị bỏ qua.

Tiêu diệt các tiến trình cổng trùng lặp:

ps aux | grep Hermes
# Kill duplicate processes, keep only one

Kiểm tra 4: Quyền trên jobs.JSON

Công việc được lưu trữ trong ~/.Hermes/cron/jobs.JSON. Nếu người dùng của bạn không thể đọc/ghi tệp này, bộ lập lịch sẽ âm thầm thất bại:

ls -la ~/.Hermes/cron/jobs.JSON
chmod 600 ~/.Hermes/cron/jobs.JSON # Your user should own it

Vấn đề về hiệu suất

Khởi động công việc chậm

Mỗi công việc định kỳ sẽ tạo một phiên AIAgent mới, có thể liên quan đến việc xác thực nhà cung cấp và tải mô hình. Đối với lịch trình nhạy cảm với thời gian, hãy thêm thời gian đệm (ví dụ: 0 8 * * * thay vì 0 9 * * *).

Quá nhiều công việc chồng chéo

Bộ lập lịch thực hiện các công việc một cách tuần tự trong mỗi tích tắc. Nếu có nhiều công việc đến hạn cùng một lúc, chúng sẽ thực hiện lần lượt từng công việc. Hãy cân nhắc lịch trình xen kẽ (ví dụ: 0 9 * * *5 9 * * * thay vì cả hai tại 0 9 * * *) để tránh bị chậm trễ.

Đầu ra tập lệnh lớn

Các tập lệnh kết xuất megabyte đầu ra sẽ làm chậm tác nhân và có thể đạt giới hạn mã thông báo. Lọc/tóm tắt ở cấp tập lệnh - chỉ đưa ra những gì tác nhân cần lý giải.


Lệnh chẩn đoán

Hermes cron list                    # Show all jobs, states, next_run times
Hermes cron run <job_id> # Schedule for next tick (for testing)
Hermes cron edit <job_id> # Fix configuration issues
Hermes logs # View recent Hermes logs
Hermes skills list # Verify installed skills

Nhận thêm trợ giúp

Nếu bạn đã làm theo hướng dẫn này và sự cố vẫn tiếp diễn:

  1. Chạy công việc với Hermes cron run <job_id> (kích hoạt ở lần đánh dấu cổng tiếp theo) và theo dõi lỗi trong đầu ra trò chuyện
  2. Kiểm tra ~/.Hermes/logs/agent.log để biết các thông báo của bộ lập lịch và ~/.Hermes/logs/errors.log để biết các cảnh báo
  3. Mở một vấn đề tại GitHub.com/NousResearch/Hermes-agent với:
    • ID công việc và lịch trình
    • Mục tiêu giao hàng
    • Những gì bạn mong đợi so với những gì đã xảy ra
    • Thông báo lỗi liên quan từ nhật ký

Để có thông tin tham khảo cron đầy đủ, hãy xem Automate Anything with CronScheduled Tasks (Cron).