AI & AUTOMATION

NullClaw: AI Assistant tự trị nhỏ nhất thế giới, chạy trên mọi phần cứng

NullClaw là một AI assistant tự trị mã nguồn mở, được viết hoàn toàn bằng ngôn ngữ lập trình Zig. Với binary chỉ 678 KB, mức tiêu thụ RAM khoảng 1 MB và thời gian khởi động dưới 2 ms, NullClaw là hệ thống AI agent đầy đủ tính năng nhỏ gọn nhất hiện có, có khả năng chạy trên mọi thiết bị từ bo mạch giá 5 USD, Raspberry Pi, cho đến máy chủ đám mây cao cấp, tất cả mà không cần bất kỳ runtime, VM hay framework bên ngoài nào.

NullClaw là gì

NullClaw là một AI agent tự trị hoàn chỉnh được xây dựng từ đầu bằng Zig, một ngôn ngữ lập trình hệ thống hiện đại không có garbage collector và không có runtime overhead. Toàn bộ hệ thống được đóng gói trong một file binary tĩnh duy nhất với khoảng 45.000 dòng code trải trên 110 tệp nguồn, không phụ thuộc vào bất kỳ thư viện bên ngoài nào ngoài libc và SQLite tùy chọn.

Dự án thuộc hệ sinh thái OpenClaw cùng với các dự án liên quan như ZeroClaw, PicoClaw và NanoBot, nhưng định vị ở phân khúc cực kỳ nhỏ gọn và tối giản về tài nguyên, hướng đến các môi trường edge computing, IoT và các thiết bị nhúng có tài nguyên hạn chế.

So sánh NullClaw với các AI Agent khác

Benchmark được thực hiện trên macOS ARM64 (tháng 2/2026), chuẩn hóa cho phần cứng edge 0,8 GHz:

Tiêu chíOpenClawNanoBotPicoClawZeroClawNullClaw
Ngôn ngữTypeScriptPythonGoRustZig
RAM> 1 GB> 100 MB< 10 MB< 5 MB~1 MB
Thời gian khởi động (0,8 GHz)> 500 s> 30 s< 1 s< 10 ms< 8 ms
Kích thước binary~28 MBN/A~8 MB3,4 MB678 KB
Số lượng test1.0173.230+
Phần cứng tối thiểuMac Mini $599Linux SBC ~$50Board $10$10$5

Tại sao NullClaw lại khác biệt

Hầu hết các AI agent framework hiện nay đều được xây dựng với giả định rằng người dùng có sẵn một máy tính cấu hình cao và kết nối Internet ổn định. NullClaw đặt câu hỏi ngược lại: điều gì xảy ra nếu AI agent phải chạy trên một bo mạch giá 5 USD ở một vùng nông thôn không có điện lưới ổn định? Câu trả lời là một binary tĩnh 678 KB không cần cài đặt gì thêm, khởi động trong chưa đầy 8 ms và tiêu thụ chưa đến 1 MB RAM trong điều kiện bình thường.

Kiến trúc Vtable: Hoán đổi mọi thứ mà không cần sửa code

Điểm kiến trúc nổi bật nhất của NullClaw là toàn bộ các hệ thống con đều được xây dựng dưới dạng vtable interface. Điều này có nghĩa là bạn có thể hoán đổi provider AI, kênh nhắn tin, backend bộ nhớ, sandbox bảo mật, tunnel mạng hay thậm chí cả runtime chỉ bằng một thay đổi trong file cấu hình, hoàn toàn không cần sửa một dòng code nào.

Không có Vendor Lock-in

NullClaw hỗ trợ hơn 22 provider AI (bao gồm OpenRouter, Anthropic, OpenAI, Ollama, Groq, Mistral, xAI, DeepSeek, v.v.) và tương thích với mọi API endpoint chuẩn OpenAI. Bạn có thể chạy model cục bộ qua Ollama vào buổi tối, dùng OpenRouter vào ban ngày và tự động chuyển sang provider dự phòng khi một provider gặp sự cố, tất cả đều cấu hình trong một file JSON duy nhất.

