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

Nhiệm vụ theo lịch trình (Cron)

Lên lịch các tác vụ để chạy tự động bằng ngôn ngữ tự nhiên hoặc biểu thức cron. Hermes cung cấp khả năng quản lý cron thông qua một công cụ cronjob duy nhất với các thao tác kiểu hành động thay vì các công cụ lập lịch/danh sách/xóa riêng biệt.

Hiện tại cron có thể làm gì

Công việc định kỳ có thể:

  • lên lịch các nhiệm vụ một lần hoặc định kỳ
  • tạm dừng, tiếp tục, chỉnh sửa, kích hoạt và xóa công việc
  • gắn không, một hoặc nhiều kỹ năng vào một công việc
  • gửi kết quả trở lại cuộc trò chuyện gốc, tệp cục bộ hoặc mục tiêu nền tảng được định cấu hình
  • chạy trong phiên tác nhân mới với danh sách công cụ tĩnh thông thường
cảnh báo

Các phiên chạy cron không thể tạo ra nhiều công việc định kỳ hơn theo cách đệ quy. Hermes vô hiệu hóa các công cụ quản lý cron bên trong quá trình thực thi cron để ngăn chặn các vòng lặp lập kế hoạch chạy trốn.

Tạo các tác vụ theo lịch trình

Đang trò chuyện với /cron

/cron add 30m "Remind me to check the build"
/cron add "every 2h" "Check server status"
/cron add "every 1h" "Summarize new feed items" --skill blogwatcher
/cron add "every 1h" "Use both skills and combine the result" --skill blogwatcher --skill find-nearby

Từ CLI độc lập

hermes cron create "every 2h" "Check server status"
hermes cron create "every 1h" "Summarize new feed items" --skill blogwatcher
hermes cron create "every 1h" "Use both skills and combine the result" \
--skill blogwatcher \
--skill find-nearby \
--name "Skill combo"

Qua cuộc trò chuyện tự nhiên

Hãy hỏi Hermes một cách bình thường:

Every morning at 9am, check Hacker News for AI news and send me a summary on Telegram.

Hermes sẽ sử dụng công cụ cronjob hợp nhất trong nội bộ.

Công việc định kỳ được hỗ trợ kỹ năng

Một công việc định kỳ có thể tải một hoặc nhiều kỹ năng trước khi chạy lời nhắc.

Kỹ năng đơn

cronjob(
action="create",
skill="blogwatcher",
prompt="Check the configured feeds and summarize anything new.",
schedule="0 9 * * *",
name="Morning feeds",
)

Đa kỹ năng

Các kỹ năng được nạp theo thứ tự. Lời nhắc trở thành hướng dẫn nhiệm vụ được xếp chồng lên trên các kỹ năng đó.

cronjob(
action="create",
skills=["blogwatcher", "find-nearby"],
prompt="Look for new local events and interesting nearby places, then combine them into one short brief.",
schedule="every 6h",
name="Local brief",
)

Điều này rất hữu ích khi bạn muốn một tổng đài viên được lên lịch kế thừa các quy trình làm việc có thể tái sử dụng mà không cần đưa toàn bộ văn bản kỹ năng vào chính dấu nhắc cron.

Công việc chỉnh sửa

Bạn không cần phải xóa và tạo lại công việc chỉ để thay đổi chúng.

Trò chuyện

/cron edit <job_id> --schedule "every 4h"
/cron edit <job_id> --prompt "Use the revised task"
/cron edit <job_id> --skill blogwatcher --skill find-nearby
/cron edit <job_id> --remove-skill blogwatcher
/cron edit <job_id> --clear-skills

CLI độc lập

hermes cron edit <job_id> --schedule "every 4h"
hermes cron edit <job_id> --prompt "Use the revised task"
hermes cron edit <job_id> --skill blogwatcher --skill find-nearby
hermes cron edit <job_id> --add-skill find-nearby
hermes cron edit <job_id> --remove-skill blogwatcher
hermes cron edit <job_id> --clear-skills

Ghi chú:

  • lặp lại --skill thay thế danh sách kỹ năng đính kèm của công việc
  • --add-skill thêm vào danh sách hiện có mà không thay thế nó
  • --remove-skill loại bỏ các kỹ năng kèm theo cụ thể
  • --clear-skills loại bỏ tất cả các kỹ năng kèm theo

