Về Field Notes
Series: OpenClaw

Tự động hóa với HEARTBEAT.md:
Để OpenClaw làm việc khi bạn ngủ

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:

1
Đọc HEARTBEAT.md trong workspace Load toàn bộ checklist vào context
2
Duyệt từng mục, đánh giá tần suất và điều kiện Bỏ qua mục "mỗi giờ" nếu chưa đủ 1 giờ từ lần kiểm tra trước
3
Thực hiện hành động cho các mục đủ điều kiện SSH, curl, kiểm tra log, chạy script...
4
Nhắn alert nếu có vấn đề cần chú ý Nếu mọi thứ ổn → im lặng, trả về HEARTBEAT_OK
Nguyên tắc "không spam": Agent chỉ liên lạc khi có vấn đề thực sự. Không có báo cáo định kỳ vô nghĩa, không có "heartbeat completed" mỗi 30 phút. Silence = everything is 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.md — Ví dụ cơ bản
# 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
Không cần cấu hình cron. Agent tự phân biệt tần suất từ mô tả: "mỗi giờ", "mỗi 6 giờ", "mỗi ngày lúc 8h". Nó theo dõi thời điểm kiểm tra trước và chỉ thực hiện lại khi đủ điều kiện.

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.

15mProduction-critical
30mMặc định (khuyến nghị)
60mOauth mode / tiết kiệm
6hDev environment
24hTối thiểu / test
openclaw.json
{
  "gateway": {
    "heartbeat": {
      "interval": "15m",    // 15m | 30m | 1h | 6h | 24h
      "enabled":  true
    }
  }
}
Không đặt interval dưới 10 phút. Mỗi heartbeat là một phiên agent đầy đủ — tốn token và tài nguyên. Với interval = 5m, bạn chạy 288 phiên mỗi ngày. 15–30 phút là điểm cân bằng tốt giữa phản ứng nhanh và chi phí.

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.

HEARTBEAT.md — Ví dụ dùng sub-agents
## 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:

bash
# 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:

HEARTBEAT.md — Production VPS
# 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.

HEARTBEAT.md — Thêm vào cuối file
## 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:

memory/2026-04-12.md — Heartbeat logs
## 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.

dev-assistant
Developer Assistant
Heartbeat: CI/CD status, code quality, PR reviews chưa merge
ops-monitor
Ops & Monitoring
Heartbeat: server health, security scan, backup verification
customer-support
Customer Support
Heartbeat: ticket chưa trả lời, SLA nearing breach, escalation
openclaw.json — Multi-agent config
{
  "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
Mẹo tiết kiệm: Dùng model nhỏ (Haiku, GPT-4o mini) cho heartbeat. Phần lớn tác vụ monitoring — kiểm tra ping, đọc disk usage, so sánh số — không cần model mạnh. Chỉ dùng Sonnet/Opus khi cần phân tích phức tạp hoặc viết báo cáo.
Bắt đầu với 2–3 mục heartbeat đơn giản (health check, disk monitor, daily summary). Thêm dần khi bạn tin tưởng agent hơn. Agent chạy tự động chỉ tốt khi bạn thiết lập đúng giới hạn cho nó.