Các tính năng chính của NullClaw

Hỗ trợ 22 provider AI và cơ chế failover tự động

NullClaw hỗ trợ hơn 22 provider AI lớn và 41 dịch vụ tương thích OpenAI. Hệ thống có cơ chế reliability chain tự động: thử lại khi gặp lỗi tạm thời, chuyển sang provider dự phòng khi provider chính không phản hồi, xoay vòng API key để phân tán tải và fallback xuống model nhẹ hơn khi cần thiết.

17 kênh nhắn tin trong một binary

Chỉ với một file binary duy nhất, NullClaw hỗ trợ đồng thời 17 kênh nhắn tin: Telegram, Discord, Slack, WhatsApp, Matrix, Signal, iMessage, IRC, Email, Mattermost, LINE, Lark/Feishu, DingTalk, QQ, OneBot, MaixCam và Webhook. Mỗi kênh có thể chạy nhiều tài khoản song song và được cấu hình độc lập với allowlist riêng.

Hệ thống bộ nhớ hybrid: Vector search và FTS5

NullClaw tích hợp một hệ thống bộ nhớ hoàn chỉnh được xây dựng từ đầu, không phụ thuộc vào thư viện vector database bên ngoài. Bộ nhớ sử dụng SQLite làm nền tảng với hai lớp tìm kiếm song song: tìm kiếm vector dựa trên cosine similarity cho ngữ nghĩa và FTS5 keyword search với BM25 scoring cho từ khóa chính xác. Kết quả từ hai lớp được gộp theo trọng số có thể cấu hình.

Hơn 30 tool tích hợp sẵn

Bao gồm các tool thao tác file, chạy shell command, tìm kiếm web, thao tác git, quản lý bộ nhớ, lên lịch tác vụ, giao tiếp với phần cứng (Arduino, Raspberry Pi GPIO, STM32), gọi HTTP và tích hợp với Composio.

Hỗ trợ phần cứng ngoại vi

NullClaw là AI agent duy nhất trong hệ sinh thái OpenClaw có hỗ trợ tích hợp giao tiếp với phần cứng vật lý qua giao diện Peripheral: cổng Serial, Arduino, Raspberry Pi GPIO và STM32/Nucleo. Điều này mở ra khả năng triển khai AI agent kiểm soát thiết bị vật lý trong các ứng dụng IoT và tự động hóa công nghiệp.

Cron scheduler và heartbeat tích hợp

Agent có thể tự thực thi các tác vụ theo lịch (cron expression, interval hoặc one-shot timer) và tự gửi thông báo qua kênh nhắn tin. Toàn bộ trạng thái scheduler được lưu dưới dạng JSON, đảm bảo không mất lịch khi khởi động lại.

MCP (Model Context Protocol)

NullClaw hỗ trợ MCP, cho phép tích hợp với bất kỳ MCP server nào như @modelcontextprotocol/server-filesystem để mở rộng khả năng của agent mà không cần viết code.

Edge deployment và WASM

Đối với các ứng dụng edge (Cloudflare Worker, v.v.), NullClaw cung cấp mô hình triển khai hybrid: networking và secrets được giữ ở edge host, còn logic agent được đóng gói trong một module WASM nhỏ viết bằng Zig, có thể cập nhật độc lập mà không cần redeploy toàn bộ ứng dụng.

Mô hình bảo mật của NullClaw

NullClaw áp dụng chiến lược defense-in-depth: không có một điểm bypass đơn lẻ nào có thể cho phép truy cập toàn bộ hệ thống. Có 8 lớp bảo mật được triển khai mặc định:

