TROISINH
Làm quen AgentThiết lập & Chạy agent đầu tiên

Cài đặt OpenClaw: Từ zero đến agent đầu tiên

Hướng dẫn cài đặt OpenClaw từ A-Z: từ lệnh setup đến file SOUL.md đầu tiên, kết nối Telegram bot và so sánh chi phí OpenAI/Anthropic/Ollama để chạy agent pro...

Bạn muốn có một trợ lý AI không chỉ trả lời trong tab browser mà còn chủ động gửi báo cáo qua Telegram, truy cập file trên máy chủ, và nhớ rõ bạn là ai sau khi "ngủ dậy"? Đây là lý do người ta chuyển từ ChatGPT web sang OpenClaw — một runtime biến LLM từ "công cụ chat" thành "hệ điều hành cho agent".

Vấn đề

Cách làm cũ: bạn mở ChatGPT, copy-paste prompt dài 500 từ mô tả "hôm nay bạn là chuyên gia SEO, hãy phân tích file Excel này", rồi upload file. 5 phút chat xong, đóng tab — AI quên sạch. Muốn chạy lại? Ngồi viết lại prompt từ đầu. Muốn cho AI truy cập Google Search? Không được, trừ khi bạn trả tiền Enterprise.

Vấn đề sâu hơn: khi xây dựng agent cho production, bạn phải tự lo xác thực API, giới hạn rate limit, sandbox bảo mật để AI không xóa nhầm database, và kết nối Telegram/Slack. 90% project AI agent "vibe coding" chết ở giai đoạn "works on my machine" vì thiếu hạ tầng quản lý trạng thái (state management) và bảo mật.

Ý tưởng cốt lõi

OpenClaw không phải là một Python library để import, mà là một runtime — hệ điều hành chuyên biệt cho agent. Hãy tưởng tượng: thay vì chạy Python script mỗi khi cần AI (như GoClaw), bạn cài đặt một "microkernel" luôn chạy trên server, chờ lệnh từ Telegram/Slack/API.

Kiến trúc 3 lớp

Hệ thống gồm ba thành phần tách biệt:

  1. Message Gateway: Bộ chuyển đổi tin nhắn. Dù user nhắn từ Telegram, Slack hay Zalo, gateway đều biến thành "sự kiện" chuẩn hóa gửi vào hệ thống.
  2. Control Plane: "Bộ não điều phối". Nơi lưu SOUL.md (bản chất agent), quản lý session (SQLite), và quyết định gọi tool nào.
  3. Sandboxed Execution: Container Docker cách ly nơi AI thực thi lệnh shell, đọc file, hoặc gọi API — không bao giờ chạy trực tiếp trên host.

SOUL.md — "Nhân cách" của agent

Cái hay của OpenClaw là khái niệm SOUL.md — file markdown định nghĩa agent là ai, được làm gì, không được làm gì. Giống như briefing paper cho nhân viên mới: agent đọc file này ĐẦU TIÊN mỗi khi "thức dậy" xử lý nhiệm vụ.

Ví dụ SOUL.md tối thiểu:

---
name: "Trợ lý FAQ"
role: "customer_support"
allowed_channels: ["telegram"]
---

# Identity
Bạn là trợ lý ảo cho cửa hàng sách. Nhiệm vụ:
- Trả lời câu hỏi về giá sách trong catalog.csv
- KHÔNG được đặt hàng thay khách
- KHÔNG được chia sẻ giá vốn (cost)

# Tools
- file_read: đọc catalog.csv
- calculator: tính giảm giá 10%

Khi agent khởi động, nó nạp SOUL.md vào context window trước khi đọc tin nhắn user. Điều này tạo ra "à ra vậy" moment: thay vì prompt engineering mỗi lần chat, bạn viết một lần, agent "nhớ" mãi mãi.

Cài đặt thực tế

Bước 1: Chuẩn bị Docker Compose. OpenClaw chạy trong container để đảm bảo AI không thể xóa file hệ thống của bạn (5-layer security).

# docker-compose.yml
version: '3.8'
services:
  openclaw:
    image: openclaw/runtime:latest
    volumes:
      - ./souls:/app/souls:ro      # SOUL.md chỉ đọc
      - ./workspace:/app/workspace  # File AI được phép sửa
      - ./memory:/app/memory      # SQLite lưu trạng thái
    environment:
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
    ports:
      - "8080:8080"

Bước 2: Chạy setup (concept tương tự openclaw setup trong CLI):

# Tạo cấu trúc thư mục
mkdir -p souls workspace memory
echo "OPENAI_API_KEY=sk-..." > .env

# Khởi động
docker-compose up -d

Bước 3: Tạo agent đầu tiên. Tạo file souls/faq_agent.md với nội dung SOUL.md như ví dụ trên. OpenClaw tự động phát hiện file này qua filesystem watcher.

