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ạn | Nên đánh giá tới |
|----------------|-------------------|
|
`0 9 * * *
` | 9:00 sáng hàng ngày |
|
`0 9 * * 1
` | 9:00 sáng Thứ Hai hàng tuần |
|
`every 2h
` | Cứ sau 2 giờ kể từ bây giờ |
|
`30m
` | 30 phút kể từ bây giờ |
|
`2025-06-01T09:00:00
` | Ngà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 muốn công việc tự động kích hoạt, bạn cần có một cổng đang chạy (
`Hermes gateway
` cho nền trước hoặc
`Hermes gateway start
` cho dịch vụ đã cài đặt). Để 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:

`bash
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êu | 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
` | Cổng WhatsApp được định cấu hình |
|
`Signal
` | Cổng tín hiệu được cấu hình |
|
`Matrix
` | Cấu hình máy chủ ma trận |
|
`email
` | SMTP được định cấu hình trong
`config.yaml
` |
|
`sms
` | Nhà cung cấp SMS được định cấu hình |
|
`local
` | Viết quyền truy cập vào

~/.Hermes/cron/output/
` |
|
`origin
` | Gử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

,
`BlueBubbles

,
`qqbot
`
`webhook

. 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 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 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:

``` yaml
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

`bash
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ăng

Tê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

,
`messaging
`
`clarify
` 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:

`bash
/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:

`
``` bash
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:

`
`bash
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:

``` bash
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

`bash
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](https://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 Cron](/docs/guides/automate-with-cron)[Scheduled Tasks (Cron)](/docs/user-guide/features/cron).*