Nhập từ khóa để bắt đầu tìm kiếm

Các khái niệm căn bản: Session, Memory, Skill, Heartbeat, Cron trong OpenClaw

Các khái niệm căn bản: Session, Memory, Skill, Heartbeat, Cron trong OpenClaw

Cập nhật lần cuối: 20/03/2026 | Phiên bản: 1.0

TL;DR: OpenClaw không phải chatbot — nó là hệ điều hành cho AI agent. Để dùng hiệu quả, bạn cần hiểu 5 khái niệm nền tảng: Session (phiên hội thoại và cách context được quản lý), Memory (trí nhớ ngắn hạn và dài hạn), Skill (khả năng mở rộng), Heartbeat (nhịp kiểm tra định kỳ), và Cron (lập lịch chính xác). Bài viết này giải thích từng khái niệm bằng ví von đời thường, sau đó đi sâu vào chi tiết kỹ thuật và mối liên hệ giữa chúng.


1. Session — "Cuộc trò chuyện"

Ví von đơn giản

Hãy tưởng tượng bạn gọi điện cho trợ lý. Mỗi cuộc gọi là một session. Trong cuộc gọi, trợ lý nhớ mọi thứ bạn vừa nói. Nhưng nếu cuộc gọi quá dài, trợ lý bắt đầu quên phần đầu — và tự tóm tắt lại để tiếp tục. Khi bạn gác máy, cuộc gọi kết thúc. Lần sau gọi lại, trợ lý bắt đầu cuộc gọi mới — nhưng may mắn thay, có quyển sổ tay (memory) ghi lại những gì quan trọng từ lần trước.

Chi tiết kỹ thuật

Session trong OpenClaw là đơn vị cơ bản của trạng thái hội thoại. Mỗi session có một sessionKey (định danh cuộc trò chuyện) và một sessionId (file transcript cụ thể).

Cách session được tạo: Khi bạn nhắn tin cho agent, OpenClaw tìm sessionKey phù hợp. Chat riêng (DM) mặc định dùng chung một session chính (agent:<agentId>:main) — nghĩa là bạn nhắn qua Telegram hay WhatsApp đều tiếp tục cùng một cuộc trò chuyện. Group chat có sessionKey riêng để cách ly.

Session reset xảy ra khi nào: Bạn gõ /new hoặc /reset. Hàng ngày tự động (mặc định 4:00 AM). Hoặc khi idle quá lâu (cấu hình qua session.reset.idleMinutes). Reset tạo sessionId mới (transcript mới) nhưng sessionKey vẫn giữ — giống như mở sổ mới nhưng vẫn là cùng "cuộc trò chuyện" đó.

Transcript là file JSONL ghi lại mọi tin nhắn, tool call, và kết quả — giống recording của cuộc gọi. Nó được lưu tại ~/.openclaw/agents/<agentId>/sessions/.

Compaction — Khái niệm quan trọng nhất

Mỗi model AI có context window giới hạn (ví dụ: 200K token). Khi hội thoại dài quá, context đầy, OpenClaw chạy compaction — tóm tắt phần cũ thành một bản rút gọn, giữ nguyên phần mới. Tóm tắt này được lưu vào transcript nên lần sau model đọc: bản tóm tắt + tin nhắn gần đây.

Vấn đề: compaction có thể xóa chi tiết quan trọng. Nếu bạn nói "đừng xóa email" ở tin nhắn #5 và compaction tóm tắt tin nhắn #1-50, chỉ dẫn đó có thể biến mất.

Giải pháp của OpenClaw — Memory Flush: Trước khi compaction xảy ra, OpenClaw chạy một lượt ngầm (silent turn) nhắc agent ghi thông tin quan trọng vào file memory trên disk. Agent thực hiện rồi trả lời NO_REPLY — bạn không thấy gì. Thông tin được cứu khỏi compaction.

Lệnh hữu ích

/status        # Xem sessionKey, token usage, context còn lại
/new           # Bắt đầu session mới (transcript mới)
/compact       # Tóm tắt context thủ công để giải phóng
/context list  # Xem những gì đang chiếm context
openclaw sessions  # Liệt kê sessions từ CLI

