Gateway
Cấu hình
OpenClaw đọc cấu hình JSON5 tùy chọn từ ~/.openclaw/openclaw.json. Nếu tệp không tồn tại, OpenClaw sử dụng các giá trị mặc định an toàn.
Đường dẫn cấu hình đang hoạt động phải là một tệp thông thường. Các thao tác ghi do OpenClaw thực hiện sẽ thay thế tệp theo cách nguyên tử (đổi tên vào đường dẫn), vì vậy với openclaw.json là liên kết tượng trưng, đích của liên kết sẽ bị thay thế thay vì được ghi xuyên qua liên kết — tránh bố cục cấu hình dùng liên kết tượng trưng. Nếu lưu 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ực.
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
- Thiết lập mô hình, công cụ, cơ chế sandbox hoặc tự động hóa (cron, hook)
- Tinh chỉnh phiên, nội dung đa phương tiện, mạng hoặc giao diện người dùng
Xem tài liệu tham chiếu đầy đủ để biết mọi trường khả dụng.
Agent và quy trình tự động hóa nên dùng config.schema.lookup để xem 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 để xem hướng dẫn theo tác vụ và
Tài liệu tham chiếu cấu hình để xem bản đồ trường
và các giá trị mặc định đầy đủ hơn.
Cấu hình tối thiểu
// ~/.openclaw/openclaw.json{ agents: { defaults: { workspace: "~/.openclaw/workspace" } }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}Chỉnh sửa cấu hình
Trình hướng dẫn tương tác
openclaw onboard # quy trình hướng dẫn ban đầu đầy đủopenclaw configure # trình hướng dẫn cấu hìnhCLI (lệnh một dòng)
openclaw config get agents.defaults.workspaceopenclaw config set agents.defaults.heartbeat.every "2h"openclaw config unset plugins.entries.brave.config.webSearch.apiKeyGiao diện điều khiển
Mở http://127.0.0.1:18789 và dùng thẻ Config.
Giao diện điều khiển kết xuất biểu mẫu từ lược đồ cấu hình trực tiếp, bao gồm siêu dữ liệu tài liệu
title / description của trường cùng với lược đồ Plugin và kênh khi
có sẵn, đồng thời cung cấp trình soạn thảo Raw JSON như một lối thoát. Đối với các
giao diện đi sâu vào chi tiết và công cụ khác, Gateway cũng cung cấp config.schema.lookup để
truy xuất một nút lược đồ theo phạm vi đường dẫn cùng phần tóm tắt các nút con trực tiếp.
Chỉnh sửa trực tiếp
Chỉnh sửa trực tiếp ~/.openclaw/openclaw.json. Gateway theo dõi tệp và tự động áp dụng các thay đổi (xem tải lại nóng).
Xác thực nghiêm ngặt
openclaw config schema in ra JSON Schema chuẩn tắc mà giao diện điều khiển
và quy trình xác thực sử dụng. config.schema.lookup truy xuất một nút theo phạm vi đường dẫn cùng
phần tóm tắt các nút con cho công cụ đi sâu vào chi tiết. Siêu dữ liệu tài liệu title/description của trường
được truyền qua các đối tượng lồng nhau, ký tự đại diện (*), phần tử mảng ([]) và các nhánh anyOf/
oneOf/allOf. Lược đồ Plugin và kênh khi chạy được hợp nhất khi
sổ đăng ký manifest đượ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 chính xác các vấn đề - Chạy
openclaw doctor --fix(--repairlà cùng một cờ;--yesbỏ qua lời nhắc) để áp dụng sửa chữa
Gateway lưu một bản sao đáng tin cậy gần nhất được xác nhận là tốt sau mỗi lần khởi động thành công,
nhưng quá trình khởi động và tải lại nóng không tự động khôi phục bản sao này — chỉ openclaw doctor --fix
thực hiện việc đó. Nếu 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 sẽ thất bại hoặc lần tải lại sẽ bị bỏ qua, còn môi trường chạy hiện tại tiếp tục dùng
cấu hình được chấp nhận gần nhất. Thao tác ghi bị từ chối cũng được lưu thành <path>.rejected.<timestamp> để kiểm tra.
Gateway chặn các thao tác ghi có vẻ vô tình ghi đè dữ liệu — làm mất gateway.mode,
làm mất khối meta hoặc thu nhỏ tệp quá một nửa — trừ khi thao tác ghi
cho phép rõ ràng các thay đổi phá hủy dữ liệu. Việc thăng cấp thành bản gần nhất được xác nhận là tốt sẽ bị bỏ qua khi
ứng viên chứa phần giữ chỗ bí mật đã được che như *** hoặc [redacted].
Tác vụ phổ biến
Thiết lập kênh (WhatsApp, Telegram, Discord, v.v.)
Mỗi kênh có phần cấu hình riêng trong channels.<provider>. Xem trang dành riêng cho kênh để biết các bước thiết lập:
- Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - iMessage -
channels.imessage - Mattermost -
channels.mattermost - Microsoft Teams -
channels.msteams - Signal -
channels.signal - Slack -
channels.slack - Telegram -
channels.telegram - WhatsApp -
channels.whatsapp
Tất cả các kênh đều dùng chung mẫu chính sách tin nhắn trực tiếp:
{ channels: { telegram: { enabled: true, botToken: "123:abc", dmPolicy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["tg:123"], // chỉ dành cho allowlist/open }, },}Chọn và cấu hình mô hình
Thiết lập mô hình chính và các phương án dự phòng tùy chọn:
{ agents: { defaults: { model: { primary: "anthropic/claude-sonnet-4-6", fallbacks: ["openai/gpt-5.4"], }, models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" }, "openai/gpt-5.4": { alias: "GPT" }, }, }, },}agents.defaults.modelslưu bí danh và thiết lập theo từng mô hình; việc thêm một mục không bao giờ hạn chế các giá trị ghi đè/modelhoặc--model.agents.defaults.modelPolicy.allowlà danh sách cho phép rõ ràng dành cho các giá trị ghi đè và trình chọn mô hình. Trường này chấp nhận tham chiếu chính xác và ký tự đại diệnprovider/*; bỏ qua trường này hoặc dùng[]để cho phép mọi mô hình.- 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 việc giảm kích thước hình ảnh trong bản chép lời/công cụ (mặc định1200); giá trị thấp hơn thường giảm mức sử dụng token thị giác trong các lượt chạy có nhiều ảnh chụp màn hình.- Xem CLI mô hình để chuyển đổi mô hình trong cuộc trò chuyện và Chuyển đổi dự phòng mô hình để biết hành vi luân phiên xác thực và dự phòng.
- Đối với nhà cung cấp tùy chỉnh/tự lưu trữ, xem Nhà cung cấp tùy chỉnh trong tài liệu tham chiếu.
Kiểm soát ai có thể nhắn tin cho bot
Quyền truy cập tin nhắn trực tiếp được kiểm soát theo từng kênh qua dmPolicy (mặc định "pairing"):
"pairing": 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 tất cả tin nhắn trực tiếp đến (yêu cầuallowFrom: ["*"])"disabled": bỏ qua tất cả tin nhắn trực tiếp
Đối với nhóm, dùng groupPolicy ("allowlist" | "open" | "disabled") cùng với groupAllowFrom hoặc danh sách cho phép dành riêng cho kênh.
Xem tài liệu tham chiếu đầy đủ để biết chi tiết theo từng kênh.
Thiết lập điều kiện đề cập trong trò chuyện nhóm
Tin nhắn nhóm mặc định yêu cầu đề cập. Cấu hình mẫu kích hoạt theo từng agent. Phản hồi nhóm/kênh thông thường được đăng tự động; hãy chủ động chọn đường dẫn công cụ tin nhắn cho các phòng dùng chung nơi agent cần quyết định thời điểm lên tiếng:
{ messages: { visibleReplies: "automatic", // đặt thành "message_tool" để yêu cầu gửi bằng công cụ tin nhắn ở mọi nơi groupChat: { visibleReplies: "message_tool", // chủ động bật; đầu ra hiển thị yêu cầu message(action=send) unmentionedInbound: "room_event", // trò chuyện nhóm luôn bật nhưng không đề cập chỉ là ngữ cảnh thụ động }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw"], }, }, ], }, channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}- Đề cập qua siêu dữ liệu: @-mention gốc (nhấn để đề cập trên WhatsApp, @bot trên Telegram, v.v.)
- Mẫu văn bản: mẫu biểu thức chính quy 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 đè thiết lập đó cho nhóm/kênh. - Xem tài liệu tham chiếu đầy đủ để biết các chế độ phản hồi hiển thị, giá trị ghi đè theo kênh và chế độ tự trò chuyện.
Giới hạn Skills theo từng agent
Dùng agents.defaults.skills làm đường cơ sở dùng chung, sau đó ghi đè các
agent cụ thể bằng agents.list[].skills:
{ agents: { defaults: { skills: ["github", "weather"], }, list: [ { id: "writer" }, // kế thừa github, weather { id: "docs", skills: ["docs-search"] }, // thay thế giá trị mặc định { id: "locked-down", skills: [] }, // không có Skills ], },}- Bỏ qua
agents.defaults.skillsđể mặc định không giới hạn Skills. - Bỏ qua
agents.list[].skillsđể kế thừa các giá trị mặc định. - Đặt
agents.list[].skills: []để không có Skills. - Xem Skills, Cấu hình Skills và Tài liệu tham chiếu cấu hình.
Cấu hình giám sát tình trạng theo từng kênh
Tắt hoặc bật tự động khởi động lại theo tình trạng cho một kênh hoặc tài khoản:
{ channels: { telegram: { healthMonitor: { enabled: false }, accounts: { alerts: { healthMonitor: { enabled: true }, }, }, }, },}- Dùng
channels.<provider>.healthMonitor.enabledhoặcchannels.<provider>.accounts.<id>.healthMonitor.enabledđể kiểm soát tự động khởi động lại cho một kênh hoặc tài khoản. - Xem Kiểm tra tình trạng để gỡ lỗi vận hành và tài liệu tham chiếu đầy đủ để biết tất cả các trường.
Cấu hình phiên và đặt lại
Phiên kiểm soát tính liên tục và sự cô lập của cuộc trò chuyện:
{ session: { dmScope: "per-channel-peer", // khuyến nghị cho nhiều người dùng threadBindings: { enabled: true, idleHours: 24, maxAgeHours: 0, }, reset: { mode: "daily", atHour: 4, idleMinutes: 120, }, },}dmScope:main(dùng chung) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: các giá trị mặc định toàn cục để định tuyến phiên gắn với luồng./focus,/unfocus,/agents,/session idlevà/session max-agelần lượt gắn, bỏ gắn, liệt kê và tinh chỉnh thiết lập này theo từng phiên (Discord gắn các luồng, Telegram gắn các chủ đề/cuộc trò chuyện).- Xem Quản lý phiên để biết về phạm vi, liên kết danh tính và chính sách gửi.
- Xem tài liệu tham khảo đầy đủ để biết tất cả các trường.
Bật sandbox
Chạy các phiên tác tử trong những môi trường runtime sandbox tách biệt:
{ agents: { defaults: { sandbox: { mode: "non-main", // tắt | không phải chính | tất cả scope: "agent", // phiên | tác tử | dùng chung }, }, },}Trước tiên hãy dựng image — từ một bản checkout mã nguồn, chạy scripts/sandbox-setup.sh; hoặc nếu cài đặt từ npm, xem lệnh docker build nội tuyến trong Sandbox § Image và thiết lập.
Xem Sandbox để biết hướng dẫn đầy đủ và tài liệu tham khảo đầy đủ để biết tất cả các tùy chọn.
Bật tính năng đẩy qua relay cho các bản dựng iOS chính thức
Tính năng đẩy qua relay cho các bản dựng App Store công khai sử dụng relay OpenClaw được lưu trữ: https://ios-push-relay.openclaw.ai.
Các triển khai relay tùy chỉnh yêu cầu một quy trình dựng/triển khai iOS riêng biệt có chủ đích, trong đó URL relay khớp với URL relay của Gateway. Nếu đang sử dụng bản dựng relay tùy chỉnh, hãy đặt cấu hình sau trong Gateway:
{ gateway: { push: { apns: { relay: { baseUrl: "https://relay.example.com", // Tùy chọn. Mặc định: 10000 timeoutMs: 10000, }, }, }, },}Lệnh CLI tương đương:
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.comTác dụng của cấu hình này:
- Cho phép Gateway gửi
push.test, tín hiệu đánh thức và tín hiệu đá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ý do ứng dụng iOS đã ghép đôi chuyển tiếp. Gateway không cần token relay dùng cho toàn bộ triển khai.
- Gắn mỗi đăng ký qua 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 sử dụng APNs trực tiếp. Hoạt động gửi qua relay chỉ áp dụng cho các bản dựng được phân phối chính thức đã đăng ký thông qua relay.
- Phải khớp với URL cơ sở của relay được nhúng trong bản dựng iOS, để lưu lượng đăng ký và gửi đến cùng một triển khai relay.
Luồng đầu cuối:
- 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 sử dụng một bản dựng relay tùy chỉnh riêng biệt có chủ đích. - Ghép đôi ứng dụng iOS với Gateway và cho phép cả phiên Node lẫn phiên người vận hành kết nối.
- Ứng dụng iOS truy xuất danh tính Gateway, đăng ký với relay bằng App Attest cùng biên lai ứng dụng, sau đó gửi tải trọng
push.apns.registerqua relay đến Gateway đã ghép đôi. - Gateway lưu mã xử lý relay và quyền gửi, sau đó sử dụng chúng cho
push.test, tín hiệu đánh thức và tín hiệu đánh thức để kết nối lại.
Lưu ý vận hành:
- Nếu chuyển ứng dụng iOS sang một Gateway khác, hãy kết nối lại ứng dụng để ứng dụng có thể gửi đăng ký relay mới được gắn với Gateway đó.
- Nếu phát hành bản dựng iOS mới trỏ đến một triển khai relay khác, ứng dụng sẽ làm mới đăng ký relay đã lưu trong bộ nhớ đệm thay vì tái sử dụng nguồn relay cũ.
Lưu ý về khả năng tương thích:
OPENCLAW_APNS_RELAY_BASE_URLvàOPENCLAW_APNS_RELAY_TIMEOUT_MSvẫn hoạt động dưới dạng các giá trị ghi đè tạm thời bằng biến môi trường.- URL relay tùy chỉnh của Gateway phải khớp với URL cơ sở của 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 giá trị 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; không lưu cố định URL relay HTTP trong cấu hình.
Xem Ứng dụng iOS để biết luồng đầu cuối và Luồng xác thực và tin cậy để biết mô hình bảo mật của relay.
Thiết lập Heartbeat (kiểm tra định kỳ)
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", }, }, },}every: chuỗi thời lượng (30m,2h). Đặt0mđể tắt. Mặc định:30m.target:last|none|<channel-id>(ví dụ:discord,matrix,telegramhoặcwhatsapp)directPolicy:allow(mặc định) hoặcblockcho các đích Heartbeat kiểu tin nhắn trực tiếp- Xem Heartbeat để biết hướng dẫn đầy đủ.
Cấu hình tác vụ Cron
{ cron: { enabled: true, sessionRetention: "24h", },}sessionRetention: xóa các phiên chạy tách biệt đã hoàn tất khỏi các hàng phiên SQLite (mặc định24h; đặtfalseđể tắt).- Lịch sử chạy tự động giữ lại 2000 hàng trạng thái kết thúc mới nhất cho mỗi tác vụ; các hàng bị mất vẫn giữ thời hạn dọn dẹp 24 giờ.
- Xem Tác vụ Cron để biết tổng quan tính năng và các ví dụ CLI.
Thiết lập Webhook (hook)
Bật các điểm cuối Webhook HTTP trên Gateway:
{ hooks: { enabled: true, token: "shared-secret", path: "/hooks", defaultSessionKey: "hook:ingress", allowRequestSessionKey: false, allowedSessionKeyPrefixes: ["hook:"], mappings: [ { match: { path: "gmail" }, action: "agent", agentId: "main", deliver: true, }, ], },}Lưu ý bảo mật:
- Xem toàn bộ nội dung tải trọng hook/Webhook là dữ liệu đầu vào không đáng tin cậy.
- Sử dụng một
hooks.tokenchuyên dụng; không tái sử dụng các 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ỉ sử dụng header (
Authorization: Bearer ...hoặcx-openclaw-token); token trong chuỗi truy vấn sẽ bị từ chối. hooks.pathkhông thể là/; hãy đặt điểm tiếp nhận Webhook trên một đường dẫn con chuyên dụng như/hooks.- Giữ các cờ bỏ qua kiểm tra 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 được kiểm soát chặt chẽ. - Nếu bật
hooks.allowRequestSessionKey, hãy đồng thời đặthooks.allowedSessionKeyPrefixesđể giới hạn các khóa phiên do bên gọi chọn. - Đối với các tác tử được kích hoạt bằng hook, nên ưu tiên các cấp mô hình hiện đại, mạnh mẽ cùng chính sách công cụ nghiêm ngặt (ví dụ: chỉ nhắn tin, kết hợp sandbox khi có thể).
Xem tài liệu tham khảo đầy đủ để biết tất cả các tùy chọn ánh xạ và tích hợp Gmail.
Cấu hình định tuyến đa tác tử
Chạy nhiều tác tử tách biệt với các không gian làm việc và phiên riêng:
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}Xem Đa tác tử và tài liệu tham khảo đầy đủ để biết các quy tắc gắn kết và hồ sơ truy cập theo từng tác tử.
Chia cấu hình thành nhiều tệp ($include)
Sử dụng $include để tổ chức các cấu hình lớn:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/a.json5", "./clients/b.json5"], },}- Một tệp: thay thế đối tượng chứa nó
- Mảng tệp: hợp nhất sâu theo thứ tự (tệp sau được ưu tiên), với tối đa 10 cấp lồng nhau
- Khóa cùng cấp: được hợp nhất sau các tệp được bao gồm (ghi đè các giá trị được bao gồm)
- Đường dẫn tương đối: được phân giải tương đối so với tệp bao gồm chúng
- Định dạng đường dẫn: đường dẫn bao gồm không được chứa byte null và phải ngắn hơn nghiêm ngặt 4096 ký tự cả trước và sau khi phân giải
- Thao tác ghi do OpenClaw thực hiện: khi một thao tác ghi chỉ thay đổi một phần cấp cao nhất
được cung cấp bởi một tệp bao gồm duy nhất như
plugins: { $include: "./plugins.json5" }, OpenClaw cập nhật tệp được bao gồm đó và giữ nguyênopenclaw.json - Không hỗ trợ ghi xuyên qua: các tệp bao gồm ở gốc, mảng tệp bao gồm và các tệp bao gồm có giá trị ghi đè cùng cấp sẽ bị từ chối an toàn đối với thao tác ghi do OpenClaw thực hiện thay vì làm phẳng cấu hình
- Giới hạn phạm vi: các đường dẫn
$includephải được phân giải bên trong thư mục chứaopenclaw.json. Để chia sẻ một cây thư mục giữa các máy hoặc người dùng, hãy đặtOPENCLAW_INCLUDE_ROOTSthành danh sách đường dẫn (:trên POSIX,;trên Windows) gồm các thư mục bổ sung mà tệp bao gồm có thể tham chiếu. Các liên kết tượng trưng được phân giải và kiểm tra lại, vì vậy một đường dẫn về mặt từ vựng nằm trong thư mục cấu hình nhưng có đích thực nằm ngoài mọi gốc được phép vẫn sẽ bị từ chối. - Xử lý lỗi: cung cấp lỗi rõ ràng cho tệp bị thiếu, lỗi phân tích cú pháp, vòng lặp tệp bao gồm, định dạng đường dẫn không hợp lệ và độ dài vượt quá giới hạn
Tải lại nóng cấu hình
Gateway theo dõi ~/.openclaw/openclaw.json và tự động áp dụng các thay đổi — hầu hết cài đặt không cần khởi động lại thủ công.
Các chỉnh sửa trực tiếp vào tệp được xem là không đáng tin cậy cho đến khi vượt qua bước xác thực. Trình theo dõi chờ
hoạt động ghi tệp 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 thực hiện sử dụng cùng một cổng kiểm tra schema trước khi ghi (xem Xác thực nghiêm ngặt
để biết các quy tắc ghi đè/hoàn tác áp dụng cho mọi thao tác ghi).
Nếu thấy config reload skipped (invalid config) hoặc quá trình khởi động báo cáo Invalid config, hãy kiểm tra cấu hình, chạy openclaw config validate, sau đó chạy openclaw doctor --fix để sửa chữ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 ngay lập tức các thay đổi an toàn. Tự động khởi động lại đố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 phải 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. Các thay đổi có hiệu lực vào lần khởi động lại thủ công tiếp theo. |
{ gateway: { reload: { mode: "hybrid", debounceMs: 300 }, },}Nội dung nào được á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ó thời gian ngừng hoạt động; một số phần được áp dụng nóng chỉ khởi động lại
hệ thống con tương ứng (kênh, cron, heartbeat, trình giám sát tình trạng) thay vì toàn bộ Gateway. Trong
chế độ hybrid, các thay đổi yêu cầu khởi động lại Gateway được xử lý tự động.
| Danh mục | Trường | Cần khởi động lại Gateway? |
|---|---|---|
| Kênh | channels.*, web (WhatsApp) - tất cả các kênh tích hợp sẵn và kênh Plugin |
Không (khởi động lại kênh đó) |
| Tác tử & mô hình | agent, agents, models, routing |
Không |
| Tự động hóa | hooks, cron, agent.heartbeat |
Không (khởi động lại hệ thống con đó) |
| Phiên & tin nhắn | session, messages |
Không |
| Công cụ & phương tiện | tools, skills, mcp, audio, talk |
Không |
| Cấu hình Plugin | plugins.entries.*, plugins.allow, plugins.deny, plugins.enabled |
Không (tải lại runtime Plugin) |
| Giao diện người dùng & mục khác | ui, logging, identity, bindings |
Không |
| Máy chủ Gateway | gateway.* (cổng, liên kết, xác thực, tailscale, TLS, HTTP, đẩy) |
Có |
| Hạ tầng | discovery, browser, plugins.load, plugins.installs |
Có |
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 thông qua $include, OpenClaw lập kế hoạch
tải lại dựa trên bố cục do nguồn định nghĩa, không phải dạng xem phẳng trong bộ nhớ.
Điều này giúp các quyết định tải lại nóng (áp dụng nóng hay 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ẽ từ chối an toàn nếu
bố cục nguồn không rõ ràng.
RPC cấu hình (cập nhật theo 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 lược đồ nông + phần tóm tắt các nút con)config.getđể lấy ảnh chụp nhanh hiện tại cùng vớihashconfig.patchcho các cập nhật một phần (bản vá hợp nhất JSON: các đối tượng được hợp nhất,nullsẽ xóa, các mảng được thay thế khi xác nhận rõ ràng bằngreplacePathsnếu các mục sẽ bị xóa)config.applychỉ khi bạn có ý định thay thế toàn bộ cấu hìnhupdate.runđể tự cập nhật và khởi động lại rõ ràng; bao gồmcontinuationMessagekhi phiên sau khi khởi động lại cần chạy thêm một lượt tiếp theoupdate.statusđể kiểm tra dấu hiệu khởi động lại do cập nhật gần nhất và xác minh phiên bản đang chạy sau khi khởi động lại
Các tác tử nên xem config.schema.lookup là điểm dừng đầu tiên để biết tài liệu và ràng buộc chính xác
ở cấp trường. Sử dụng Tham chiếu cấu hình
khi cần bản đồ cấu hình rộng hơn, các giá trị mặc định hoặc liên kết đến tài liệu tham chiếu
dành riêng cho hệ thống con.
Ví dụ về bản vá một phần:
openclaw gateway call config.get --params '{}' # ghi lại payload.hashopenclaw gateway call config.patch --params '{ "raw": "{ channels: { telegram: { groups: { \"*\": { requireMention: false } } } } }", "baseHash": "<hash>"}'Cả config.apply và config.patch đều chấp nhận raw, baseHash, sessionKey,
note và restartDelayMs. baseHash là bắt buộc đối với cả hai phương thức khi
tệp cấu hình đã tồn tại (lần ghi đầu tiên khi chưa có cấu hình sẽ bỏ qua bước kiểm tra).
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 bản vá sẽ thay thế hoặc xóa một mảng hiện có
bằng mảng có ít mục hơn, Gateway sẽ từ chối thao tác ghi trừ khi chính xác đường dẫn đó xuất hiện
trong replacePaths; các mảng lồng bên dưới mục mảng sử dụng [], chẳng hạn như
agents.list[].skills. Điều này ngăn các ảnh chụp nhanh 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. Sử dụng config.apply khi bạn
có ý định thay thế toàn bộ cấu hình.
Biến môi trường
OpenClaw đọc cá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(phương án dự phòng toàn cục)
Cả hai tệp đều không ghi đè các biến môi trường hiện có. Bạn cũng có thể đặt biến môi trường nội tuyến trong cấu hình:
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-..." }, },}Nhập môi trường shell (tùy chọn)
Nếu được bật và các khóa dự kiến chưa được đặt, OpenClaw sẽ chạy shell đăng nhập của bạn và chỉ nhập các khóa còn thiếu:
{env: { shellEnv: { enabled: true, timeoutMs: 15000 },},}Biến môi trường tương đương: OPENCLAW_LOAD_SHELL_ENV=1. timeoutMs mặc định: 15000.
Thay thế biến môi trường trong giá trị cấu hình
Tham chiếu biến môi trường trong bất kỳ giá trị chuỗi cấu hình nào bằng ${VAR_NAME}:
{gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },}Quy tắc:
- Chỉ khớp tên viết hoa:
[A-Z_][A-Z0-9_]* - Biến bị thiếu/trống sẽ gây lỗi khi tải
- Thoát bằng
$${VAR}để xuất nguyên văn - Hoạt động bên trong các tệp
$include - Thay thế nội tuyến:
"${BASE}/v1"→"https://api.example.com/v1"
Tham chiếu bí mật (môi trường, tệp, thực thi)
Đối với các trường hỗ trợ đối tượng SecretRef, bạn có thể sử dụng:
{models: { providers: { openai: { apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" } }, },},skills: { entries: { "image-lab": { apiKey: { source: "file", provider: "filemain", id: "/skills/entries/image-lab/apiKey", }, }, },},channels: { googlechat: { serviceAccountRef: { source: "exec", provider: "vault", id: "channels/googlechat/serviceAccount", }, },},}Chi tiết về SecretRef (bao gồm secrets.providers cho env/file/exec) có 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.
Xem Môi trường để biết đầy đủ thứ tự ưu tiên và các nguồn.
Tham chiếu đầy đủ
Để xem tài liệu tham chiếu đầy đủ theo từng trường, hãy 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