Hành động trong vòng đời

Các công việc định kỳ giờ đây có vòng đời đầy đủ hơn việc chỉ tạo/xóa.

Trò chuyện

/cron list
/cron pause <job_id>
/cron resume <job_id>
/cron run <job_id>
/cron remove <job_id>

CLI độc lập

hermes cron list
hermes cron pause <job_id>
hermes cron resume <job_id>
hermes cron run <job_id>
hermes cron remove <job_id>
hermes cron status
hermes cron tick

Họ làm gì:

  • pause — giữ công việc nhưng ngừng lên lịch cho nó
  • resume — kích hoạt lại công việc và tính toán lần chạy tiếp theo trong tương lai
  • run — kích hoạt công việc ở dấu tích của lịch trình tiếp theo
  • remove — xóa nó hoàn toàn

Cách thức hoạt động

Việc thực thi cron được xử lý bởi daemon cổng. Cổng này đánh dấu bộ lập lịch cứ sau 60 giây, chạy mọi công việc đến hạn trong các phiên tác nhân bị cô lập.

hermes gateway install     

# Install as a user service
sudo hermes gateway install --system

# Linux: boot-time system service for servers
hermes gateway

# Or run in foreground

hermes cron list
hermes cron status

Hành vi của bộ lập lịch cổng

Trên mỗi tích tắc Hermes:

  1. tải công việc từ ~/.hermes/cron/jobs.json
  2. kiểm tra next_run_at so với thời điểm hiện tại
  3. bắt đầu phiên AIAgent mới cho mỗi công việc đến hạn
  4. tùy ý đưa một hoặc nhiều kỹ năng kèm theo vào phiên mới đó
  5. chạy lời nhắc để hoàn thành
  6. đưa ra phản hồi cuối cùng
  7. Cập nhật siêu dữ liệu chạy và thời gian dự kiến tiếp theo

Khóa tệp tại ~/.hermes/cron/.tick.lock ngăn các dấu tích của bộ lập lịch chồng chéo chạy hai lần cùng một lô công việc.

Tùy chọn giao hàng

Khi lên lịch công việc, bạn chỉ định nơi đầu ra sẽ đi:| Tùy chọn | Mô tả | Ví dụ | |--------|-------------|----------| | "origin" | Quay lại nơi công việc được tạo ra | Mặc định trên nền tảng nhắn tin | | "local" | Chỉ lưu vào tệp cục bộ ( ~/.hermes/cron/output/ ) | Mặc định trên CLI | | "telegram" | Kênh chủ Telegram | Công dụng TELEGRAM_HOME_CHANNEL | | "telegram:123456" | Trò chuyện Telegram cụ thể theo ID | Giao hàng trực tiếp | | "telegram:-100123:17585" | Chủ đề Telegram cụ thể | định dạng chat_id:thread_id | | "discord" | Kênh gia đình Discord | Công dụng DISCORD_HOME_CHANNEL | | "discord:#engineering" | Kênh Discord cụ thể | Theo tên kênh | | "slack" | Kênh nhà Slack | | | "whatsapp" | Trang chủ WhatsApp | | | "signal" | Tín hiệu | | | "matrix" | Phòng nhà ma trận | | | "mattermost" | Kênh chủ đề quan trọng nhất | | | "email" | Email | | | "sms" | SMS qua Twilio | | | "homeassistant" | Trợ lý tại nhà | | | "dingtalk" | DingTalk | | | "feishu" | Feishu/Lark | | | "wecom" | WeCom | |

Phản hồi cuối cùng của tổng đài viên sẽ được gửi tự động. Bạn không cần gọi send_message trong dấu nhắc cron.

Gói phản hồi

Theo mặc định, đầu ra cron đã phân phối được gói bằng đầu trang và chân trang để người nhận biết nó đến từ một tác vụ đã lên lịch:

Cronjob Response: Morning feeds
-------------

<agent output here>

Note: The agent cannot see this message, and therefore cannot respond to it.

Để phân phối đầu ra tác nhân thô mà không có trình bao bọc, hãy đặt cron.wrap_response thành false :

# ~/.hermes/config.yaml
cron:
wrap_response: false