2. Memory — "Trí nhớ"

Ví von đơn giản

Trợ lý của bạn có hai loại trí nhớ. Trí nhớ trong cuộc gọi — mọi thứ bạn vừa nói trong phiên hiện tại, bị giới hạn bởi thời lượng cuộc gọi (context window). Sổ tay ghi chú — thông tin quan trọng được chép ra giấy, tồn tại vĩnh viễn dù bao nhiêu cuộc gọi đi qua.

Chi tiết kỹ thuật

Memory trong OpenClaw là hệ thống file Markdown trên disk, hoàn toàn thuộc sở hữu của bạn — không nằm trên server của ai cả.

MEMORY.md — Trí nhớ dài hạn. File này chứa thông tin đã được chắt lọc: sở thích của bạn, quyết định quan trọng, quy tắc hoạt động. Nó được nạp vào context mỗi phiên main session. Giữ file này gọn (dưới 10,000 ký tự) vì mỗi ký tự trong đó tốn token ở mọi tin nhắn bạn gửi.

memory/YYYY-MM-DD.md — Ghi chú hàng ngày. Mỗi ngày, agent tạo file ghi chú ghi lại: task đã làm, quyết định đã đưa ra, thông tin mới. Đây là "nhật ký" — chi tiết hơn MEMORY.md nhưng chỉ được đọc 1-2 ngày gần nhất (để tiết kiệm context). Thông tin quan trọng dần được "nâng cấp" vào MEMORY.md.

Memory Search — Tìm kiếm ngữ nghĩa. OpenClaw xây vector index trên các file memory, cho phép agent tìm thông tin theo ý nghĩa (không cần nhớ chính xác từ ngữ). Ví dụ: bạn hỏi "mình quyết định gì về Telegram?" → agent tìm ra ghi chú từ 2 tuần trước dù bạn dùng từ khác hoàn toàn. Sử dụng SQLite với sqlite-vec cho tìm kiếm nhanh.

Vòng đời memory: Bạn nói chuyện → agent ghi nhận → cuối ngày (hoặc trước compaction) agent viết vào daily note → theo thời gian, thông tin quan trọng được distill vào MEMORY.md → khi bắt đầu phiên mới, agent đọc MEMORY.md + daily notes gần nhất để "nhớ lại."

Workspace files liên quan

File Vai trò Ai viết? Load khi nào?
MEMORY.md Trí nhớ dài hạn (chắt lọc) Agent + bạn chỉnh Main session
memory/YYYY-MM-DD.md Nhật ký hàng ngày Agent tự viết 1-2 ngày gần nhất
USER.md Hồ sơ người dùng Bạn viết Mọi phiên
SOUL.md Tính cách agent Bạn viết Mọi phiên
AGENTS.md Quy trình vận hành Bạn viết Mọi phiên

Mối liên hệ Session ↔ Memory

Session là trí nhớ trong cuộc gọi (tạm thời, bị giới hạn context window). Memory là trí nhớ trên giấy (vĩnh viễn, trên disk). Compaction là cầu nối: trước khi session cũ bị nén, memory flush đẩy thông tin quan trọng từ session ra disk. Phiên mới đọc memory từ disk để "nhớ lại" mà không cần session cũ.


3. Skill — "Kỹ năng"

Ví von đơn giản

Agent của bạn thông minh nhưng không biết mọi thứ từ đầu. Skill giống như sách hướng dẫn chuyên đề mà bạn đặt trên kệ — agent chỉ lấy cuốn cần thiết khi gặp task phù hợp. Có sách hướng dẫn nấu ăn, sách quản lý Git, sách điều khiển smarthome... Bạn có thể mua thêm sách mới (cài skill từ ClawHub) hoặc tự viết sách (tạo skill riêng).

Chi tiết kỹ thuật

Skill trong OpenClaw là folder chứa file SKILL.md — một file Markdown mô tả kỹ năng bằng ngôn ngữ tự nhiên, kèm YAML frontmatter. Đây là format có ý nghĩa: nó tương thích với Claude Code skills và Cursor conventions, nghĩa là skill viết cho OpenClaw có thể dùng trên nhiều nền tảng.

