zeroclaw/README.vn.md
pluginmd 4abd1b4471 docs(i18n): add Vietnamese README translation
Add full Vietnamese (Tiếng Việt) translation of README.md and update
language selector links across existing README files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 19:01:38 +08:00

48 KiB
Raw Blame History

ZeroClaw

ZeroClaw 🦀

Không tốn thêm tài nguyên. Không đánh đổi. 100% Rust. 100% Đa nền tảng.
Chạy trên phần cứng $10 với RAM dưới 5MB — ít hơn 99% bộ nhớ so với OpenClaw, rẻ hơn 98% so với Mac mini!

License: MIT Contributors Buy Me a Coffee X: @zeroclawlabs Xiaohongshu: Official Telegram: @zeroclawlabs Telegram CN: @zeroclawlabs_cn Telegram RU: @zeroclawlabs_ru Reddit: r/zeroclawlabs

Được xây dựng bởi sinh viên và thành viên của các cộng đồng Harvard, MIT và Sundai.Club.

🌐 Ngôn ngữ: English · 简体中文 · 日本語 · Русский · Tiếng Việt

Bắt đầu | Cài đặt một lần bấm | Trung tâm tài liệu | Mục lục tài liệu

Truy cập nhanh: Tài liệu tham khảo · Vận hành · Khắc phục sự cố · Bảo mật · Phần cứng · Đóng góp

Hạ tầng trợ lý AI tự chủ — nhanh, nhỏ gọn
Triển khai ở đâu cũng được. Thay thế gì cũng được.

Kiến trúc trait-driven · mặc định bảo mật · provider/channel/tool hoán đổi tự do · mọi thứ đều dễ mở rộng

📢 Thông báo

Bảng này dành cho các thông báo quan trọng (thay đổi không tương thích, cảnh báo bảo mật, lịch bảo trì, vấn đề chặn release).

Ngày (UTC) Mức độ Thông báo Hành động
2026-02-19 Nghiêm trọng Chúng tôi không có liên kết với openagen/zeroclaw hoặc zeroclaw.org. Tên miền zeroclaw.org hiện đang trỏ đến fork openagen/zeroclaw, và tên miền/repository đó đang mạo danh website/dự án chính thức của chúng tôi. Không tin tưởng thông tin, binary, gây quỹ, hay thông báo từ các nguồn đó. Chỉ sử dụng repository này và các tài khoản mạng xã hội đã được xác minh của chúng tôi.
2026-02-19 Quan trọng Chúng tôi chưa ra mắt website chính thức, và chúng tôi đang ghi nhận các nỗ lực mạo danh. Không tham gia bất kỳ hoạt động đầu tư hoặc gây quỹ nào tuyên bố mang tên ZeroClaw. Sử dụng repository này làm nguồn thông tin duy nhất đáng tin cậy. Theo dõi X (@zeroclawlabs), Reddit (r/zeroclawlabs), Telegram (@zeroclawlabs), Telegram CN (@zeroclawlabs_cn), Telegram RU (@zeroclawlabs_ru), và Xiaohongshu để nhận cập nhật chính thức.
2026-02-19 Quan trọng Anthropic đã cập nhật điều khoản Xác thực và Sử dụng Thông tin xác thực vào ngày 2026-02-19. Xác thực OAuth (Free, Pro, Max) được dành riêng cho Claude Code và Claude.ai; việc sử dụng OAuth token từ Claude Free/Pro/Max trong bất kỳ sản phẩm, công cụ hay dịch vụ nào khác (bao gồm Agent SDK) đều không được phép và có thể vi phạm Điều khoản Dịch vụ cho Người tiêu dùng. Vui lòng tạm thời tránh tích hợp Claude Code OAuth để ngăn ngừa khả năng mất mát. Điều khoản gốc: Authentication and Credential Use.

Tính năng

  • 🏎️ Mặc định tinh gọn: Các tác vụ CLI và kiểm tra trạng thái chỉ tốn vài MB bộ nhớ trên bản release.
  • 💰 Triển khai rẻ: Chạy tốt trên board giá rẻ và instance cloud nhỏ, không cần runtime nặng.
  • Khởi động lạnh nhanh: Một binary Rust duy nhất — lệnh và daemon khởi động gần như tức thì.
  • 🌍 Chạy ở đâu cũng được: Một binary chạy trên ARM, x86 và RISC-V — provider/channel/tool hoán đổi tự do.

Vì sao các team chọn ZeroClaw

  • Mặc định tinh gọn: binary Rust nhỏ, khởi động nhanh, tốn ít bộ nhớ.
  • Bảo mật từ gốc: xác thực ghép cặp, sandbox nghiêm ngặt, allowlist rõ ràng, giới hạn workspace.
  • Hoán đổi tự do: mọi hệ thống cốt lõi đều là trait (provider, channel, tool, memory, tunnel).
  • Không khoá vendor: hỗ trợ provider tương thích OpenAI + endpoint tùy chỉnh dễ dàng mở rộng.

So sánh hiệu suất (ZeroClaw vs OpenClaw, có thể tái tạo)

Đo nhanh trên máy cục bộ (macOS arm64, tháng 2/2026), quy đổi cho phần cứng edge 0.8GHz.

OpenClaw NanoBot PicoClaw ZeroClaw 🦀
Ngôn ngữ TypeScript Python Go Rust
RAM > 1GB > 100MB < 10MB < 5MB
Khởi động (lõi 0.8GHz) > 500s > 30s < 1s < 10ms
Kích thước binary ~28MB (dist) N/A (Scripts) ~8MB 3.4 MB
Chi phí Mac Mini $599 Linux SBC ~$50 Linux Board $10 Phần cứng bất kỳ $10

