SSD Nodes Learn Hosting plans →
Hướng dẫn Matt ConnorBởi Matt Connor · Cập nhật ngày 2026-08-28

Tự xây AI agent kiểu OpenClaw trên server riêng

Tìm hiểu cách xây personal AI agent kiểu OpenClaw, từ shell command đến browser và file, cùng lý do phải harden trước khi cho agent chạy trên server.

OpenClaw thực sự là gì

OpenClaw là một personal AI agent tự host. Bạn chạy nó trên server của mình, kết nối nó với các ứng dụng chat bạn đang dùng, rồi cho phép nó chạy shell command, điều khiển browser, đọc và ghi file, cũng như xử lý các message bạn gửi. OpenClaw được cấp phép theo MIT, ưu tiên chạy local và có hơn 380,000 GitHub star tính đến giữa năm 2026. Vì vậy, đây là một trong những project có nhiều star nhất trên nền tảng này. Bên dưới những thông tin ồn ào đó, OpenClaw chỉ gồm một tập hợp thành phần tương đối nhỏ được kết nối với nhau theo cách hợp lý. Bài viết này phân tích từng thành phần để bạn hiểu một tool như vậy được xây dựng ra sao và những điểm dễ phát sinh rủi ro nằm ở đâu.

Trước tiên cần lưu ý một điều, vì nó ảnh hưởng đến mọi lựa chọn thiết kế bên dưới. Trong tháng 03 năm 2026, OpenClaw có 9 security issue được công bố trong vòng 4 ngày, bao gồm một lỗ hổng privilege escalation nghiêm trọng được chấm 9.9 trên 10 (CVE-2026-32922). Project này được thiết kế để chính bạn, với tư cách operator, harden. Một agent có thể chạy bất kỳ command nào chỉ an toàn ở mức chiếc máy đang chạy nó và các giới hạn bạn đặt xung quanh nó. Hãy ghi nhớ điều này khi đọc tiếp.

Daemon gateway: một process duy nhất, giữ private

Ở trung tâm là một process chạy liên tục, thường được gọi là gateway. Đây là control plane. Nó nhận message, quyết định cần làm gì, chạy các tool rồi gửi reply trở lại. Mọi thành phần khác đều kết nối vào nó.

Điều quan trọng nhất về gateway là địa chỉ nó listen. Theo mặc định, OpenClaw bind vào địa chỉ loopback, 127.0.0.1, nên không thể truy cập từ Internet trừ khi bạn chủ động expose nó. Hãy giữ nguyên cấu hình này. Đây là process duy nhất trực tiếp chạy command, vì vậy expose gateway sẽ trao cho bất kỳ ai tìm thấy nó một foothold từ xa vào server của bạn. Khi cần truy cập gateway từ laptop, hãy dùng VPN hoặc SSH tunnel thay vì mở một port. Không ai có thể tấn công một port mà họ không thể truy cập.

Bộ kết nối kênh: nhận tin nhắn và gửi phản hồi

Một agent cá nhân chỉ hữu ích khi bạn có thể nói chuyện với nó từ các ứng dụng bạn đang dùng. Đó là nhiệm vụ của các bộ kết nối kênh. Mỗi bộ kết nối giao tiếp với một nền tảng, chẳng hạn như Telegram, WhatsApp, Slack hoặc Discord, bằng bot API hoặc webhook của nền tảng đó.

Cấu trúc của tất cả bộ kết nối đều giống nhau. Bộ kết nối đăng ký một bot với nền tảng, nhận tin nhắn gửi đến của bạn (bằng cách polling nền tảng hoặc nhận webhook do nền tảng gửi đến), chuyển tin nhắn đó cho gateway, rồi gửi phản hồi của gateway trở lại thông qua cùng API. Bộ kết nối là một lớp chuyển đổi mỏng. Nó chuyển đổi sự kiện “đã nhận một tin nhắn Telegram” thành “đây là nội dung văn bản để agent xử lý”, rồi thực hiện chiều ngược lại. Tự xây dựng một bộ kết nối chủ yếu là đọc tài liệu bot của một nền tảng và ánh xạ định dạng tin nhắn của nền tảng đó vào định dạng của gateway.

Vòng lặp giữa brain và tool

Bên trong gateway là phần biến nó thành một agent thay vì một chatbot. Đó là một vòng lặp.

Một message được gửi đến. Gateway gửi message đó cho language model cùng với danh sách các tool mà model được phép sử dụng. Model đọc message rồi quyết định: trả lời trực tiếp hay gọi một tool. Nếu model gọi tool, gateway chạy tool đó, lấy kết quả rồi gửi kết quả lại cho model. Model xem kết quả và quyết định lại. Quy trình này lặp lại cho đến khi model không còn việc cần làm và tạo ra câu trả lời cuối cùng.

Vòng lặp này là toàn bộ ý tưởng của một agent. Nó giống nhau dù agent chạy trong một chat app hay trên terminal. Để biết cách kết nối tool với vòng lặp này theo một chuẩn thống nhất, hãy đọc tiếp kết nối tool qua Model Context Protocol. Về phía model, tự chạy model trên phần cứng của bạn sẽ bổ sung phần còn lại.

Bộ công cụ là điểm cốt lõi và cũng là mối nguy

Các tool là thứ khiến OpenClaw mạnh. Một tool chạy shell command, một tool điều khiển browser, một tool đọc và ghi file. Cấp quyền truy cập các tool đó cho loop ở trên, và nó có thể làm gần như mọi việc bạn có thể làm trên bàn phím. Khả năng này chính là toàn bộ sản phẩm, đồng thời cũng là toàn bộ rủi ro.

Một agent có thể chạy bất kỳ command nào và nhận chỉ thị từ chat app sẽ tạo ra một attack surface lớn. Một chỉ thị độc hại, một cuộc tấn công prompt injection ẩn trong web page mà browser tool truy cập, hoặc một bug như các lỗ hổng tháng 2026 có thể biến yêu cầu “đọc lịch của tôi” thành “xóa các file của tôi”. Vì vậy, các giới hạn không phải là tùy chọn bổ sung. Chạy agent bằng một user riêng, không có đặc quyền và không có sudo, để một vụ compromise không thể leo thang đặc quyền. Đặt các tool nguy hiểm sau một bước approval để agent phải hỏi trước khi thực hiện thao tác có tính phá hủy. Sandbox việc thực thi tool để một command chạy ngoài kiểm soát vẫn bị cô lập. Cô lập API key của model để nếu bị lộ, kẻ tấn công không thể chiếm account của bạn. Cũng hãy nghĩ đến các secret khác đang nằm trên cùng box, vì các điểm yếu thực sự của Vaultwarden là admin token và backup file, không phải cơ chế mã hóa; agent có shell access có thể truy cập cả hai.

Trước khi public bất kỳ thứ gì có thể chạy shell command, hãy chủ động xử lý các bước cơ bản. Tạo checklist cho chính box của bạn tại đây, rồi thực hiện lần lượt từ trên xuống dưới:

ToolVPS hardening checklist

Phần chạy service bằng user không có đặc quyền được trình bày chi tiết trong chạy service bằng user không có đặc quyền, còn hướng dẫn đầy đủ để thiết lập an toàn cho project thực tế có trong chạy OpenClaw an toàn trên VPS.

Memory dưới dạng file văn bản thuần

Hầu hết mọi người đều nghĩ memory của agent phải nằm trong database. OpenClaw thì không. Nó lưu memory dưới dạng các file Markdown văn bản thuần trên disk, và đây là một lựa chọn đáng áp dụng.

File rất đơn giản. Bạn không cần migrate schema, duy trì một service luôn chạy hoặc học một query language. File cũng dễ kiểm tra: bạn có thể mở folder và đọc chính xác agent đang ghi nhớ gì về bạn, sửa một ghi chú sai bằng cách chỉnh file hoặc xóa một memory bằng cách xóa file đó. File còn dễ chuyển đổi, vì chuyển agent sang server mới chỉ cần copy một directory. Với agent cá nhân cho một người dùng, một folder chứa các file văn bản là đủ và giúp toàn bộ hệ thống dễ hiểu, dễ kiểm soát.

Kỹ năng: cách portable để thêm khả năng

Ngoài các tool tích hợp sẵn, OpenClaw sử dụng một định dạng skill portable để cộng đồng có thể mở rộng khả năng của nó mà không cần thay đổi core. Một skill là một gói độc lập gồm các instruction và đôi khi có cả code, dùng để dạy agent thực hiện một tác vụ mới. Agent sẽ load skill khi tác vụ yêu cầu. Web search thường là skill đầu tiên mọi người thêm vào, và trỏ skill đó vào instance SearXNG của bạn giúp các query không đi qua commercial search API, đồng thời cho thấy rõ trust boundary của skill nằm ở đâu, vì mọi thứ nó trả về đều là text do một người lạ viết.

Giá trị của một định dạng như vậy là các khả năng có thể được chia sẻ. Một người viết skill cho một công việc cụ thể, publish nó, rồi người khác chỉ cần thêm vào. Sự tiện lợi này cũng có rủi ro, vì skill là code do một người lạ viết và agent của bạn sẽ chạy nó mà không do dự. Vì vậy, trước khi load, bạn nên đưa mọi thứ mình không tự viết qua một security scanner do chính bạn host. Nếu tự xây dựng agent, việc định nghĩa sớm một extension format nhỏ và rõ ràng sẽ giúp bạn không phải hard-code từng capability vào core về sau.

Tự chọn model

OpenClaw không phụ thuộc vào một model cụ thể. OpenClaw không tự phát hành model ngôn ngữ. Thay vào đó, nó kết nối với model do bạn chọn. Model đó có thể chạy qua hosted API hoặc do bạn tự vận hành.

Cách tách này ảnh hưởng trực tiếp đến chi phí, quyền riêng tư và mức độ kiểm soát. Hosted API cung cấp các model mạnh nhất mà bạn không phải quản lý phần cứng. Bạn trả phí theo token, và prompt của bạn rời khỏi server. Model self-hosted, được cung cấp bằng công cụ như Ollama, giữ mọi tin nhắn trên máy của bạn. Chi phí chỉ gồm phần cứng và điện, nhưng bạn phải chấp nhận chạy model nhỏ hơn hoặc chậm hơn. Nhiều người kết hợp cả hai cách. Nếu muốn giữ agent hoàn toàn riêng tư, tự host model trên VPS là phần giúp loại bỏ khoảng cách cuối cùng đó. Hermes Agent cũng là một agent self-hosted đáng để so sánh.

Bạn có nên tự xây dựng một agent không?

Bạn có thể tự xây dựng toàn bộ hệ thống này. Các thành phần không quá đặc biệt: một daemon, một vài chat connector, vòng lặp model-and-tools, một thư mục chứa các file Markdown và một định dạng plugin. Hiểu các thành phần này thực sự hữu ích vì nó giúp bạn hiểu rõ mọi agent sẽ sử dụng và xác định chính xác những nơi có rủi ro.

Nhưng với phần lớn mọi người, câu trả lời thực tế là chạy giải pháp chính thức rồi harden nó, thay vì tự xây lại từ đầu. OpenClaw đã giải quyết phần connector, loop và định dạng skill, đồng thời đã được kiểm tra bảo mật thực tế. Bạn nên tập trung công sức vào phần thực sự thuộc trách nhiệm của mình: setup và hardening trên server của chính bạn. Nếu trước tiên bạn muốn học theo lộ trình thực hành, đi qua các khái niệm theo từng giai đoạn sẽ hiệu quả hơn việc đọc source code của agent ngay từ đầu, vì sau mỗi giai đoạn bạn đều hoàn thành được một thành phần thực tế. Hãy tự xây một bản nhỏ để học. Hãy chạy và khóa bảo mật bản chính thức để sử dụng.

Các nền tảng chung được trình bày trong tự xây dựng AI agent trên VPS, còn xây dựng agent với Claude trình bày các ý tưởng tương tự với một model cụ thể làm bộ não.

FAQ

Xây dựng một agent như OpenClaw có khó không?

Các thành phần riêng lẻ không khó. Một gateway process, một chat connector, một vòng lặp model-and-tools và một thư mục chứa các file đều khá đơn giản khi đứng riêng. Phần khó là triển khai an toàn. Một agent chạy shell command từ tin nhắn chat tạo ra một bề mặt tấn công nghiêm trọng. Cấu hình sandbox, quyền truy cập và user không có đặc quyền đúng cách thường tốn nhiều công sức hơn việc kết nối các tính năng.

Vì sao OpenClaw lưu memory dưới dạng file Markdown thay vì database?

Vì với một agent cá nhân cho một user, file là đủ và đơn giản hơn nhiều. Bạn không cần chạy database service, có thể dễ dàng đọc và sửa memory bằng tay, và việc chuyển agent sang server khác chỉ là copy một thư mục. Database chỉ thực sự cần thiết khi quy mô lớn hơn, không phải trong trường hợp này.

Phần nguy hiểm nhất của một AI agent cá nhân là gì?

Đó là các tool cho phép agent thực hiện hành động: chạy shell command, điều khiển browser và ghi file. Đây là lý do bạn xây dựng agent, nhưng cũng là lý do agent có thể gây hại cho bạn. Sự kiện bảo mật của OpenClaw vào tháng 3 năm 2026, với 9 issue trong 4 ngày, trong đó có một issue nghiêm trọng được đánh giá 9.9, cho thấy rõ cần xử lý tool layer cẩn thận: chạy agent bằng user không có đặc quyền, yêu cầu xác nhận cho các hành động phá hủy và sandbox việc thực thi.

Tôi có cần tự xây dựng language model để tạo agent không?

Không. Các agent như OpenClaw không phụ thuộc vào một model cụ thể, nên bạn có thể kết nối model mình chọn. Đó có thể là một hosted API cho các model mạnh nhất, hoặc một model bạn tự chạy để có đầy đủ quyền riêng tư. Self-hosting bằng Ollama giữ mọi tin nhắn trên server của bạn, nhưng phải chấp nhận chạy một model nhỏ hơn.