OpenClaw 會從Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json 讀取選用的 設定。
作用中的設定路徑必須是一般檔案。OpenClaw 擁有的寫入不支援以符號連結形式配置的 openclaw.json;
原子寫入可能會取代該路徑,而不是保留符號連結。若你把設定保存在預設狀態目錄之外,
請將 OPENCLAW_CONFIG_PATH 直接指向真正的檔案。
如果檔案不存在,OpenClaw 會使用安全的預設值。新增設定的常見原因:
- 連接頻道並控制誰可以傳訊息給機器人
- 設定模型、工具、沙盒或自動化(cron、hooks)
- 調整工作階段、媒體、網路或 UI
config.schema.lookup 取得精確的欄位層級文件。
此頁面提供以任務為導向的指引;更完整的欄位地圖與預設值請參閱
設定參考。
最小設定
編輯設定
- Interactive wizard
- CLI (one-liners)
- Control UI
- Direct edit
嚴格驗證
openclaw config schema 會輸出 Control UI 與驗證使用的標準 JSON Schema。
config.schema.lookup 會為深入檢視工具取得單一以路徑為範圍的節點與子項摘要。
欄位 title/description 文件中繼資料會一路傳遞到巢狀物件、萬用字元 (*)、陣列項目 ([]) 以及 anyOf/
oneOf/allOf 分支。當 manifest registry 載入時,執行階段 Plugin 與頻道 schema 會合併進來。
驗證失敗時:
- Gateway 不會啟動
- 只有診斷命令可用(
openclaw doctor、openclaw logs、openclaw health、openclaw status) - 執行
openclaw doctor查看確切問題 - 執行
openclaw doctor --fix(或--yes)套用修復
openclaw.json
驗證失敗(包含 Plugin 本地驗證),Gateway 啟動會失敗,或重新載入會被略過且目前執行階段會保留最後接受的設定。
執行 openclaw doctor --fix(或 --yes)以修復帶前綴/被覆寫的設定,或
還原最後已知良好副本。當候選設定包含已遮蔽的秘密佔位符,例如 *** 時,會略過提升為最後已知良好。
常見任務
Set up a channel (WhatsApp, Telegram, Discord, etc.)
Set up a channel (WhatsApp, Telegram, Discord, etc.)
每個頻道在
channels.<provider> 下都有自己的設定區段。設定步驟請參閱專屬頻道頁面:- 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
Choose and configure models
Choose and configure models
設定主要模型與選用的備援模型:
agents.defaults.models定義模型目錄,並作為/model的允許清單;provider/*項目會將/model、/models和模型選擇器篩選到指定 provider,同時仍使用動態模型探索。- 使用
openclaw config set agents.defaults.models '<json>' --strict-json --merge新增允許清單項目,而不移除既有模型。除非傳入--replace,否則會移除項目的純取代會被拒絕。 - 模型參照使用
provider/model格式(例如anthropic/claude-opus-4-6)。 agents.defaults.imageMaxDimensionPx控制 transcript/tool 圖片縮小(預設1200);較低的值通常會降低大量截圖執行中的 vision-token 使用量。- 請參閱模型 CLI了解如何在聊天中切換模型,並參閱模型容錯移轉了解授權輪替與備援行為。
- 自訂/自架 provider 請參閱參考中的自訂 provider。
Control who can message the bot
Control who can message the bot
DM 存取權會透過
dmPolicy 依頻道控制:"pairing"(預設):未知傳送者會取得一次性配對碼以供核准"allowlist":只允許allowFrom中的傳送者(或已配對允許儲存中的傳送者)"open":允許所有傳入 DM(需要allowFrom: ["*"])"disabled":忽略所有 DM
groupPolicy + groupAllowFrom 或頻道專屬允許清單。各頻道詳細資訊請參閱完整參考。Set up group chat mention gating
Set up group chat mention gating
群組訊息預設為需要提及。請為每個 Agent 設定觸發模式,並讓可見的聊天室回覆保持在預設 message-tool 路徑,除非你有意使用舊式自動最終回覆:
- 中繼資料提及:原生 @-mentions(WhatsApp 點按提及、Telegram @bot 等)
- 文字模式:
mentionPatterns中的安全 regex 模式 - 可見回覆:
messages.visibleReplies可以要求全域使用 message-tool 傳送;messages.groupChat.visibleReplies會覆寫群組/頻道的設定。 - 可見回覆模式、各頻道覆寫與自我聊天模式請參閱完整參考。
Restrict skills per agent
Restrict skills per agent
Tune gateway channel health monitoring
Tune gateway channel health monitoring
Tune gateway WebSocket handshake timeout
Tune gateway WebSocket handshake timeout
在負載較高或低功耗主機上,給本機用戶端更多時間完成驗證前 WebSocket handshake:
- 預設值為
15000毫秒。 OPENCLAW_HANDSHAKE_TIMEOUT_MS仍會優先用於一次性的服務或 shell 覆寫。- 請優先修復啟動/事件迴圈停頓;此旋鈕適用於健康但暖機期間較慢的主機。
Configure sessions and resets
Configure sessions and resets
啟用沙箱
啟用沙箱
為官方 iOS 建置啟用 relay 支援的推播
為官方 iOS 建置啟用 relay 支援的推播
relay 支援的推播在 對應的 CLI:這會做什麼:
openclaw.json 中設定。在 Gateway 設定中設定:- 讓 Gateway 透過外部 relay 傳送
push.test、喚醒提示和重新連線喚醒。 - 使用由已配對 iOS App 轉送、以註冊為範圍的傳送授權。Gateway 不需要部署範圍的 relay token。
- 將每個 relay 支援的註冊繫結到 iOS App 配對的 Gateway 身分,因此另一個 Gateway 無法重用已儲存的註冊。
- 讓本機/手動 iOS 建置維持直接 APNs。relay 支援的傳送僅適用於透過 relay 註冊的官方發佈建置。
- 必須符合內建於官方/TestFlight iOS 建置的 relay base URL,讓註冊和傳送流量到達同一個 relay 部署。
- 安裝使用相同 relay base URL 編譯的官方/TestFlight iOS 建置。
- 在 Gateway 上設定
gateway.push.apns.relay.baseUrl。 - 將 iOS App 配對到 Gateway,並讓 node 與操作員工作階段都連線。
- iOS App 擷取 Gateway 身分,使用 App Attest 加上 app receipt 向 relay 註冊,然後將 relay 支援的
push.apns.registerpayload 發佈到已配對的 Gateway。 - Gateway 儲存 relay handle 和傳送授權,然後將它們用於
push.test、喚醒提示和重新連線喚醒。
- 如果你將 iOS App 切換到不同的 Gateway,請重新連線 App,讓它可以發佈繫結到該 Gateway 的新 relay 註冊。
- 如果你發佈指向不同 relay 部署的新 iOS 建置,App 會重新整理其快取的 relay 註冊,而不是重用舊的 relay origin。
OPENCLAW_APNS_RELAY_BASE_URL和OPENCLAW_APNS_RELAY_TIMEOUT_MS仍可作為暫時的環境覆寫使用。OPENCLAW_APNS_RELAY_ALLOW_HTTP=true仍是僅限 loopback 的開發逃生口;不要在設定中保留 HTTP relay URL。
設定 Heartbeat(定期 check-in)
設定 Heartbeat(定期 check-in)
every:期間字串(30m、2h)。設定為0m可停用。target:last|none|<channel-id>(例如discord、matrix、telegram或whatsapp)directPolicy:DM 風格 Heartbeat 目標使用allow(預設)或block- 請參閱 Heartbeat 取得完整指南。
設定 Cron 工作
設定 Cron 工作
sessionRetention:從sessions.json修剪已完成的隔離執行工作階段(預設24h;設定false可停用)。runLog:依大小和保留行數修剪cron/runs/<jobId>.jsonl。- 請參閱 Cron 工作,了解功能概覽和 CLI 範例。
設定 Webhook(hooks)
設定 Webhook(hooks)
在 Gateway 上啟用 HTTP Webhook 端點:安全性注意事項:
- 將所有 hook/webhook payload 內容視為不受信任的輸入。
- 使用專用的
hooks.token;不要重用共用的 Gateway token。 - Hook 驗證僅限標頭(
Authorization: Bearer ...或x-openclaw-token);查詢字串 token 會被拒絕。 hooks.path不能是/;請將 Webhook 入口保留在專用子路徑,例如/hooks。- 除非進行嚴格限定範圍的偵錯,否則請停用不安全內容繞過旗標(
hooks.gmail.allowUnsafeExternalContent、hooks.mappings[].allowUnsafeExternalContent)。 - 如果啟用
hooks.allowRequestSessionKey,也請設定hooks.allowedSessionKeyPrefixes,以限制呼叫者選取的工作階段金鑰。 - 對於 hook 驅動的代理,建議使用強大的現代模型層級和嚴格工具政策(例如僅限訊息傳遞,並在可能時加上沙箱)。
將設定拆分成多個檔案($include)
將設定拆分成多個檔案($include)
使用
$include 組織大型設定:- 單一檔案:取代所屬物件
- 檔案陣列:依序深度合併(後者優先)
- 同層金鑰:在 includes 之後合併(覆寫 included 值)
- 巢狀 includes:最多支援 10 層深度
- 相對路徑:相對於執行 include 的檔案解析
- OpenClaw 擁有的寫入:當寫入只變更一個最上層區段,且該區段
由單一檔案 include 支援,例如
plugins: { $include: "./plugins.json5" }, OpenClaw 會更新該 included 檔案,並保持openclaw.json完整不變 - 不支援的寫入穿透:root includes、include arrays,以及具有 同層覆寫的 includes,對 OpenClaw 擁有的寫入會以失敗關閉處理,而不是 攤平成設定
- 限制範圍:
$include路徑必須解析到保存openclaw.json的目錄下。若要在多台機器或多個使用者之間共用樹狀結構,請將OPENCLAW_INCLUDE_ROOTS設為額外目錄的路徑清單(POSIX 上為:,Windows 上為;), includes 可參照這些目錄。符號連結會被解析並重新檢查,因此如果路徑在字面上位於設定目錄中, 但其真實目標逃逸出每個允許的 root,仍會被拒絕。 - 錯誤處理:針對缺少檔案、解析錯誤和循環 includes 提供清楚錯誤
設定熱重新載入
Gateway 會監看~/.openclaw/openclaw.json 並自動套用變更 - 大多數設定不需要手動重新啟動。
直接檔案編輯在驗證前會被視為不受信任。監看器會等待
編輯器暫存寫入/重新命名的變動穩定,讀取最終檔案,並拒絕
無效的外部編輯,不會重寫 openclaw.json。OpenClaw 擁有的設定
寫入會在寫入前使用相同 schema gate;破壞性覆寫,例如
移除 gateway.mode 或將檔案縮小超過一半,會被拒絕並
儲存為 .rejected.* 以供檢查。
如果你看到 config reload skipped (invalid config),或啟動回報 Invalid config,請檢查設定、執行 openclaw config validate,然後執行 openclaw doctor --fix 進行修復。請參閱 Gateway 疑難排解
取得檢查清單。
重新載入模式
| 模式 | 行為 |
|---|---|
hybrid(預設) | 立即熱套用安全變更。對關鍵變更自動重新啟動。 |
hot | 只熱套用安全變更。需要重新啟動時記錄警告 - 由你處理。 |
restart | 任何設定變更都會重新啟動 Gateway,無論是否安全。 |
off | 停用檔案監看。變更會在下次手動重新啟動時生效。 |
什麼會熱套用,什麼需要重新啟動
大多數欄位都會在不中斷服務的情況下熱套用。在hybrid 模式中,需要重新啟動的變更會自動處理。
| 類別 | 欄位 | 需要重新啟動? |
|---|---|---|
| 頻道 | channels.*、web(WhatsApp)- 所有內建和 Plugin 頻道 | 否 |
| 代理與模型 | agent、agents、models、routing | 否 |
| 自動化 | hooks、cron、agent.heartbeat | 否 |
| 工作階段與訊息 | session、messages | 否 |
| 工具與媒體 | tools、browser、skills、mcp、audio、talk | 否 |
| UI 與其他 | ui、logging、identity、bindings | 否 |
| Gateway 伺服器 | gateway.*(port、bind、auth、tailscale、TLS、HTTP) | 是 |
| 基礎架構 | discovery、plugins | 是 |
gateway.reload 和 gateway.remote 是例外 - 變更它們不會觸發重新啟動。重新載入規劃
當你編輯透過$include 參照的來源檔案時,OpenClaw 會從來源撰寫的版面規劃
重新載入,而不是從展平後的記憶體內視圖規劃。
這讓熱重載決策(熱套用或重新啟動)保持可預測,即使單一頂層區段
位於自己的 include 檔案中,例如
plugins: { $include: "./plugins.json5" }。如果來源版面不明確,重新載入規劃會保守失敗。
Config RPC(程式化更新)
對於透過 gateway API 寫入 config 的工具,建議使用此流程:config.schema.lookup用於檢查一個子樹(淺層 schema 節點 + 子項摘要)config.get用於擷取目前快照與hashconfig.patch用於部分更新(JSON merge patch:物件合併、null刪除、陣列取代)- 只有當你打算取代整個 config 時才使用
config.apply update.run用於明確自我更新並重新啟動;當重新啟動後的工作階段應執行一個後續回合時,請包含continuationMessageupdate.status用於檢查最新的更新重新啟動 sentinel,並在重新啟動後驗證執行中的版本
config.schema.lookup 視為取得精確欄位層級文件與限制的第一站。
當需要更廣泛的 config 對照表、預設值或專屬子系統參考連結時,請使用
Configuration reference。
控制平面寫入(
config.apply、config.patch、update.run)會依
deviceId+clientIp 限制為每 60 秒 3 個請求。重新啟動請求會合併,接著在重新啟動週期之間強制執行 30 秒冷卻時間。
update.status 是唯讀的,但屬於 admin 範圍,因為重新啟動 sentinel 可能包含更新步驟摘要與命令輸出尾端。config.apply 和 config.patch 都接受 raw、baseHash、sessionKey、
note 和 restartDelayMs。當 config 已存在時,兩個方法都需要 baseHash。
環境變數
OpenClaw 會從父程序加上下列來源讀取 env var:- 目前工作目錄中的
.env(如果存在) ~/.openclaw/.env(全域 fallback)
Shell env 匯入(選用)
Shell env 匯入(選用)
如果啟用且預期的 key 尚未設定,OpenClaw 會執行你的登入 shell,並只匯入缺少的 key:對應的 env var:
OPENCLAW_LOAD_SHELL_ENV=1Config 值中的 env var 替換
Config 值中的 env var 替換
使用 規則:
${VAR_NAME} 在任何 config 字串值中參照 env var:- 只匹配大寫名稱:
[A-Z_][A-Z0-9_]* - 缺少或空白的 var 會在載入時擲出錯誤
- 使用
$${VAR}逸出以輸出字面值 - 可在
$include檔案內運作 - Inline 替換:
"${BASE}/v1"→"https://api.example.com/v1"
Secret ref(env、file、exec)
Secret ref(env、file、exec)
對於支援 SecretRef 物件的欄位,你可以使用:SecretRef 詳細資訊(包含
env/file/exec 的 secrets.providers)位於 Secrets Management。
支援的憑證路徑列於 SecretRef Credential Surface。完整參考
如需完整逐欄位參考,請參閱 Configuration Reference。相關:Configuration Examples · Configuration Reference · Doctor