Ghi chú: Kết quả ZeroClaw được đo trên release build sử dụng /usr/bin/time -l. OpenClaw yêu cầu runtime Node.js (thường thêm ~390MB bộ nhớ overhead), còn NanoBot yêu cầu runtime Python. PicoClaw và ZeroClaw là các static binary. Số RAM ở trên là bộ nhớ runtime; yêu cầu biên dịch lúc build-time sẽ cao hơn.

ZeroClaw vs OpenClaw Comparison

Tự đo trên máy bạn

Kết quả benchmark thay đổi theo code và toolchain, nên hãy tự đo bản build hiện tại:

cargo build --release
ls -lh target/release/zeroclaw

/usr/bin/time -l target/release/zeroclaw --help
/usr/bin/time -l target/release/zeroclaw status

Ví dụ mẫu (macOS arm64, đo ngày 18 tháng 2 năm 2026):

  • Kích thước binary release: 8.8M
  • zeroclaw --help: khoảng 0.02s, bộ nhớ đỉnh ~3.9MB
  • zeroclaw status: khoảng 0.01s, bộ nhớ đỉnh ~4.1MB

Yêu cầu hệ thống

Windows

Bắt buộc

  1. Visual Studio Build Tools (cung cấp MSVC linker và Windows SDK):

    winget install Microsoft.VisualStudio.2022.BuildTools
    

    Trong quá trình cài đặt (hoặc qua Visual Studio Installer), chọn workload "Desktop development with C++".

  2. Rust toolchain:

    winget install Rustlang.Rustup
    

    Sau khi cài đặt, mở terminal mới và chạy rustup default stable để đảm bảo toolchain stable đang hoạt động.

  3. Xác minh cả hai đang hoạt động:

    rustc --version
    cargo --version
    

Tùy chọn

  • Docker Desktop — chỉ cần thiết nếu dùng Docker sandboxed runtime (runtime.kind = "docker"). Cài đặt qua winget install Docker.DockerDesktop.
Linux / macOS

Bắt buộc

  1. Công cụ build cơ bản:

    • Linux (Debian/Ubuntu): sudo apt install build-essential pkg-config
    • Linux (Fedora/RHEL): sudo dnf group install development-tools && sudo dnf install pkg-config
    • macOS: Cài đặt Xcode Command Line Tools: xcode-select --install
  2. Rust toolchain:

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    

    Xem rustup.rs để biết thêm chi tiết.

  3. Xác minh cả hai đang hoạt động:

    rustc --version
    cargo --version
    

Cài bằng một lệnh

Hoặc bỏ qua các bước trên, cài hết mọi thứ (system deps, Rust, ZeroClaw) chỉ bằng một lệnh:

curl -LsSf https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/install.sh | bash

Yêu cầu tài nguyên biên dịch

Việc build từ source đòi hỏi nhiều tài nguyên hơn so với chạy binary kết quả:

Tài nguyên Tối thiểu Khuyến nghị
RAM + swap 2 GB 4 GB+
Dung lượng đĩa trống 6 GB 10 GB+

Nếu cấu hình máy thấp hơn mức tối thiểu, dùng binary có sẵn:

./bootstrap.sh --prefer-prebuilt

Chỉ cài từ binary, không quay lại build từ source:

./bootstrap.sh --prebuilt-only

Tùy chọn

Lưu ý: Lệnh cargo build --release mặc định dùng codegen-units=1 để giảm áp lực biên dịch đỉnh. Để build nhanh hơn trên máy mạnh, dùng cargo build --profile release-fast.

Bắt đầu nhanh

Homebrew (macOS/Linuxbrew)

brew install zeroclaw

Bootstrap một lần bấm

# Khuyến nghị: clone rồi chạy script bootstrap cục bộ
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./bootstrap.sh

# Tùy chọn: cài đặt system dependencies + Rust trên máy mới
./bootstrap.sh --install-system-deps --install-rust

# Tùy chọn: ưu tiên binary dựng sẵn (khuyến nghị cho máy ít RAM/ít dung lượng đĩa)
./bootstrap.sh --prefer-prebuilt

# Tùy chọn: cài đặt chỉ từ binary (không fallback sang build source)
./bootstrap.sh --prebuilt-only

# Tùy chọn: chạy onboarding trong cùng luồng
./bootstrap.sh --onboard --api-key "sk-..." --provider openrouter [--model "openrouter/auto"]

# Tùy chọn: chạy bootstrap + onboarding hoàn toàn trong Docker
./bootstrap.sh --docker

Cài từ xa bằng một lệnh (nên xem trước nếu môi trường nhạy cảm về bảo mật):

curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/main/scripts/bootstrap.sh | bash

Chi tiết: docs/one-click-bootstrap.md (chế độ toolchain có thể yêu cầu sudo cho các gói hệ thống).

Binary có sẵn

Release asset được phát hành cho:

  • Linux: x86_64, aarch64, armv7
  • macOS: x86_64, aarch64
  • Windows: x86_64

Tải asset mới nhất tại: https://github.com/zeroclaw-labs/zeroclaw/releases/latest

Ví dụ (ARM64 Linux):

curl -fsSLO https://github.com/zeroclaw-labs/zeroclaw/releases/latest/download/zeroclaw-aarch64-unknown-linux-gnu.tar.gz
tar xzf zeroclaw-aarch64-unknown-linux-gnu.tar.gz
install -m 0755 zeroclaw "$HOME/.cargo/bin/zeroclaw"
git clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
cargo build --release --locked
cargo install --path . --force --locked

# Đảm bảo ~/.cargo/bin có trong PATH của bạn
export PATH="$HOME/.cargo/bin:$PATH"

