~/.openclaw/openclaw.json.
Đường dẫn cấu hình đang hoạt động phải là một tệp thông thường. Các bố cục openclaw.json
dùng symlink không được hỗ trợ cho các thao tác ghi do OpenClaw sở hữu; thao tác ghi nguyên tử có thể thay thế
đường dẫn thay vì giữ nguyên symlink. Nếu bạn giữ cấu hình bên ngoài
thư mục trạng thái mặc định, hãy trỏ OPENCLAW_CONFIG_PATH trực tiếp đến tệp thật.
Nếu tệp bị thiếu, OpenClaw dùng các mặc định an toàn. Các lý do phổ biến để thêm cấu hình:
- Kết nối các kênh và kiểm soát ai có thể nhắn tin cho bot
- Đặt mô hình, công cụ, sandboxing hoặc tự động hóa (cron, hook)
- Tinh chỉnh phiên, phương tiện, mạng hoặc UI
config.schema.lookup để lấy tài liệu chính xác ở cấp trường
trước khi chỉnh sửa cấu hình. Dùng trang này cho hướng dẫn theo tác vụ và
Tham chiếu cấu hình cho bản đồ trường và mặc định
rộng hơn.
Cấu hình tối thiểu
Chỉnh sửa cấu hình
- Trình hướng dẫn tương tác
- CLI (lệnh một dòng)
- Control UI
- Chỉnh sửa trực tiếp
Xác thực nghiêm ngặt
openclaw config schema in JSON Schema chuẩn được Control UI
và quá trình xác thực dùng. config.schema.lookup lấy một nút theo phạm vi đường dẫn cùng
bản tóm tắt phần tử con cho công cụ đi sâu. Metadata tài liệu title/description của trường
được truyền qua các object lồng nhau, wildcard (*), phần tử mảng ([]) và các nhánh anyOf/
oneOf/allOf. Schema Plugin và kênh lúc runtime được hợp nhất khi
manifest registry được tải.
Khi xác thực thất bại:
- Gateway không khởi động
- Chỉ các lệnh chẩn đoán hoạt động (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Chạy
openclaw doctorđể xem vấn đề chính xác - Chạy
openclaw doctor --fix(hoặc--yes) để áp dụng sửa chữa
openclaw.json
không vượt qua xác thực (bao gồm xác thực cục bộ của Plugin), quá trình khởi động Gateway thất bại hoặc
lần tải lại bị bỏ qua và runtime hiện tại giữ cấu hình được chấp nhận gần nhất.
Chạy openclaw doctor --fix (hoặc --yes) để sửa cấu hình bị thêm tiền tố/bị ghi đè hoặc
khôi phục bản sao last-known-good. Việc quảng bá thành last-known-good bị bỏ qua khi một
ứng viên chứa placeholder bí mật đã được che như ***.
Tác vụ phổ biến
Thiết lập một kênh (WhatsApp, Telegram, Discord, v.v.)
Thiết lập một kênh (WhatsApp, Telegram, Discord, v.v.)
channels.<provider>. Xem trang kênh chuyên biệt để biết các bước thiết lập:- WhatsApp -
channels.whatsapp - Telegram -
channels.telegram - Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - Microsoft Teams -
channels.msteams - Slack -
channels.slack - Signal -
channels.signal - iMessage -
channels.imessage - Mattermost -
channels.mattermost
Chọn và cấu hình mô hình
Chọn và cấu hình mô hình
agents.defaults.modelsđịnh nghĩa danh mục mô hình và đóng vai trò allowlist cho/model; các mụcprovider/*lọc/model,/modelsvà bộ chọn mô hình theo những nhà cung cấp đã chọn trong khi vẫn dùng khám phá mô hình động.- Dùng
openclaw config set agents.defaults.models '<json>' --strict-json --mergeđể thêm mục allowlist mà không xóa mô hình hiện có. Các thay thế thuần túy sẽ xóa mục bị từ chối trừ khi bạn truyền--replace. - Tham chiếu mô hình dùng định dạng
provider/model(ví dụanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxkiểm soát giảm tỷ lệ hình ảnh transcript/công cụ (mặc định1200); giá trị thấp hơn thường giảm mức dùng token thị giác trong các lần chạy nhiều ảnh chụp màn hình.- Xem CLI mô hình để chuyển mô hình trong chat và Chuyển đổi dự phòng mô hình để biết xoay vòng xác thực và hành vi fallback.
- Với nhà cung cấp tùy chỉnh/tự host, xem Nhà cung cấp tùy chỉnh trong tham chiếu.
Kiểm soát ai có thể nhắn tin cho bot
Kiểm soát ai có thể nhắn tin cho bot
dmPolicy:"pairing"(mặc định): người gửi không xác định nhận mã ghép nối dùng một lần để phê duyệt"allowlist": chỉ người gửi trongallowFrom(hoặc kho cho phép đã ghép nối)"open": cho phép mọi DM đến (yêu cầuallowFrom: ["*"])"disabled": bỏ qua mọi DM
groupPolicy + groupAllowFrom hoặc allowlist theo kênh.Xem tham chiếu đầy đủ để biết chi tiết theo từng kênh.Thiết lập cổng nhắc đến trong chat nhóm
Thiết lập cổng nhắc đến trong chat nhóm
- Nhắc đến bằng metadata: @-mention gốc (WhatsApp chạm để nhắc đến, Telegram @bot, v.v.)
- Mẫu văn bản: mẫu regex an toàn trong
mentionPatterns - Phản hồi hiển thị:
messages.visibleRepliescó thể yêu cầu gửi bằng công cụ tin nhắn trên toàn cục;messages.groupChat.visibleRepliesghi đè điều đó cho nhóm/kênh. - Xem tham chiếu đầy đủ để biết các chế độ phản hồi hiển thị, ghi đè theo kênh và chế độ tự chat.
Giới hạn Skills theo từng agent
Giới hạn Skills theo từng agent
agents.defaults.skills cho đường cơ sở dùng chung, rồi ghi đè các
agent cụ thể bằng agents.list[].skills:- Bỏ qua
agents.defaults.skillsđể mặc định không giới hạn skills. - Bỏ qua
agents.list[].skillsđể kế thừa mặc định. - Đặt
agents.list[].skills: []để không có skills. - Xem Skills, Cấu hình Skills, và Tham chiếu cấu hình.
Tinh chỉnh giám sát sức khỏe kênh Gateway
Tinh chỉnh giám sát sức khỏe kênh Gateway
- Đặt
gateway.channelHealthCheckMinutes: 0để tắt khởi động lại bằng health-monitor trên toàn cục. channelStaleEventThresholdMinutesnên lớn hơn hoặc bằng khoảng thời gian kiểm tra.- Dùng
channels.<provider>.healthMonitor.enabledhoặcchannels.<provider>.accounts.<id>.healthMonitor.enabledđể tắt tự động khởi động lại cho một kênh hoặc tài khoản mà không tắt trình giám sát toàn cục. - Xem Kiểm tra sức khỏe để gỡ lỗi vận hành và tham chiếu đầy đủ để biết tất cả trường.
Tinh chỉnh thời gian chờ bắt tay WebSocket của Gateway
Tinh chỉnh thời gian chờ bắt tay WebSocket của Gateway
- Mặc định là
15000mili giây. OPENCLAW_HANDSHAKE_TIMEOUT_MSvẫn được ưu tiên cho ghi đè dịch vụ hoặc shell dùng một lần.- Ưu tiên sửa stall khởi động/event-loop trước; núm này dành cho host khỏe mạnh nhưng chậm trong quá trình warmup.
Cấu hình phiên và đặt lại
Cấu hình phiên và đặt lại
dmScope:main(dùng chung) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: giá trị mặc định toàn cục cho định tuyến phiên gắn với luồng (Discord hỗ trợ/focus,/unfocus,/agents,/session idlevà/session max-age).- Xem Quản lý phiên để biết phạm vi, liên kết danh tính và chính sách gửi.
- Xem tài liệu tham chiếu đầy đủ để biết tất cả các trường.
Bật chế độ sandbox
Bật chế độ sandbox
scripts/sandbox-setup.sh, hoặc từ bản cài npm, xem lệnh docker build nội tuyến trong Chế độ sandbox § Image và thiết lập.Xem Chế độ sandbox để biết hướng dẫn đầy đủ và tài liệu tham chiếu đầy đủ để biết tất cả tùy chọn.Bật push dựa trên relay cho bản dựng iOS chính thức
Bật push dựa trên relay cho bản dựng iOS chính thức
https://ios-push-relay.openclaw.ai.Các triển khai relay tùy chỉnh yêu cầu một đường dẫn dựng/triển khai iOS tách riêng có chủ ý, trong đó URL relay khớp với URL relay của Gateway. Nếu bạn đang dùng bản dựng relay tùy chỉnh, hãy đặt mục này trong cấu hình Gateway:- Cho phép Gateway gửi
push.test, tín hiệu đánh thức và đánh thức kết nối lại thông qua relay bên ngoài. - Sử dụng quyền gửi theo phạm vi đăng ký được ứng dụng iOS đã ghép đôi chuyển tiếp. Gateway không cần token relay trên toàn bộ triển khai.
- Gắn mỗi đăng ký dựa trên relay với danh tính Gateway mà ứng dụng iOS đã ghép đôi, để Gateway khác không thể tái sử dụng đăng ký đã lưu.
- Giữ các bản dựng iOS cục bộ/thủ công trên APNs trực tiếp. Gửi dựa trên relay chỉ áp dụng cho các bản dựng phân phối chính thức đã đăng ký thông qua relay.
- Phải khớp với URL cơ sở relay được nhúng trong bản dựng iOS, để lưu lượng đăng ký và gửi đi tới cùng một triển khai relay.
- Cài đặt ứng dụng iOS chính thức.
- Tùy chọn: chỉ cấu hình
gateway.push.apns.relay.baseUrltrên Gateway khi dùng bản dựng relay tùy chỉnh tách riêng có chủ ý. - Ghép đôi ứng dụng iOS với Gateway và để cả phiên node lẫn phiên operator kết nối.
- Ứng dụng iOS lấy danh tính Gateway, đăng ký với relay bằng App Attest cùng biên nhận ứng dụng, rồi công bố payload
push.apns.registerdựa trên relay tới Gateway đã ghép đôi. - Gateway lưu handle relay và quyền gửi, rồi dùng chúng cho
push.test, tín hiệu đánh thức và đánh thức kết nối lại.
- Nếu bạn chuyển ứng dụng iOS sang Gateway khác, hãy kết nối lại ứng dụng để nó có thể công bố đăng ký relay mới gắn với Gateway đó.
- Nếu bạn phát hành bản dựng iOS mới trỏ tới triển khai relay khác, ứng dụng sẽ làm mới đăng ký relay đã lưu trong cache thay vì tái sử dụng nguồn relay cũ.
OPENCLAW_APNS_RELAY_BASE_URLvàOPENCLAW_APNS_RELAY_TIMEOUT_MSvẫn hoạt động dưới dạng ghi đè env tạm thời.- URL relay Gateway tùy chỉnh phải khớp với URL cơ sở relay được nhúng trong bản dựng iOS. Luồng phát hành App Store công khai từ chối các ghi đè URL relay iOS tùy chỉnh.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=truevẫn là lối thoát phát triển chỉ dành cho loopback; đừng lưu cố định URL relay HTTP trong cấu hình.
Thiết lập Heartbeat (điểm danh định kỳ)
Thiết lập Heartbeat (điểm danh định kỳ)
every: chuỗi thời lượng (30m,2h). Đặt0mđể tắt.target:last|none|<channel-id>(ví dụdiscord,matrix,telegram, hoặcwhatsapp)directPolicy:allow(mặc định) hoặcblockcho mục tiêu Heartbeat kiểu DM- Xem Heartbeat để biết hướng dẫn đầy đủ.
Cấu hình công việc Cron
Cấu hình công việc Cron
sessionRetention: dọn các phiên chạy tách biệt đã hoàn tất khỏisessions.json(mặc định24h; đặtfalseđể tắt).runLog: dọn các hàng lịch sử chạy Cron được giữ lại theo từng công việc.maxBytesvẫn được chấp nhận cho nhật ký chạy cũ dựa trên tệp.- Xem Công việc Cron để biết tổng quan tính năng và ví dụ CLI.
Thiết lập Webhook (hook)
Thiết lập Webhook (hook)
- Xem toàn bộ nội dung payload hook/Webhook là đầu vào không đáng tin cậy.
- Dùng
hooks.tokenchuyên dụng; không tái sử dụng bí mật xác thực Gateway đang hoạt động (gateway.auth.token/OPENCLAW_GATEWAY_TOKENhoặcgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Xác thực hook chỉ dùng header (
Authorization: Bearer ...hoặcx-openclaw-token); token trong chuỗi truy vấn bị từ chối. hooks.pathkhông thể là/; giữ Webhook ingress trên một đường dẫn con chuyên dụng như/hooks.- Giữ các cờ bỏ qua nội dung không an toàn ở trạng thái tắt (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) trừ khi đang gỡ lỗi trong phạm vi rất chặt. - Nếu bạn bật
hooks.allowRequestSessionKey, cũng đặthooks.allowedSessionKeyPrefixesđể giới hạn các khóa phiên do bên gọi chọn. - Với các tác tử được điều khiển bằng hook, ưu tiên các tầng mô hình hiện đại mạnh và chính sách công cụ nghiêm ngặt (ví dụ chỉ nhắn tin cộng với sandbox khi có thể).
Cấu hình định tuyến đa tác tử
Cấu hình định tuyến đa tác tử
Chia cấu hình thành nhiều tệp ($include)
Chia cấu hình thành nhiều tệp ($include)
$include để tổ chức các cấu hình lớn:- Một tệp: thay thế đối tượng chứa nó
- Mảng tệp: được gộp sâu theo thứ tự (mục sau thắng)
- Khóa cùng cấp: được gộp sau include (ghi đè giá trị đã include)
- Include lồng nhau: được hỗ trợ sâu tối đa 10 cấp
- Đường dẫn tương đối: được phân giải tương đối với tệp đang include
- Định dạng đường dẫn: đường dẫn include không được chứa byte null và phải ngắn hơn nghiêm ngặt 4096 ký tự trước và sau khi phân giải
- Ghi do OpenClaw sở hữu: khi một thao tác ghi chỉ thay đổi một mục cấp cao nhất
được hỗ trợ bởi include một tệp như
plugins: { $include: "./plugins.json5" }, OpenClaw cập nhật tệp đã include đó và giữ nguyênopenclaw.json - Ghi xuyên qua không được hỗ trợ: include ở root, mảng include và include có ghi đè cùng cấp sẽ đóng thất bại đối với thao tác ghi do OpenClaw sở hữu thay vì làm phẳng cấu hình
- Giới hạn phạm vi: đường dẫn
$includephải phân giải bên dưới thư mục chứaopenclaw.json. Để chia sẻ một cây giữa các máy hoặc người dùng, đặtOPENCLAW_INCLUDE_ROOTSthành danh sách đường dẫn (:trên POSIX,;trên Windows) của các thư mục bổ sung mà include có thể tham chiếu. Symlink được phân giải và kiểm tra lại, nên một đường dẫn nằm trong thư mục cấu hình về mặt từ vựng nhưng đích thực của nó thoát khỏi mọi root được cho phép vẫn sẽ bị từ chối. - Xử lý lỗi: lỗi rõ ràng cho tệp bị thiếu, lỗi phân tích cú pháp, include vòng tròn, định dạng đường dẫn không hợp lệ và độ dài quá mức
Tải lại nóng cấu hình
Gateway theo dõi~/.openclaw/openclaw.json và tự động áp dụng thay đổi - hầu hết thiết lập không cần khởi động lại thủ công.
Các chỉnh sửa tệp trực tiếp được xem là không đáng tin cậy cho đến khi chúng vượt qua xác thực. Bộ theo dõi chờ
biến động ghi tạm/đổi tên của trình soạn thảo ổn định, đọc tệp cuối cùng và từ chối
các chỉnh sửa bên ngoài không hợp lệ mà không ghi lại openclaw.json. Các thao tác ghi cấu hình
do OpenClaw sở hữu dùng cùng cổng schema trước khi ghi; các ghi đè phá hủy như
xóa gateway.mode hoặc thu nhỏ tệp hơn một nửa bị từ chối và
được lưu dưới dạng .rejected.* để kiểm tra.
Nếu bạn thấy config reload skipped (invalid config) hoặc khi khởi động báo Invalid config, hãy kiểm tra cấu hình, chạy openclaw config validate, rồi chạy openclaw doctor --fix để sửa. Xem Khắc phục sự cố Gateway
để biết danh sách kiểm tra.
Chế độ tải lại
| Chế độ | Hành vi |
|---|---|
hybrid (mặc định) | Áp dụng nóng các thay đổi an toàn ngay lập tức. Tự động khởi động lại với các thay đổi quan trọng. |
hot | Chỉ áp dụng nóng các thay đổi an toàn. Ghi cảnh báo khi cần khởi động lại - bạn tự xử lý. |
restart | Khởi động lại Gateway khi có bất kỳ thay đổi cấu hình nào, dù an toàn hay không. |
off | Tắt theo dõi tệp. Thay đổi có hiệu lực ở lần khởi động lại thủ công tiếp theo. |
Nội dung nào áp dụng nóng và nội dung nào cần khởi động lại
Hầu hết các trường được áp dụng nóng mà không có downtime. Ở chế độhybrid, các thay đổi yêu cầu khởi động lại được xử lý tự động.
| Danh mục | Trường | Cần khởi động lại? |
|---|---|---|
| Kênh | channels.*, web (WhatsApp) - tất cả kênh tích hợp sẵn và kênh Plugin | Không |
| Tác tử và mô hình | agent, agents, models, routing | Không |
| Tự động hóa | hooks, cron, agent.heartbeat | Không |
| Phiên và tin nhắn | session, messages | Không |
| Công cụ và phương tiện | tools, browser, skills, mcp, audio, talk | Không |
| UI và khác | ui, logging, identity, bindings | Không |
| Máy chủ Gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Có |
| Cơ sở hạ tầng | discovery, plugins | Có |
gateway.reload và gateway.remote là ngoại lệ - việc thay đổi chúng không kích hoạt khởi động lại.Lập kế hoạch tải lại
Khi bạn chỉnh sửa một tệp nguồn được tham chiếu qua$include, OpenClaw lập kế hoạch
tải lại từ bố cục do nguồn định nghĩa, không phải chế độ xem trong bộ nhớ đã được làm phẳng.
Điều đó giữ cho các quyết định tải lại nóng (áp dụng nóng so với khởi động lại) có thể dự đoán được ngay cả khi
một phần cấp cao nhất duy nhất nằm trong tệp được bao gồm riêng, chẳng hạn như
plugins: { $include: "./plugins.json5" }. Việc lập kế hoạch tải lại sẽ đóng an toàn nếu
bố cục nguồn không rõ ràng.
Config RPC (cập nhật bằng chương trình)
Đối với công cụ ghi cấu hình qua API Gateway, ưu tiên luồng này:config.schema.lookupđể kiểm tra một cây con (nút schema nông + tóm tắt phần con)config.getđể lấy snapshot hiện tại cùng vớihashconfig.patchcho cập nhật một phần (JSON merge patch: các đối tượng được hợp nhất,nullxóa, mảng được thay thế khi được xác nhận rõ ràng bằngreplacePathsnếu các mục sẽ bị xóa)config.applychỉ khi bạn định thay thế toàn bộ cấu hìnhupdate.runđể tự cập nhật rõ ràng cùng với khởi động lại; bao gồmcontinuationMessagekhi phiên sau khởi động lại cần chạy một lượt tiếp theoupdate.statusđể kiểm tra sentinel khởi động lại cập nhật mới nhất và xác minh phiên bản đang chạy sau khi khởi động lại
config.schema.lookup là điểm đến đầu tiên cho tài liệu và ràng buộc chính xác
ở cấp trường. Dùng Tham chiếu cấu hình
khi cần bản đồ cấu hình rộng hơn, giá trị mặc định hoặc liên kết đến các tham chiếu
hệ thống con chuyên dụng.
config.apply, config.patch, update.run) bị
giới hạn tốc độ ở 3 yêu cầu mỗi 60 giây cho mỗi deviceId+clientIp. Yêu cầu
khởi động lại được hợp nhất rồi áp dụng thời gian chờ 30 giây giữa các chu kỳ khởi động lại.
update.status là chỉ đọc nhưng nằm trong phạm vi quản trị vì sentinel khởi động lại có thể
bao gồm tóm tắt bước cập nhật và phần cuối đầu ra lệnh.config.apply và config.patch đều chấp nhận raw, baseHash, sessionKey,
note và restartDelayMs. baseHash là bắt buộc cho cả hai phương thức khi
cấu hình đã tồn tại.
config.patch cũng chấp nhận replacePaths, một mảng các đường dẫn cấu hình mà việc
thay thế mảng là có chủ ý. Nếu một patch sẽ thay thế hoặc xóa một mảng hiện có
bằng ít mục hơn, Gateway sẽ từ chối ghi trừ khi đường dẫn chính xác đó xuất hiện
trong replacePaths; các mảng lồng nhau dưới mục mảng dùng [], chẳng hạn như
agents.list[].skills. Điều này ngăn snapshot config.get bị cắt ngắn
âm thầm ghi đè các mảng định tuyến hoặc danh sách cho phép. Dùng config.apply khi bạn
định thay thế toàn bộ cấu hình.
Biến môi trường
OpenClaw đọc biến môi trường từ tiến trình cha cùng với:.envtừ thư mục làm việc hiện tại (nếu có)~/.openclaw/.env(dự phòng toàn cục)
Nhập env shell (tùy chọn)
Nhập env shell (tùy chọn)
OPENCLAW_LOAD_SHELL_ENV=1Thay thế biến môi trường trong giá trị cấu hình
Thay thế biến môi trường trong giá trị cấu hình
${VAR_NAME}:- Chỉ khớp tên viết hoa:
[A-Z_][A-Z0-9_]* - Biến thiếu/rỗng gây lỗi khi tải
- Escape bằng
$${VAR}để xuất ra literal - Hoạt động bên trong tệp
$include - Thay thế inline:
"${BASE}/v1"→"https://api.example.com/v1"
Tham chiếu bí mật (env, file, exec)
Tham chiếu bí mật (env, file, exec)
secrets.providers cho env/file/exec) nằm trong Quản lý bí mật.
Các đường dẫn thông tin xác thực được hỗ trợ được liệt kê trong Bề mặt thông tin xác thực SecretRef.Tham chiếu đầy đủ
Để xem tham chiếu đầy đủ theo từng trường, xem Tham chiếu cấu hình.Liên quan: Ví dụ cấu hình · Tham chiếu cấu hình · Doctor