LớpCơ chếTrạng thái
Gateway không lộ ra ngoàiBind 127.0.0.1 mặc định, từ chối 0.0.0.0Mặc định bật
Xác thực bắt buộcMã 6 chữ số một lần, đổi lấy bearer tokenMặc định bật
Filesystem scopedworkspace_only = true, chặn null byte injection, phát hiện symlink escapeMặc định bật
Truy cập qua tunnelGateway từ chối public bind nếu không có tunnelCấu hình được
Sandbox isolationTự động phát hiện: Landlock, Firejail, Bubblewrap hoặc DockerMặc định bật
Mã hóa secretsAPI key mã hóa bằng ChaCha20-Poly1305 với file key cục bộMặc định bật
Giới hạn tài nguyênCấu hình memory, CPU, disk và subprocessCấu hình được
Audit loggingLog sự kiện có chữ ký, cấu hình thời gian lưu trữMặc định bật

Ba cấp độ tự trị

NullClaw cho phép cấu hình mức độ tự trị của agent tùy theo mức độ tin tưởng và môi trường triển khai:

  • readonly: Chỉ đọc và các tác vụ rủi ro thấp, không ghi file, không chạy shell
  • supervised (mặc định): Yêu cầu xác nhận của người dùng cho các hành động rủi ro trung bình và cao
  • full: Thực thi tự động rộng hơn cho các workflow đã được phê duyệt

Hướng dẫn cài đặt NullClaw

Yêu cầu hệ thống

Trước khi bắt đầu, cần đảm bảo môi trường đáp ứng các yêu cầu sau:

  • Zig 0.15.2 (bắt buộc đúng phiên bản, không dùng 0.16.0-dev hay các phiên bản khác)
  • Git để clone repository
  • SQLite (tùy chọn, dùng cho bộ nhớ persistent), trên macOS: brew install sqlite
  • Hệ điều hành: macOS, Linux hoặc bất kỳ nền tảng nào Zig hỗ trợ (ARM, x86, RISC-V)

Kiểm tra phiên bản Zig trước khi build:

zig version
# Phải in ra: 0.15.2

Bước 1: Clone Repository và Build

git clone https://github.com/nullclaw/nullclaw.git
cd nullclaw

# Build debug (phát triển)
zig build

# Build release nhỏ nhất (678 KB)
zig build -Doptimize=ReleaseSmall

# Chạy toàn bộ test suite (3.230+ tests)
zig build test --summary all

Sau khi build, binary nằm tại ./zig-out/bin/nullclaw.

Kiểm tra kích thước binary và thời gian khởi động:

ls -lh zig-out/bin/nullclaw
/usr/bin/time -l zig-out/bin/nullclaw --help
/usr/bin/time -l zig-out/bin/nullclaw status

Bước 2: Thiết lập ban đầu

NullClaw cung cấp hai cách thiết lập: wizard tương tác và lệnh nhanh.

Thiết lập nhanh (không tương tác):

./zig-out/bin/nullclaw onboard --api-key sk-or-... --provider openrouter

Wizard tương tác đầy đủ (khuyến nghị cho lần đầu):

./zig-out/bin/nullclaw onboard --interactive

Wizard sẽ dẫn qua 8 bước cấu hình:

  1. Provider: Chọn từ 22+ provider (OpenRouter là mặc định được khuyến nghị)
  2. API key: Nhập trực tiếp hoặc tham chiếu đến biến môi trường
  3. Model: Chọn từ danh sách model được tải trực tiếp từ provider
  4. Memory: sqlite (khuyến nghị), markdown, lucid hoặc none
  5. Tunnel: none, cloudflare, ngrok hoặc tailscale
  6. Autonomy: supervised (mặc định), readonly hoặc full
  7. Channels: Cấu hình kênh nhắn tin ngay hoặc bỏ qua
  8. Workspace: Thư mục cho agent thao tác file (mặc định: ~/.nullclaw/workspace/)

Kết quả là file ~/.nullclaw/config.json và cấu trúc workspace được tạo tự động.