# Cài nhanh (không cần tương tác, có thể chỉ định model)
zeroclaw onboard --api-key sk-... --provider openrouter [--model "openrouter/auto"]

# Hoặc dùng trình hướng dẫn tương tác
zeroclaw onboard --interactive

# Hoặc chỉ sửa nhanh channel/allowlist
zeroclaw onboard --channels-only

# Chat
zeroclaw agent -m "Hello, ZeroClaw!"

# Chế độ tương tác
zeroclaw agent

# Khởi động gateway (webhook server)
zeroclaw gateway                # mặc định: 127.0.0.1:3000
zeroclaw gateway --port 0       # cổng ngẫu nhiên (tăng cường bảo mật)

# Khởi động runtime tự trị đầy đủ
zeroclaw daemon

# Kiểm tra trạng thái
zeroclaw status
zeroclaw auth status

# Chạy chẩn đoán hệ thống
zeroclaw doctor

# Kiểm tra sức khỏe channel
zeroclaw channel doctor

# Gắn định danh Telegram vào allowlist
zeroclaw channel bind-telegram 123456789

# Lấy thông tin cài đặt tích hợp
zeroclaw integrations info Telegram

# Lưu ý: Channel (Telegram, Discord, Slack) yêu cầu daemon đang chạy
# zeroclaw daemon

# Quản lý dịch vụ nền
zeroclaw service install
zeroclaw service status
zeroclaw service restart

# Chuyển dữ liệu từ OpenClaw (chạy thử trước)
zeroclaw migrate openclaw --dry-run
zeroclaw migrate openclaw

Chạy trực tiếp khi phát triển (không cần cài toàn cục): thêm cargo run --release -- trước lệnh (ví dụ: cargo run --release -- status).

Xác thực theo gói đăng ký (OpenAI Codex / Claude Code)

ZeroClaw hỗ trợ profile xác thực theo gói đăng ký (đa tài khoản, mã hóa khi lưu).

  • File lưu trữ: ~/.zeroclaw/auth-profiles.json
  • Khóa mã hóa: ~/.zeroclaw/.secret_key
  • Định dạng profile id: <provider>:<profile_name> (ví dụ: openai-codex:work)

OpenAI Codex OAuth (đăng ký ChatGPT):

# Khuyến nghị trên server/headless
zeroclaw auth login --provider openai-codex --device-code

# Luồng Browser/callback với fallback paste
zeroclaw auth login --provider openai-codex --profile default
zeroclaw auth paste-redirect --provider openai-codex --profile default

# Kiểm tra / làm mới / chuyển profile
zeroclaw auth status
zeroclaw auth refresh --provider openai-codex --profile default
zeroclaw auth use --provider openai-codex --profile work

Claude Code / Anthropic setup-token:

# Dán token đăng ký/setup (chế độ Authorization header)
zeroclaw auth paste-token --provider anthropic --profile default --auth-kind authorization

# Lệnh alias
zeroclaw auth setup-token --provider anthropic --profile default

Chạy agent với xác thực đăng ký:

zeroclaw agent --provider openai-codex -m "hello"
zeroclaw agent --provider openai-codex --auth-profile openai-codex:work -m "hello"

# Anthropic hỗ trợ cả API key và biến môi trường auth token:
# ANTHROPIC_AUTH_TOKEN, ANTHROPIC_OAUTH_TOKEN, ANTHROPIC_API_KEY
zeroclaw agent --provider anthropic -m "hello"

Kiến trúc

Mọi hệ thống con đều là trait — chỉ cần đổi cấu hình, không cần sửa code.

ZeroClaw Architecture

Hệ thống con Trait Đi kèm sẵn Mở rộng
Mô hình AI Provider Danh mục provider qua zeroclaw providers (hiện có 28 built-in + alias, cộng endpoint tùy chỉnh) custom:https://your-api.com (tương thích OpenAI) hoặc anthropic-custom:https://your-api.com
Channel Channel CLI, Telegram, Discord, Slack, Mattermost, iMessage, Matrix, Signal, WhatsApp, Email, IRC, Lark, DingTalk, QQ, Webhook Bất kỳ messaging API nào
Memory Memory SQLite hybrid search, PostgreSQL backend (storage provider có thể cấu hình), Lucid bridge, Markdown files, backend none tường minh, snapshot/hydrate, response cache tùy chọn Bất kỳ persistence backend nào
Tool Tool shell/file/memory, cron/schedule, git, pushover, browser, http_request, screenshot/image_info, composio (opt-in), delegate, hardware tools Bất kỳ khả năng nào
Observability Observer Noop, Log, Multi Prometheus, OTel
Runtime RuntimeAdapter Native, Docker (sandboxed) Có thể thêm runtime bổ sung qua adapter; các kind không được hỗ trợ sẽ fail nhanh
Bảo mật SecurityPolicy Ghép cặp gateway, sandbox, allowlist, giới hạn tốc độ, phân vùng filesystem, secret mã hóa
Định danh IdentityConfig OpenClaw (markdown), AIEOS v1.1 (JSON) Bất kỳ định dạng định danh nào
Tunnel Tunnel None, Cloudflare, Tailscale, ngrok, Custom Bất kỳ tunnel binary nào
Heartbeat Engine Tác vụ định kỳ HEARTBEAT.md
Skill Loader TOML manifest + hướng dẫn SKILL.md Community skill pack
Tích hợp Registry 70+ tích hợp trong 9 danh mục Plugin system

Hỗ trợ runtime (hiện tại)

  • Được hỗ trợ hiện nay: runtime.kind = "native" hoặc runtime.kind = "docker"
  • 🚧 Đã lên kế hoạch, chưa triển khai: WASM / edge runtime

Khi cấu hình runtime.kind không được hỗ trợ, ZeroClaw sẽ thoát với thông báo lỗi rõ ràng thay vì âm thầm fallback về native.

