OpenBot
Template mã nguồn mở để tự host AI coworker có browser, file, shell, MCP, policy, approval và audit trail cho từng Bot.
Xem thêm từ README.mdThu gọn README.md
Đánh giá chi tiết
OpenBot: nền tảng “đồng nghiệp AI” tự host, có máy tính và lớp quản trị riêng
OpenBot của CopilotKit không phải chatbot đóng gói sẵn. Dự án tự mô tả là template mã nguồn mở ở giai đoạn alpha: bạn clone repository, thay cấu hình mẫu bằng bot, kỹ năng và kênh của doanh nghiệp rồi tự vận hành.[2] Mỗi Bot có thể được cấp một “máy tính” riêng gồm Chromium, hồ sơ đăng nhập và thư mục bền vững. Bot duyệt web, thao tác tệp, chạy shell và gọi MCP qua gateway kiểm tra chính sách, approval và audit.
Cách OpenBot được tổ chức
Giao diện dùng React/Vite; API dùng Hono; dữ liệu, chính sách, quyền công cụ, credential và audit nằm trong PostgreSQL/pgvector. CopilotKit Intelligence đảm nhiệm hội thoại và bộ nhớ bền vững, còn AG-UI cho phép nối agent viết bằng nhiều framework.[2][3]
Cài đặt yêu cầu Docker, Bun 1.3+, một project CopilotKit Intelligence và khóa model. Quy trình là tạo .env, cài dependency, kết nối Intelligence, điền model key rồi chạy scripts/start.sh.[2] Image GHCR và Helm chart hỗ trợ triển khai, nhưng đây vẫn là điểm khởi đầu để tùy biến, không phải dịch vụ hosted.
Điểm mạnh: quản trị nằm trong code
Điểm thuyết phục nhất là giới hạn được cưỡng chế ở backend thay vì chỉ ghi vào prompt. Mỗi Bot có container, profile trình duyệt và volume /workspace riêng. Supervisor bỏ Linux capabilities, bật no-new-privileges, giới hạn process và chỉ publish cổng ở loopback trên laptop.[8] Hạ tầng hỗ trợ có thể chọn runsc để dùng gVisor.
API tệp từ chối đường dẫn tuyệt đối, .. và cả symlink trỏ ra ngoài workspace; đồng thời giới hạn kích thước đọc, ghi, download và số mục liệt kê.[5] Shell chạy lệnh thật bằng Bash trong workspace, nhưng chỉ nhận danh sách biến môi trường cho phép, không kế thừa toàn bộ secret của deployment. Thời gian chạy và lượng output cũng bị chặn.[6]
Trình duyệt chỉ cho HTTP/HTTPS và mặc định chặn loopback, mạng riêng, link-local cùng endpoint metadata cloud.[7] Credential nhập trên trang được che khỏi accessibility snapshot, screenshot và screencast — cần thiết vì password field vẫn có thể lộ qua cây accessibility.
Grant tách khỏi skill: skill là hướng dẫn, không tự sinh quyền. Bot chỉ nhận đúng MCP tool đã được cấp; MCP và giao việc giữa Bot do admin quyết định, còn người dùng chỉ gắn skill của mình vào Bot mình sở hữu.[13][14] CEL xử lý deny trước allow; thiếu policy hoặc lỗi biểu thức đều không mở cửa ngoài ý muốn.[9]
Approval và audit có chiều sâu, nhưng phải cấu hình
Gateway theo thứ tự “quyết định, ghi nhận, rồi mới hành động”. Audit insert được chờ trước khi gọi computer; hành động thất bại hoặc bị bấm Stop có outcome riêng.[10] Payload tự che token, password, authorization, prompt, tool arguments và result.[15]
Lớp approval hỗ trợ hỏi một lần, từ chối, giao người dùng tự làm hoặc lưu allow_always. Digest của hành động ngăn một request đã thay đổi dùng lại phê duyệt cũ; khi resume, hệ thống kiểm tra lại policy và grant hiện tại.[11][12] Các thao tác liên quan mật khẩu, cài đặt bảo mật hay thanh toán được ưu tiên hand-off cho con người.
Tuy nhiên, “ask before changes” mặc định tắt. Những rule an toàn tích hợp cũng dựa trên regex hoặc model review, và cố ý không xem lệnh shell hay sửa tệp cục bộ là thay đổi tài khoản.[11][12] Vì vậy doanh nghiệp vẫn phải bật approval, viết team rule và giới hạn shell theo ngữ cảnh; không nên coi lớp này là lá chắn tự động hoàn chỉnh.
Credential, telemetry và những giới hạn cần biết
Credential lưu trong database được mã hóa AES-GCM bằng khóa 32 byte; API không trả secret trở lại, còn rotation/revocation được thiết kế theo transaction.[17] Audit mặc định giữ vô thời hạn. Có thể đặt số ngày retention; sweeper xóa theo batch và dùng advisory lock để chỉ một server thực hiện.[16]
Desktop telemetry lại bật mặc định, không có bước opt-in. Tài liệu cho biết schema chỉ nhận metadata cài đặt/sản phẩm, không nhận prompt, câu trả lời, credential, đường dẫn, hostname hay email. Có thể tắt bằng COPILOTKIT_TELEMETRY_DISABLED=true hoặc DO_NOT_TRACK=1; opt-out cũng xóa hàng đợi chưa gửi.[18]
Rủi ro lớn nhất nằm ở vận hành. .env.example bật chế độ single-user, nghĩa là mọi request đều trở thành administrator; cấu hình này chỉ phù hợp trên máy cá nhân và phải bỏ trước khi expose dịch vụ.[2][4] gVisor là tùy chọn, nên container thông thường vẫn dùng chung kernel host. Egress mặc định đi trực tiếp; proxy filter không chặn chương trình mở raw socket, do đó deployment nghiêm túc cần Kubernetes NetworkPolicy hoặc lớp mạng tương đương.
Chất lượng dự án và kết luận
Tại commit được kiểm tra, CI GitHub chạy thành công 19 job, gồm format, lint, type, test, migration, build, real-browser test, image, Helm và các harness Python.[19][20] Kiểm tra độc lập xác nhận install, format, lint, typecheck và build đều qua; 227 test tập trung vào workspace, shell, policy, approval, credential và audit cũng qua. Full suite cục bộ vượt giới hạn 420 giây nên không được tính là pass. Bản build còn cảnh báo một số chunk lớn.
OpenBot phù hợp với đội kỹ thuật muốn tự sở hữu nền tảng agent có browser, file, shell và MCP nhưng cần ranh giới quản trị kiểm tra được. Nó chưa dành cho nhóm cần SaaS hoàn thiện hoặc muốn triển khai công khai từ cấu hình mẫu. Ở version 0.1.2, đây là nền móng minh bạch, nhưng người vận hành phải chủ động cấu hình xác thực, approval, sandbox, egress và retention.