FAQ
Câu trả lời nhanh cùng hướng dẫn khắc phục sự cố chi tiết cho các setup thực tế (dev local, VPS, multi-agent, OAuth/API keys, model failover). Để chẩn đoán runtime, xem Troubleshooting. Để xem tài liệu config đầy đủ, xem Configuration.
Mục lục
- Khởi động nhanh và setup lần đầu
- Mình bị kẹt - cách nhanh nhất để thoát ra là gì?
- Cách cài đặt và setup OpenClaw được khuyến nghị là gì?
- Làm sao mở dashboard sau khi onboard?
- Làm sao xác thực dashboard (token) trên localhost vs remote?
- Mình cần runtime nào?
- Nó chạy được trên Raspberry Pi không?
- Có tips gì cho việc cài đặt trên Raspberry Pi không?
- Nó bị kẹt ở “wake up my friend” / onboarding không hatch. Giờ làm sao?
- Mình có thể chuyển setup sang máy mới (Mac mini) mà không cần onboard lại không?
- Xem những gì mới trong phiên bản mới nhất ở đâu?
- Mình không truy cập được docs.openclaw.ai (lỗi SSL). Giờ làm sao?
- Sự khác biệt giữa stable và beta là gì?
- Làm sao cài phiên bản beta, và sự khác biệt giữa beta và dev là gì?
- Làm sao thử phiên bản mới nhất?
- Cài đặt và onboarding thường mất bao lâu?
- Installer bị kẹt? Làm sao có thêm thông tin?
- Cài đặt Windows báo không tìm thấy git hoặc openclaw không được nhận diện
- Tài liệu không trả lời câu hỏi của mình - làm sao có câu trả lời tốt hơn?
- Làm sao cài OpenClaw trên Linux?
- Làm sao cài OpenClaw trên VPS?
- Hướng dẫn cài đặt cloud/VPS ở đâu?
- Mình có thể yêu cầu OpenClaw tự update không?
- Wizard onboarding thực sự làm gì?
- Mình có cần subscription Claude hoặc OpenAI để chạy không?
- Mình có thể dùng subscription Claude Max mà không cần API key không
- Xác thực “setup-token” của Anthropic hoạt động như thế nào?
- Tìm setup-token của Anthropic ở đâu?
- Các bạn có hỗ trợ xác thực subscription Claude (Claude Code OAuth) không?
- Tại sao mình thấy
HTTP 429: rate_limit_errortừ Anthropic? - AWS Bedrock có được hỗ trợ không?
- Xác thực Codex hoạt động như thế nào?
- Các bạn có hỗ trợ xác thực subscription OpenAI (Codex OAuth) không?
- Làm sao setup Gemini CLI OAuth
- Model local có ổn cho chat thông thường không?
- Làm sao giữ traffic model hosted trong một region cụ thể?
- Mình có phải mua Mac Mini để cài này không?
- Mình có cần Mac mini để hỗ trợ iMessage không?
- Nếu mình mua Mac mini để chạy OpenClaw, mình có thể kết nối nó với MacBook Pro không?
- Mình có thể dùng Bun không?
- Telegram: điền gì vào
allowFrom? - Nhiều người có thể dùng một số WhatsApp với các instance OpenClaw khác nhau không?
- Mình có thể chạy agent “chat nhanh” và agent “Opus cho coding” không?
- Homebrew có hoạt động trên Linux không?
- Sự khác biệt giữa cài đặt hackable (git) và npm install là gì?
- Mình có thể chuyển đổi giữa npm và git installs sau này không?
- Nên chạy Gateway trên laptop hay VPS?
- Việc chạy OpenClaw trên máy chuyên dụng quan trọng như thế nào?
- Yêu cầu VPS tối thiểu và OS được khuyến nghị là gì?
- Mình có thể chạy OpenClaw trong VM không và yêu cầu là gì
- OpenClaw là gì?
- Skills và automation
- Làm sao customize skills mà không làm repo bẩn?
- Mình có thể load skills từ folder tùy chỉnh không?
- Làm sao dùng các model khác nhau cho các task khác nhau?
- Bot bị đơ khi làm việc nặng. Làm sao offload?
- Cron hoặc reminders không chạy. Nên check gì?
- Làm sao cài skills trên Linux?
- OpenClaw có thể chạy tasks theo lịch hoặc liên tục ở background không?
- Mình có thể chạy skills chỉ dành cho Apple/macOS từ Linux không?
- Các bạn có tích hợp Notion hoặc HeyGen không?
- Làm sao cài Chrome extension để browser takeover?
- Sandboxing và memory
- Dữ liệu lưu ở đâu trên disk
- Tất cả dữ liệu dùng với OpenClaw có được lưu local không?
- OpenClaw lưu dữ liệu ở đâu?
- AGENTS.md / SOUL.md / USER.md / MEMORY.md nên để ở đâu?
- Chiến lược backup được khuyến nghị là gì?
- Làm sao gỡ cài đặt OpenClaw hoàn toàn?
- Agents có thể làm việc bên ngoài workspace không?
- Mình đang ở remote mode - session store ở đâu?
- Config cơ bản
- Config có format gì? Nó ở đâu?
- Mình set
gateway.bind: "lan"(hoặc"tailnet") và giờ không có gì listen / UI báo unauthorized - Tại sao giờ mình cần token trên localhost?
- Mình có phải restart sau khi đổi config không?
- Làm sao bật web search (và web fetch)?
- config.apply xóa sạch config của mình. Làm sao khôi phục và tránh điều này?
- Làm sao chạy Gateway trung tâm với các workers chuyên biệt trên nhiều thiết bị?
- Browser OpenClaw có thể chạy headless không?
- Làm sao dùng Brave để điều khiển browser?
- Remote gateways + nodes
- Lệnh lan truyền giữa Telegram, gateway và nodes như thế nào?
- Làm sao agent của mình truy cập máy tính nếu Gateway được host remote?
- Tailscale đã kết nối nhưng không có reply. Giờ làm sao?
- Hai instance OpenClaw có thể nói chuyện với nhau không (local + VPS)?
- Mình có cần VPS riêng cho nhiều agents không
- Có lợi ích gì khi dùng node trên laptop cá nhân thay vì SSH từ VPS không?
- Nodes có chạy gateway service không?
- Có cách API / RPC nào để apply config không?
- Config “hợp lý” tối thiểu cho lần cài đầu là gì?
- Làm sao setup Tailscale trên VPS và kết nối từ Mac?
- Làm sao kết nối Mac node với remote Gateway (Tailscale Serve)?
- Nên cài trên laptop thứ hai hay chỉ thêm node?
- Env vars và .env loading
- Sessions & nhiều chats
- Làm sao bắt đầu cuộc trò chuyện mới?
- Sessions có tự reset nếu mình không bao giờ gửi
/newkhông? - Có cách nào tạo team các instance OpenClaw - một CEO và nhiều agents không
- Tại sao context bị cắt giữa chừng task? Làm sao ngăn chặn?
- Làm sao reset OpenClaw hoàn toàn nhưng vẫn giữ cài đặt?
- Mình gặp lỗi “context too large” - làm sao reset hoặc compact?
- Tại sao mình thấy “LLM request rejected: messages.N.content.X.tool_use.input: Field required”?
- Tại sao mình nhận heartbeat messages mỗi 30 phút?
- Mình có cần thêm “bot account” vào WhatsApp group không?
- Làm sao lấy JID của WhatsApp group?
- Tại sao OpenClaw không reply trong group?
- Groups/threads có share context với DMs không?
- Mình có thể tạo bao nhiêu workspaces và agents?
- Mình có thể chạy nhiều bots hoặc chats cùng lúc (Slack) không, và nên setup như thế nào?
- Models: defaults, selection, aliases, switching
- “Default model” là gì?
- Các bạn khuyên dùng model nào?
- Làm sao đổi models mà không xóa config?
- Mình có thể dùng self-hosted models (llama.cpp, vLLM, Ollama) không?
- OpenClaw, Flawd và Krill dùng models gì?
- Làm sao đổi models ngay lập tức (không cần restart)?
- Mình có thể dùng GPT 5.2 cho tasks hàng ngày và Codex 5.2 cho coding không
- Tại sao mình thấy “Model … is not allowed” rồi không có reply?
- Tại sao mình thấy “Unknown model: minimax/MiniMax-M2.1”?
- Mình có thể dùng MiniMax làm default và OpenAI cho tasks phức tạp không?
- opus / sonnet / gpt có phải shortcuts built-in không?
- Làm sao định nghĩa/override model shortcuts (aliases)?
- Làm sao thêm models từ providers khác như OpenRouter hoặc Z.AI?
- Model failover và “All models failed”
- Auth profiles: chúng là gì và cách quản lý
- Gateway: ports, “already running”, và remote mode
- Gateway dùng port nào?
- Tại sao
openclaw gateway statusbáoRuntime: runningnhưngRPC probe: failed? - Tại sao
openclaw gateway statushiệnConfig (cli)vàConfig (service)khác nhau? - “another gateway instance is already listening” nghĩa là gì?
- Làm sao chạy OpenClaw ở remote mode (client kết nối Gateway ở nơi khác)?
- Control UI báo “unauthorized” (hoặc cứ reconnecting). Giờ làm sao?
- Mình set
gateway.bind: "tailnet"nhưng nó không bind / không có gì listen - Mình có thể chạy nhiều Gateways trên cùng host không?
- “invalid handshake” / code 1008 nghĩa là gì?
- Logging và debugging
- Logs ở đâu?
- Làm sao start/stop/restart Gateway service?
- Mình đóng terminal trên Windows - làm sao restart OpenClaw?
- Gateway đang chạy nhưng replies không bao giờ đến. Nên check gì?
- “Disconnected from gateway: no reason” - giờ làm sao?
- Telegram setMyCommands fail với network errors. Nên check gì?
- TUI không hiện output. Nên check gì?
- Làm sao stop hoàn toàn rồi start Gateway?
- ELI5:
openclaw gateway restartvsopenclaw gateway - Cách nhanh nhất để có thêm chi tiết khi có gì đó fail là gì?
- Media & attachments
- Security và access control
- Có an toàn khi expose OpenClaw cho inbound DMs không?
- Prompt injection chỉ là vấn đề cho public bots thôi phải không?
- Bot của mình nên có email, GitHub account hoặc số điện thoại riêng không
- Mình có thể cho nó quyền tự động với tin nhắn của mình không và có an toàn không
- Mình có thể dùng models rẻ hơn cho tasks trợ lý cá nhân không?
- Mình chạy
/starttrong Telegram nhưng không nhận được pairing code - WhatsApp: nó có nhắn tin cho contacts của mình không? Pairing hoạt động như thế nào?
- Chat commands, aborting tasks, và “nó không chịu dừng”
60 giây đầu tiên nếu có gì đó bị lỗi
-
Quick status (check đầu tiên)
openclaw statusTóm tắt local nhanh: OS + update, gateway/service reachability, agents/sessions, provider config + runtime issues (khi gateway có thể reach được).
-
Pasteable report (an toàn để share)
openclaw status --allChẩn đoán read-only với log tail (tokens đã được redacted).
-
Daemon + port state
openclaw gateway statusHiển thị supervisor runtime vs RPC reachability, probe target URL, và config nào mà service có thể đã dùng.
-
Deep probes
openclaw status --deepChạy gateway health checks + provider probes (cần gateway có thể reach được). Xem Health.
-
Tail log mới nhất
openclaw logs --followNếu RPC down, fallback về:
tail -f "$(ls -t /tmp/openclaw/openclaw-*.log | head -1)"File logs tách biệt với service logs; xem Logging và Troubleshooting.
-
Run the doctor (repairs)
openclaw doctorRepairs/migrates config/state + chạy health checks. Xem Doctor.
-
Gateway snapshot
openclaw health --json openclaw health --verbose # hiện target URL + config path khi có errorsHỏi gateway đang chạy để lấy full snapshot (chỉ WS). Xem Health.
Khởi động nhanh và setup lần đầu
Mình bị kẹt - cách nhanh nhất để thoát ra là gì?
Dùng local AI agent có thể nhìn thấy máy của các bạn. Cách này hiệu quả hơn nhiều so với hỏi trong Discord, vì hầu hết các trường hợp “mình bị kẹt” là vấn đề config local hoặc môi trường mà người hỗ trợ từ xa không thể kiểm tra được.
- Claude Code: https://www.anthropic.com/claude-code/
- OpenAI Codex: https://openai.com/codex/
Các công cụ này có thể đọc repo, chạy lệnh, kiểm tra logs, và giúp sửa setup ở tầng máy (PATH, services, permissions, auth files). Cho chúng full source checkout qua cài đặt hackable (git):
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git
Cách này cài OpenClaw từ git checkout, để agent có thể đọc code + docs và suy luận về phiên bản chính xác các bạn đang chạy. Các bạn luôn có thể chuyển về stable sau bằng cách chạy lại installer mà không có --install-method git.
Tip: yêu cầu agent lập kế hoạch và giám sát việc sửa (từng bước), sau đó chỉ thực thi các lệnh cần thiết. Cách này giữ các thay đổi nhỏ và dễ audit hơn.
Nếu các bạn phát hiện bug thật hoặc có fix, vui lòng tạo GitHub issue hoặc gửi PR: https://github.com/openclaw/openclaw/issues https://github.com/openclaw/openclaw/pulls
Bắt đầu với các lệnh này (share outputs khi xin trợ giúp):
openclaw status
openclaw models status
openclaw doctor
Chúng làm gì:
openclaw status: snapshot nhanh về gateway/agent health + config cơ bản.openclaw models status: check provider auth + model availability.openclaw doctor: validates và repairs các vấn đề config/state phổ biến.
Các CLI checks hữu ích khác: openclaw status --all, openclaw logs --follow,
openclaw gateway status, openclaw health --verbose.
Vòng debug nhanh: 60 giây đầu tiên nếu có gì đó bị lỗi. Docs cài đặt: Install, Installer flags, Updating.
Cách cài đặt và setup OpenClaw được khuyến nghị là gì?
Repo khuyến nghị chạy từ source và dùng wizard onboarding:
curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon
Wizard cũng có thể build UI assets tự động. Sau khi onboard, các bạn thường chạy Gateway trên port 18789.
Từ source (contributors/dev):
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm build
pnpm ui:build # tự động cài UI deps lần đầu chạy
openclaw onboard
Nếu các bạn chưa có global install, chạy qua pnpm openclaw onboard.
Làm sao mở dashboard sau khi onboard?
Wizard giờ sẽ mở browser với dashboard URL có token ngay sau khi onboard và cũng in ra link đầy đủ (với token) trong summary. Giữ tab đó mở; nếu nó không tự mở, copy/paste URL đã in ra trên cùng máy. Tokens được lưu local trên host của các bạn - không có gì được fetch từ browser.
Làm sao xác thực dashboard (token) trên localhost vs remote?
Localhost (cùng máy):
- Mở
http://127.0.0.1:18789/. - Nếu nó hỏi auth, chạy
openclaw dashboardvà dùng link có token (?token=...). - Token có giá trị giống với
gateway.auth.token(hoặcOPENCLAW_GATEWAY_TOKEN) và được UI lưu sau lần load đầu tiên.
Không phải localhost:
- Tailscale Serve (khuyến nghị): giữ bind loopback, chạy
openclaw gateway --tailscale serve, mởhttps://<magicdns>/. Nếugateway.auth.allowTailscalelàtrue, identity headers đáp ứng auth (không cần token). - Tailnet bind: chạy
openclaw gateway --bind tailnet --token "<token>", mởhttp://<tailscale-ip>:18789/, paste token vào dashboard settings. - SSH tunnel:
ssh -N -L 18789:127.0.0.1:18789 user@hostrồi mởhttp://127.0.0.1:18789/?token=...từopenclaw dashboard.
Xem Dashboard và Web surfaces để biết bind modes và chi tiết auth.
Mình cần runtime nào?
Node >= 22 là bắt buộc. pnpm được khuyến nghị. Bun không được khuyến nghị cho Gateway.
Nó chạy được trên Raspberry Pi không?
Được. Gateway rất nhẹ - docs liệt kê 512MB-1GB RAM, 1 core, và khoảng 500MB disk là đủ cho sử dụng cá nhân, và lưu ý rằng Raspberry Pi 4 có thể chạy được.
Nếu các bạn muốn thêm dư địa (logs, media, các services khác), 2GB được khuyến nghị, nhưng đó không phải là mức tối thiểu cứng.
Tip: một Pi/VPS nhỏ có thể host Gateway, và các bạn có thể pair nodes trên laptop/phone để có local screen/camera/canvas hoặc thực thi lệnh. Xem Nodes.
Có tips gì cho việc cài đặt trên Raspberry Pi không?
Phiên bản ngắn: nó hoạt động, nhưng hãy chuẩn bị cho những vấn đề nhỏ.
- Dùng OS 64-bit và giữ Node >= 22.
- Ưu tiên cài đặt hackable (git) để các bạn có thể xem logs và update nhanh.
- Bắt đầu không có channels/skills, sau đó thêm từng cái một.
- Nếu gặp vấn đề binary lạ, thường là vấn đề tương thích ARM.
Nó bị kẹt ở “wake up my friend” / onboarding không hatch. Giờ làm sao?
Màn hình đó phụ thuộc vào việc Gateway có thể reach được và đã xác thực. TUI cũng tự động gửi “Wake up, my friend!” khi hatch lần đầu. Nếu các bạn thấy dòng đó không có reply và tokens vẫn ở 0, agent chưa bao giờ chạy.
- Restart Gateway:
openclaw gateway restart
- Check status + auth:
openclaw status
openclaw models status
openclaw logs --follow
- Nếu vẫn bị treo, chạy:
openclaw doctor
Nếu Gateway ở remote, đảm bảo tunnel/Tailscale connection đang up và UI đang trỏ đúng Gateway. Xem Remote access.
Mình có thể chuyển setup sang máy mới (Mac mini) mà không cần onboard lại không?
Được. Copy state directory và workspace, sau đó chạy Doctor một lần. Cách này giữ bot của các bạn “hoàn toàn giống nhau” (memory, session history, auth, và channel state) miễn là các bạn copy cả hai vị trí:
- Cài OpenClaw trên máy mới.
- Copy
$OPENCLAW_STATE_DIR(mặc định:~/.openclaw) từ máy cũ. - Copy workspace của các bạn (mặc định:
~/.openclaw/workspace). - Chạy
openclaw doctorvà restart Gateway service.
Cách này bảo toàn config, auth profiles, WhatsApp creds, sessions, và memory. Nếu các bạn đang ở remote mode, nhớ rằng gateway host sở hữu session store và workspace.
Quan trọng: nếu các bạn chỉ commit/push workspace lên GitHub, các bạn đang backup memory + bootstrap files, nhưng không phải session history hoặc auth. Những thứ đó nằm dưới ~/.openclaw/ (ví dụ ~/.openclaw/agents/<agentId>/sessions/).
Liên quan: Migrating, Dữ liệu lưu ở đâu trên disk, Agent workspace, Doctor, Remote mode.
Xem những gì mới trong phiên bản mới nhất ở đâu?
Check GitHub changelog: https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md
Các mục mới nhất ở trên cùng. Nếu phần trên cùng được đánh dấu Unreleased, phần có ngày tiếp theo là phiên bản shipped mới nhất. Các mục được nhóm theo Highlights, Changes, và Fixes (cộng thêm docs/các phần khác khi cần).
Mình không truy cập được docs.openclaw.ai (lỗi SSL). Giờ làm sao?
Một số kết nối Comcast/Xfinity chặn sai docs.openclaw.ai qua Xfinity Advanced Security. Tắt nó hoặc allowlist docs.openclaw.ai, sau đó thử lại. Chi tiết hơn: Troubleshooting. Vui lòng giúp chúng mình unblock nó bằng cách báo cáo tại đây: https://spa.xfinity.com/check_url_status.
Nếu các bạn vẫn không thể truy cập site, docs được mirror trên GitHub: https://github.com/openclaw/openclaw/tree/main/docs
Sự khác biệt giữa stable và beta là gì?
Stable và beta là npm dist-tags, không phải các dòng code riêng biệt:
latest= stablebeta= early build để testing
Chúng mình ship builds lên beta, test chúng, và khi một build đã ổn định thì promote cùng phiên bản đó lên latest. Đó là lý do tại sao beta và stable có thể trỏ đến cùng một phiên bản.
Xem những gì đã thay đổi: https://github.com/openclaw/openclaw/blob/main/CHANGELOG.md
Làm sao cài phiên bản beta, và sự khác biệt giữa beta và dev là gì?
Beta là npm dist-tag beta (có thể trùng với latest).
Dev là head đang di chuyển của main (git); khi được publish, nó dùng npm dist-tag dev.
One-liners (macOS/Linux):
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --beta
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash -s -- --install-method git
Windows installer (PowerShell): https://openclaw.ai/install.ps1
Chi tiết hơn: Development channels và Installer flags.
Cài đặt và onboarding thường mất bao lâu?
Hướng dẫn sơ bộ:
- Install: 2-5 phút
- Onboarding: 5-15 phút tùy thuộc vào số lượng channels/models các bạn cấu hình
Nếu bị treo, dùng Installer bị kẹt và vòng debug nhanh trong Mình bị kẹt.
Làm sao thử phiên bản mới nhất?
Hai lựa chọn:
- Dev channel (git checkout):
openclaw update --channel dev
Cách này chuyển sang branch main và update từ source.
- Hackable install (từ installer site):
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git
Cách này cho các bạn một repo local có thể edit, sau đó update qua git.
Nếu các bạn thích clone sạch thủ công, dùng:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm build
Docs: Update, Development channels, Install.
Installer bị kẹt? Làm sao có thêm thông tin?
Chạy lại installer với verbose output:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --verbose
Beta install với verbose:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --beta --verbose
Cho hackable (git) install:
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git --verbose
Thêm options: Installer flags.
Cài đặt Windows báo không tìm thấy git hoặc openclaw không được nhận diện
Hai vấn đề Windows phổ biến:
1) npm error spawn git / git not found
- Cài Git for Windows và đảm bảo
gitnằm trong PATH của các bạn. - Đóng và mở lại PowerShell, sau đó chạy lại installer.
2) openclaw is not recognized sau khi cài
- Folder npm global bin của các bạn không nằm trong PATH.
- Check path:
npm config get prefix - Đảm bảo
<prefix>\\binnằm trong PATH (trên hầu hết hệ thống là%AppData%\\npm). - Đóng và mở lại PowerShell sau khi update PATH.
Nếu các bạn muốn setup Windows mượt nhất, dùng WSL2 thay vì Windows native. Docs: Windows.
Tài liệu không trả lời câu hỏi của mình - làm sao có câu trả lời tốt hơn?
Dùng cài đặt hackable (git) để có full source và docs ở local, sau đó hỏi bot của các bạn (hoặc Claude/Codex) từ folder đó để nó có thể đọc repo và trả lời chính xác.
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git
Chi tiết hơn: Install và Installer flags.
Làm sao cài OpenClaw trên Linux?
Câu trả lời ngắn: làm theo hướng dẫn Linux, sau đó chạy wizard onboarding.
- Linux quick path + service install: Linux.
- Full walkthrough: Getting Started.
- Installer + updates: Install & updates.
Làm sao cài OpenClaw trên VPS?
Bất kỳ Linux VPS nào cũng hoạt động. Cài trên server, sau đó dùng SSH/Tailscale để reach Gateway.
Guides: exe.dev, Hetzner, Fly.io. Remote access: Gateway remote.
Hướng dẫn cài đặt cloud/VPS ở đâu?
Chúng mình có một hosting hub với các providers phổ biến. Chọn một và làm theo hướng dẫn:
- VPS hosting (tất cả providers ở một chỗ)
- Fly.io
- Hetzner
- exe.dev
Cách nó hoạt động trên cloud: Gateway chạy trên server, và các bạn truy cập nó từ laptop/phone qua Control UI (hoặc Tailscale/SSH). State + workspace của các bạn nằm trên server, nên coi host là nguồn chân lý và backup nó.
Các bạn có thể pair nodes (Mac/iOS/Android/headless) với cloud Gateway đó để truy cập local screen/camera/canvas hoặc chạy lệnh trên laptop trong khi giữ Gateway trên cloud.
Hub: Platforms. Remote access: Gateway remote. Nodes: Nodes, Nodes CLI.
Mình có thể yêu cầu OpenClaw tự update không?
Câu trả lời ngắn: có thể, nhưng không khuyến nghị. Flow update có thể restart Gateway (làm mất active session), có thể cần git checkout sạch, và có thể prompt xác nhận. An toàn hơn: chạy updates từ shell với tư cách operator.
Dùng CLI:
openclaw update
openclaw update status
openclaw update --channel stable|beta|dev
openclaw update --tag <dist-tag|version>
openclaw update --no-restart
Nếu các bạn phải tự động hóa từ agent:
openclaw update --yes --no-restart
openclaw gateway restart
Wizard onboarding thực sự làm gì?
openclaw onboard là đường dẫn setup được khuyến nghị. Ở local mode nó hướng dẫn các bạn qua:
- Model/auth setup (Anthropic setup-token được khuyến nghị cho Claude subscriptions, OpenAI Codex OAuth được hỗ trợ, API keys tùy chọn, LM Studio local models được hỗ trợ)
- Workspace location + bootstrap files
- Gateway settings (bind/port/auth/tailscale)
- Providers (WhatsApp, Telegram, Discord, Mattermost (plugin), Signal, iMessage)
- Daemon install (LaunchAgent trên macOS; systemd user unit trên Linux/WSL2)
- Health checks và lựa chọn skills
Nó cũng cảnh báo nếu model đã cấu hình của các bạn không xác định hoặc thiếu auth.
Mình có cần subscription Claude hoặc OpenAI để chạy không?
Không. Các bạn có thể chạy OpenClaw với API keys (Anthropic/OpenAI/others) hoặc với local-only models để dữ liệu của các bạn ở trên thiết bị. Subscriptions (Claude Pro/Max hoặc OpenAI Codex) là các cách tùy chọn để xác thực các providers đó.
Docs: Anthropic, OpenAI, Local models, Models.
Mình có thể dùng subscription Claude Max mà không cần API key không?
Được. Các bạn có thể xác thực với setup-token thay vì API key. Đây là đường dẫn subscription.
Claude Pro/Max subscriptions không bao gồm API key, nên đây là cách tiếp cận đúng cho subscription accounts. Quan trọng: các bạn phải xác minh với Anthropic rằng việc sử dụng này được phép theo chính sách và điều khoản subscription của họ. Nếu các bạn muốn đường dẫn rõ ràng, được hỗ trợ nhất, hãy dùng Anthropic API key.
Xác thực “setup-token” của Anthropic hoạt động như thế nào?
claude setup-token tạo ra một token string qua Claude Code CLI (nó không có trong web console). Các bạn có thể chạy nó trên bất kỳ máy nào. Chọn Anthropic token (paste setup-token) trong wizard hoặc paste nó với openclaw models auth paste-token --provider anthropic. Token được lưu dưới dạng auth profile cho anthropic provider và được dùng như API key (không auto-refresh). Chi tiết hơn: OAuth.
Tìm setup-token của Anthropic ở đâu?
Nó không có trong Anthropic Console. Setup-token được tạo bởi Claude Code CLI trên bất kỳ máy nào:
claude setup-token
Copy token nó in ra, sau đó chọn Anthropic token (paste setup-token) trong wizard. Nếu các bạn muốn chạy nó trên gateway host, dùng openclaw models auth setup-token --provider anthropic. Nếu các bạn chạy claude setup-token ở nơi khác, paste nó trên gateway host với openclaw models auth paste-token --provider anthropic. Xem Anthropic.
Các bạn có hỗ trợ xác thực subscription Claude (Claude Pro/Max) không?
Có — qua setup-token. OpenClaw không còn tái sử dụng Claude Code CLI OAuth tokens nữa; dùng setup-token hoặc Anthropic API key. Tạo token ở bất kỳ đâu và paste nó trên gateway host. Xem Anthropic và OAuth.
Lưu ý: Claude subscription access được quản lý bởi điều khoản của Anthropic. Cho production hoặc multi-user workloads, API keys thường là lựa chọn an toàn hơn.
Tại sao mình thấy HTTP 429: rate_limit_error từ Anthropic?
Điều đó có nghĩa là Anthropic quota/rate limit của các bạn đã cạn kiệt cho window hiện tại. Nếu các bạn dùng Claude subscription (setup-token hoặc Claude Code OAuth), đợi window reset hoặc nâng cấp plan. Nếu các bạn dùng Anthropic API key, check Anthropic Console để xem usage/billing và tăng limits nếu cần.
Tip: set một fallback model để OpenClaw có thể tiếp tục reply trong khi provider bị rate-limited. Xem Models và OAuth.
AWS Bedrock có được hỗ trợ không?
Có - qua Amazon Bedrock (Converse) provider của pi-ai với manual config. Các bạn phải cung cấp AWS credentials/region trên gateway host và thêm Bedrock provider entry vào models config của các bạn. Xem Amazon Bedrock và Model providers. Nếu các bạn thích managed key flow, một OpenAI-compatible proxy trước Bedrock vẫn là lựa chọn hợp lệ.
Xác thực Codex hoạt động như thế nào?
OpenClaw hỗ trợ OpenAI Code (Codex) qua OAuth (ChatGPT sign-in). Wizard có thể chạy OAuth flow và sẽ set default model thành openai-codex/gpt-5.2 khi phù hợp. Xem Model providers và Wizard.
Các bạn có hỗ trợ xác thực subscription OpenAI (Codex OAuth) không?
Có. OpenClaw hỗ trợ đầy đủ OpenAI Code (Codex) subscription OAuth. Wizard onboarding có thể chạy OAuth flow cho các bạn.
Xem OAuth, Model providers, và Wizard.
Làm sao setup Gemini CLI OAuth?
Gemini CLI dùng plugin auth flow, không phải client id hoặc secret trong openclaw.json.
Các bước:
- Enable plugin:
openclaw plugins enable google-gemini-cli-auth - Login:
openclaw models auth login --provider google-gemini-cli --set-default
Cách này lưu OAuth tokens trong auth profiles trên gateway host. Chi tiết: Model providers.
Model local có ổn cho chat thông thường không?
Thường là không. OpenClaw cần context lớn + safety mạnh; các cards nhỏ bị truncate và leak. Nếu các bạn phải dùng, chạy build lớn nhất MiniMax M2.1 mà các bạn có thể chạy locally (LM Studio) và xem /gateway/local-models. Các models nhỏ hơn/quantized tăng rủi ro prompt-injection - xem Security.
Làm sao giữ traffic model hosted trong một region cụ thể?
Chọn các endpoints được pin theo region. OpenRouter expose các options US-hosted cho MiniMax, Kimi, và GLM; chọn variant US-hosted để giữ data trong region. Các bạn vẫn có thể list Anthropic/OpenAI cùng với chúng bằng cách dùng models.mode: "merge" để fallbacks vẫn available trong khi tôn trọng regioned provider các bạn chọn.
Mình có phải mua Mac Mini để cài này không?
Không. OpenClaw chạy trên macOS hoặc Linux (Windows qua WSL2). Mac mini là tùy chọn - một số người mua nó làm always-on host, nhưng một VPS nhỏ, home server, hoặc box cỡ Raspberry Pi cũng hoạt động.
Các bạn chỉ cần Mac cho các tools chỉ dành cho macOS. Cho iMessage, các bạn có thể giữ Gateway trên Linux và chạy imsg trên bất kỳ Mac nào qua SSH bằng cách trỏ channels.imessage.cliPath vào SSH wrapper. Nếu các bạn muốn các tools chỉ dành cho macOS khác, chạy Gateway trên Mac hoặc pair một macOS node.
Docs: iMessage, Nodes, Mac remote mode.
Mình có cần Mac mini để hỗ trợ iMessage không?
Các bạn cần một thiết bị macOS nào đó đã đăng nhập Messages. Nó không phải là Mac mini - bất kỳ Mac nào cũng được. Các tích hợp iMessage của OpenClaw chạy trên macOS (BlueBubbles hoặc imsg), trong khi Gateway có thể chạy ở nơi khác.
Các setup phổ biến:
- Chạy Gateway trên Linux/VPS, và trỏ
channels.imessage.cliPathvào SSH wrapper chạyimsgtrên Mac. - Chạy mọi thứ trên Mac nếu các bạn muốn setup single-machine đơn giản nhất.
Docs: iMessage, BlueBubbles, Mac remote mode.
Nếu mình mua Mac mini để chạy OpenClaw, mình có thể kết nối nó với MacBook Pro không?
Được. Mac mini có thể chạy Gateway, và MacBook Pro của các bạn có thể kết nối như một node (companion device). Nodes không chạy Gateway - chúng cung cấp các khả năng bổ sung như screen/camera/canvas và system.run trên thiết bị đó.
Pattern phổ biến:
- Gateway trên Mac mini (always-on).
- MacBook Pro chạy macOS app hoặc node host và pair với Gateway.
- Dùng
openclaw nodes status/openclaw nodes listđể xem nó.
Mình có thể dùng Bun không?
Bun không được khuyến nghị. Chúng mình thấy runtime bugs, đặc biệt với WhatsApp và Telegram. Dùng Node cho stable gateways.
Nếu các bạn vẫn muốn thử nghiệm với Bun, làm điều đó trên gateway không phải production mà không có WhatsApp/Telegram.
Telegram: điền gì vào allowFrom?
channels.telegram.allowFrom là Telegram user ID của người gửi (numeric, được khuyến nghị) hoặc @username. Nó không phải là bot username.
An toàn hơn (không có third-party bot):
- DM bot của các bạn, sau đó chạy
openclaw logs --followvà đọcfrom.id.
Official Bot API:
- DM bot của các bạn, sau đó gọi
https://api.telegram.org/bot<bot_token>/getUpdatesvà đọcmessage.from.id.
Third-party (ít private hơn):
- DM
@userinfobothoặc@getidsbot.
Xem /channels/telegram.
Nhiều người có thể dùng một số WhatsApp với các instance OpenClaw khác nhau không?
Được, qua multi-agent routing. Bind DM WhatsApp của mỗi người gửi (peer kind: "dm", sender E.164 như +15551234567) với một agentId khác nhau, để mỗi người có workspace và session store riêng. Replies vẫn đến từ cùng WhatsApp account, và DM access control (channels.whatsapp.dmPolicy / channels.whatsapp.allowFrom) là global cho mỗi WhatsApp account. Xem Multi-Agent Routing và WhatsApp.
Mình có thể chạy agent “chat nhanh” và agent “Opus cho coding” không?
Được. Dùng multi-agent routing: cho mỗi agent default model riêng, sau đó bind inbound routes (provider account hoặc specific peers) với mỗi agent. Config ví dụ nằm trong Multi-Agent Routing. Xem thêm Models và Configuration.
Homebrew có hoạt động trên Linux không?
Có. Homebrew hỗ trợ Linux (Linuxbrew). Setup nhanh:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
brew install <formula>
Nếu các bạn chạy OpenClaw qua systemd, đảm bảo service PATH bao gồm /home/linuxbrew/.linuxbrew/bin (hoặc brew prefix của các bạn) để các tools cài qua brew resolve trong non-login shells. Các builds gần đây cũng prepend các user bin dirs phổ biến trên Linux systemd services (ví dụ ~/.local/bin, ~/.npm-global/bin, ~/.local/share/pnpm, ~/.bun/bin) và tôn trọng PNPM_HOME, NPM_CONFIG_PREFIX, BUN_INSTALL, VOLTA_HOME, ASDF_DATA_DIR, NVM_DIR, và FNM_DIR khi được set.
Sự khác biệt giữa cài đặt hackable (git) và npm install là gì?
- Hackable (git) install: full source checkout, có thể edit, tốt nhất cho contributors. Các bạn chạy builds locally và có thể patch code/docs.
- npm install: global CLI install, không có repo, tốt nhất cho “chỉ chạy thôi.” Updates đến từ npm dist-tags.
Docs: Getting started, Updating.
Mình có thể chuyển đổi giữa npm và git installs sau này không?
Được. Cài flavor khác, sau đó chạy Doctor để gateway service trỏ đến entrypoint mới. Cách này không xóa dữ liệu của các bạn - nó chỉ thay đổi OpenClaw code install. State (~/.openclaw) và workspace (~/.openclaw/workspace) của các bạn vẫn nguyên.
Từ npm → git:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm build
openclaw doctor
openclaw gateway restart
Từ git → npm:
npm install -g openclaw@latest
openclaw doctor
openclaw gateway restart
Doctor phát hiện gateway service entrypoint mismatch và đề nghị rewrite service config để khớp với install hiện tại (dùng --repair trong automation).
Backup tips: xem Backup strategy.
Nên chạy Gateway trên laptop hay VPS?
Câu trả lời ngắn: nếu các bạn muốn độ tin cậy 24/7, dùng VPS. Nếu các bạn muốn ít ma sát nhất và ổn với sleep/restarts, chạy nó locally.
Laptop (local Gateway)
- Ưu điểm: không tốn tiền server, truy cập trực tiếp local files, browser window hiển thị.
- Nhược điểm: sleep/network drops = disconnects, OS updates/reboots làm gián đoạn, phải giữ thức.
VPS / cloud
- Ưu điểm: always-on, mạng ổn định, không có vấn đề laptop sleep, dễ giữ chạy hơn.
- Nhược điểm: thường chạy headless (dùng screenshots), chỉ truy cập file remote, các bạn phải SSH để updates.
Lưu ý cụ thể OpenClaw: WhatsApp/Telegram/Slack/Mattermost (plugin)/Discord đều hoạt động tốt từ VPS. Trade-off thực sự duy nhất là headless browser vs cửa sổ hiển thị. Xem Browser.
Khuyến nghị mặc định: VPS nếu các bạn từng gặp gateway disconnects trước đây. Local rất tốt khi các bạn đang dùng Mac tích cực và muốn truy cập local file hoặc UI automation với browser hiển thị.
Việc chạy OpenClaw trên máy chuyên dụng quan trọng như thế nào?
Không bắt buộc, nhưng được khuyến nghị cho độ tin cậy và cô lập.
- Dedicated host (VPS/Mac mini/Pi): always-on, ít gián đoạn sleep/reboot hơn, permissions sạch hơn, dễ giữ chạy hơn.
- Shared laptop/desktop: hoàn toàn ổn cho testing và sử dụng tích cực, nhưng hãy chờ đợi pauses khi máy sleep hoặc updates.
Nếu các bạn muốn tốt nhất của cả hai thế giới, giữ Gateway trên dedicated host và pair laptop của các bạn như một node cho local screen/camera/exec tools. Xem Nodes. Để hướng dẫn security, đọc Security.
Yêu cầu VPS tối thiểu và OS được khuyến nghị là gì?
OpenClaw rất nhẹ. Cho Gateway cơ bản + một chat channel:
- Tối thiểu tuyệt đối: 1 vCPU, 1GB RAM, ~500MB disk.
- Khuyến nghị: 1-2 vCPU, 2GB RAM hoặc hơn để có dư địa (logs, media, nhiều channels). Node tools và browser automation có thể tốn tài nguyên.
OS: dùng Ubuntu LTS (hoặc bất kỳ Debian/Ubuntu hiện đại nào). Đường dẫn cài đặt Linux được test tốt nhất ở đó.
Docs: Linux, VPS hosting.
Mình có thể chạy OpenClaw trong VM không và yêu cầu là gì?
Được. Coi VM giống như VPS: nó cần always on, có thể reach được, và có đủ RAM cho Gateway và bất kỳ channels nào các bạn enable.
Hướng dẫn cơ bản:
- Tối thiểu tuyệt đối: 1 vCPU, 1GB RAM.
- Khuyến nghị: 2GB RAM hoặc hơn nếu các bạn chạy nhiều channels, browser automation, hoặc media tools.
- OS: Ubuntu LTS hoặc Debian/Ubuntu hiện đại khác.
Nếu các bạn đang trên Windows, WSL2 là setup kiểu VM dễ nhất và có khả năng tương thích tooling tốt nhất. Xem Windows, VPS hosting. Nếu các bạn đang chạy macOS trong VM, xem macOS VM.
OpenClaw là gì?
OpenClaw là gì, trong một đoạn văn?
OpenClaw là trợ lý AI cá nhân mà các bạn chạy trên thiết bị của mình. Nó reply trên các bề mặt nhắn tin các bạn đã dùng (WhatsApp, Telegram, Slack, Mattermost (plugin), Discord, Google Chat, Signal, iMessage, WebChat) và cũng có thể làm voice + Canvas trực tiếp trên các platforms được hỗ trợ. Gateway là control plane always-on; assistant là sản phẩm.
Giá trị cốt lõi là gì?
OpenClaw không phải là “chỉ một Claude wrapper.” Nó là một control plane local-first cho phép các bạn chạy một assistant có khả năng trên phần cứng của chính mình, có thể reach được từ các chat apps các bạn đã dùng, với stateful sessions, memory, và tools - mà không cần trao quyền kiểm soát workflows của các bạn cho một hosted SaaS.
Điểm nổi bật:
- Thiết bị của các bạn, dữ liệu của các bạn: chạy Gateway ở bất cứ đâu các bạn muốn (Mac, Linux, VPS) và giữ workspace + session history ở local.
- Channels thật, không phải web sandbox: WhatsApp/Telegram/Slack/Discord/Signal/iMessage/etc, cộng thêm mobile voice và Canvas trên các platforms được hỗ trợ.
- Model-agnostic: dùng Anthropic, OpenAI, MiniMax, OpenRouter, etc., với per-agent routing và failover.
- Lựa chọn local-only: chạy local models để tất cả dữ liệu có thể ở trên thiết bị của các bạn nếu muốn.
- Multi-agent routing: các agents riêng biệt cho mỗi channel, account, hoặc task, mỗi cái có workspace và defaults riêng.
- Open source và hackable: kiểm tra, mở rộng, và self-host mà không bị vendor lock-in.
Docs: Gateway, Channels, Multi-agent, Memory.
Mình vừa setup xong - nên làm gì đầu tiên?
Các dự án đầu tiên tốt:
- Build một website (WordPress, Shopify, hoặc static site đơn giản).
- Prototype một mobile app (outline, screens, API plan).
- Tổ chức files và folders (cleanup, naming, tagging).
- Kết nối Gmail và tự động hóa summaries hoặc follow ups.
Nó có thể xử lý các tasks lớn, nhưng nó hoạt động tốt nhất khi các bạn chia chúng thành các phases và dùng sub agents cho parallel work.
5 use case hàng ngày hàng đầu cho OpenClaw là gì?
Các chiến thắng hàng ngày thường trông như:
- Personal briefings: tóm tắt inbox, calendar, và tin tức các bạn quan tâm.
- Research và drafting: research nhanh, tóm tắt, và bản nháp đầu tiên cho emails hoặc docs.
- Reminders và follow ups: cron hoặc heartbeat driven nudges và checklists.
- Browser automation: điền forms, thu thập dữ liệu, và lặp lại các web tasks.
- Cross device coordination: gửi task từ phone, để Gateway chạy nó trên server, và nhận kết quả lại trong chat.
OpenClaw có thể giúp lead gen, outreach, ads và blogs cho SaaS không?
Có cho research, qualification, và drafting. Nó có thể scan sites, build shortlists, tóm tắt prospects, và viết bản nháp outreach hoặc ad copy.
Cho outreach hoặc ad runs, giữ con người trong vòng lặp. Tránh spam, tuân theo luật địa phương và chính sách platform, và review bất cứ thứ gì trước khi gửi. Pattern an toàn nhất là để OpenClaw draft và các bạn approve.
Docs: Security.
Ưu điểm so với Claude Code cho web development là gì?
OpenClaw là personal assistant và coordination layer, không phải IDE replacement. Dùng Claude Code hoặc Codex cho vòng lặp coding trực tiếp nhanh nhất bên trong repo. Dùng OpenClaw khi các bạn muốn durable memory, cross-device access, và tool orchestration.
Ưu điểm:
- Persistent memory + workspace qua các sessions
- Multi-platform access (WhatsApp, Telegram, TUI, WebChat)
- Tool orchestration (browser, files, scheduling, hooks)
- Always-on Gateway (chạy trên VPS, tương tác từ bất cứ đâu)
- Nodes cho local browser/screen/camera/exec
Showcase: https://openclaw.ai/showcase
Skills và automation
Làm sao customize skills mà không làm repo bẩn?
Dùng managed overrides thay vì edit repo copy. Đặt các thay đổi của các bạn vào ~/.openclaw/skills/<name>/SKILL.md (hoặc thêm folder qua skills.load.extraDirs trong ~/.openclaw/openclaw.json). Precedence là <workspace>/skills > ~/.openclaw/skills > bundled, nên managed overrides thắng mà không chạm vào git. Chỉ các edits xứng đáng upstream mới nên nằm trong repo và đi ra như PRs.
Mình có thể load skills từ folder tùy chỉnh không?
Được. Thêm extra directories qua skills.load.extraDirs trong ~/.openclaw/openclaw.json (precedence thấp nhất). Default precedence vẫn là: <workspace>/skills → ~/.openclaw/skills → bundled → skills.load.extraDirs. clawhub cài vào ./skills mặc định, mà OpenClaw coi như <workspace>/skills.
Làm sao dùng các model khác nhau cho các task khác nhau?
Hôm nay các patterns được hỗ trợ là:
- Cron jobs: các jobs cô lập có thể set
modeloverride cho mỗi job. - Sub-agents: route tasks đến các agents riêng biệt với default models khác nhau.
- On-demand switch: dùng
/modelđể đổi model session hiện tại bất cứ lúc nào.
Xem Cron jobs, Multi-Agent Routing, và Slash commands.
Bot bị đơ khi làm việc nặng. Làm sao offload?
Dùng sub-agents cho các tasks dài hoặc parallel. Sub-agents chạy trong session riêng của chúng, trả về summary, và giữ main chat của các bạn responsive.
Yêu cầu bot của các bạn “spawn a sub-agent for this task” hoặc dùng /subagents. Dùng /status trong chat để xem Gateway đang làm gì ngay bây giờ (và liệu nó có bận không).
Token tip: các tasks dài và sub-agents đều tiêu thụ tokens. Nếu chi phí là mối quan tâm, set model rẻ hơn cho sub-agents qua agents.defaults.subagents.model.
Docs: Sub-agents.
Cron hoặc reminders không chạy. Nên check gì?
Cron chạy bên trong Gateway process. Nếu Gateway không chạy liên tục, các scheduled jobs sẽ không chạy.
Checklist:
- Xác nhận cron được enable (
cron.enabled) vàOPENCLAW_SKIP_CRONkhông được set. - Check Gateway đang chạy 24/7 (không sleep/restarts).
- Xác minh timezone settings cho job (
--tzvs host timezone).
Debug:
openclaw cron run <jobId> --force
openclaw cron runs --id <jobId> --limit 50
Docs: Cron jobs, Cron vs Heartbeat.
Làm sao cài skills trên Linux?
Dùng ClawHub (CLI) hoặc drop skills vào workspace của các bạn. macOS Skills UI không có trên Linux. Browse skills tại https://clawhub.com.
Cài ClawHub CLI (chọn một package manager):
npm i -g clawhub
pnpm add -g clawhub
OpenClaw có thể chạy tasks theo lịch hoặc liên tục ở background không?
Được. Dùng Gateway scheduler:
- Cron jobs cho scheduled hoặc recurring tasks (persist qua restarts).
- Heartbeat cho “main session” periodic checks.
- Isolated jobs cho autonomous agents post summaries hoặc deliver đến chats.
Docs: Cron jobs, Cron vs Heartbeat, Heartbeat.
Mình có thể chạy skills chỉ dành cho Apple/macOS từ Linux không?
Không trực tiếp. macOS skills bị gated bởi metadata.openclaw.os cộng với required binaries, và skills chỉ xuất hiện trong system prompt khi chúng eligible trên Gateway host. Trên Linux, các skills chỉ dành cho darwin (như imsg, apple-notes, apple-reminders) sẽ không load trừ khi các bạn override gating.
Các bạn có ba patterns được hỗ trợ:
Option A - chạy Gateway trên Mac (đơn giản nhất). Chạy Gateway nơi macOS binaries tồn tại, sau đó kết nối từ Linux ở remote mode hoặc qua Tailscale. Skills load bình thường vì Gateway host là macOS.
Option B - dùng macOS node (không SSH).
Chạy Gateway trên Linux, pair một macOS node (menubar app), và set Node Run Commands thành “Always Ask” hoặc “Always Allow” trên Mac. OpenClaw có thể coi macOS-only skills là eligible khi required binaries tồn tại trên node. Agent chạy các skills đó qua nodes tool. Nếu các bạn chọn “Always Ask”, approve “Always Allow” trong prompt sẽ thêm command đó vào allowlist.
Option C - proxy macOS binaries qua SSH (advanced). Giữ Gateway trên Linux, nhưng làm cho required CLI binaries resolve thành SSH wrappers chạy trên Mac. Sau đó override skill để allow Linux để nó vẫn eligible.
- Tạo SSH wrapper cho binary (ví dụ:
imsg):#!/usr/bin/env bash set -euo pipefail exec ssh -T user@mac-host /opt/homebrew/bin/imsg "$@" - Đặt wrapper vào
PATHtrên Linux host (ví dụ~/bin/imsg). - Override skill metadata (workspace hoặc
~/.openclaw/skills) để allow Linux:--- name: imsg description: iMessage/SMS CLI for listing chats, history, watch, and sending. metadata: { "openclaw": { "os": ["darwin", "linux"], "requires": { "bins": ["imsg"] } } } --- - Start session mới để skills snapshot refresh.
Cho iMessage cụ thể, các bạn cũng có thể trỏ channels.imessage.cliPath vào SSH wrapper (OpenClaw chỉ cần stdio). Xem iMessage.
Các bạn có tích hợp Notion hoặc HeyGen không?
Chưa có built-in hôm nay.
Options:
- Custom skill / plugin: tốt nhất cho reliable API access (Notion/HeyGen đều có APIs).
- Browser automation: hoạt động mà không cần code nhưng chậm hơn và dễ vỡ hơn.
Nếu các bạn muốn giữ context cho mỗi client (agency workflows), một pattern đơn giản là:
- Một Notion page cho mỗi client (context + preferences + active work).
- Yêu cầu agent fetch page đó ở đầu session.
Nếu các bạn muốn native integration, mở feature request hoặc build một skill targeting các APIs đó.
Cài skills:
clawhub install <skill-slug>
clawhub update --all
ClawHub cài vào ./skills dưới current directory của các bạn (hoặc fallback về configured OpenClaw workspace); OpenClaw coi đó là <workspace>/skills ở session tiếp theo. Cho shared skills qua các agents, đặt chúng vào ~/.openclaw/skills/<name>/SKILL.md. Một số skills expect binaries cài qua Homebrew; trên Linux có nghĩa là Linuxbrew (xem Homebrew Linux FAQ entry ở trên). Xem Skills và ClawHub.
Làm sao cài Chrome extension để browser takeover?
Dùng built-in installer, sau đó load unpacked extension trong Chrome:
openclaw browser extension install
openclaw browser extension path
Sau đó Chrome → chrome://extensions → enable “Developer mode” → “Load unpacked” → chọn folder đó.
Full guide (bao gồm remote Gateway + security notes): Chrome extension
Nếu Gateway chạy trên cùng máy với Chrome (default setup), các bạn thường không cần gì thêm. Nếu Gateway chạy ở nơi khác, chạy node host trên browser machine để Gateway có thể proxy browser actions. Các bạn vẫn cần click extension button trên tab các bạn muốn điều khiển (nó không tự attach).
Sandboxing và memory
Có tài liệu sandboxing chuyên dụng không?
Có. Xem Sandboxing. Cho Docker-specific setup (full gateway trong Docker hoặc sandbox images), xem Docker.
Mình có thể giữ DMs cá nhân nhưng làm groups public sandboxed với một agent không
Được - nếu private traffic của các bạn là DMs và public traffic của các bạn là groups.
Dùng agents.defaults.sandbox.mode: "non-main" để group/channel sessions (non-main keys) chạy trong Docker, trong khi main DM session ở trên host. Sau đó hạn chế tools nào available trong sandboxed sessions qua tools.sandbox.tools.
Setup walkthrough + example config: Groups: personal DMs + public groups
Key config reference: Gateway configuration
Làm sao bind folder host vào sandbox?
Set agents.defaults.sandbox.docker.binds thành ["host:path:mode"] (ví dụ, "/home/user/src:/src:ro"). Global + per-agent binds merge; per-agent binds bị ignore khi scope: "shared". Dùng :ro cho bất cứ thứ gì nhạy cảm và nhớ rằng binds bypass sandbox filesystem walls. Xem Sandboxing và Sandbox vs Tool Policy vs Elevated cho examples và safety notes.
Memory hoạt động như thế nào?
OpenClaw memory chỉ là các Markdown files trong agent workspace:
- Daily notes trong
memory/YYYY-MM-DD.md - Curated long-term notes trong
MEMORY.md(chỉ main/private sessions)
OpenClaw cũng chạy silent pre-compaction memory flush để nhắc model viết durable notes trước auto-compaction. Cái này chỉ chạy khi workspace writable (read-only sandboxes skip nó). Xem Memory.
Memory cứ quên mất. Làm sao để nó nhớ lâu?
Yêu cầu bot viết fact vào memory. Long-term notes thuộc về MEMORY.md, short-term context đi vào memory/YYYY-MM-DD.md.
Đây vẫn là một khu vực chúng mình đang cải thiện. Nó giúp nhắc model lưu memories; nó sẽ biết phải làm gì. Nếu nó cứ quên, xác minh Gateway đang dùng cùng workspace ở mỗi lần chạy.
Docs: Memory, Agent workspace.
Semantic memory search có cần OpenAI API key không?
Chỉ khi các bạn dùng OpenAI embeddings. Codex OAuth cover chat/completions và không grant embeddings access, nên đăng nhập với Codex (OAuth hoặc Codex CLI login) không giúp cho semantic memory search. OpenAI embeddings vẫn cần API key thật (OPENAI_API_KEY hoặc models.providers.openai.apiKey).
Nếu các bạn không set provider explicitly, OpenClaw tự động chọn provider khi nó có thể resolve API key (auth profiles, models.providers.*.apiKey, hoặc env vars). Nó ưu tiên OpenAI nếu OpenAI key resolve được, nếu không thì Gemini nếu Gemini key resolve được. Nếu cả hai keys đều không available, memory search vẫn disabled cho đến khi các bạn cấu hình nó. Nếu các bạn có local model path được cấu hình và present, OpenClaw ưu tiên local.
Nếu các bạn muốn ở local, set memorySearch.provider = "local" (và tùy chọn memorySearch.fallback = "none"). Nếu các bạn muốn Gemini embeddings, set memorySearch.provider = "gemini" và cung cấp GEMINI_API_KEY (hoặc memorySearch.remote.apiKey). Chúng mình hỗ trợ OpenAI, Gemini, hoặc local embedding models - xem Memory cho chi tiết setup.
Memory có tồn tại mãi mãi không? Giới hạn là gì?
Memory files (MEMORY.md, memory/*.md) persist mãi mãi trừ khi các bạn xóa chúng. Không có giới hạn cứng về kích thước, nhưng các files lớn hơn có thể làm chậm semantic search và tốn nhiều tokens hơn khi được đọc vào context.
Best practices:
- Giữ
MEMORY.mdngắn gọn (các facts quan trọng nhất). - Để daily notes tích lũy tự nhiên; chúng được search semantically.
- Archive hoặc xóa các daily notes cũ nếu chúng không còn liên quan.
Xem Memory cho chi tiết.
Dữ liệu lưu ở đâu trên disk
Tất cả dữ liệu dùng với OpenClaw có được lưu local không?
Không - State của OpenClaw là local, nhưng các external services vẫn thấy những gì các bạn gửi cho chúng.
- Local mặc định: sessions, memory files, config, và workspace nằm trên Gateway host (
~/.openclaw+ workspace directory của các bạn). - Remote theo yêu cầu: messages các bạn gửi đến model providers (Anthropic/OpenAI/etc.) đi đến APIs của họ, và chat platforms (WhatsApp/Telegram/Slack/etc.) lưu message data trên servers của họ.
- Các bạn kiểm soát footprint: dùng local models giữ prompts trên máy của các bạn, nhưng channel traffic vẫn đi qua servers của channel.
Liên quan: Agent workspace, Memory.
OpenClaw lưu dữ liệu ở đâu?
Mọi thứ nằm dưới $OPENCLAW_STATE_DIR (mặc định: ~/.openclaw):
| Path | Purpose |
|---|---|
$OPENCLAW_STATE_DIR/openclaw.json | Main config (JSON5) |
$OPENCLAW_STATE_DIR/credentials/oauth.json | Legacy OAuth import (copied vào auth profiles lần đầu dùng) |
$OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth-profiles.json | Auth profiles (OAuth + API keys) |
$OPENCLAW_STATE_DIR/agents/<agentId>/agent/auth.json | Runtime auth cache (managed tự động) |
$OPENCLAW_STATE_DIR/credentials/ | Provider state (ví dụ whatsapp/<accountId>/creds.json) |
$OPENCLAW_STATE_DIR/agents/ | Per-agent state (agentDir + sessions) |
$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/ | Conversation history & state (per agent) |
$OPENCLAW_STATE_DIR/agents/<agentId>/sessions/sessions.json | Session metadata (per agent) |
Legacy single-agent path: ~/.openclaw/agent/* (migrated bởi openclaw doctor).
Workspace của các bạn (AGENTS.md, memory files, skills, etc.) là riêng biệt và được cấu hình qua agents.defaults.workspace (mặc định: ~/.openclaw/workspace).
AGENTS.md / SOUL.md / USER.md / MEMORY.md nên để ở đâu?
Các files này nằm trong agent workspace, không phải ~/.openclaw.
- Workspace (per agent):
AGENTS.md,SOUL.md,IDENTITY.md,USER.md,MEMORY.md(hoặcmemory.md),memory/YYYY-MM-DD.md, tùy chọnHEARTBEAT.md. - State dir (
~/.openclaw): config, credentials, auth profiles, sessions, logs, và shared skills (~/.openclaw/skills).
Default workspace là ~/.openclaw/workspace, có thể cấu hình qua:
{
agents: { defaults: { workspace: "~/.openclaw/workspace" } },
}
Nếu bot “quên” sau khi restart, xác nhận Gateway đang dùng cùng workspace ở mỗi lần launch (và nhớ: remote mode dùng workspace của gateway host, không phải laptop local của các bạn).
Tip: nếu các bạn muốn behavior hoặc preference bền vững, yêu cầu bot viết nó vào AGENTS.md hoặc MEMORY.md thay vì dựa vào chat history.
Xem Agent workspace và Memory.
Chiến lược backup được khuyến nghị là gì?
Đặt agent workspace của các bạn vào private git repo và backup nó ở đâu đó private (ví dụ GitHub private). Cách này capture memory + AGENTS/SOUL/USER files, và cho phép các bạn restore “tâm trí” của assistant sau này.
Không commit bất cứ thứ gì dưới ~/.openclaw (credentials, sessions, tokens). Nếu các bạn cần full restore, backup cả workspace và state directory riêng biệt (xem câu hỏi migration ở trên).
Docs: Agent workspace.
Làm sao gỡ cài đặt OpenClaw hoàn toàn?
Xem hướng dẫn chuyên dụng: Uninstall.
Agents có thể làm việc bên ngoài workspace không?
Được. Workspace là default cwd và memory anchor, không phải hard sandbox. Relative paths resolve bên trong workspace, nhưng absolute paths có thể truy cập các host locations khác trừ khi sandboxing được enable. Nếu các bạn cần isolation, dùng agents.defaults.sandbox hoặc per-agent sandbox settings. Nếu các bạn muốn một repo là default working directory, trỏ workspace của agent đó đến repo root. OpenClaw repo chỉ là source code; giữ workspace riêng biệt trừ khi các bạn cố ý muốn agent làm việc bên trong nó.
Ví dụ (repo làm default cwd):
{
agents: {
defaults: {
workspace: "~/Projects/my-repo",
},
},
}
Mình đang ở remote mode - session store ở đâu?
Session state được sở hữu bởi gateway host. Nếu các bạn đang ở remote mode, session store các bạn quan tâm nằm trên remote machine, không phải laptop local của các bạn. Xem Session management.
Config cơ bản
Config có format gì? Nó ở đâu?
OpenClaw đọc JSON5 config tùy chọn từ $OPENCLAW_CONFIG_PATH (mặc định: ~/.openclaw/openclaw.json):
$OPENCLAW_CONFIG_PATH
Nếu file thiếu, nó dùng safe-ish defaults (bao gồm default workspace là ~/.openclaw/workspace).
Mình set gateway.bind: "lan" (hoặc "tailnet") và giờ không có gì listen / UI báo unauthorized
Non-loopback binds yêu cầu auth. Cấu hình gateway.auth.mode + gateway.auth.token (hoặc dùng OPENCLAW_GATEWAY_TOKEN).
{
gateway: {
bind: "lan",
auth: {
mode: "token",
token: "replace-me",
},
},
}
Xem Gateway configuration và Web surfaces.
Tại sao giờ mình cần token trên localhost?
Wizard tạo gateway token mặc định (ngay cả trên loopback) nên local WS clients phải xác thực. Cách này chặn các local processes khác gọi Gateway. Paste token vào Control UI settings (hoặc client config của các bạn) để kết nối.
Nếu các bạn thực sự muốn open loopback, xóa gateway.auth khỏi config của các bạn. Doctor có thể tạo token cho các bạn bất cứ lúc nào: openclaw doctor --generate-gateway-token.
Mình có phải restart sau khi đổi config không?
Gateway theo dõi config và hỗ trợ hot-reload:
gateway.reload.mode: "hybrid"(mặc định): hot-apply safe changes, restart cho critical oneshot,restart,offcũng được hỗ trợ
Làm sao bật web search (và web fetch)?
web_fetch hoạt động mà không cần API key. web_search yêu cầu Brave Search API key. Khuyến nghị: chạy openclaw configure --section web để lưu nó vào tools.web.search.apiKey. Environment alternative: set BRAVE_API_KEY cho Gateway process.
{
tools: {
web: {
search: {
enabled: true,
apiKey: "BRAVE_API_KEY_HERE",
maxResults: 5,
},
fetch: {
enabled: true,
},
},
},
}
Lưu ý:
- Nếu các bạn dùng allowlists, thêm
web_search/web_fetchhoặcgroup:web. web_fetchđược enable mặc định (trừ khi explicitly disabled).- Daemons đọc env vars từ
~/.openclaw/.env(hoặc service environment).
Docs: Web tools.
config.apply xóa sạch config của mình. Làm sao khôi phục và tránh điều này?
config.apply ghi đè toàn bộ config với object mới. Nếu các bạn muốn merge, dùng config.merge thay vào đó.
Khôi phục: nếu các bạn có backup, restore nó. Nếu không, chạy lại wizard onboarding hoặc tái tạo config thủ công.
Tránh: luôn dùng config.merge cho partial updates, hoặc backup config trước khi apply.
Làm sao chạy Gateway trung tâm với các workers chuyên biệt trên nhiều thiết bị?
Pattern phổ biến là một Gateway (ví dụ Raspberry Pi) cộng với nodes và agents:
- Gateway (central): sở hữu channels (Signal/WhatsApp), routing, và sessions.
- Nodes (devices): Macs/iOS/Android kết nối như peripherals và expose local tools (
system.run,canvas,camera). - Agents (workers): các brains/workspaces riêng biệt cho special roles (ví dụ “Hetzner ops”, “Personal data”).
- Sub-agents: spawn background work từ main agent khi các bạn muốn parallelism.
- TUI: kết nối với Gateway và switch agents/sessions.
Docs: Nodes, Remote access, Multi-Agent Routing, Sub-agents, TUI.
Browser OpenClaw có thể chạy headless không?
Được. Đó là config option:
{
browser: { headless: true },
agents: {
defaults: {
sandbox: { browser: { headless: true } },
},
},
}
Mặc định là false (headful). Headless có nhiều khả năng trigger anti-bot checks trên một số sites. Xem Browser.
Headless dùng cùng Chromium engine và hoạt động cho hầu hết automation (forms, clicks, scraping, logins). Sự khác biệt chính:
- Không có browser window hiển thị (dùng screenshots nếu các bạn cần visuals).
- Một số sites nghiêm ngặt hơn về automation ở headless mode (CAPTCHAs, anti-bot). Ví dụ, X/Twitter thường chặn headless sessions.
Làm sao dùng Brave để điều khiển browser?
Set browser.executablePath thành Brave binary của các bạn (hoặc bất kỳ Chromium-based browser nào) và restart Gateway. Xem full config examples trong Browser.
Remote gateways + nodes
Lệnh lan truyền giữa Telegram, gateway và nodes như thế nào?
Telegram messages được xử lý bởi gateway. Gateway chạy agent và chỉ sau đó mới gọi nodes qua Gateway WebSocket khi node tool được cần:
Telegram → Gateway → Agent → node.* → Node → Gateway → Telegram
Nodes không thấy inbound provider traffic; chúng chỉ nhận node RPC calls.
Làm sao agent của mình truy cập máy tính nếu Gateway được host remote?
Câu trả lời ngắn: pair máy tính của các bạn như một node. Gateway chạy ở nơi khác, nhưng nó có thể gọi node.* tools (screen, camera, system) trên local machine của các bạn qua Gateway WebSocket.
Setup điển hình:
- Chạy Gateway trên always-on host (VPS/home server).
- Đặt Gateway host + máy tính của các bạn trên cùng tailnet.
- Đảm bảo Gateway WS có thể reach được (tailnet bind hoặc SSH tunnel).
- Mở macOS app locally và kết nối ở Remote over SSH mode (hoặc direct tailnet) để nó có thể register như một node.
- Approve node trên Gateway:
openclaw nodes pending openclaw nodes approve <requestId>
Không cần separate TCP bridge; nodes kết nối qua Gateway WebSocket.
Security reminder: pairing một macOS node cho phép system.run trên máy đó. Chỉ pair các devices các bạn tin tưởng, và review Security.
Docs: Nodes, Gateway protocol, macOS remote mode, Security.
Tailscale đã kết nối nhưng không có reply. Giờ làm sao?
Check cơ bản:
- Gateway đang chạy:
openclaw gateway status - Gateway health:
openclaw status - Channel health:
openclaw channels status
Sau đó xác minh auth và routing:
- Nếu các bạn dùng Tailscale Serve, đảm bảo
gateway.auth.allowTailscaleđược set đúng. - Nếu các bạn kết nối qua SSH tunnel, xác nhận local tunnel đang up và trỏ đúng port.
- Xác nhận allowlists của các bạn (DM hoặc group) bao gồm account của các bạn.
Docs: Tailscale, Remote access, Channels.
Hai instance OpenClaw có thể nói chuyện với nhau không (local + VPS)?
Được. Không có built-in “bot-to-bot” bridge, nhưng các bạn có thể wire nó lên theo một vài cách đáng tin cậy:
Đơn giản nhất: dùng normal chat channel mà cả hai bots có thể truy cập (Telegram/Slack/WhatsApp). Để Bot A gửi message đến Bot B, sau đó để Bot B reply như bình thường.
CLI bridge (generic): chạy script gọi Gateway khác với openclaw agent --message ... --deliver, targeting một chat nơi bot khác lắng nghe. Nếu một bot ở trên remote VPS, trỏ CLI của các bạn đến remote Gateway đó qua SSH/Tailscale (xem Remote access).
Example pattern (chạy từ máy có thể reach target Gateway):
openclaw agent --message "Hello from local bot" --deliver --channel telegram --reply-to <chat-id>
Tip: thêm guardrail để hai bots không loop vô tận (mention-only, channel allowlists, hoặc rule “do not reply to bot messages”).
Docs: Remote access, Agent CLI, Agent send.
Mình có cần VPS riêng cho nhiều agents không?
Không. Một Gateway có thể host nhiều agents, mỗi cái có workspace, model defaults, và routing riêng. Đó là setup bình thường và nó rẻ hơn và đơn giản hơn nhiều so với chạy một VPS cho mỗi agent.
Dùng VPS riêng chỉ khi các bạn cần hard isolation (security boundaries) hoặc configs rất khác nhau mà các bạn không muốn share. Nếu không, giữ một Gateway và dùng nhiều agents hoặc sub-agents.
Có lợi ích gì khi dùng node trên laptop cá nhân thay vì SSH từ VPS không?
Có - nodes là cách first-class để reach laptop của các bạn từ remote Gateway, và chúng unlock nhiều hơn shell access. Gateway chạy trên macOS/Linux (Windows qua WSL2) và rất nhẹ (một VPS nhỏ hoặc box cỡ Raspberry Pi là ổn; 4 GB RAM là đủ), nên setup phổ biến là always-on host cộng với laptop của các bạn như một node.
- Không cần inbound SSH. Nodes kết nối ra Gateway WebSocket và dùng device pairing.
- Safer execution controls.
system.runđược gated bởi node allowlists/approvals trên laptop đó. - Nhiều device tools hơn. Nodes expose
canvas,camera, vàscreenngoàisystem.run. - Local browser automation. Giữ Gateway trên VPS, nhưng chạy Chrome locally và relay control với Chrome extension + node host trên laptop.
SSH ổn cho ad-hoc shell access, nhưng nodes đơn giản hơn cho ongoing agent workflows và device automation.
Docs: Nodes, Nodes CLI, Chrome extension.
Nên cài trên laptop thứ hai hay chỉ thêm node?
Nếu các bạn chỉ cần local tools (screen/camera/exec) trên laptop thứ hai, thêm nó như một node. Cách này giữ single Gateway và tránh duplicated config. Local node tools hiện tại chỉ dành cho macOS, nhưng chúng mình có kế hoạch mở rộng chúng sang các OSes khác.
Cài second Gateway chỉ khi các bạn cần hard isolation hoặc hai bots hoàn toàn riêng biệt.
Docs: Nodes, Nodes CLI, Multiple gateways.
Nodes có chạy gateway service không?
Không. Chỉ một gateway nên chạy trên mỗi host trừ khi các bạn cố ý chạy isolated profiles (xem Multiple gateways). Nodes là peripherals kết nối với gateway (iOS/Android nodes, hoặc macOS “node mode” trong menubar app). Cho headless node hosts và CLI control, xem Node host CLI.
Full restart được yêu cầu cho gateway, discovery, và canvasHost changes.
Có cách API / RPC nào để apply config không?
Có. config.apply validates + writes full config và restarts Gateway như một phần của operation.
config.apply xóa sạch config của mình. Làm sao khôi phục và tránh điều này?
config.apply thay thế toàn bộ config. Nếu các bạn gửi partial object, mọi thứ khác bị xóa.
Khôi phục:
- Restore từ backup (git hoặc copied
~/.openclaw/openclaw.json). - Nếu các bạn không có backup, chạy lại
openclaw doctorvà reconfigure channels/models. - Nếu điều này không mong đợi, file bug và include last known config hoặc bất kỳ backup nào.
- Local coding agent thường có thể reconstruct working config từ logs hoặc history.
Tránh nó:
- Dùng
openclaw config setcho small changes. - Dùng
openclaw configurecho interactive edits.
Docs: Config, Configure, Doctor.
Config “hợp lý” tối thiểu cho lần cài đầu là gì?
{
agents: { defaults: { workspace: "~/.openclaw/workspace" } },
channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}
Cách này set workspace của các bạn và hạn chế ai có thể trigger bot.
Làm sao setup Tailscale trên VPS và kết nối từ Mac?
Các bước tối thiểu:
- Install + login trên VPS
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up - Install + login trên Mac của các bạn
- Dùng Tailscale app và sign in vào cùng tailnet.
- Enable MagicDNS (khuyến nghị)
- Trong Tailscale admin console, enable MagicDNS để VPS có stable name.
- Dùng tailnet hostname
- SSH:
ssh [email protected] - Gateway WS:
ws://your-vps.tailnet-xxxx.ts.net:18789
- SSH:
Nếu các bạn muốn Control UI mà không cần SSH, dùng Tailscale Serve trên VPS:
openclaw gateway --tailscale serve
Cách này giữ gateway bound với loopback và expose HTTPS qua Tailscale. Xem Tailscale.
Làm sao kết nối Mac node với remote Gateway (Tailscale Serve)?
Serve expose Gateway Control UI + WS. Nodes kết nối qua cùng Gateway WS endpoint.
Setup khuyến nghị:
- Đảm bảo VPS + Mac trên cùng tailnet.
- Dùng macOS app ở Remote mode (SSH target có thể là tailnet hostname). App sẽ tunnel Gateway port và kết nối như một node.
- Approve node trên gateway:
openclaw nodes pending openclaw nodes approve <requestId>
Docs: Gateway protocol, Discovery, macOS remote mode.
Env vars và .env loading
OpenClaw load environment variables như thế nào?
OpenClaw đọc env vars từ parent process (shell, launchd/systemd, CI, etc.) và additionally loads:
.envtừ current working directory- global fallback
.envtừ~/.openclaw/.env(aka$OPENCLAW_STATE_DIR/.env)
Cả hai .env files đều không override existing env vars.
Các bạn cũng có thể định nghĩa inline env vars trong config (applied chỉ khi missing từ process env):
{
env: {
OPENROUTER_API_KEY: "sk-or-...",
vars: { GROQ_API_KEY: "gsk-..." },
},
}
Xem /environment cho full precedence và sources.
”Mình start Gateway qua service và env vars biến mất.” Giờ làm sao?
Hai fixes phổ biến:
- Đặt missing keys vào
~/.openclaw/.envđể chúng được picked up ngay cả khi service không inherit shell env của các bạn. - Enable shell import (opt-in convenience):
{
env: {
shellEnv: {
enabled: true,
timeoutMs: 15000,
},
},
}
Cách này chạy login shell của các bạn và imports chỉ missing expected keys (không bao giờ overrides). Env var equivalents: OPENCLAW_LOAD_SHELL_ENV=1, OPENCLAW_SHELL_ENV_TIMEOUT_MS=15000.
Mình set COPILOT_GITHUB_TOKEN, nhưng models status hiện “Shell env: off.” Tại sao?
openclaw models status báo cáo liệu shell env import có được enable không. “Shell env: off” không có nghĩa là env vars của các bạn thiếu - nó chỉ có nghĩa là OpenClaw sẽ không load login shell của các bạn tự động.
Nếu Gateway chạy như một service (launchd/systemd), nó sẽ không inherit shell environment của các bạn. Fix bằng cách làm một trong những điều này:
- Đặt token vào
~/.openclaw/.env:COPILOT_GITHUB_TOKEN=... - Hoặc enable shell import (
env.shellEnv.enabled: true). - Hoặc thêm nó vào config
envblock của các bạn (applies chỉ khi missing).
Sau đó restart gateway và recheck:
openclaw models status
Copilot tokens được đọc từ COPILOT_GITHUB_TOKEN (cũng GH_TOKEN / GITHUB_TOKEN). Xem /concepts/model-providers và /environment.
Sessions & nhiều chats
Làm sao bắt đầu cuộc trò chuyện mới?
Gửi /new hoặc /reset như standalone message. Xem Session management.
Sessions có tự reset nếu mình không bao giờ gửi /new không?
Có. Sessions expire sau session.idleMinutes (mặc định 60). Message tiếp theo bắt đầu fresh session id cho chat key đó. Cách này không xóa transcripts - nó chỉ bắt đầu session mới.
{
session: {
idleMinutes: 240,
},
}
Có cách nào tạo team các instance OpenClaw - một CEO và nhiều agents không?
Có, qua multi-agent routing và sub-agents. Các bạn có thể tạo một coordinator agent và nhiều worker agents với workspaces và models riêng.
Điều đó nói rằng, cách này tốt nhất được xem như một fun experiment. Nó tốn token và thường kém hiệu quả hơn so với dùng một bot với separate sessions. Typical model chúng mình hình dung là một bot các bạn nói chuyện, với different sessions cho parallel work. Bot đó cũng có thể spawn sub-agents khi cần.
Docs: Multi-agent routing, Sub-agents, Agents CLI.
Tại sao context bị cắt giữa chừng task? Làm sao ngăn chặn?
Session context bị giới hạn bởi model window. Long chats, large tool outputs, hoặc nhiều files có thể trigger compaction hoặc truncation.
Những gì giúp:
- Yêu cầu bot tóm tắt current state và viết nó vào file.
- Dùng
/compacttrước long tasks, và/newkhi chuyển topics. - Giữ important context trong workspace và yêu cầu bot đọc nó lại.
- Dùng sub-agents cho long hoặc parallel work để main chat nhỏ hơn.
- Chọn model với larger context window nếu điều này xảy ra thường xuyên.
Làm sao reset OpenClaw hoàn toàn nhưng vẫn giữ cài đặt?
Dùng reset command:
openclaw reset
Non-interactive full reset:
openclaw reset --scope full --yes --non-interactive
Sau đó chạy lại onboarding:
openclaw onboard --install-daemon
Lưu ý:
- Wizard onboarding cũng cung cấp Reset nếu nó thấy existing config. Xem Wizard.
- Nếu các bạn dùng profiles (
--profile/OPENCLAW_PROFILE), reset mỗi state dir (defaults là~/.openclaw-<profile>). - Dev reset:
openclaw gateway --dev --reset(dev-only; wipes dev config + credentials + sessions + workspace).
Mình gặp lỗi “context too large” - làm sao reset hoặc compact?
Dùng một trong những cách này:
-
Compact (giữ conversation nhưng tóm tắt older turns):
/compacthoặc
/compact <instructions>để guide summary. -
Reset (fresh session ID cho cùng chat key):
/new /reset
Nếu nó cứ xảy ra:
- Enable hoặc tune session pruning (
agents.defaults.contextPruning) để trim old tool output. - Dùng model với larger context window.
Docs: Compaction, Session pruning, Session management.
Tại sao mình thấy “LLM request rejected: messages.N.content.X.tool_use.input: Field required”?
Đây là provider validation error: model emitted một tool_use block mà không có required input. Nó thường có nghĩa là session history stale hoặc corrupted (thường sau long threads hoặc tool/schema change).
Fix: bắt đầu fresh session với /new (standalone message).
Tại sao mình nhận heartbeat messages mỗi 30 phút?
Heartbeats chạy mỗi 30m mặc định. Tune hoặc disable chúng:
{
agents: {
defaults: {
heartbeat: {
enabled: false,
},
},
},
}
Xem Heartbeat.
Mình có cần thêm “bot account” vào WhatsApp group không?
Không. OpenClaw chạy trên account của chính các bạn, nên nếu các bạn ở trong group, OpenClaw có thể thấy nó. Mặc định, group replies bị chặn cho đến khi các bạn allow senders (groupPolicy: "allowlist").
Nếu các bạn muốn chỉ mình có thể trigger group replies:
{
channels: {
whatsapp: {
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"],
},
},
}
Làm sao lấy JID của WhatsApp group?
Option 1 (nhanh nhất): tail logs và gửi test message trong group:
openclaw logs --follow --json
Tìm chatId (hoặc from) kết thúc bằng @g.us, như: [email protected].
Option 2 (nếu đã configured/allowlisted): list groups từ config:
openclaw directory groups list --channel whatsapp
Docs: WhatsApp, Directory, Logs.
Tại sao OpenClaw không reply trong group?
Hai nguyên nhân phổ biến:
- Mention gating đang bật (mặc định). Các bạn phải @mention bot (hoặc match
mentionPatterns). - Các bạn đã cấu hình
channels.whatsapp.groupsmà không có"*"và group không được allowlisted.
Xem Groups và Group messages.
Groups/threads có share context với DMs không?
Direct chats collapse về main session mặc định. Groups/channels có session keys riêng, và Telegram topics / Discord threads là separate sessions. Xem Groups và Group messages.
Mình có thể tạo bao nhiêu workspaces và agents?
Không có hard limits. Hàng chục (thậm chí hàng trăm) đều ổn, nhưng watch for:
- Disk growth: sessions + transcripts nằm dưới
~/.openclaw/agents/<agentId>/sessions/. - Token cost: nhiều agents có nghĩa là nhiều concurrent model usage hơn.
- Ops overhead: per-agent auth profiles, workspaces, và channel routing.
Tips:
- Giữ một active workspace cho mỗi agent (
agents.defaults.workspace). - Prune old sessions (xóa JSONL hoặc store entries) nếu disk tăng.
- Dùng
openclaw doctorđể spot stray workspaces và profile mismatches.
Mình có thể chạy nhiều bots hoặc chats cùng lúc (Slack) không, và nên setup như thế nào?
Được. Dùng Multi-Agent Routing để chạy nhiều isolated agents và route inbound messages theo channel/account/peer. Slack được hỗ trợ như một channel và có thể được bound với specific agents.
Browser access mạnh mẽ nhưng không phải “do anything a human can” - anti-bot, CAPTCHAs, và MFA vẫn có thể chặn automation. Cho browser control đáng tin cậy nhất, dùng Chrome extension relay trên máy chạy browser (và giữ Gateway ở bất cứ đâu).
Best-practice setup:
- Always-on Gateway host (VPS/Mac mini).
- Một agent cho mỗi role (bindings).
- Slack channel(s) bound với các agents đó.
- Local browser qua extension relay (hoặc node) khi cần.
Docs: Multi-Agent Routing, Slack, Browser, Chrome extension, Nodes.
Models: defaults, selection, aliases, switching
”Default model” là gì?
Default model của OpenClaw là bất cứ thứ gì các bạn set như:
agents.defaults.model.primary
Models được referenced như provider/model (ví dụ: anthropic/claude-opus-4-5). Nếu các bạn bỏ qua provider, OpenClaw hiện tại assume anthropic như temporary deprecation fallback - nhưng các bạn vẫn nên explicitly set provider/model.
Các bạn khuyên dùng model nào?
Khuyến nghị mặc định: anthropic/claude-opus-4-5.
Alternative tốt: anthropic/claude-sonnet-4-5.
Đáng tin cậy (ít character hơn): openai/gpt-5.2 - gần như tốt bằng Opus, chỉ ít personality hơn.
Budget: zai/glm-4.7.
MiniMax M2.1 có docs riêng: MiniMax và Local models.
Rule of thumb: dùng model tốt nhất các bạn có thể chi trả cho high-stakes work, và model rẻ hơn cho routine chat hoặc summaries. Các bạn có thể route models per agent và dùng sub-agents để parallelize long tasks (mỗi sub-agent tiêu thụ tokens). Xem Models và Sub-agents.
Cảnh báo mạnh: các models yếu hơn/over-quantized dễ bị tổn thương hơn với prompt injection và unsafe behavior. Xem Security.
Thêm context: Models.
Mình có thể dùng self-hosted models (llama.cpp, vLLM, Ollama) không?
Được. Nếu local server của các bạn expose OpenAI-compatible API, các bạn có thể trỏ custom provider vào nó. Ollama được hỗ trợ trực tiếp và là đường dẫn dễ nhất.
Security note: các models nhỏ hơn hoặc heavily quantized dễ bị tổn thương hơn với prompt injection. Chúng mình strongly recommend large models cho bất kỳ bot nào có thể dùng tools. Nếu các bạn vẫn muốn small models, enable sandboxing và strict tool allowlists.
Docs: Ollama, Local models, Model providers, Security, Sandboxing.
Làm sao đổi models mà không xóa config?
Dùng model commands hoặc edit chỉ model fields. Tránh full config replaces.
Safe options:
/modeltrong chat (nhanh, per-session)openclaw models set ...(updates chỉ model config)openclaw configure --section models(interactive)- edit
agents.defaults.modeltrong~/.openclaw/openclaw.json
Tránh config.apply với partial object trừ khi các bạn có ý định replace whole config. Nếu các bạn đã overwrite config, restore từ backup hoặc chạy lại openclaw doctor để repair.
Docs: Models, Configure, Config, Doctor.
OpenClaw, Flawd và Krill dùng models gì?
- OpenClaw + Flawd: Anthropic Opus (
anthropic/claude-opus-4-5) - xem Anthropic. - Krill: MiniMax M2.1 (
minimax/MiniMax-M2.1) - xem MiniMax.
Làm sao đổi models ngay lập tức (không cần restart)?
Dùng /model command như standalone message:
/model sonnet
/model haiku
/model opus
/model gpt
/model gpt-mini
/model gemini
/model gemini-flash
Các bạn có thể list available models với /model, /model list, hoặc /model status.
/model (và /model list) hiện compact, numbered picker. Chọn theo số:
/model 3
Các bạn cũng có thể force specific auth profile cho provider (per session):
/model opus@anthropic:default
/model opus@anthropic:work
Tip: /model status hiện agent nào đang active, auth-profiles.json file nào đang được dùng, và auth profile nào sẽ được thử tiếp theo. Nó cũng hiện configured provider endpoint (baseUrl) và API mode (api) khi available.
Làm sao unpin profile mình set với @profile
Chạy lại /model mà không có @profile suffix:
/model anthropic/claude-opus-4-5
Nếu các bạn muốn quay về default, chọn nó từ /model (hoặc gửi /model <default provider/model>). Dùng /model status để xác nhận auth profile nào đang active.
Mình có thể dùng GPT 5.2 cho tasks hàng ngày và Codex 5.2 cho coding không?
Được. Set một cái làm default và switch khi cần:
- Quick switch (per session):
/model gpt-5.2cho daily tasks,/model gpt-5.2-codexcho coding. - Default + switch: set
agents.defaults.model.primarythànhopenai-codex/gpt-5.2, sau đó switch sangopenai-codex/gpt-5.2-codexkhi coding (hoặc ngược lại). - Sub-agents: route coding tasks đến sub-agents với different default model.
Xem Models và Slash commands.
Tại sao mình thấy “Model … is not allowed” rồi không có reply?
Nếu agents.defaults.models được set, nó trở thành allowlist cho /model và bất kỳ session overrides nào. Chọn model không có trong list đó trả về:
Model "provider/model" is not allowed. Use /model to list available models.
Error đó được trả về thay vì normal reply. Fix: thêm model vào agents.defaults.models, xóa allowlist, hoặc chọn model từ /model list.
Tại sao mình thấy “Unknown model: minimax/MiniMax-M2.1”?
Điều này có nghĩa là provider không được cấu hình (không có MiniMax provider config hoặc auth profile được tìm thấy), nên model không thể được resolved. Fix cho detection này nằm trong 2026.1.12 (unreleased tại thời điểm viết).
Fix checklist:
- Upgrade lên 2026.1.12 (hoặc chạy từ source
main), sau đó restart gateway. - Xác nhận MiniMax provider được cấu hình trong
models.providers. - Xác nhận auth profile tồn tại cho MiniMax.
Xem MiniMax và Model providers.
Mình có thể dùng MiniMax làm default và OpenAI cho tasks phức tạp không?
Được. Dùng MiniMax làm default và switch models per session khi cần. Fallbacks dành cho errors, không phải “hard tasks,” nên dùng /model hoặc separate agent.
Option A: switch per session
{
env: { MINIMAX_API_KEY: "sk-...", OPENAI_API_KEY: "sk-..." },
agents: {
defaults: {
model: { primary: "minimax/MiniMax-M2.1" },
models: {
"minimax/MiniMax-M2.1": { alias: "minimax" },
"openai/gpt-5.2": { alias: "gpt" },
},
},
},
}
Sau đó:
/model gpt
Option B: separate agents
- Agent A default: MiniMax
- Agent B default: OpenAI
- Route theo agent hoặc dùng
/agentđể switch
Docs: Models, Multi-Agent Routing, MiniMax, OpenAI.
opus / sonnet / gpt có phải shortcuts built-in không?
Có. OpenClaw ship một vài default shorthands (chỉ applied khi model tồn tại trong agents.defaults.models):
opus→anthropic/claude-opus-4-5sonnet→anthropic/claude-sonnet-4-5gpt→openai/gpt-5.2gpt-mini→openai/gpt-5-minigemini→google/gemini-3-pro-previewgemini-flash→google/gemini-3-flash-preview
Nếu các bạn set alias riêng với cùng tên, giá trị của các bạn thắng.
Làm sao định nghĩa/override model shortcuts (aliases)?
Aliases đến từ agents.defaults.models.<modelId>.alias. Ví dụ:
{
agents: {
defaults: {
model: { primary: "anthropic/claude-opus-4-5" },
models: {
"anthropic/claude-opus-4-5": { alias: "opus" },
"anthropic/claude-sonnet-4-5": { alias: "sonnet" },
"anthropic/claude-haiku-4-5": { alias: "haiku" },
},
},
},
}
Sau đó /model sonnet (hoặc /<alias> khi được hỗ trợ) resolve thành model ID đó.
Làm sao thêm models từ providers khác như OpenRouter hoặc Z.AI?
OpenRouter (pay-per-token; nhiều models):
{
agents: {
defaults: {
model: { primary: "openrouter/anthropic/claude-sonnet-4-5" },
models: { "openrouter/anthropic/claude-sonnet-4-5": {} },
},
},
env: { OPENROUTER_API_KEY: "sk-or-..." },
}
Z.AI (GLM models):
{
agents: {
defaults: {
model: { primary: "zai/glm-4.7" },
models: { "zai/glm-4.7": {} },
},
},
env: { ZAI_API_KEY: "..." },
}
Nếu các bạn reference provider/model nhưng required provider key thiếu, các bạn sẽ nhận runtime auth error (ví dụ No API key found for provider "zai").
No API key found for provider sau khi thêm agent mới
Điều này thường có nghĩa là agent mới có empty auth store. Auth là per-agent và được lưu trong:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json
Cách fix:
- Chạy
openclaw agents add <id>và cấu hình auth trong wizard. - Hoặc copy
auth-profiles.jsontừagentDircủa main agent vàoagentDircủa agent mới.
Không reuse agentDir giữa các agents; điều này gây ra auth/session collisions.
Model failover và “All models failed”
Failover hoạt động như thế nào?
Failover xảy ra theo hai giai đoạn:
- Auth profile rotation trong cùng provider.
- Model fallback sang model tiếp theo trong
agents.defaults.model.fallbacks.
Cooldowns áp dụng cho các profiles bị fail (exponential backoff), nên OpenClaw có thể tiếp tục respond ngay cả khi provider bị rate-limited hoặc tạm thời fail.
Error này nghĩa là gì?
No credentials found for profile "anthropic:default"
Nghĩa là system đã cố dùng auth profile ID anthropic:default, nhưng không tìm thấy credentials cho nó trong expected auth store.
Fix checklist cho “No credentials found for profile anthropic:default”
- Xác nhận auth profiles nằm ở đâu (new vs legacy paths)
- Hiện tại:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json - Legacy:
~/.openclaw/agent/*(được migrate bởiopenclaw doctor)
- Hiện tại:
- Xác nhận env var của các bạn được load bởi Gateway
- Nếu các bạn set
ANTHROPIC_API_KEYtrong shell nhưng chạy Gateway qua systemd/launchd, nó có thể không inherit được. Đặt nó trong~/.openclaw/.envhoặc enableenv.shellEnv.
- Nếu các bạn set
- Đảm bảo các bạn đang edit đúng agent
- Multi-agent setups nghĩa là có thể có nhiều files
auth-profiles.json.
- Multi-agent setups nghĩa là có thể có nhiều files
- Sanity-check model/auth status
- Dùng
openclaw models statusđể xem configured models và liệu providers có được authenticated không.
- Dùng
Fix checklist cho “No credentials found for profile anthropic”
Điều này nghĩa là run được pin vào Anthropic auth profile, nhưng Gateway không tìm thấy nó trong auth store.
- Dùng setup-token
- Chạy
claude setup-token, sau đó paste nó vớiopenclaw models auth setup-token --provider anthropic. - Nếu token được tạo trên máy khác, dùng
openclaw models auth paste-token --provider anthropic.
- Chạy
- Nếu các bạn muốn dùng API key thay thế
- Đặt
ANTHROPIC_API_KEYtrong~/.openclaw/.envtrên gateway host. - Clear bất kỳ pinned order nào force missing profile:
openclaw models auth order clear --provider anthropic
- Đặt
- Xác nhận các bạn đang chạy commands trên gateway host
- Trong remote mode, auth profiles nằm trên gateway machine, không phải laptop của các bạn.
Tại sao nó cũng thử Google Gemini và fail?
Nếu model config của các bạn bao gồm Google Gemini làm fallback (hoặc các bạn switch sang Gemini shorthand), OpenClaw sẽ thử nó trong model fallback. Nếu các bạn chưa cấu hình Google credentials, các bạn sẽ thấy No API key found for provider "google".
Fix: hoặc cung cấp Google auth, hoặc remove/tránh Google models trong agents.defaults.model.fallbacks / aliases để fallback không route đến đó.
LLM request rejected message thinking signature required google antigravity
Nguyên nhân: session history chứa thinking blocks không có signatures (thường từ aborted/partial stream). Google Antigravity yêu cầu signatures cho thinking blocks.
Fix: OpenClaw giờ strip unsigned thinking blocks cho Google Antigravity Claude. Nếu vẫn xuất hiện, bắt đầu session mới hoặc set /thinking off cho agent đó.
Auth profiles: chúng là gì và cách quản lý
Related: /concepts/oauth (OAuth flows, token storage, multi-account patterns)
Auth profile là gì?
Auth profile là named credential record (OAuth hoặc API key) gắn với provider. Profiles nằm trong:
~/.openclaw/agents/<agentId>/agent/auth-profiles.json
Profile IDs thông thường là gì?
OpenClaw dùng provider-prefixed IDs như:
anthropic:default(phổ biến khi không có email identity)anthropic:<email>cho OAuth identities- custom IDs các bạn chọn (ví dụ
anthropic:work)
Mình có thể kiểm soát auth profile nào được thử trước không?
Có. Config hỗ trợ optional metadata cho profiles và ordering per provider (auth.order.<provider>). Điều này không lưu secrets; nó map IDs sang provider/mode và set rotation order.
OpenClaw có thể tạm thời skip profile nếu nó đang trong cooldown ngắn (rate limits/timeouts/auth failures) hoặc trạng thái disabled dài hơn (billing/insufficient credits). Để inspect điều này, chạy openclaw models status --json và check auth.unusableProfiles. Tuning: auth.cooldowns.billingBackoffHours*.
Các bạn cũng có thể set per-agent order override (lưu trong auth-profiles.json của agent đó) qua CLI:
# Defaults sang configured default agent (bỏ --agent)
openclaw models auth order get --provider anthropic
# Lock rotation vào single profile (chỉ thử cái này)
openclaw models auth order set --provider anthropic anthropic:default
# Hoặc set explicit order (fallback trong provider)
openclaw models auth order set --provider anthropic anthropic:work anthropic:default
# Clear override (fall back sang config auth.order / round-robin)
openclaw models auth order clear --provider anthropic
Để target specific agent:
openclaw models auth order set --provider anthropic --agent main anthropic:default
OAuth vs API key - khác nhau thế nào?
OpenClaw hỗ trợ cả hai:
- OAuth thường leverage subscription access (khi có thể).
- API keys dùng pay-per-token billing.
Wizard hỗ trợ rõ ràng Anthropic setup-token và OpenAI Codex OAuth và có thể lưu API keys cho các bạn.
Gateway: ports, “already running”, và remote mode
Gateway dùng port nào?
gateway.port kiểm soát single multiplexed port cho WebSocket + HTTP (Control UI, hooks, v.v.).
Precedence:
--port > OPENCLAW_GATEWAY_PORT > gateway.port > default 18789
Tại sao openclaw gateway status nói “Runtime running” nhưng “RPC probe failed”?
Bởi vì “running” là view của supervisor (launchd/systemd/schtasks). RPC probe là CLI thực sự connect tới gateway WebSocket và gọi status.
Dùng openclaw gateway status và tin những dòng này:
Probe target:(URL mà probe thực sự dùng)Listening:(cái gì thực sự bound trên port)Last gateway error:(nguyên nhân gốc phổ biến khi process còn sống nhưng port không listening)
Tại sao openclaw gateway status hiển thị “Config cli” và “Config service” khác nhau?
Các bạn đang edit một config file trong khi service đang chạy file khác (thường là --profile / OPENCLAW_STATE_DIR mismatch).
Fix:
openclaw gateway install --force
Chạy lệnh đó từ cùng --profile / environment mà các bạn muốn service dùng.
”Another gateway instance is already listening” nghĩa là gì?
OpenClaw enforce runtime lock bằng cách bind WebSocket listener ngay lập tức khi startup (default ws://127.0.0.1:18789). Nếu bind fail với EADDRINUSE, nó throw GatewayLockError cho biết instance khác đang listening.
Fix: stop instance kia, free port, hoặc chạy với openclaw gateway --port <port>.
Làm sao chạy OpenClaw trong remote mode (client connects tới Gateway ở nơi khác)?
Set gateway.mode: "remote" và point tới remote WebSocket URL, tùy chọn với token/password:
{
gateway: {
mode: "remote",
remote: {
url: "ws://gateway.tailnet:18789",
token: "your-token",
password: "your-password",
},
},
}
Notes:
openclaw gatewaychỉ start khigateway.modelàlocal(hoặc các bạn pass override flag).- macOS app watches config file và switches modes live khi các giá trị này thay đổi.
Control UI nói “unauthorized” hoặc cứ reconnecting - giờ làm sao?
Gateway của các bạn đang chạy với auth enabled (gateway.auth.*), nhưng UI không gửi matching token/password.
Facts (từ code):
- Control UI lưu token trong browser localStorage key
openclaw.control.settings.v1. - UI có thể import
?token=...(và/hoặc?password=...) một lần, sau đó strip nó khỏi URL.
Fix:
- Nhanh nhất:
openclaw dashboard(prints + copies tokenized link, tries to open; shows SSH hint nếu headless). - Nếu các bạn chưa có token:
openclaw doctor --generate-gateway-token. - Nếu remote, tunnel trước:
ssh -N -L 18789:127.0.0.1:18789 user@hostsau đó mởhttp://127.0.0.1:18789/?token=.... - Set
gateway.auth.token(hoặcOPENCLAW_GATEWAY_TOKEN) trên gateway host. - Trong Control UI settings, paste cùng token (hoặc refresh với one-time
?token=...link). - Vẫn stuck? Chạy
openclaw status --allvà follow Troubleshooting. Xem Dashboard cho auth details.
Mình set gateway.bind: tailnet nhưng nó không bind được - không có gì listening?
tailnet bind chọn Tailscale IP từ network interfaces của các bạn (100.64.0.0/10). Nếu máy không có Tailscale (hoặc interface down), không có gì để bind.
Fix:
- Start Tailscale trên host đó (để nó có 100.x address), hoặc
- Switch sang
gateway.bind: "loopback"/"lan".
Note: tailnet là explicit. auto prefer loopback; dùng gateway.bind: "tailnet" khi các bạn muốn tailnet-only bind.
Mình có thể chạy nhiều Gateways trên cùng host không?
Thường thì không - một Gateway có thể chạy nhiều messaging channels và agents. Chỉ dùng nhiều Gateways khi các bạn cần redundancy (ví dụ: rescue bot) hoặc hard isolation.
Có, nhưng các bạn phải isolate:
OPENCLAW_CONFIG_PATH(per-instance config)OPENCLAW_STATE_DIR(per-instance state)agents.defaults.workspace(workspace isolation)gateway.port(unique ports)
Quick setup (recommended):
- Dùng
openclaw --profile <name> …per instance (auto-creates~/.openclaw-<name>). - Set unique
gateway.porttrong mỗi profile config (hoặc pass--portcho manual runs). - Install per-profile service:
openclaw --profile <name> gateway install.
Profiles cũng suffix service names (bot.molt.<profile>; legacy com.openclaw.*, openclaw-gateway-<profile>.service, OpenClaw Gateway (<profile>)).
Full guide: Multiple gateways.
”Invalid handshake code 1008” nghĩa là gì?
Gateway là WebSocket server, và nó expect message đầu tiên là connect frame. Nếu nó nhận bất cứ thứ gì khác, nó đóng connection với code 1008 (policy violation).
Nguyên nhân phổ biến:
- Các bạn mở HTTP URL trong browser (
http://...) thay vì WS client. - Các bạn dùng sai port hoặc path.
- Proxy hoặc tunnel stripped auth headers hoặc gửi non-Gateway request.
Quick fixes:
- Dùng WS URL:
ws://<host>:18789(hoặcwss://...nếu HTTPS). - Đừng mở WS port trong normal browser tab.
- Nếu auth bật, include token/password trong
connectframe.
Nếu các bạn dùng CLI hoặc TUI, URL nên trông như:
openclaw tui --url ws://<host>:18789 --token <token>
Protocol details: Gateway protocol.
Logging và debugging
Logs nằm ở đâu?
File logs (structured):
/tmp/openclaw/openclaw-YYYY-MM-DD.log
Các bạn có thể set stable path qua logging.file. File log level được kiểm soát bởi logging.level. Console verbosity được kiểm soát bởi --verbose và logging.consoleLevel.
Fastest log tail:
openclaw logs --follow
Service/supervisor logs (khi gateway chạy qua launchd/systemd):
- macOS:
$OPENCLAW_STATE_DIR/logs/gateway.logvàgateway.err.log(default:~/.openclaw/logs/...; profiles dùng~/.openclaw-<profile>/logs/...) - Linux:
journalctl --user -u openclaw-gateway[-<profile>].service -n 200 --no-pager - Windows:
schtasks /Query /TN "OpenClaw Gateway (<profile>)" /V /FO LIST
Xem Troubleshooting để biết thêm.
Làm sao start/stop/restart Gateway service?
Dùng gateway helpers:
openclaw gateway status
openclaw gateway restart
Nếu các bạn chạy gateway manually, openclaw gateway --force có thể reclaim port. Xem Gateway.
Mình đóng terminal trên Windows - làm sao restart OpenClaw?
Có hai Windows install modes:
1) WSL2 (recommended): Gateway chạy trong Linux.
Mở PowerShell, vào WSL, sau đó restart:
wsl
openclaw gateway status
openclaw gateway restart
Nếu các bạn chưa bao giờ install service, start nó trong foreground:
openclaw gateway run
2) Native Windows (không recommended): Gateway chạy trực tiếp trong Windows.
Mở PowerShell và chạy:
openclaw gateway status
openclaw gateway restart
Nếu các bạn chạy nó manually (không có service), dùng:
openclaw gateway run
Docs: Windows (WSL2), Gateway service runbook.
Gateway đang up nhưng replies không bao giờ đến - nên check gì?
Bắt đầu với quick health sweep:
openclaw status
openclaw models status
openclaw channels status
openclaw logs --follow
Nguyên nhân phổ biến:
- Model auth không được load trên gateway host (check
models status). - Channel pairing/allowlist blocking replies (check channel config + logs).
- WebChat/Dashboard mở mà không có đúng token.
Nếu các bạn remote, xác nhận tunnel/Tailscale connection đang up và Gateway WebSocket có thể reach được.
Docs: Channels, Troubleshooting, Remote access.
”Disconnected from gateway” không có lý do - giờ làm sao?
Điều này thường nghĩa là UI mất WebSocket connection. Check:
- Gateway có đang chạy không?
openclaw gateway status - Gateway có healthy không?
openclaw status - UI có đúng token không?
openclaw dashboard - Nếu remote, tunnel/Tailscale link có up không?
Sau đó tail logs:
openclaw logs --follow
Docs: Dashboard, Remote access, Troubleshooting.
Telegram setMyCommands fails với network errors - nên check gì?
Bắt đầu với logs và channel status:
openclaw channels status
openclaw channels logs --channel telegram
Nếu các bạn ở trên VPS hoặc đằng sau proxy, xác nhận outbound HTTPS được phép và DNS hoạt động. Nếu Gateway remote, đảm bảo các bạn đang xem logs trên Gateway host.
Docs: Telegram, Channel troubleshooting.
TUI không hiển thị output - nên check gì?
Đầu tiên xác nhận Gateway có thể reach được và agent có thể chạy:
openclaw status
openclaw models status
openclaw logs --follow
Trong TUI, dùng /status để xem current state. Nếu các bạn expect replies trong chat channel, đảm bảo delivery được enable (/deliver on).
Docs: TUI, Slash commands.
Làm sao hoàn toàn stop rồi start Gateway?
Nếu các bạn đã install service:
openclaw gateway stop
openclaw gateway start
Điều này stops/starts supervised service (launchd trên macOS, systemd trên Linux). Dùng cái này khi Gateway chạy trong background như daemon.
Nếu các bạn đang chạy trong foreground, stop với Ctrl-C, sau đó:
openclaw gateway run
Docs: Gateway service runbook.
ELI5: openclaw gateway restart vs openclaw gateway
openclaw gateway restart: restarts background service (launchd/systemd).openclaw gateway: chạy gateway trong foreground cho terminal session này.
Nếu các bạn đã install service, dùng gateway commands. Dùng openclaw gateway khi các bạn muốn one-off, foreground run.
Cách nhanh nhất để có thêm details khi có gì đó fails?
Start Gateway với --verbose để có thêm console detail. Sau đó inspect log file cho channel auth, model routing, và RPC errors.
Media & attachments
Skill của mình generated image/PDF nhưng không có gì được gửi?
Outbound attachments từ agent phải include dòng MEDIA:<path-or-url> (trên dòng riêng). Xem OpenClaw assistant setup và Agent send.
CLI sending:
openclaw message send --target +15555550123 --message "Here you go" --media /path/to/file.png
Cũng check:
- Target channel hỗ trợ outbound media và không bị block bởi allowlists.
- File nằm trong size limits của provider (images được resize tới max 2048px).
Xem Images.
Security và access control
Có an toàn khi expose OpenClaw cho inbound DMs không?
Treat inbound DMs như untrusted input. Defaults được thiết kế để giảm risk:
- Default behavior trên DM-capable channels là pairing:
- Unknown senders nhận pairing code; bot không process message của họ.
- Approve với:
openclaw pairing approve <channel> <code> - Pending requests được cap ở 3 per channel; check
openclaw pairing list <channel>nếu code không đến.
- Mở DMs publicly yêu cầu explicit opt-in (
dmPolicy: "open"và allowlist"*").
Chạy openclaw doctor để surface risky DM policies.
Prompt injection chỉ là concern cho public bots thôi phải không?
Không. Prompt injection là về untrusted content, không chỉ ai có thể DM bot. Nếu assistant của các bạn đọc external content (web search/fetch, browser pages, emails, docs, attachments, pasted logs), content đó có thể include instructions cố hijack model. Điều này có thể xảy ra ngay cả khi các bạn là sender duy nhất.
Risk lớn nhất là khi tools được enable: model có thể bị trick để exfiltrate context hoặc gọi tools thay mặt các bạn. Giảm blast radius bằng cách:
- dùng read-only hoặc tool-disabled “reader” agent để summarize untrusted content
- giữ
web_search/web_fetch/browseroff cho tool-enabled agents - sandboxing và strict tool allowlists
Details: Security.
Bot của mình nên có email/GitHub account riêng hoặc số điện thoại riêng không?
Có, cho hầu hết setups. Isolate bot với separate accounts và phone numbers giảm blast radius nếu có gì đó sai. Điều này cũng giúp dễ dàng rotate credentials hoặc revoke access mà không ảnh hưởng personal accounts của các bạn.
Bắt đầu nhỏ. Chỉ cho access vào tools và accounts mà các bạn thực sự cần, và expand sau nếu cần.
Mình có thể cho nó autonomy over text messages của mình không và có an toàn không?
Chúng tôi không recommend full autonomy over personal messages của các bạn. Pattern an toàn nhất là:
- Giữ DMs trong pairing mode hoặc tight allowlist.
- Dùng separate number hoặc account nếu các bạn muốn nó message thay mặt các bạn.
- Để nó draft, sau đó approve trước khi gửi.
Nếu các bạn muốn experiment, làm trên dedicated account và giữ nó isolated. Xem Security.
Mình có thể dùng cheaper models cho personal assistant tasks không?
Có, nếu agent chỉ chat-only và input được trusted. Smaller tiers dễ bị instruction hijacking hơn, nên tránh chúng cho tool-enabled agents hoặc khi đọc untrusted content. Nếu các bạn phải dùng smaller model, lock down tools và chạy trong sandbox. Xem Security.
Mình chạy /start trong Telegram nhưng không nhận được pairing code?
Pairing codes chỉ được gửi khi unknown sender nhắn tin cho bot và dmPolicy: "pairing" được enable. /start tự nó không generate code.
Check pending requests:
openclaw pairing list telegram
Nếu các bạn muốn immediate access, allowlist sender id của các bạn hoặc set dmPolicy: "open" cho account đó.
WhatsApp - nó có nhắn tin cho contacts của mình không? Pairing hoạt động thế nào?
Không. Default WhatsApp DM policy là pairing. Unknown senders chỉ nhận pairing code và message của họ không được process. OpenClaw chỉ reply vào chats mà nó nhận hoặc explicit sends mà các bạn trigger.
Approve pairing với:
openclaw pairing approve whatsapp <code>
List pending requests:
openclaw pairing list whatsapp
Wizard phone number prompt: nó được dùng để set allowlist/owner của các bạn để DMs của chính các bạn được permit. Nó không được dùng cho auto-sending. Nếu các bạn chạy trên personal WhatsApp number, dùng number đó và enable channels.whatsapp.selfChatMode.
Chat commands, aborting tasks, và “it won’t stop”
Làm sao stop internal system messages khỏi hiển thị trong chat?
Hầu hết internal hoặc tool messages chỉ xuất hiện khi verbose hoặc reasoning được enable cho session đó.
Fix trong chat mà các bạn thấy nó:
/verbose off
/reasoning off
Nếu vẫn noisy, check session settings trong Control UI và set verbose thành inherit. Cũng xác nhận các bạn không dùng bot profile với verboseDefault set thành on trong config.
Docs: Thinking and verbose, Security.
Làm sao stop/cancel running task?
Gửi bất kỳ cái nào trong số này như standalone message (không có slash):
stop
abort
esc
wait
exit
interrupt
Đây là abort triggers (không phải slash commands).
Cho background processes (từ exec tool), các bạn có thể yêu cầu agent chạy:
process action:kill sessionId:XXX
Slash commands overview: xem Slash commands.
Hầu hết commands phải được gửi như standalone message bắt đầu với /, nhưng một vài shortcuts (như /status) cũng hoạt động inline cho allowlisted senders.
Làm sao gửi Discord message từ Telegram? “Cross-context messaging denied”?
OpenClaw block cross-provider messaging by default. Nếu tool call được bound vào Telegram, nó sẽ không gửi tới Discord trừ khi các bạn explicitly allow nó.
Enable cross-provider messaging cho agent:
{
agents: {
defaults: {
tools: {
message: {
crossContext: {
allowAcrossProviders: true,
marker: { enabled: true, prefix: "[from {channel}] " },
},
},
},
},
},
}
Restart gateway sau khi edit config. Nếu các bạn chỉ muốn điều này cho single agent, set nó dưới agents.list[].tools.message thay thế.
Tại sao cảm giác như bot ignore rapidfire messages?
Queue mode kiểm soát cách new messages tương tác với in-flight run. Dùng /queue để change modes:
steer- new messages redirect current taskfollowup- chạy messages từng cái mộtcollect- batch messages và reply một lần (default)steer-backlog- steer ngay, sau đó process backloginterrupt- abort current run và start fresh
Các bạn có thể thêm options như debounce:2s cap:25 drop:summarize cho followup modes.
Answer the exact question from the screenshot/chat log
Q: “What’s the default model for Anthropic with an API key?”
A: Trong OpenClaw, credentials và model selection là riêng biệt. Setting ANTHROPIC_API_KEY (hoặc lưu Anthropic API key trong auth profiles) enable authentication, nhưng actual default model là cái mà các bạn cấu hình trong agents.defaults.model.primary (ví dụ, anthropic/claude-sonnet-4-5 hoặc anthropic/claude-opus-4-5). Nếu các bạn thấy No credentials found for profile "anthropic:default", nghĩa là Gateway không tìm thấy Anthropic credentials trong expected auth-profiles.json cho agent đang chạy.
Vẫn stuck? Hỏi trong Discord hoặc mở GitHub discussion.