Cấu trúc một skill:

skills/
└── gmail-manager/
    └── SKILL.md
---
name: gmail-manager
description: Quản lý Gmail — đọc, phân loại, trả lời email
---

# Gmail Manager

## Khi nào dùng
Khi người dùng nhắc đến email, inbox, Gmail, hoặc muốn gửi/đọc email.

## Hướng dẫn
1. Dùng gog CLI để truy cập Gmail
2. Phân loại email theo: VIP, quan trọng, thông thường, spam
3. Với email VIP: tóm tắt và thông báo ngay
4. Với email thường: gộp vào digest cuối ngày
...

Ba loại skill:

Bundled skills — đi kèm OpenClaw, luôn có sẵn (browser control, file management...).

Managed skills — cài từ ClawHub (registry cộng đồng) qua openclaw skills install. Lưu tại ~/.openclaw/skills/. Đây là nơi bạn tìm skill cho Gmail, Google Calendar, Notion, Obsidian, smarthome...

Workspace skills — do bạn tự tạo, nằm trong ~/.openclaw/workspace/skills/. Override managed skills cùng tên. Đây là cách tùy chỉnh hành vi agent cho nhu cầu riêng.

Cách agent sử dụng skill: Mỗi lượt agent turn, OpenClaw gửi danh sách skill (tên + mô tả) vào system prompt. Agent quyết định skill nào phù hợp với task hiện tại, "mở" SKILL.md đó để đọc hướng dẫn chi tiết, rồi thực hiện theo. Đây là progressive disclosure — agent không nạp tất cả skill cùng lúc (sẽ đầy context) mà chỉ load khi cần.

Bảo mật skill: Skill là code thực thi. Một skill có thể chạy lệnh shell, đọc/viết file, gửi request ra ngoài. ClawHub đã tích hợp VirusTotal scanning, nhưng bạn vẫn nên đọc SKILL.md trước khi cài, đặc biệt với skill từ tác giả không rõ nguồn gốc.

Lệnh hữu ích

openclaw skills list              # Liệt kê skill đã cài
openclaw skills install <tên>     # Cài skill từ ClawHub
openclaw skills remove <tên>      # Gỡ skill

4. Heartbeat — "Nhịp thở"

Ví von đơn giản

Hãy tưởng tượng bạn thuê bảo vệ tuần tra. Mỗi 30 phút, bảo vệ đi một vòng, kiểm tra danh sách: cửa có khóa không? Có ai lạ không? Hệ thống báo cháy bình thường không? Nếu mọi thứ ổn, bảo vệ ghi "OK" vào sổ rồi ngồi xuống. Nếu có vấn đề, bảo vệ gọi cho bạn ngay.

Heartbeat hoạt động y hệt.

Chi tiết kỹ thuật

Heartbeat là cơ chế kiểm tra định kỳ trong main session. Mỗi N phút (mặc định 30, hoặc 60 với Anthropic OAuth), Gateway đánh thức agent. Agent đọc HEARTBEAT.md — một checklist ngắn viết bằng ngôn ngữ tự nhiên — và dùng phán đoán (judgment) để quyết định:

Có gì cần hành động → thực hiện và thông báo cho bạn.
Không có gì → trả lời HEARTBEAT_OK → Gateway drop message này, bạn không thấy gì.

Đặc điểm then chốt:

Chạy trong main session → có đầy đủ ngữ cảnh hội thoại gần đây. Agent nhớ bạn vừa nói gì, đang làm project gì, nên phán đoán thông minh hơn.

Batch nhiều kiểm tra trong một lượt → tiết kiệm. Thay vì 5 API call riêng cho inbox, calendar, weather, notifications, system health, heartbeat gộp tất cả vào 1 call.

phán đoán → agent không chỉ kiểm tra cơ học mà quyết định "thông tin này có đáng báo cho người dùng lúc này không?"

HEARTBEAT.md mẫu:

# Heartbeat checklist
- [ ] Inbox: quét email khẩn từ danh sách VIP
- [ ] Lịch: nhắc nếu có cuộc họp trong 30 phút tới
- [ ] GitHub: CI trên main branch fail thì cảnh báo
- [ ] Nếu không có gì cần chú ý, trả lời HEARTBEAT_OK

Chi phí: Mỗi heartbeat = 1 API call. Với model rẻ + lightContext: true, khoảng $0.005/ngày (48 heartbeat). Với model đắt + full context, có thể lên $0.24/ngày. Luôn dùng model rẻ cho heartbeat.

Cấu hình

{
  "agents": {
    "defaults": {
      "heartbeat": {
        "every": "30m",
        "target": "last",
        "model": "anthropic/claude-haiku-4-5",
        "lightContext": true,
        "activeHours": { "start": "07:00", "end": "23:00" }
      }
    }
  }
}

5. Cron — "Lịch hẹn"

Ví von đơn giản

Nếu heartbeat là bảo vệ tuần tra, cron là lịch hẹn trong calendar. "Thứ Hai 9 giờ sáng: review tuần." "7 giờ mỗi sáng: briefing." "Sau 2 giờ nữa: nhắc gọi khách hàng." Cron không phán đoán — khi đến giờ, nó thực thi. Không hỏi "có đáng làm không?", chỉ hỏi "đã đến giờ chưa?"

Chi tiết kỹ thuật

Cron trong OpenClaw là hệ thống lập lịch sống bên trong Gateway. Mỗi cron job là task độc lập với lịch riêng, session riêng, model riêng.

Ba kiểu lập lịch:

Kiểu Flag Ví dụ Dùng khi
One-shot --at --at "2h" (sau 2 giờ) Nhắc nhở, task chạy 1 lần
Interval --every --every "30m" Kiểm tra lặp lại đều đặn
Cron expression --cron --cron "0 7 * * *" (7h mỗi ngày) Lịch trình phức tạp

Session isolation: Cron job có thể chạy trong main session (có ngữ cảnh) hoặc isolated session (sạch, không ảnh hưởng chat). Isolated được khuyến nghị cho hầu hết cron job — tránh "ô nhiễm" lịch sử chat.

Delivery: Cron isolated có thể --announce kết quả về channel chat, hoặc chạy âm thầm (target: "none"), hoặc gửi qua webhook.

Ví dụ thực tế:

# Briefing sáng — isolated, announce về chat
openclaw cron add \
  --name "Morning brief" \
  --cron "0 7 * * *" \
  --session isolated \
  --message "Briefing: lịch hôm nay, email quan trọng, thời tiết." \
  --announce

# Nhắc nhở one-shot — main session, xóa sau khi chạy
openclaw cron add \
  --name "Gọi khách" \
  --at "2h" \
  --session main \
  --system-event "Nhắc: gọi lại khách hàng về hợp đồng" \
  --wake now \
  --delete-after-run

Cron jobs được lưu tại ~/.openclaw/cron/ và sống sót qua restart.


Mối liên hệ giữa 5 khái niệm

Năm khái niệm này không hoạt động riêng lẻ — chúng tạo thành một hệ sinh thái:

┌─ HEARTBEAT (mỗi 30 phút) ──────────────────────────────────┐
│  Đọc HEARTBEAT.md → Dùng SKILLs (Gmail, Calendar...)       │
│  → Chạy trong main SESSION → Ghi kết quả vào MEMORY        │
│  → Nếu không có gì: HEARTBEAT_OK (drop)                    │
│  → Nếu có vấn đề: thông báo cho bạn                        │
└─────────────────────────────────────────────────────────────┘

┌─ CRON (thời gian chính xác) ───────────────────────────────┐
│  "0 7 * * *" → Spawn isolated SESSION                      │
│  → Dùng SKILLs để tạo briefing                             │
│  → Announce kết quả về channel                              │
│  → Kết quả quan trọng → agent ghi vào MEMORY               │
└─────────────────────────────────────────────────────────────┘