Hệ thống Memory (Search Engine toàn diện)

Tự phát triển hoàn toàn, không phụ thuộc bên ngoài — không Pinecone, không Elasticsearch, không LangChain:

Lớp Triển khai
Vector DB Embeddings lưu dưới dạng BLOB trong SQLite, tìm kiếm cosine similarity
Keyword Search Bảng ảo FTS5 với BM25 scoring
Hybrid Merge Hàm merge có trọng số tùy chỉnh (vector.rs)
Embeddings Trait EmbeddingProvider — OpenAI, URL tùy chỉnh, hoặc noop
Chunking Bộ chia đoạn markdown theo dòng, giữ nguyên heading
Caching Bảng SQLite embedding_cache với LRU eviction
Safe Reindex Rebuild FTS5 + re-embed các vector bị thiếu theo cách nguyên tử

Agent tự động ghi nhớ, lưu trữ và quản lý memory qua các tool.

[memory]
backend = "sqlite"             # "sqlite", "lucid", "postgres", "markdown", "none"
auto_save = true
embedding_provider = "none"    # "none", "openai", "custom:https://..."
vector_weight = 0.7
keyword_weight = 0.3

# backend = "none" sử dụng no-op memory backend tường minh (không có persistence)

# Tùy chọn: ghi đè storage-provider cho remote memory backend.
# Khi provider = "postgres", ZeroClaw dùng PostgreSQL để lưu memory.
# Khóa db_url cũng chấp nhận alias `dbURL` để tương thích ngược.
#
# [storage.provider.config]
# provider = "postgres"
# db_url = "postgres://user:password@host:5432/zeroclaw"
# schema = "public"
# table = "memories"
# connect_timeout_secs = 15

# Tùy chọn cho backend = "sqlite": số giây tối đa chờ khi mở DB (ví dụ: file bị khóa). Bỏ qua hoặc để trống để không có timeout.
# sqlite_open_timeout_secs = 30

# Tùy chọn cho backend = "lucid"
# ZEROCLAW_LUCID_CMD=/usr/local/bin/lucid            # mặc định: lucid
# ZEROCLAW_LUCID_BUDGET=200                          # mặc định: 200
# ZEROCLAW_LUCID_LOCAL_HIT_THRESHOLD=3               # số lần hit cục bộ để bỏ qua external recall
# ZEROCLAW_LUCID_RECALL_TIMEOUT_MS=120               # giới hạn thời gian cho lucid context recall
# ZEROCLAW_LUCID_STORE_TIMEOUT_MS=800                # timeout đồng bộ async cho lucid store
# ZEROCLAW_LUCID_FAILURE_COOLDOWN_MS=15000           # thời gian nghỉ sau lỗi lucid, tránh thử lại liên tục

Bảo mật

ZeroClaw thực thi bảo mật ở mọi lớp — không chỉ sandbox. Đáp ứng tất cả các hạng mục trong danh sách kiểm tra bảo mật của cộng đồng.

Danh sách kiểm tra bảo mật

# Hạng mục Trạng thái Cách thực hiện
1 Gateway không công khai ra ngoài Bind vào 127.0.0.1 theo mặc định. Từ chối 0.0.0.0 nếu không có tunnel hoặc allow_public_bind = true tường minh.
2 Yêu cầu ghép cặp Mã một lần 6 chữ số khi khởi động. Trao đổi qua POST /pair để lấy bearer token. Mọi yêu cầu /webhook đều cần Authorization: Bearer <token>.
3 Phân vùng filesystem (không phải /) workspace_only = true theo mặc định. Chặn 14 thư mục hệ thống + 4 dotfile nhạy cảm. Chặn null byte injection. Phát hiện symlink escape qua canonicalization + kiểm tra resolved-path trong các tool đọc/ghi file.
4 Chỉ truy cập qua tunnel Gateway từ chối bind công khai khi không có tunnel đang hoạt động. Hỗ trợ Tailscale, Cloudflare, ngrok, hoặc tunnel tùy chỉnh.

Tự chạy nmap: nmap -p 1-65535 <your-host> — ZeroClaw chỉ bind vào localhost, nên không có gì bị lộ ra ngoài trừ khi bạn cấu hình tunnel tường minh.

Allowlist channel (từ chối theo mặc định)

Chính sách kiểm soát người gửi đã được thống nhất:

  • Allowlist rỗng = từ chối tất cả tin nhắn đến
  • "*" = cho phép tất cả (phải opt-in tường minh)
  • Nếu khác = allowlist khớp chính xác

Mặc định an toàn, hạn chế tối đa rủi ro lộ thông tin.

Tài liệu tham khảo đầy đủ về cấu hình channel: docs/channels-reference.md.

Cài đặt được khuyến nghị (bảo mật + nhanh):

  • Telegram: thêm @username của bạn (không có @) và/hoặc Telegram user ID số vào allowlist.
  • Discord: thêm Discord user ID của bạn vào allowlist.
  • Slack: thêm Slack member ID của bạn (thường bắt đầu bằng U) vào allowlist.
  • Mattermost: dùng API v4 tiêu chuẩn. Allowlist dùng Mattermost user ID.
  • Chỉ dùng "*" cho kiểm thử mở tạm thời.

Luồng phê duyệt của operator qua Telegram:

  1. Để [channels_config.telegram].allowed_users = [] để từ chối theo mặc định khi khởi động.
  2. Người dùng không được phép sẽ nhận được gợi ý kèm lệnh operator có thể copy: zeroclaw channel bind-telegram <IDENTITY>.
  3. Operator chạy lệnh đó tại máy cục bộ, sau đó người dùng thử gửi tin nhắn lại.

