HEARTBEAT.md: Agent tự kiểm tra sức khỏe — Ngăn 'runaway agent' trước khi lạc đường 20 bước
Cấu hình 'nhịp tim' buộc agent dừng lại kiểm tra thực tại sau mỗi N bước, giảm 40-60% trường hợp agent sửa sai file hoặc đi lạc khỏi mục tiêu trong tác vụ dà...
Khi agent chạy tự trị (autonomous) trong 50–100 bước liên tiếp, nó dần mất liên lạc với thực tại — tiếp tục sửa file đã bị xóa, bám vào kế hoạch đã lỗi thời, hoặc "ảo giác" rằng mình đang tiến triển. HEARTBEAT.md là cơ chế "nhịp tim" buộc agent ngừng lại mỗi N phút để tự hỏi: "Tôi còn đang giải quyết đúng bài toán không?" — giống như phi công trong mây phải nhìn đồng hồ chỉ dẫn để không bay lệch.
Vấn đề
Agent LLM hoạt động theo cơ chế autoregressive: dự đoán token tiếp theo dựa trên context hiện tại. Khi chạy dài (tự sửa code, tự research qua 20–30 lượt), hiện tượng epistemic drift xảy ra — mô hình thế giới trong "đầu" agent dần lệch khỏi ground truth. Agent không nhận ra rằng:
- User đã xóa file 10 phút trước, nhưng agent vẫn tiếp tục edit file đó (stale file reference)
- Mục tiêu ban đầu đã thay đổi, nhưng agent vẫn bám vào plan cũ (goal divergence)
- Context window bị bloat bởi thông tin lạc hậu, làm suy giảm chất lượng reasoning (attention dilution)
Trong cộng đồng OpenClaw và Claude Code, tình trạng "runaway agent" được báo cáo thường xuyên: agent tuyên bố "đã sửa 15/15 lỗi" nhưng thực tế chưa mở file nguồn, hoặc đi sai hướng 20 bước mới phát hiện. Không có cơ chế can thiệp định kỳ, agent như phi công lái trong mây dày mà không có instrument check — inevitably drift.
Ý tưởng cốt lõi
HEARTBEAT.md là file markdown khai báo (declarative) đặt trong workspace, định nghĩa "pulse interval" — tần suất buộc agent ngừng execution để thực hiện self-diagnostic. Không phải là gợi ý (suggestion), mà là preemptive system call — agent parser buộc phải pause và đọc file này.
Cấu hình cơ bản
File đơn giản như sau:
# HEARTBEAT.md
## Cadence
- Every 10 turns
- Every 30 minutes
- Before each file write
## Mandatory Checks
1. **Validate Plan**: So sánh current approach với original goal trong SOUL.md
2. **Check External Mods**: Kiểm tra git status, file bị xóa/thêm bởi human
3. **Assess Convergence**: Đánh giá tiến độ — đang converging hay diverging?
4. **GC Context**: Xóa irrelevant context khỏi working memory để giảm bloatLuồng hoạt động
Agent Loop:
Step 1 → Step 2 → ... → Step 9 → [HEARTBEAT TRIGGER]
↓
Đọc HEARTBEAT.md
Thực hiện 4 checks
↓
Adjust plan nếu cần
↓
Tiếp tục Step 10...Khi trigger (ví dụ: đủ 10 turns), agent bắt buộc phải:
- Dừng execution hiện tại (suspend tool call)
- Đọc nội dung HEARTBEAT.md
- Trả lời từng mục Mandatory Checks
- Cập nhật plan nếu phát hiện drift
- Mới được resume execution
Đây là watchdog timer cho agent cognition — nếu agent "treo" trong local minima của reasoning (ví dụ: liên tục thử lại một approach sai), heartbeat force re-evaluation.
Chiến lược Cadence
Ba chế độ trigger phủ các use case khác nhau:
- Every N turns: Phù hợp task nặng reasoning (code generation dài) — kiểm tra sau mỗi 10–20 bước tư duy
- Every M minutes: Phù hợp agent chạy background (cron job) — đảm bảo không drift quá 15–30 phút liên tục
- Before file write: Guard critical mutation — tránh ghi đè file sai hoặc ghi vào file đã bị xóa
Lưu ý: Community OpenClaw khuyến nghị cadence ≤15 phút cho task phức tạp để đạt hiệu quả 40–60% reduction trong runaway scenarios.
Tại sao nó hoạt động
Autoregressive Inertia
LLM là "greedy local reasoner" — tối ưu hóa cho coherence của bước ngay lập tức (local), không phải toàn cục (global). Qua 50–100 turns, attention mechanism bias mạnh về token gần nhất, làm mờ dần constraints từ turn 1–5. Hiện tượng này gọi là autoregressive inertia — agent bị kẹt trong gravity well của subtask hiện tại, không thể tự thoát ra để nhìn lại big picture.
HEARTBEAT.md tạo preemptive multitasking — force context switch từ execution mode sang reflection mode, phá vỡ inertia tương tự như OS interrupt buộc CPU dừng để xử lý timer.
Gossip Protocol cho Mental State
Trong distributed systems, nodes gửi heartbeat không chỉ để báo "còn sống", mà để reconcile state — so sánh local view với ground truth. HEARTBEAT.md tương tự: agent reconciles "mental state" (what it thinks is true) với "ground truth" (git status, file system, original goal).
Ví dụ điển hình: Agent nghĩ "file config.yaml vẫn tồn tại và tôi đang sửa dòng 45", nhưng human đã xóa file đó 10 phút trước. Without heartbeat, agent tiếp tục edit ảo 20 bước. With heartbeat, check #2 ("Check External Mods") bắt lỗi ngay lập tức.
Compression vs. Retention
Check #4 Garbage Collect Context giải quyết context window pollution. Giống như GC trong programming, đây là cơ chế dọn dẹp "short-term noise" (các biến tạm, output của tool call lạc hậu) để giữ lại "long-term signal" (goal, constraints, lessons learned). Điều này ngăn chặn hiện tượng "lost in the middle" khi context window đầy.
Ý nghĩa thực tế
Hiệu quả đo được
Theo consensus cộng đồng OpenClaw và Claude Code trên Reddit, việc triển khai HEARTBEAT.md với cadence ≤15 phút giảm 40–60% trường hợp runaway agent (agent đi lạc >20 bước mới dừng). Đối với các tác vụ coding tự trị kéo dài 30 phút trở lên, đây là cải thiện đáng kể về reliability.
Tiết kiệm chi phí
Mỗi bước lạc đường của agent tốn token (API cost) và thời gian. Phát hiện lệch sớm (sau 10 bước thay vì 30 bước) tiết kiệm ~60–70% token consumption cho các session dài.
So sánh: Có và không có HEARTBEAT
| Tiêu chí | Không có HEARTBEAT | Có HEARTBEAT.md |
|---|---|---|
| Phát hiện file bị xóa | Sau 20+ bước (hoặc không bao giờ) | Ngay tại pulse check |
| Plan adaptation | Chỉ khi user interupt | Tự động mỗi N turns |
| Context bloat | Tuyến tính với số bước | Được GC định kỳ |
| Token waste | Cao (drift compensation) | Thấp (early correction) |
| Human oversight | Liên tục (micro-management) | Gián tiếp (trust but verify) |
Giới hạn và "Adherence Failure"
HEARTBEAT.md không phải silver bullet:
- Adherence Failure: Agent có thể "hallucinate" rằng đã thực hiện check, hoặc bỏ qua nếu framework không enforce strict pause. Đây là phàn nàn phổ biến: "instructions not sticking".
- Overhead: Cadence quá dày (dưới 5 phút) làm gián đoạn flow state, đặc biệt với task cần deep focus (viết algorithm phức tạp).
- Fundamental Errors: Không sửa được lỗi logic cơ bản của model — chỉ phát hiện drift về mục tiêu và context, không fix sai lầm trong tool usage.
Đào sâu hơn
Tài liệu chính thức:
- OpenClaw Documentation: github.com/claw-ai/openclaw — Framework triển khai HEARTBEAT.md như preemptive hook
- Claude Code Community: Anthropic Claude Code lifecycle hooks — Thảo luận về experimental implementation
Bài viết liên quan TroiSinh:
Cron Jobs cho Agent
Tự động hóa agent chạy theo lịch trình — kết hợp với HEARTBEAT để đảm bảo agent cron không drift khi chạy background
Event-driven Agents
Trigger agent từ webhook, email, file change — HEARTBEAT giúp agent xử lý event stream dài mà không mất context
Workflow Automation
Nối agent vào quy trình business — sử dụng heartbeat như checkpoint trong n8n/Zapier workflows phức tạp
Đọc tiếp:
Use Cases thực chiến
Xem cách HEARTBEAT.md được áp dụng trong production cho customer support, devtools, và internal ops
Production Deployment
Chiến lược deploy agent với monitoring, disaster recovery, và bảo mật multi-tenant — nơi HEARTBEAT trở thành critical health check
Tài liệu mở rộng:
- Reddit r/openclaw: "HEARTBEAT.md instructions not sticking — what am I missing?" — Thảo luận về adherence failures và workaround
- arXiv:2603.10764 — HeartAgent: An Autonomous Agent System for Explainable Differential Diagnosis (mô hình self-monitoring trong medical domain, kiến trúc tương tự)
Cron Jobs cho Agent: Tự động chạy theo lịch — Từ cron job 'chết' đến agent 'sống'
Agent không cần người bấm nút để chạy. Cron jobs cho phép AI tự thức dậy, nạp lại trí nhớ và thực thi workflow theo lịch — như nhân viên ca đêm không biết mệt.
Event-driven Agents: Trigger agent từ webhook, email, file change — Tự động hóa không chờ đợi
Event-driven Agents kích hoạt AI từ webhook, email, file change thay vì polling. Giảm 90% latency, tiết kiệm compute, phản ứng real-time với sự kiện business.