┌─ SESSION (mỗi khi bạn chat) ───────────────────────────────┐
│  Bắt đầu → Load MEMORY + workspace files                   │
│  → Agent dùng SKILLs theo nhu cầu                           │
│  → Context đầy → COMPACTION → flush MEMORY trước            │
│  → /new hoặc idle → Session reset → MEMORY giữ lại         │
└─────────────────────────────────────────────────────────────┘

Session là "sân khấu" nơi mọi thứ diễn ra — cả heartbeat, cron, và chat đều chạy trong session.

Memory là "kho lưu trữ" xuyên suốt mọi session — thông tin sống sót qua reset, compaction, và restart.

Skill là "công cụ" agent sử dụng trong session — đọc email, kiểm tra calendar, chạy lệnh shell...

Heartbeat là "nhịp kiểm tra" định kỳ, chạy trong main session, batch nhiều skill cùng lúc.

Cron là "lịch hẹn" chính xác, thường chạy trong isolated session, dùng skill cho task cụ thể.


Bảng so sánh nhanh

Khái niệm Một câu Ví von Tồn tại ở đâu Tần suất
Session Cuộc hội thoại đang diễn ra Cuộc gọi điện ~/.openclaw/agents/.../sessions/ Liên tục khi chat
Memory Thông tin vĩnh viễn xuyên session Sổ tay ghi chú ~/.openclaw/workspace/MEMORY.md + memory/ Ghi khi có thông tin mới
Skill Khả năng mở rộng cho agent Sách hướng dẫn chuyên đề ~/.openclaw/skills/ + workspace/skills/ Load khi cần
Heartbeat Kiểm tra định kỳ có phán đoán Bảo vệ tuần tra Config JSON + HEARTBEAT.md Mỗi 30 phút (mặc định)
Cron Task lập lịch chính xác Lịch hẹn calendar ~/.openclaw/cron/ Theo lịch đã đặt

Câu hỏi thường gặp

Q: Session reset có xóa memory không?
A: Không. Session reset chỉ tạo transcript mới cho cùng sessionKey. MEMORY.md, daily notes, và tất cả workspace files không bị ảnh hưởng. Đó chính là ý nghĩa của memory — tồn tại xuyên session.

Q: Compaction có nguy hiểm không?
A: Compaction tự nó là cần thiết — không có nó, context window đầy và agent không thể trả lời. Nguy hiểm là khi chỉ dẫn quan trọng chỉ tồn tại "bằng lời" trong session mà không được lưu vào file. Memory flush giảm thiểu rủi ro, nhưng cách tốt nhất vẫn là lưu quy tắc quan trọng vào AGENTS.md hoặc USER.md.

Q: Skill có tự chạy không?
A: Không. Skill là hướng dẫn passive — agent tự quyết định khi nào dùng skill nào dựa trên mô tả. Skill không có scheduler riêng. Nếu muốn skill chạy định kỳ, kết hợp với heartbeat (ghi vào HEARTBEAT.md) hoặc cron.

Q: Heartbeat và cron có thể chạy cùng lúc không?
A: Có. Chúng là hai hệ thống độc lập. Heartbeat chạy theo interval trong main session. Cron chạy theo lịch, thường trong isolated session. Chúng không xung đột — và kết hợp tốt: cron enqueue event → heartbeat xử lý event đó.

Q: Tôi cần bao nhiêu skill?
A: Bắt đầu với 0. Bundled skills đã đủ cho hầu hết task cơ bản (file, shell, browser). Thêm skill khi bạn có nhu cầu cụ thể (Gmail, Calendar, Notion...). Quá nhiều skill = system prompt lớn hơn = tốn token hơn. Chỉ cài những gì bạn thực sự dùng.


Xem thêm


Nguồn tham khảo: OpenClaw Docs, GitHub openclaw/openclaw, LumaDock, Stanza, Laurent Bindschaedler, Paolo Perrone, VelvetShark
Ngày đăng: 20/03/2026 | Tác giả: Đội ngũ Openclaw

Hướng Dẫn Liên Quan

Bình Luận (0)

Đăng nhập để bình luận.