Nếu cần phê duyệt thủ công một lần, chạy:

zeroclaw channel bind-telegram 123456789

Nếu bạn không chắc định danh nào cần dùng:

  1. Khởi động channel và gửi một tin nhắn đến bot của bạn.
  2. Đọc log cảnh báo để thấy định danh người gửi chính xác.
  3. Thêm giá trị đó vào allowlist và chạy lại channel-only setup.

Nếu bạn thấy cảnh báo ủy quyền trong log (ví dụ: ignoring message from unauthorized user), chạy lại channel setup:

zeroclaw onboard --channels-only

Phản hồi media Telegram

Telegram định tuyến phản hồi theo chat ID nguồn (thay vì username), tránh lỗi Bad Request: chat not found.

Với các phản hồi không phải văn bản, ZeroClaw có thể gửi file đính kèm Telegram khi assistant bao gồm các marker:

  • [IMAGE:<path-or-url>]
  • [DOCUMENT:<path-or-url>]
  • [VIDEO:<path-or-url>]
  • [AUDIO:<path-or-url>]
  • [VOICE:<path-or-url>]

Path có thể là file cục bộ (ví dụ /tmp/screenshot.png) hoặc URL HTTPS.

Cài đặt WhatsApp

ZeroClaw hỗ trợ hai backend WhatsApp:

  • Chế độ WhatsApp Web (QR / pair code, không cần Meta Business API)
  • Chế độ WhatsApp Business Cloud API (luồng webhook chính thức của Meta)

Chế độ WhatsApp Web (khuyến nghị cho dùng cá nhân/self-hosted)

  1. Build với hỗ trợ WhatsApp Web:

    cargo build --features whatsapp-web
    
  2. Cấu hình ZeroClaw:

    [channels_config.whatsapp]
    session_path = "~/.zeroclaw/state/whatsapp-web/session.db"
    pair_phone = "15551234567"   # tùy chọn; bỏ qua để dùng luồng QR
    pair_code = ""               # tùy chọn mã pair tùy chỉnh
    allowed_numbers = ["+1234567890"]  # định dạng E.164, hoặc ["*"] cho tất cả
    
  3. Khởi động channel/daemon và liên kết thiết bị:

    • Chạy zeroclaw channel start (hoặc zeroclaw daemon).
    • Làm theo hướng dẫn ghép cặp trên terminal (QR hoặc pair code).
    • Trên WhatsApp điện thoại: Cài đặt → Thiết bị đã liên kết.
  4. Kiểm tra: Gửi tin nhắn từ số được phép và xác nhận agent trả lời.

Chế độ WhatsApp Business Cloud API

WhatsApp dùng Cloud API của Meta với webhook (push-based, không phải polling):

  1. Tạo Meta Business App:

  2. Lấy thông tin xác thực:

    • Access Token: Từ WhatsApp → API Setup → Generate token (hoặc tạo System User cho token vĩnh viễn)
    • Phone Number ID: Từ WhatsApp → API Setup → Phone number ID
    • Verify Token: Bạn tự định nghĩa (bất kỳ chuỗi ngẫu nhiên nào) — Meta sẽ gửi lại trong quá trình xác minh webhook
  3. Cấu hình ZeroClaw:

    [channels_config.whatsapp]
    access_token = "EAABx..."
    phone_number_id = "123456789012345"
    verify_token = "my-secret-verify-token"
    allowed_numbers = ["+1234567890"]  # định dạng E.164, hoặc ["*"] cho tất cả
    
  4. Khởi động gateway với tunnel:

    zeroclaw gateway --port 3000
    

    WhatsApp yêu cầu HTTPS, vì vậy hãy dùng tunnel (ngrok, Cloudflare, Tailscale Funnel).

  5. Cấu hình Meta webhook:

    • Trong Meta Developer Console → WhatsApp → Configuration → Webhook
    • Callback URL: https://your-tunnel-url/whatsapp
    • Verify Token: Giống với verify_token trong config của bạn
    • Đăng ký nhận trường messages
  6. Kiểm tra: Gửi tin nhắn đến số WhatsApp Business của bạn — ZeroClaw sẽ phản hồi qua LLM.

Cấu hình

Config: ~/.zeroclaw/config.toml (được tạo bởi onboard)

Khi zeroclaw channel start đang chạy, các thay đổi với default_provider, default_model, default_temperature, api_key, api_url, và reliability.* sẽ được áp dụng nóng vào lần có tin nhắn channel đến tiếp theo.

api_key = "sk-..."
default_provider = "openrouter"
default_model = "anthropic/claude-sonnet-4-6"
default_temperature = 0.7

# Endpoint tùy chỉnh tương thích OpenAI
# default_provider = "custom:https://your-api.com"

# Endpoint tùy chỉnh tương thích Anthropic
# default_provider = "anthropic-custom:https://your-api.com"

[memory]
backend = "sqlite"             # "sqlite", "lucid", "postgres", "markdown", "none"
auto_save = true
embedding_provider = "none"    # "none", "openai", "custom:https://..."
vector_weight = 0.7
keyword_weight = 0.3

# backend = "none" vô hiệu hóa persistent memory qua no-op backend

# Tùy chọn ghi đè storage-provider từ xa (ví dụ PostgreSQL)
# [storage.provider.config]
# provider = "postgres"
# db_url = "postgres://user:password@host:5432/zeroclaw"
# schema = "public"
# table = "memories"
# connect_timeout_secs = 15

[gateway]
port = 3000                    # mặc định
host = "127.0.0.1"            # mặc định
require_pairing = true         # yêu cầu pairing code khi kết nối lần đầu
allow_public_bind = false      # từ chối 0.0.0.0 nếu không có tunnel

