Từ "hỏi rồi trả lời" sang "tự biết mà làm"
Phần lớn AI agent hoạt động theo kiểu reactive: bạn hỏi, nó trả lời. Bạn không hỏi, nó im. Mô hình này ổn cho nhiều tác vụ — nhưng có một lớp công việc quan trọng mà không nên phụ thuộc vào việc bạn nhớ hỏi: server có đang chạy không, SSL certificate sắp hết hạn chưa, backup đêm qua thành công chưa?
OpenClaw giải quyết bằng HEARTBEAT.md — một file checklist mà agent tự chạy qua định kỳ, giống nhịp tim đập đều. Không cần bạn nhắc, không cần bạn online. Agent chỉ "quấy rầy" bạn khi thực sự có vấn đề.
HEARTBEAT.md hoạt động thế nào?
OpenClaw Gateway chạy như daemon ở background. Mặc định mỗi 30 phút, agent thực hiện một vòng heartbeat theo trình tự sau:
HEARTBEAT_OK
Viết HEARTBEAT.md đầu tiên
Bắt đầu đơn giản. Đây là ví dụ cho developer chạy một VPS:
# Heartbeat Checklist
## Mỗi 30 phút
- [ ] Kiểm tra server production (10.10.10.2) có respond không
- Ping hoặc curl health endpoint /api/v1/health
- Nếu không respond sau 3 lần thử: gửi alert Telegram
## Mỗi giờ
- [ ] Kiểm tra disk usage trên VPS
- Nếu > 85%: cảnh báo thường
- Nếu > 95%: cảnh báo khẩn + tự dọn Docker images cũ
## Mỗi 6 giờ
- [ ] Kiểm tra SSL certificate
- Còn < 7 ngày: nhắc renew thủ công
- Còn < 1 ngày: chạy certbot renew tự động
## Mỗi ngày (8h sáng)
- [ ] Tóm tắt hoạt động hôm qua
- Commits, deployments, incidents
- Gửi bản tóm tắt compact qua Telegram
## Mỗi tuần (thứ Hai)
- [ ] Kiểm tra backup database
- File backup mới nhất phải < 24h
- Kích thước backup phải hợp lý (so với lần trước)
- Báo cáo nếu thiếu hoặc bất thường
Cấu hình tần suất heartbeat
Heartbeat interval là tần suất agent kiểm tra checklist — không phải tần suất thực hiện từng mục. Agent kiểm tra mỗi 30 phút, nhưng mục "mỗi ngày" chỉ chạy một lần mỗi ngày.
{
"gateway": {
"heartbeat": {
"interval": "15m", // 15m | 30m | 1h | 6h | 24h
"enabled": true
}
}
}
Sub-Agents: chia nhỏ công việc phức tạp
Khi một tác vụ heartbeat quá phức tạp cho một agent xử lý đơn lẻ, OpenClaw hỗ trợ sub-agents — agent con được sinh ra để xử lý một phần công việc cụ thể. Agent chính tổng hợp kết quả, giống bạn giao việc cho team rồi review output.
## Báo cáo tuần (thứ Hai 9h)
- [ ] Spawn sub-agent "report-builder"
→ Thu thập commits, PR, deployment từ GitHub
- [ ] Spawn sub-agent "metrics-analyzer"
→ Phân tích traffic, latency, error rate từ Grafana
- [ ] Tổng hợp kết quả từ cả hai sub-agent
- [ ] Format thành báo cáo compact → gửi Telegram
Quản lý sub-agents từ CLI:
# Xem sub-agents đang chạy
openclaw agents list
# Dừng một sub-agent cụ thể
openclaw agents kill report-builder
# Dừng tất cả sub-agents
openclaw agents kill --all
Ví dụ thực tế: setup cho VPS OnMay
Đây là HEARTBEAT.md hoàn chỉnh cho VPS chạy AI agent 24/7 — đã được tinh chỉnh qua thực tế
để tránh false positive và alert fatigue:
# OnMay VPS Heartbeat
## Monitoring (mỗi 15 phút)
- [ ] Health check: curl http://localhost:3000/api/v1/health
- Nếu fail: restart Docker container "openclaw-gateway"
- Nếu fail sau restart: alert Telegram + ghi log incident
## Tài nguyên (mỗi giờ)
- [ ] RAM usage
- > 85%: docker system prune -f
- > 95% sau prune: alert khẩn cấp
- [ ] Disk usage
- > 80%: xoá Docker images không dùng
- Log rotation cho files > 100MB
## OpenClaw health (mỗi 6 giờ)
- [ ] Ping agent, kiểm tra responsive
- Nếu không response: restart gateway
- [ ] Memory index freshness
- Nếu index > 24h chưa rebuild: trigger reindex
## Bảo mật (mỗi ngày)
- [ ] Auth log — brute force detection
- > 50 failed login từ cùng IP: block bằng iptables
- [ ] Docker image vulnerability scan
- Alert nếu CVE severity HIGH+
## Báo cáo ngày (7h sáng)
- [ ] Tóm tắt compact: uptime, request count,
top 5 errors, CPU/RAM/disk trung bình
→ Gửi Telegram
Kết hợp Heartbeat với Memory
Một pattern hiệu quả: để heartbeat tự ghi kết quả vào daily notes. Khi bạn hỏi "server hôm nay thế nào?", agent đọc notes thay vì phải chạy lại kiểm tra — nhanh hơn và không tốn thêm tài nguyên.
## Logging (mỗi heartbeat)
- [ ] Ghi kết quả vào memory/YYYY-MM-DD.md
- Format: ## Heartbeat [HH:MM] — [OK/WARN/ERROR]
- Chỉ ghi chi tiết khi có cảnh báo hoặc lỗi
- Mục OK chỉ ghi một dòng tóm tắt
Kết quả trong daily note sẽ trông như thế này:
## Heartbeat 07:00 — OK (uptime 99.9%, disk 42%, RAM 61%)
## Heartbeat 09:00 — WARN
- Disk tăng lên 83% — đã chạy docker system prune
- Disk sau prune: 71% — ổn
## Heartbeat 15:30 — OK (routine check)
Multi-Agent: mỗi agent một vai trò
OpenClaw hỗ trợ chạy nhiều agent song song trên cùng Gateway, mỗi agent có workspace riêng, HEARTBEAT.md riêng, và kênh giao tiếp riêng. Tin nhắn đến được Gateway route đến đúng agent dựa trên channel và nội dung.
{
"agents": {
"list": [
{
"id": "dev-assistant",
"workspace": "~/.openclaw/workspaces/dev",
"channels": ["telegram-personal"]
},
{
"id": "ops-monitor",
"workspace": "~/.openclaw/workspaces/ops",
"channels": ["telegram-alerts"]
},
{
"id": "customer-support",
"workspace": "~/.openclaw/workspaces/support",
"channels": ["website-chat"]
}
]
}
}
Bảo mật cho autonomous workflows
Agent chạy tự động 24/7 có attack surface lớn hơn agent chỉ chạy khi bạn chat. Cần thiết lập kiểm soát chặt hơn ngay từ đầu.
-
Giới hạn quyền theo nguyên tắc least privilege Chỉ liệt kê trong HEARTBEAT.md những tác vụ bạn tin tưởng agent tự làm. Hành động nguy hiểm (xóa dữ liệu, deploy production) nên yêu cầu xác nhận trước — thêm "hỏi trước khi thực hiện" vào mô tả mục đó.
-
Audit log đầy đủ Bật hook
log-tool-callsđể ghi lại mọi hành động agent thực hiện trong heartbeat. Khi có vấn đề bạn sẽ có trail đầy đủ để điều tra — không bao giờ debug blind. -
Chống alert fatigue Đừng để agent gửi quá nhiều alert — bạn sẽ bắt đầu ignore chúng. Đặt ngưỡng hợp lý, gom nhiều cảnh báo nhỏ thành một tóm tắt, và chỉ gửi kênh riêng (không chung với chat thông thường).
-
Test bằng dry-run trước khi bật auto-fix Chạy heartbeat vài ngày ở chế độ "chỉ log, không hành động" trước khi bật auto-fix. Đảm bảo agent phán đoán đúng và không trigger false positive trước khi cho nó quyền hành động thật.
Chi phí thực tế
Mỗi heartbeat tick là một phiên agent nhỏ, tiêu tốn khoảng 1.000–5.000 token tùy độ phức tạp của checklist. Dưới đây là ước tính thực tế với interval 30 phút (48 ticks/ngày):
| Model | Giá (input) | ~Token/ngày | Chi phí/ngày | Chi phí/tháng | |
|---|---|---|---|---|---|
| Claude Haiku | $0.25 / 1M | ~144K | ~$0.04 | ~$1.2 | Khuyến nghị cho heartbeat |
| GPT-4o mini | $0.15 / 1M | ~144K | ~$0.02 | ~$0.7 | |
| Claude Sonnet | $3 / 1M | ~144K | ~$0.43 | ~$13 |
- Bài 1: Cài đặt và khởi động nhanh
- Bài 2: Cấu hình Workspace từ A-Z
- Bài 3: Hệ thống trí nhớ 3 tầng
- Bài 4: HEARTBEAT.md — tự động hóa 24/7 (bài này)
- Bài 5: Skills, MCP Servers & Plugins