Đàn áp im lặng

Nếu phản hồi cuối cùng của tổng đài viên bắt đầu bằng [SILENT] thì quá trình phân phối sẽ bị chặn hoàn toàn. Đầu ra vẫn được lưu cục bộ để kiểm tra (trong ~/.hermes/cron/output/ ), nhưng không có tin nhắn nào được gửi đến mục tiêu phân phối.

Điều này hữu ích cho việc giám sát các công việc chỉ nên báo cáo khi có sự cố:

Check if nginx is running. If everything is healthy, respond with only [SILENT].
Otherwise, report the issue.

Các công việc không thành công luôn được phân phối bất kể điểm đánh dấu [SILENT] — chỉ những lần chạy thành công mới có thể bị tắt tiếng.

Định dạng lịch trình

Phản hồi cuối cùng của tổng đài viên được gửi tự động — bạn không cần đưa send_message vào dấu nhắc cron cho cùng đích đến đó. Nếu một lần chạy cron gọi send_message đến mục tiêu chính xác mà bộ lập lịch sẽ gửi tới, Hermes sẽ bỏ qua lần gửi trùng lặp đó và yêu cầu mô hình đưa nội dung hướng tới người dùng vào phản hồi cuối cùng. Chỉ sử dụng send_message cho các mục tiêu bổ sung hoặc mục tiêu khác.

Độ trễ tương đối (một lần)

30m     → Run once in 30 minutes
2h → Run once in 2 hours
1d → Run once in 1 day

Khoảng thời gian (định kỳ)

every 30m    → Every 30 minutes
every 2h → Every 2 hours
every 1d → Every day

Biểu thức Cron

0 9 * * *       → Daily at 9:00 AM
0 9 * * 1-5 → Weekdays at 9:00 AM
0 */6 * * * → Every 6 hours
30 8 1 * * → First of every month at 8:30 AM
0 0 * * 0 → Every Sunday at midnight

Dấu thời gian ISO

2026-03-15T09:00:00    → One-time at March 15, 2026 9:00 AM

Hành vi lặp lại

Loại lịch trìnhLặp lại mặc địnhHành vi
Một lần ( 30m , dấu thời gian)1Chạy một lần
Khoảng thời gian ( every 2h )mãi mãiChạy cho đến khi bị xóa
Biểu thức Cronmãi mãiChạy cho đến khi bị xóa

Bạn có thể ghi đè lên nó:

cronjob(
action="create",
prompt="...",
schedule="every 2h",
repeat=5,
)

Quản lý công việc theo chương trình

API đối mặt với tác nhân là một công cụ:

cronjob(action="create", ...)
cronjob(action="list")
cronjob(action="update", job_id="...")
cronjob(action="pause", job_id="...")
cronjob(action="resume", job_id="...")
cronjob(action="run", job_id="...")
cronjob(action="remove", job_id="...")

Đối với update , vượt qua skills=[] để xóa tất cả các kỹ năng đính kèm.

Lưu trữ công việc

Công việc được lưu trữ trong ~/.hermes/cron/jobs.json . Đầu ra từ các lần chạy công việc được lưu vào ~/.hermes/cron/output/{job_id}/{timestamp}.md .Bộ lưu trữ sử dụng chức năng ghi tệp nguyên tử để quá trình ghi bị gián đoạn không để lại tệp công việc được ghi một phần.

Lời nhắc độc lập vẫn quan trọng

Quan trọng

Công việc định kỳ chạy trong phiên tác nhân hoàn toàn mới. Lời nhắc phải chứa mọi thứ mà nhân viên cần mà các kỹ năng đính kèm chưa cung cấp.

Xấu: "Check on that server issue"

TỐT: "SSH into server 192.168.1.100 as user 'deploy', check if nginx is running with 'systemctl status nginx', and verify https://example.com returns HTTP 200."

Bảo mật

Lời nhắc tác vụ theo lịch trình được quét để tìm các mẫu lọc lời nhắc và trích xuất thông tin xác thực tại thời điểm tạo và cập nhật. Các lời nhắc chứa các thủ thuật Unicode vô hình, các nỗ lực cửa hậu SSH hoặc các tải trọng lấy cắp bí mật rõ ràng đều bị chặn.