Bốn lớp mở rộng: Skills, MCP, Plugins, Hooks
Agent chỉ biết trả lời câu hỏi thì không khác gì chatbot. Agent thực sự mạnh khi nó có thể hành động: đọc file, gọi API, kiểm tra server, tạo ticket, gửi Telegram. OpenClaw cung cấp bốn cơ chế để trang bị khả năng hành động cho agent — mỗi cơ chế có vai trò riêng biệt:
Skills — Bộ kỹ năng chuyên biệt
Skills là "bộ hướng dẫn nghiệp vụ" được đóng gói sẵn. Mỗi skill bao gồm prompt (hướng dẫn cho agent), custom tools (Python/JS), và hooks tùy chọn. Khi agent nhận yêu cầu phù hợp, nó tự nhận ra skill nào cần áp dụng — không cần bạn chỉ định tường minh.
Quản lý skills
# Xem skills đang có
openclaw skills list
# Cài từ ClawHub (kho skill cộng đồng)
openclaw skills install memory-manager
openclaw skills install code-reviewer
openclaw skills install web-scraper
Cấu trúc một skill
└── my-custom-skill/
├── SKILL.md # Hướng dẫn cho agent khi dùng skill
├── tools/ # Custom tools (Python/JS)
│ └── analyze.py
└── hooks/ # Tự động trigger theo sự kiện
└── on-message.js
Tạo skill đầu tiên: VPS Health Check
Ví dụ thực tế: skill kiểm tra sức khỏe server khi bạn hỏi.
mkdir -p ~/.openclaw/workspace/skills/vps-health
# VPS Health Check
## Khi nào dùng
Khi user hỏi về tình trạng server, VPS, hoặc muốn
kiểm tra health/status của hệ thống.
## Cách thực hiện
1. SSH vào server theo thông tin trong TOOLS.md
2. Chạy: df -h, free -m, uptime, docker ps,
systemctl status nginx
3. Tóm tắt ngắn gọn — cảnh báo nếu disk > 80%,
RAM > 90%, hoặc có service down
## Format trả lời
- Server: [IP] | Uptime: [thời gian]
- CPU: [%] | RAM: [used/total] | Disk: [used/total]
- Services: [status]
- ⚠ Cảnh báo: [nếu có]
vps-health và làm theo hướng dẫn.
Giới hạn skill bằng allowList
{
"skills": {
"allowList": ["vps-health", "code-reviewer", "memory-manager"],
"locations": [
"~/.openclaw/workspace/skills",
"/shared/team-skills" // skill dùng chung cả team
]
}
}
MCP Servers — Cổng kết nối vạn năng
MCP (Model Context Protocol) là giao thức chuẩn mở cho phép AI agent kết nối với bất kỳ dịch vụ bên ngoài nào theo một cách thống nhất. Thay vì viết code tích hợp riêng cho GitHub, database, Slack — bạn chỉ cần cắm MCP server tương ứng, agent tự biết có tool mới để dùng.
Cài đặt MCP Server
# Kết nối GitHub
openclaw mcp set github \
--command "npx" \
--args "-y @modelcontextprotocol/server-github" \
--env "GITHUB_TOKEN=ghp_your_token"
# Kết nối PostgreSQL
openclaw mcp set postgres \
--command "npx" \
--args "-y @modelcontextprotocol/server-postgres" \
--env "DATABASE_URL=postgresql://user:pass@localhost/mydb"
# MCP server qua HTTP remote
openclaw mcp set my-api \
--url "https://my-mcp-server.example.com/mcp" \
--transport "streamable-http" \
--headers '{"Authorization": "Bearer token"}'
# Quản lý
openclaw mcp list # xem tất cả
openclaw mcp show github # xem chi tiết
openclaw mcp remove github # xoá
MCP Servers phổ biến cho developer
github có tool create_issue,
OpenClaw đăng ký tool đó thành github__create_issue. Bạn không cần nhớ tên — agent tự chọn
tool phù hợp dựa trên mô tả và ngữ cảnh yêu cầu.
Plugins — Gói mở rộng trọn bộ
Plugins là cấp cao nhất của hệ sinh thái mở rộng — kết hợp skills + MCP tools + hooks thành một gói hoàn chỉnh, cài một lần là dùng được ngay. Có hai loại:
- Native plugins: Chạy trong process OpenClaw, có toàn quyền truy cập. Cần xác minh nguồn gốc tin cậy trước khi cài.
- Bundle plugins: Gói content từ hệ sinh thái khác (Claude, Cursor), được map vào tính năng native của OpenClaw với boundary bảo mật chặt hơn.
# Tìm plugin trên ClawHub
openclaw plugins search "monitoring"
# Cài, bật, tắt
openclaw plugins install monitoring-suite
openclaw plugins enable monitoring-suite
openclaw plugins disable monitoring-suite
openclaw plugins list
{
"plugins": {
"entries": {
"active-memory": {
"enabled": true,
"updateInterval": "5m"
},
"monitoring-suite": {
"enabled": true,
"alertThreshold": "warning"
}
}
}
}
Hooks — Tự động phản ứng với sự kiện
Hooks cho phép chạy code tự động khi có sự kiện nhất định xảy ra trong OpenClaw — không cần agent chủ động, không cần bạn nhắc. Có ba nhóm hook events:
- before_tool_call
- after_tool_call
- on_tool_error
- on_session_start
- on_session_end
- on_agent_response
- on_message_received
- on_heartbeat_tick
- on_heartbeat_alert
Hook: log mỗi lần agent gọi tool
export default {
event: "after_tool_call",
handler: async (context) => {
const { toolName, result, duration } = context;
console.log(`[TOOL] ${toolName} — ${duration}ms`);
// Ghi vào daily note nếu cần
}
};
Hook: chặn và xác nhận trước tool nguy hiểm
export default {
event: "before_tool_call",
handler: async (context) => {
const dangerous = ["bash_execute", "file_delete", "db_write"];
if (dangerous.includes(context.toolName)) {
return { requireConfirmation: true };
// Agent sẽ hỏi bạn xác nhận trước khi chạy
}
}
};
Kết hợp tất cả: end-to-end example
Dưới đây là setup hoàn chỉnh cho developer chạy OpenClaw trên VPS, và luồng xử lý khi bạn nhắn một câu đơn giản:
Setup đã cài đặt:
- Skills:
vps-health,code-reviewer,deploy-assistant - MCP Servers:
github,postgres,telegram-bot - Hooks:
log-tool-calls,safety-check,auto-commit-log
-
1Skill deploy-assistant được kích hoạt — agent biết quy trình deploy của bạn
-
2MCP github__create_release — tạo release tag tự động từ latest commit
-
3Hook safety-check chặn — yêu cầu xác nhận trước khi chạy deploy script trên production
-
4Bạn xác nhận → bash_execute chạy deploy script
-
5MCP postgres__query — kiểm tra migration có chạy thành công không
-
6MCP telegram-bot__send_message — báo kết quả cho team channel
-
7Hook log-tool-calls ghi toàn bộ audit trail vào daily note
Bảo mật khi mở rộng tools
Mỗi tool bạn thêm là một attack surface mới. Bốn nguyên tắc cần giữ nhất quán:
repo scope, không cần admin. Database user chỉ cần SELECT nếu agent không cần ghi.skills.allowList để giới hạn skill agent được phép dùng — ngay cả khi bạn cài nhiều skill, chỉ những skill trong list mới được kích hoạt.- 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 5: Skills, MCP Servers & Plugins (bài này)
- Bài 6: Dùng OpenClaw hiệu quả — Giảm token