Skip to main content

Cron vs Heartbeat: Khi nào nên sử dụng

Cả heartbeat và cron jobs đều cho phép bạn chạy các tác vụ theo lịch trình. Hướng dẫn này giúp bạn chọn cơ chế phù hợp cho trường hợp sử dụng của mình.

Hướng dẫn quyết định nhanh

Heartbeat: Nhận thức định kỳ

Heartbeat chạy trong phiên chính theo khoảng thời gian đều đặn (mặc định: 30 phút). Được thiết kế để agent kiểm tra và nêu bật những điều quan trọng.

Khi nào nên dùng heartbeat

  • Nhiều kiểm tra định kỳ: Thay vì 5 cron jobs riêng lẻ kiểm tra hộp thư, lịch, thời tiết, thông báo và trạng thái dự án, một heartbeat có thể gộp tất cả.
  • Quyết định nhận biết ngữ cảnh: Agent có toàn bộ ngữ cảnh phiên chính, nên có thể đưa ra quyết định thông minh về điều gì là khẩn cấp.
  • Liên tục hội thoại: Các lần chạy heartbeat chia sẻ cùng phiên, nên agent nhớ các cuộc hội thoại gần đây và có thể theo dõi tự nhiên.
  • Giám sát chi phí thấp: Một heartbeat thay thế nhiều tác vụ polling nhỏ.

Ưu điểm của heartbeat

  • Gộp nhiều kiểm tra: Một lượt agent có thể xem xét hộp thư, lịch và thông báo cùng lúc.
  • Giảm cuộc gọi API: Một heartbeat rẻ hơn 5 cron jobs riêng lẻ.
  • Nhận biết ngữ cảnh: Agent biết bạn đang làm gì và có thể ưu tiên phù hợp.
  • Ngăn chặn thông minh: Nếu không cần chú ý, agent trả lời HEARTBEAT_OK và không có thông báo nào được gửi.
  • Thời gian tự nhiên: Trôi nhẹ dựa trên tải hàng đợi, phù hợp cho hầu hết giám sát.

Ví dụ heartbeat: Danh sách kiểm tra HEARTBEAT.md

Agent đọc danh sách này mỗi lần heartbeat và xử lý tất cả mục trong một lượt.

Cấu hình heartbeat

Xem Heartbeat để biết cấu hình đầy đủ.

Cron: Lập lịch chính xác

Cron jobs chạy vào thời điểm chính xác và có thể chạy trong các phiên riêng lẻ mà không ảnh hưởng đến ngữ cảnh chính. Lịch trình định kỳ đầu giờ được tự động phân bổ bằng một độ lệch xác định theo công việc trong khoảng 0-5 phút.

Khi nào nên dùng cron

  • Cần thời gian chính xác: “Gửi cái này lúc 9:00 sáng mỗi thứ Hai” (không phải “khoảng 9 giờ”).
  • Tác vụ độc lập: Tác vụ không cần ngữ cảnh hội thoại.
  • Mô hình/suy nghĩ khác: Phân tích nặng cần mô hình mạnh hơn.
  • Nhắc nhở một lần: “Nhắc tôi trong 20 phút” với --at.
  • Tác vụ ồn ào/thường xuyên: Tác vụ sẽ làm lộn xộn lịch sử phiên chính.
  • Kích hoạt bên ngoài: Tác vụ nên chạy độc lập với việc agent có hoạt động hay không.

Ưu điểm của cron

  • Thời gian chính xác: Biểu thức cron 5 trường hoặc 6 trường (giây) với hỗ trợ múi giờ.
  • Phân bổ tải tích hợp: Lịch trình định kỳ đầu giờ được phân bổ trong vòng 5 phút theo mặc định.
  • Kiểm soát từng công việc: Ghi đè phân bổ với --stagger <duration> hoặc buộc thời gian chính xác với --exact.
  • Cách ly phiên: Chạy trong cron:<jobId> mà không làm ô nhiễm lịch sử chính.
  • Ghi đè mô hình: Sử dụng mô hình rẻ hơn hoặc mạnh hơn cho từng công việc.
  • Kiểm soát gửi: Công việc riêng lẻ mặc định là announce (tóm tắt); chọn none nếu cần.
  • Gửi ngay lập tức: Chế độ thông báo đăng trực tiếp mà không chờ heartbeat.
  • Không cần ngữ cảnh agent: Chạy ngay cả khi phiên chính không hoạt động hoặc bị nén.
  • Hỗ trợ một lần: --at cho dấu thời gian tương lai chính xác.