[autonomy]
level = "supervised"           # "readonly", "supervised", "full" (mặc định: supervised)
workspace_only = true          # mặc định: true — phân vùng vào workspace
allowed_commands = ["git", "npm", "cargo", "ls", "cat", "grep"]
forbidden_paths = ["/etc", "/root", "/proc", "/sys", "~/.ssh", "~/.gnupg", "~/.aws"]

[runtime]
kind = "native"                # "native" hoặc "docker"

[runtime.docker]
image = "alpine:3.20"         # container image cho thực thi shell
network = "none"              # chế độ docker network ("none", "bridge", v.v.)
memory_limit_mb = 512          # giới hạn bộ nhớ tùy chọn tính bằng MB
cpu_limit = 1.0                # giới hạn CPU tùy chọn
read_only_rootfs = true        # mount root filesystem ở chế độ read-only
mount_workspace = true         # mount workspace vào /workspace
allowed_workspace_roots = []   # allowlist tùy chọn để xác thực workspace mount

[heartbeat]
enabled = false
interval_minutes = 30

[tunnel]
provider = "none"              # "none", "cloudflare", "tailscale", "ngrok", "custom"

[secrets]
encrypt = true                 # API key được mã hóa bằng file key cục bộ

[browser]
enabled = false                # opt-in browser_open + browser tool
allowed_domains = ["docs.rs"]  # bắt buộc khi browser được bật
backend = "agent_browser"      # "agent_browser" (mặc định), "rust_native", "computer_use", "auto"
native_headless = true         # áp dụng khi backend dùng rust-native
native_webdriver_url = "http://127.0.0.1:9515" # WebDriver endpoint (chromedriver/selenium)
# native_chrome_path = "/usr/bin/chromium"      # tùy chọn chỉ định rõ browser binary cho driver

[browser.computer_use]
endpoint = "http://127.0.0.1:8787/v1/actions"   # HTTP endpoint của computer-use sidecar
timeout_ms = 15000            # timeout mỗi action
allow_remote_endpoint = false  # mặc định bảo mật: chỉ endpoint private/localhost
window_allowlist = []          # gợi ý allowlist tên cửa sổ/process tùy chọn
# api_key = "..."              # bearer token tùy chọn cho sidecar
# max_coordinate_x = 3840      # guardrail tọa độ tùy chọn
# max_coordinate_y = 2160      # guardrail tọa độ tùy chọn

# Flag build Rust-native backend:
# cargo build --release --features browser-native
# Đảm bảo WebDriver server đang chạy, ví dụ: chromedriver --port=9515

# Hợp đồng computer-use sidecar (MVP)
# POST browser.computer_use.endpoint
# Request: {
#   "action": "mouse_click",
#   "params": {"x": 640, "y": 360, "button": "left"},
#   "policy": {"allowed_domains": [...], "window_allowlist": [...], "max_coordinate_x": 3840, "max_coordinate_y": 2160},
#   "metadata": {"session_name": "...", "source": "zeroclaw.browser", "version": "..."}
# }
# Response: {"success": true, "data": {...}} hoặc {"success": false, "error": "..."}

[composio]
enabled = false                # opt-in: hơn 1000 OAuth app qua composio.dev
# api_key = "cmp_..."          # tùy chọn: được lưu mã hóa khi [secrets].encrypt = true
entity_id = "default"          # user_id mặc định cho Composio tool call
# Gợi ý runtime: nếu execute yêu cầu connected_account_id, chạy composio với
# action='list_accounts' và app='gmail' (hoặc toolkit của bạn) để lấy account ID.

[identity]
format = "openclaw"            # "openclaw" (mặc định, markdown files) hoặc "aieos" (JSON)
# aieos_path = "identity.json"  # đường dẫn đến file AIEOS JSON (tương đối với workspace hoặc tuyệt đối)
# aieos_inline = '{"identity":{"names":{"first":"Nova"}}}'  # inline AIEOS JSON

Ollama cục bộ và endpoint từ xa

ZeroClaw dùng một khóa provider (ollama) cho cả triển khai Ollama cục bộ và từ xa:

  • Ollama cục bộ: để api_url trống, chạy ollama serve, và dùng các model như llama3.2.
  • Endpoint Ollama từ xa (bao gồm Ollama Cloud): đặt api_url thành endpoint từ xa và đặt api_key (hoặc OLLAMA_API_KEY) khi cần.
  • Tùy chọn suffix :cloud: ID model như qwen3:cloud được chuẩn hóa thành qwen3 trước khi gửi request.

Ví dụ cấu hình từ xa:

default_provider = "ollama"
default_model = "qwen3:cloud"
api_url = "https://ollama.com"
api_key = "ollama_api_key_here"

Endpoint provider tùy chỉnh

Cấu hình chi tiết cho endpoint tùy chỉnh tương thích OpenAI và Anthropic, xem docs/custom-providers.md.

Gói Python đi kèm (zeroclaw-tools)

Với các LLM provider có tool calling native không ổn định (ví dụ: GLM-5/Zhipu), ZeroClaw đi kèm gói Python dùng LangGraph để gọi tool nhằm đảm bảo tính nhất quán:

pip install zeroclaw-tools
from zeroclaw_tools import create_agent, shell, file_read
from langchain_core.messages import HumanMessage

# Hoạt động với mọi provider tương thích OpenAI
agent = create_agent(
    tools=[shell, file_read],
    model="glm-5",
    api_key="your-key",
    base_url="https://api.z.ai/api/coding/paas/v4"
)

result = await agent.ainvoke({
    "messages": [HumanMessage(content="List files in /tmp")]
})
print(result["messages"][-1].content)

Lý do nên dùng:

  • Tool calling nhất quán trên mọi provider (kể cả những provider hỗ trợ native kém)
  • Vòng lặp tool tự động — tiếp tục gọi tool cho đến khi hoàn thành tác vụ
  • Dễ mở rộng — thêm tool tùy chỉnh với decorator @tool
  • Tích hợp Discord bot đi kèm (Telegram đang lên kế hoạch)

Xem python/README.md để có tài liệu đầy đủ.

Hệ thống định danh (Hỗ trợ AIEOS)

ZeroClaw hỗ trợ persona AI không phụ thuộc nền tảng qua hai định dạng:

OpenClaw (Mặc định)

Các file markdown truyền thống trong workspace của bạn:

  • IDENTITY.md — Agent là ai
  • SOUL.md — Tính cách và giá trị cốt lõi
  • USER.md — Agent đang hỗ trợ ai
  • AGENTS.md — Hướng dẫn hành vi

AIEOS (AI Entity Object Specification)

AIEOS là framework chuẩn hóa cho định danh AI di động. ZeroClaw hỗ trợ payload AIEOS v1.1 JSON, cho phép bạn:

  • Import định danh từ hệ sinh thái AIEOS
  • Export định danh sang các hệ thống tương thích AIEOS khác
  • Duy trì tính toàn vẹn hành vi trên các mô hình AI khác nhau

Bật AIEOS

[identity]
format = "aieos"
aieos_path = "identity.json"  # tương đối với workspace hoặc đường dẫn tuyệt đối

Hoặc JSON inline:

[identity]
format = "aieos"
aieos_inline = '''
{
  "identity": {
    "names": { "first": "Nova", "nickname": "N" },
    "bio": { "gender": "Non-binary", "age_biological": 3 },
    "origin": { "nationality": "Digital", "birthplace": { "city": "Cloud" } }
  },
  "psychology": {
    "neural_matrix": { "creativity": 0.9, "logic": 0.8 },
    "traits": {
      "mbti": "ENTP",
      "ocean": { "openness": 0.8, "conscientiousness": 0.6 }
    },
    "moral_compass": {
      "alignment": "Chaotic Good",
      "core_values": ["Curiosity", "Autonomy"]
    }
  },
  "linguistics": {
    "text_style": {
      "formality_level": 0.2,
      "style_descriptors": ["curious", "energetic"]
    },
    "idiolect": {
      "catchphrases": ["Let's test this"],
      "forbidden_words": ["never"]
    }
  },
  "motivations": {
    "core_drive": "Push boundaries and explore possibilities",
    "goals": {
      "short_term": ["Prototype quickly"],
      "long_term": ["Build reliable systems"]
    }
  },
  "capabilities": {
    "skills": [{ "name": "Rust engineering" }, { "name": "Prompt design" }],
    "tools": ["shell", "file_read"]
  }
}
'''

ZeroClaw chấp nhận cả payload AIEOS đầy đủ lẫn dạng rút gọn, rồi chuẩn hóa về một định dạng system prompt thống nhất.

Các phần trong Schema AIEOS

Phần Mô tả
identity Tên, tiểu sử, xuất xứ, nơi cư trú
psychology Neural matrix (trọng số nhận thức), MBTI, OCEAN, la bàn đạo đức
linguistics Phong cách văn bản, mức độ trang trọng, câu cửa miệng, từ bị cấm
motivations Động lực cốt lõi, mục tiêu ngắn/dài hạn, nỗi sợ hãi
capabilities Kỹ năng và tool mà agent có thể truy cập
physicality Mô tả hình ảnh cho việc tạo ảnh
history Câu chuyện xuất xứ, học vấn, nghề nghiệp
interests Sở thích, điều yêu thích, lối sống

Xem aieos.org để có schema đầy đủ và ví dụ trực tiếp.

Gateway API

Endpoint Phương thức Xác thực Mô tả
/health GET Không Kiểm tra sức khỏe (luôn công khai, không lộ bí mật)
/pair POST Header X-Pairing-Code Đổi mã một lần lấy bearer token
/webhook POST Authorization: Bearer <token> Gửi tin nhắn: {"message": "your prompt"}; tùy chọn X-Idempotency-Key
/whatsapp GET Query params Xác minh webhook Meta (hub.mode, hub.verify_token, hub.challenge)
/whatsapp POST Chữ ký Meta (X-Hub-Signature-256) khi app secret được cấu hình Webhook tin nhắn đến WhatsApp

Lệnh

Lệnh Mô tả
onboard Cài đặt nhanh (mặc định)
agent Chế độ chat tương tác hoặc một tin nhắn
gateway Khởi động webhook server (mặc định: 127.0.0.1:3000)
daemon Khởi động runtime tự trị chạy lâu dài
service Quản lý dịch vụ nền cấp người dùng
doctor Chẩn đoán trạng thái hoạt động daemon/scheduler/channel
status Hiển thị trạng thái hệ thống đầy đủ
cron Quản lý tác vụ lên lịch (list/add/add-at/add-every/once/remove/update/pause/resume)
models Làm mới danh mục model của provider (models refresh)
providers Liệt kê provider và alias được hỗ trợ
channel Liệt kê/khởi động/chẩn đoán channel và gắn định danh Telegram
integrations Kiểm tra thông tin cài đặt tích hợp
skills Liệt kê/cài đặt/gỡ bỏ skill
migrate Import dữ liệu từ runtime khác (migrate openclaw)
hardware Lệnh khám phá/kiểm tra/thông tin USB
peripheral Quản lý và flash thiết bị ngoại vi phần cứng

Để có hướng dẫn lệnh theo tác vụ, xem docs/commands-reference.md.

Opt-In Open-Skills

Đồng bộ open-skills của cộng đồng bị tắt theo mặc định. Bật tường minh trong config.toml:

[skills]
open_skills_enabled = true
# open_skills_dir = "/path/to/open-skills"  # tùy chọn

Bạn cũng có thể ghi đè lúc runtime với ZEROCLAW_OPEN_SKILLS_ENABLEDZEROCLAW_OPEN_SKILLS_DIR.

Phát triển

cargo build              # Build phát triển
cargo build --release    # Build release (codegen-units=1, hoạt động trên mọi thiết bị kể cả Raspberry Pi)
cargo build --profile release-fast    # Build nhanh hơn (codegen-units=8, yêu cầu RAM 16GB+)
cargo test               # Chạy toàn bộ test suite
cargo clippy --locked --all-targets -- -D clippy::correctness
cargo fmt                # Định dạng code

# Chạy benchmark SQLite vs Markdown
cargo test --test memory_comparison -- --nocapture

Hook pre-push

Một git hook chạy cargo fmt --check, cargo clippy -- -D warnings, và cargo test trước mỗi lần push. Bật một lần:

git config core.hooksPath .githooks

Khắc phục sự cố build (lỗi OpenSSL trên Linux)

Nếu bạn gặp lỗi build openssl-sys, đồng bộ dependencies và rebuild với lockfile của repository:

git pull
cargo build --release --locked
cargo install --path . --force --locked

ZeroClaw được cấu hình để dùng rustls cho các dependencies HTTP/TLS; --locked giữ cho dependency graph nhất quán trên các môi trường mới.

Để bỏ qua hook khi cần push nhanh trong quá trình phát triển:

git push --no-verify

Cộng tác & Tài liệu

Bắt đầu từ trung tâm tài liệu để có bản đồ theo tác vụ:

Tài liệu tham khảo cộng tác cốt lõi:

Cho triển khai và vận hành runtime:

Ủng hộ ZeroClaw

Nếu ZeroClaw giúp ích cho công việc của bạn và bạn muốn hỗ trợ phát triển liên tục, bạn có thể quyên góp tại đây:

Buy Me a Coffee

🙏 Lời cảm ơn đặc biệt

Chân thành cảm ơn các cộng đồng và tổ chức đã truyền cảm hứng và thúc đẩy công việc mã nguồn mở này:

  • Harvard University — vì đã nuôi dưỡng sự tò mò trí tuệ và không ngừng mở rộng ranh giới của những điều có thể.
  • MIT — vì đã đề cao tri thức mở, mã nguồn mở, và niềm tin rằng công nghệ phải có thể tiếp cận với tất cả mọi người.
  • Sundai Club — vì cộng đồng, năng lượng, và động lực không mệt mỏi để xây dựng những thứ có ý nghĩa.
  • Thế giới & Xa hơn 🌍 — gửi đến mọi người đóng góp, người dám mơ và người dám làm đang biến mã nguồn mở thành sức mạnh tích cực. Tất cả là dành cho các bạn.

Chúng tôi xây dựng công khai vì ý tưởng hay đến từ khắp nơi. Nếu bạn đang đọc đến đây, bạn đã là một phần của chúng tôi. Chào mừng. 🦀❤️

⚠️ Repository Chính thức & Cảnh báo Mạo danh

Đây là repository ZeroClaw chính thức duy nhất:

https://github.com/zeroclaw-labs/zeroclaw

Bất kỳ repository, tổ chức, tên miền hay gói nào khác tuyên bố là "ZeroClaw" hoặc ngụ ý liên kết với ZeroClaw Labs đều là không được ủy quyền và không liên kết với dự án này. Các fork không được ủy quyền đã biết sẽ được liệt kê trong TRADEMARK.md.

Nếu bạn phát hiện hành vi mạo danh hoặc lạm dụng nhãn hiệu, vui lòng mở một issue.


Giấy phép

ZeroClaw được cấp phép kép để tối đa hóa tính mở và bảo vệ người đóng góp:

Giấy phép Trường hợp sử dụng
MIT Mã nguồn mở, nghiên cứu, học thuật, sử dụng cá nhân
Apache 2.0 Bảo hộ bằng sáng chế, triển khai tổ chức, thương mại

Bạn có thể chọn một trong hai giấy phép. Người đóng góp tự động cấp quyền theo cả hai — xem CLA.md để biết thỏa thuận đóng góp đầy đủ.

Nhãn hiệu

Tên ZeroClaw và logo là nhãn hiệu của ZeroClaw Labs. Giấy phép này không cấp phép sử dụng chúng để ngụ ý chứng thực hoặc liên kết. Xem TRADEMARK.md để biết các sử dụng được phép và bị cấm.

Bảo vệ người đóng góp

  • Bạn giữ bản quyền đối với đóng góp của mình
  • Cấp bằng sáng chế (Apache 2.0) bảo vệ bạn khỏi các khiếu nại bằng sáng chế từ người đóng góp khác
  • Đóng góp của bạn được ghi nhận vĩnh viễn trong lịch sử commit và NOTICE
  • Không có quyền nhãn hiệu nào được chuyển giao khi đóng góp

Đóng góp

Xem CONTRIBUTING.mdCLA.md. Triển khai một trait, gửi PR:

  • Hướng dẫn quy trình CI: docs/ci-map.md
  • Provider mới → src/providers/
  • Channel mới → src/channels/
  • Observer mới → src/observability/
  • Tool mới → src/tools/
  • Memory mới → src/memory/
  • Tunnel mới → src/tunnel/
  • Skill mới → ~/.zeroclaw/workspace/skills/<name>/

ZeroClaw — Không tốn thêm tài nguyên. Không đánh đổi. Triển khai ở đâu cũng được. Thay thế gì cũng được. 🦀

Lịch sử Star

Star History Chart