Bước 3: Kiểm Tra Hệ Thống

Chạy lệnh chẩn đoán để xác nhận mọi thứ đã hoạt động:

./zig-out/bin/nullclaw doctor

Lệnh này kiểm tra kết nối provider, tính khả dụng của tool, backend bộ nhớ và trạng thái các kênh.

./zig-out/bin/nullclaw status

Hiển thị toàn bộ trạng thái hệ thống bao gồm provider đang dùng, kênh đang chạy và tình trạng bộ nhớ.

Hướng dẫn sử dụng NullClaw

Chat trực tiếp từ terminal

Chế độ tương tác:

./zig-out/bin/nullclaw agent

Nhập tin nhắn và nhấn Enter. Agent phản hồi, có thể sử dụng tool và ghi nhớ ngữ cảnh. Thoát bằng exit, quit hoặc :q.

Chế độ một tin nhắn:

./zig-out/bin/nullclaw agent -m "Những file nào đang có trong thư mục hiện tại?"

Phiên làm việc được đặt tên:

./zig-out/bin/nullclaw agent -s myproject -m "Tóm tắt nội dung file README"

Các phiên được đặt tên giúp duy trì ngữ cảnh riêng biệt cho từng dự án hoặc chủ đề.

Kết nối kênh nhắn tin

Ví dụ thiết lập Telegram:

Bước 1: Nhắn tin cho @BotFather trên Telegram, tạo bot và sao chép token.

Bước 2: Thêm cấu hình vào ~/.nullclaw/config.json:

{
  "channels": {
    "telegram": {
      "accounts": {
        "main": {
          "bot_token": "123456:ABC-DEF...",
          "allow_from": ["your_telegram_user_id"],
          "reply_in_private": true
        }
      }
    }
  }
}

Bước 3: Khởi động kênh:

./zig-out/bin/nullclaw channel start telegram

Kiểm tra trạng thái tất cả các kênh:

./zig-out/bin/nullclaw channel status

Allowlist hoạt động theo ba chế độ:

  • Danh sách rỗng: từ chối toàn bộ tin nhắn đến
  • "*": chấp nhận tất cả (opt-in tường minh)
  • Danh sách cụ thể: chỉ chấp nhận đúng các ID được liệt kê

Cấu hình nhiều Provider

Chỉnh sửa ~/.nullclaw/config.json để thêm nhiều provider và cấu hình model routing:

{
  "models": {
    "providers": {
      "openrouter": { "api_key": "sk-or-..." },
      "groq": { "api_key": "gsk_..." },
      "anthropic": {
        "api_key": "sk-ant-...",
        "base_url": "https://api.anthropic.com"
      }
    }
  },
  "agents": {
    "defaults": {
      "model": { "primary": "openrouter/anthropic/claude-sonnet-4" },
      "heartbeat": { "every": "30m" }
    },
    "list": [
      {
        "id": "researcher",
        "model": { "primary": "openrouter/anthropic/claude-opus-4" },
        "system_prompt": "Bạn là một nhà nghiên cứu chuyên sâu..."
      }
    ]
  }
}

Hoặc sử dụng biến môi trường thay vì nhúng API key trực tiếp vào file:

export ANTHROPIC_API_KEY=sk-ant-...
export NULLCLAW_PROVIDER=anthropic

Chạy Gateway Runtime

Gateway là chế độ vận hành dài hạn, khởi động đồng thời server HTTP, tất cả các kênh đã cấu hình, heartbeat scheduler và daemon supervisor:

./zig-out/bin/nullclaw gateway               # mặc định: 127.0.0.1:3000
./zig-out/bin/nullclaw gateway --port 8080   # cổng tùy chỉnh

Gateway API cung cấp các endpoint chính:

