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_OKvà 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
Cấu hình heartbeat
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ọnnonenế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:
--atcho 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
Ví dụ cron: Nhắc nhở một lần
Sơ đồ quyết định
Kết hợp cả hai
Thiết lập hiệu quả nhất sử dụng cả hai:- 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.
- 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):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.
Ghi chú vận hành (từ mã)
- Lobster chạy như một quá trình con cục bộ (
lobsterCLI) ở 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ộtresumeTokenvà 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
lobstercó sẵn trênPATH.
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.mdnhỏ để 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.