Ví dụ cron: Tóm tắt buổi sáng hàng ngày

Chạy chính xác lúc 7:00 sáng giờ New York, sử dụng Opus cho chất lượng và thông báo tóm tắt trực tiếp đến WhatsApp.

Ví dụ cron: Nhắc nhở một lần

Xem Cron jobs để biết tham chiếu CLI đầy đủ.

Sơ đồ quyết định

Kết hợp cả hai

Thiết lập hiệu quả nhất sử dụng cả hai:
  1. Heartbeat xử lý giám sát định kỳ (hộp thư, lịch, thông báo) trong một lượt gộp mỗi 30 phút.
  2. Cron xử lý lịch trình chính xác (báo cáo hàng ngày, đánh giá hàng tuần) và nhắc nhở một lần.

Ví dụ: Thiết lập tự động hóa hiệu quả

HEARTBEAT.md (kiểm tra mỗi 30 phút):
Cron jobs (thời gian chính xác):

Lobster: Quy trình làm việc xác định với phê duyệt

Lobster là runtime quy trình làm việc cho các pipeline công cụ nhiều bước cần thực thi xác định và phê duyệt rõ ràng. Sử dụng khi tác vụ nhiều hơn một lượt agent và bạn muốn một quy trình làm việc có thể tiếp tục với các điểm kiểm tra của con người.

Khi nào Lobster phù hợp

  • Tự động hóa nhiều bước: Bạn cần một pipeline công cụ cố định, không phải một lời nhắc một lần.
  • Cổng phê duyệt: Các tác động phụ nên tạm dừng cho đến khi bạn phê duyệt, sau đó tiếp tục.
  • Chạy có thể tiếp tục: Tiếp tục một quy trình làm việc bị tạm dừng mà không chạy lại các bước trước đó.

Cách kết hợp với heartbeat và cron

  • Heartbeat/cron quyết định khi nào một lượt chạy xảy ra.
  • Lobster xác định các bước nào xảy ra khi lượt chạy bắt đầu.
Đối với các quy trình làm việc theo lịch trình, sử dụng cron hoặc heartbeat để kích hoạt một lượt agent gọi Lobster. Đối với các quy trình làm việc ad-hoc, gọi Lobster trực tiếp.

Ghi chú vận hành (từ mã)

  • Lobster chạy như một quá trình con cục bộ (lobster CLI) ở chế độ công cụ và trả về một phong bì JSON.
  • Nếu công cụ trả về needs_approval, bạn tiếp tục với một resumeToken và cờ approve.
  • Công cụ là một plugin tùy chọn; kích hoạt nó bổ sung qua tools.alsoAllow: ["lobster"] (khuyến nghị).
  • Lobster yêu cầu CLI lobster có sẵn trên PATH.
Xem Lobster để biết cách sử dụng và ví dụ đầy đủ.

Phiên chính vs Phiên riêng lẻ

Cả heartbeat và cron đều có thể tương tác với phiên chính, nhưng theo cách khác nhau:

Khi nào nên dùng cron phiên chính

Sử dụng --session main với --system-event khi bạn muốn:
  • Nhắc nhở/sự kiện xuất hiện trong ngữ cảnh phiên chính
  • Agent xử lý nó trong lần heartbeat tiếp theo với ngữ cảnh đầy đủ
  • Không có lần chạy riêng lẻ nào

Khi nào nên dùng cron riêng lẻ

Sử dụng --session isolated khi bạn muốn:
  • Một khởi đầu mới mà không có ngữ cảnh trước đó
  • Cài đặt mô hình hoặc suy nghĩ khác
  • Thông báo tóm tắt trực tiếp đến một kênh
  • Lịch sử không làm lộn xộn phiên chính

Cân nhắc chi phí

Mẹo:
  • Giữ HEARTBEAT.md nhỏ để giảm thiểu chi phí token.
  • Gộp các kiểm tra tương tự vào heartbeat thay vì nhiều cron jobs.
  • Sử dụng target: "none" trên heartbeat nếu bạn chỉ muốn xử lý nội bộ.
  • Sử dụng cron riêng lẻ với mô hình rẻ hơn cho các tác vụ thường xuyên.

Liên quan

  • Heartbeat - cấu hình heartbeat đầy đủ
  • Cron jobs - tham chiếu CLI và API cron đầy đủ
  • System - sự kiện hệ thống + điều khiển heartbeat
Lần sửa đổi cuối 22 tháng 3, 2026