EndpointMethodMô tả
/healthGETHealth check (luôn công khai)
/pairPOSTĐổi mã một lần lấy bearer token
/webhookPOSTGửi tin nhắn: {"message": "your prompt"}
/whatsappGET/POSTWebhook xác thực và nhận tin nhắn WhatsApp từ Meta

Cài đặt như System Service

# Cài đặt và khởi động (launchd trên macOS, systemd trên Linux)
./zig-out/bin/nullclaw service install
./zig-out/bin/nullclaw service start

# Kiểm tra trạng thái
./zig-out/bin/nullclaw service status

# Gỡ cài đặt
./zig-out/bin/nullclaw service uninstall

Quản lý tác vụ theo lịch

# Liệt kê tất cả tác vụ đã lên lịch
./zig-out/bin/nullclaw cron list

# Thêm tác vụ mới (cron expression)
./zig-out/bin/nullclaw cron add "0 8 * * 1" "Tóm tắt tin tức AI tuần này"

# Tạm dừng và tiếp tục tác vụ
./zig-out/bin/nullclaw cron pause <task-id>
./zig-out/bin/nullclaw cron resume <task-id>

# Chạy tác vụ ngay lập tức
./zig-out/bin/nullclaw cron run <task-id>

Migrate từ OpenClaw

Nếu bạn đang chuyển từ OpenClaw sang NullClaw, có thể import toàn bộ bộ nhớ và cấu hình hiện có:

# Chạy thử để xem những gì sẽ được migrate (không thay đổi gì)
./zig-out/bin/nullclaw migrate openclaw --dry-run

# Thực hiện migration thực sự
./zig-out/bin/nullclaw migrate openclaw

NullClaw sử dụng cùng cấu trúc config với OpenClaw (snake_case), nên hầu hết các cấu hình hiện có đều tương thích trực tiếp.

Kiến trúc hệ thống

Toàn bộ NullClaw được tổ chức xung quanh nguyên tắc vtable interface: mỗi hệ thống con là một interface có thể hoán đổi implementation mà không cần sửa code.

Hệ thống conInterfaceTriển khai có sẵn
AI ModelsProvider22+ providers + mọi API tương thích OpenAI
Kênh nhắn tinChannelCLI, Telegram, Signal, Discord, Slack, WhatsApp, Line, Lark, OneBot, QQ, Matrix, IRC, iMessage, Email, DingTalk, MaixCam, Webhook
Bộ nhớMemorySQLite (FTS5 + vector), Markdown
Công cụToolshell, file, browser, screenshot, http, hardware, composio, memory và hơn 18 tool khác
ObservabilityObserverNoop, Log, File, Multi
RuntimeRuntimeAdapterNative, Docker, WASM (wasmtime)
Bảo mậtSandboxLandlock, Firejail, Bubblewrap, Docker (auto-detect)
TunnelTunnelNone, Cloudflare, Tailscale, ngrok, Custom
Phần cứngPeripheralSerial, Arduino, Raspberry Pi GPIO, STM32/Nucleo

Sơ đồ luồng xử lý tin nhắn cơ bản:

Tin nhắn đến (Telegram / Discord / Webhook / ...)
    --> Channel Layer (parsing, allowlist filter, session key routing)
    --> SQLite (lưu trữ và deduplication)
    --> Agent Loop (tool dispatch, auto-compaction)
    --> Provider (AI model call)
    --> Response (stream trả về qua kênh tương ứng)

Thống kê dự án

Ngôn ngữ:       Zig 0.15.2
Tệp nguồn:      ~110
Dòng code:      ~45.000
Số lượng test:  3.230+
Binary:         678 KB (ReleaseSmall)
Peak RSS:       ~1 MB
Thời gian khởi động: <2 ms (Apple Silicon)
Dependencies:   0 (chỉ cần libc + SQLite tùy chọn)

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

NullClaw có cần Docker để chạy không?