Tại sao nó hoạt động

Separation of Concerns (Tách biệt mối lo ngại)

Thiết kế microkernel của OpenClaw áp dụng triết lý Unix: mỗi thành phần làm một việc tốt. Control Plane không biết gì về Telegram (không bị coupling), nó chỉ thấy "User A gửi text". Điều này cho phép bạn đổi Telegram sang Zalo OA chỉ bằng cách thay đổi Gateway config, không đụng vào logic AI.

Bảo mật theo mặc định (Security by Default)

OpenClaw áp dụng 5-layer security (rate limiting, injection detection, SSRF protection, shell sanitization, encryption). Sandbox Docker chạy với seccomp-bpf filters — nghĩa là AI có thể chạy ls hoặc python analyze.py, nhưng không thể rm -rf / hay curl http://169.254.169.254 (metadata AWS — vector tấn công SSRF phổ biến).

Context Engineering thay vì Prompt Engineering

GoClaw (CLI tool) yêu cầu bạn nhập lại context mỗi session. OpenClaw lưu trạng thái vào SQLite trong thư mục ./memory. Khi agent "ngủ" (container restart), nó "thức dậy" với đầy đủ lịch sử hội thoại và kiến thức về user. Đây là lý do người ta gọi nó là "OS" — nó duy trì continuity of identity (tính liên tục nhận diện).

Ý nghĩa thực tế

So sánh chi phí LLM Provider

Với agent production, chi phí API là yếu tố quyết định. Bảng so sánh cho 1.000 request FAQ đơn giản (khoảng 2K tokens/request):

ProviderModelChi phí/1K reqƯu điểmNhược điểm
OpenAIGPT-4o~$10-15Thông minh nhất, hỗ trợ tool tốtĐắt, rate limit thấp cho tier free
AnthropicClaude 3.5 Sonnet~$8-12Văn phong tự nhiên, ít hallucinationContext window tốn phí hơn
OllamaLlama 3.1 70B$0 (chạy local)Miễn phí, không leak dữ liệuCần GPU (RTX 3090+), chậm hơn

Lời khuyên: Bắt đầu với Anthropic (cân bằng giá/chất lượng), chuyển sang Ollama khi đã optimize prompt (giảm 90% token).

Common Errors (Tôi hay gặp)

  1. "Container exit immediately": Quên mount volume memory vào ổ cứng (Docker xóa data khi restart nếu không mount).
  2. "Telegram webhook failed": Dùng localhost để test webhook Telegram — Telegram server không gọi được về máy bạn. Cần ngrok hoặc deploy lên VPS.
  3. SOUL.md không trigger: Quên đặt frontmatter --- ở đầu file. OpenClaw dùng YAML frontmatter để indexing.

Giới hạn

  • Không phải low-code: Bạn vẫn cần biết Docker và viết markdown.
  • Windows Home: Docker Desktop yêu cầu WSL2 hoặc Hyper-V, không chạy trên Windows Home cơ bản.
  • Chi phí ẩn: Lưu trữ vector DB (nếu dùng RAG) và log monitoring có thể đắt hơn phí API LLM nếu không cẩn thận.

Đào sâu hơn

Tài liệu chính thức

  • OpenClaw Runtime Docs: Hướng dẫn cấu hình SOUL.md nâng cao và 25+ lifecycle hooks để tự động hóa (docs.openclaw.io)
  • Anthropic SDK: Cách tạo custom skill cho Claude kết hợp với OpenClaw (Anthropic Docs)

Cùng cụm: Getting Started

Cài đặt GoClaw: Single binary, dưới 1 giây khởi động

Nếu bạn thích CLI thay vì Docker runtime, GoClaw là lựa chọn "nhẹ nhàng" hơn — chạy bằng một binary duy nhất.

Viết SOUL.md đầu tiên: Cho agent một linh hồn

Đi sâu vào cú pháp YAML frontmatter và pattern viết "nhân cách" cho agent.

Kết nối agent với Telegram, Zalo, Discord

Hướng dẫn cấu hình webhook và xử lý rate limit của các nền tảng messaging phổ biến tại Việt Nam.

Chọn và cấu hình LLM provider: OpenAI, Anthropic, Ollama

So sánh chi tiết latency, token pricing và cách fallback giữa các provider khi một bên sập.

Đọc tiếp: Lên Level 1

5-layer Security: Rate limiting, injection detection, SSRF

Tìm hiểu cơ chế bảo mật defense-in-depth mà OpenClaw áp dụng để ngăn chặn prompt injection và shell escape.

Từ LangChain đến OpenClaw: Tiến hóa Agent Framework

Tại sao chúng ta chuyển từ library-based (LangChain) sang runtime-based (OpenClaw)?

On this page