Không. Docker là một trong các tùy chọn sandbox, không phải yêu cầu bắt buộc. NullClaw là một binary tĩnh tự đủ, chạy trực tiếp mà không cần container runtime. Khi cần sandbox isolation, NullClaw tự động phát hiện backend tốt nhất có sẵn trên hệ thống: Landlock (Linux kernel), Firejail, Bubblewrap hoặc Docker, theo thứ tự ưu tiên đó. Nếu không có backend nào, hệ thống fallback về application-level security với allowlists và path blocking.

Phiên bản Zig nào được hỗ trợ?

Chỉ duy nhất Zig 0.15.2. Các phiên bản khác bao gồm cả 0.16.0-dev không được hỗ trợ và có thể gây lỗi build. Hãy kiểm tra bằng lệnh zig version trước khi build.

NullClaw có chạy được trên Windows không?

Zig hỗ trợ cross-compilation cho Windows, nhưng NullClaw được phát triển và kiểm thử chủ yếu trên macOS và Linux. Một số tính năng như Landlock sandbox chỉ có trên Linux kernel. Triển khai trên Windows có thể thực hiện qua WSL2.

Làm thế nào để dùng model AI cục bộ như Ollama?

Thêm Ollama vào danh sách provider trong ~/.nullclaw/config.json:

{
  "models": {
    "providers": {
      "ollama": {
        "base_url": "http://localhost:11434"
      }
    }
  },
  "agents": {
    "defaults": {
      "model": { "primary": "ollama/llama3.2" }
    }
  }
}

Đảm bảo Ollama đang chạy và model đã được pull trước khi khởi động NullClaw.

NullClaw có tương thích với cấu hình OpenClaw hiện có không?

Có. NullClaw sử dụng cùng cấu trúc config với OpenClaw (snake_case). Các trường như models.providers, agents.defaults.model.primarychannels.*.accounts đều tương thích trực tiếp. Có thể dùng lệnh migrate openclaw để chuyển toàn bộ bộ nhớ và cấu hình từ OpenClaw sang NullClaw.

Hướng dẫn đóng góp

NullClaw được xây dựng trên kiến trúc vtable nên đóng góp tính năng mới rất rõ ràng: triển khai một interface mới và gửi pull request vào thư mục tương ứng.

Loại đóng gópThư mục đích
Provider AI mớisrc/providers/
Kênh nhắn tin mớisrc/channels/
Tool mớisrc/tools/
Backend bộ nhớ mớisrc/memory/
Tunnel mớisrc/tunnel.zig
Backend sandbox mớisrc/security/
Phần cứng ngoại vi mớisrc/peripherals.zig
Skill mới~/.nullclaw/workspace/skills/<name>/

Mọi đóng góp cần đi kèm với test. Dự án hiện có hơn 3.230 test đảm bảo toàn bộ các luồng xử lý kênh, config parsing và logic bảo mật hoạt động đúng.

NullClaw sử dụng CalVer (YYYY.M.D) cho versioning, ví dụ v2026.2.20. Dự án đang ở giai đoạn pre-1.0 nên config và CLI có thể thay đổi giữa các phiên bản.


NullClaw là câu trả lời cho câu hỏi: một AI agent đầy đủ tính năng có thể nhỏ đến mức nào? Với 678 KB binary, ~1 MB RAM, khởi động dưới 2 ms, hỗ trợ 22+ provider, 17 kênh nhắn tin, 30+ tool và hơn 3.230 test, NullClaw chứng minh rằng sự nhỏ gọn và đầy đủ tính năng không mâu thuẫn với nhau khi được thiết kế từ đầu với triết lý đúng đắn.

Dù bạn đang triển khai AI agent trên một bo mạch Raspberry Pi giá 10 USD, một máy chủ edge ở vùng sâu vùng xa hay một Cloudflare Worker, NullClaw đủ nhỏ để chạy ở đó, đủ bảo mật để tin tưởng và đủ linh hoạt để tùy chỉnh hoàn toàn theo nhu cầu của bạn.

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận