OpenClaw 會從Documentation Index
Fetch the complete documentation index at: https://docs.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 取得精確的欄位層級
文件。此頁面提供以任務為導向的指南;設定參考則提供更完整的
欄位地圖與預設值。
最小設定
編輯設定
- 互動式精靈
- CLI(單行指令)
- 控制 UI
- 直接編輯
嚴格驗證
openclaw config schema 會列印控制 UI 和驗證使用的標準 JSON Schema。
config.schema.lookup 會擷取單一路徑範圍的節點,以及供深入查看工具使用的
子項摘要。欄位 title/description 文件中繼資料會沿著巢狀物件、萬用字元(*)、
陣列項目([])以及 anyOf/
oneOf/allOf 分支傳遞。執行階段 plugin 和頻道 schema 會在
manifest registry 載入時合併。
驗證失敗時:
- Gateway 不會啟動
- 只有診斷指令可用(
openclaw doctor、openclaw logs、openclaw health、openclaw status) - 執行
openclaw doctor以查看確切問題 - 執行
openclaw doctor --fix(或--yes)以套用修復
openclaw.json 稍後驗證失敗(或移除 gateway.mode、大幅縮小,
或前面被加上一行意外的記錄),OpenClaw 會將損壞的檔案保留為
.clobbered.*,還原最後已知良好副本,並記錄復原原因。
下一次 agent 回合也會收到系統事件警告,讓主要
agent 不會盲目重寫已還原的設定。當候選設定包含已遮蔽的秘密佔位符(例如 ***)時,
會略過提升為最後已知良好副本。
當所有驗證問題都限定在 plugins.entries.<id>... 範圍內時,OpenClaw
不會執行整個檔案的復原。它會保持目前設定作用中,並
呈現 plugin 本地失敗,避免 plugin schema 或主機版本不相容
回復無關的使用者設定。
常見任務
設定頻道(WhatsApp、Telegram、Discord 等)
設定頻道(WhatsApp、Telegram、Discord 等)
每個頻道在
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
選擇並設定模型
選擇並設定模型
設定主要模型與可選的備援模型:
agents.defaults.models定義模型目錄,並作為/model的允許清單。- 使用
openclaw config set agents.defaults.models '<json>' --strict-json --merge新增允許清單項目,而不移除現有模型。若一般替換會移除項目,除非傳入--replace,否則會被拒絕。 - 模型參照使用
provider/model格式(例如anthropic/claude-opus-4-6)。 agents.defaults.imageMaxDimensionPx控制逐字稿/工具圖片縮小(預設1200);較低的值通常可降低大量截圖執行中的 vision token 使用量。- 請參閱模型 CLI 以了解如何在聊天中切換模型,並參閱模型容錯移轉 以了解驗證輪替與備援行為。
- 對於自訂/自託管提供者,請參閱參考中的自訂提供者。
控制誰可以傳訊息給機器人
控制誰可以傳訊息給機器人
DM 存取權會透過
dmPolicy 依頻道控制:"pairing"(預設):未知傳送者會取得一次性配對代碼以供核准"allowlist":只允許allowFrom中的傳送者(或已配對允許儲存中的傳送者)"open":允許所有傳入 DM(需要allowFrom: ["*"])"disabled":忽略所有 DM
groupPolicy + groupAllowFrom 或頻道特定允許清單。請參閱完整參考以了解每個頻道的詳細資訊。設定群組聊天提及閘控
設定群組聊天提及閘控
群組訊息預設為需要提及。依 agent 設定觸發模式,並讓可見聊天室回覆維持在預設的訊息工具路徑,除非你刻意想要舊版自動最終回覆:
- 中繼資料提及:原生 @ 提及(WhatsApp 點按提及、Telegram @bot 等)
- 文字模式:
mentionPatterns中的安全 regex 模式 - 可見回覆:
messages.visibleReplies可以全域要求透過訊息工具傳送;messages.groupChat.visibleReplies會覆寫群組/頻道的設定。 - 請參閱完整參考以了解可見回覆模式、每個頻道覆寫,以及自我聊天模式。
依 agent 限制 Skills
依 agent 限制 Skills
調整 gateway 頻道健康監控
調整 gateway 頻道健康監控
調整 gateway WebSocket 握手逾時
調整 gateway WebSocket 握手逾時
讓本機用戶端在負載較高或低效能主機上,有更多時間完成驗證前的 WebSocket 握手:
- 預設為
15000毫秒。 OPENCLAW_HANDSHAKE_TIMEOUT_MS仍會優先套用於一次性的服務或 shell 覆寫。- 請優先修復啟動/事件迴圈停滯;此旋鈕適用於健康但暖機期間較慢的主機。
設定工作階段與重設
設定工作階段與重設
啟用沙箱化
啟用沙箱化
為官方 iOS 組建啟用中繼支援的推播
為官方 iOS 組建啟用中繼支援的推播
中繼支援的推播是在 CLI 等效指令:這會執行下列動作:
openclaw.json 中設定。在 Gateway 設定中設定此項:- 讓 Gateway 透過外部中繼傳送
push.test、喚醒提醒,以及重新連線喚醒。 - 使用由已配對 iOS 應用程式轉送、以註冊為範圍的傳送授權。Gateway 不需要整個部署共用的中繼權杖。
- 將每個中繼支援的註冊繫結到 iOS 應用程式配對的 Gateway 身分,讓另一個 Gateway 無法重複使用已儲存的註冊。
- 讓本機/手動 iOS 組建維持直接使用 APNs。中繼支援的傳送只適用於透過中繼註冊的官方發佈組建。
- 必須符合內建於官方/TestFlight iOS 組建中的中繼基礎 URL,讓註冊與傳送流量到達同一個中繼部署。
- 安裝使用相同中繼基礎 URL 編譯的官方/TestFlight iOS 組建。
- 在 Gateway 上設定
gateway.push.apns.relay.baseUrl。 - 將 iOS 應用程式配對到 Gateway,並讓節點與操作者工作階段都連線。
- iOS 應用程式擷取 Gateway 身分,使用 App Attest 加上應用程式收據向中繼註冊,然後將中繼支援的
push.apns.register承載發佈到已配對的 Gateway。 - Gateway 儲存中繼控制代碼與傳送授權,接著將它們用於
push.test、喚醒提醒,以及重新連線喚醒。
- 如果你將 iOS 應用程式切換到不同的 Gateway,請重新連線應用程式,讓它可以發佈繫結到該 Gateway 的新中繼註冊。
- 如果你發佈指向不同中繼部署的新 iOS 組建,應用程式會重新整理其快取的中繼註冊,而不是重複使用舊的中繼來源。
OPENCLAW_APNS_RELAY_BASE_URL和OPENCLAW_APNS_RELAY_TIMEOUT_MS仍可作為暫時的環境覆寫。OPENCLAW_APNS_RELAY_ALLOW_HTTP=true仍是僅限 loopback 的開發用例外途徑;請勿在設定中保留 HTTP 中繼 URL。
設定 Heartbeat(定期簽到)
設定 Heartbeat(定期簽到)
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 承載內容視為不受信任的輸入。
- 使用專用的
hooks.token;不要重複使用共用的 Gateway 權杖。 - Hook 驗證僅限標頭(
Authorization: Bearer ...或x-openclaw-token);會拒絕查詢字串權杖。 hooks.path不能是/;請將 Webhook 入口保留在專用子路徑上,例如/hooks。- 除非進行嚴格限定範圍的偵錯,否則請停用不安全內容略過旗標(
hooks.gmail.allowUnsafeExternalContent、hooks.mappings[].allowUnsafeExternalContent)。 - 如果啟用
hooks.allowRequestSessionKey,也請設定hooks.allowedSessionKeyPrefixes以限制呼叫端選擇的工作階段鍵。 - 對於 hook 驅動的代理程式,請偏好強大的現代模型層級與嚴格的工具政策(例如僅限訊息,加上可行時使用沙箱化)。
將設定拆分為多個檔案($include)
將設定拆分為多個檔案($include)
使用
$include 組織大型設定:- 單一檔案:取代包含它的物件
- 檔案陣列:依序深度合併(後者優先)
- 同層鍵:在 include 之後合併(覆寫已 include 的值)
- 巢狀 include:最多支援 10 層深度
- 相對路徑:相對於執行 include 的檔案解析
- OpenClaw 管理的寫入:當寫入只變更由單一檔案 include 支援的一個頂層區段時,
例如
plugins: { $include: "./plugins.json5" }, OpenClaw 會更新該已 include 的檔案,並保持openclaw.json不變 - 不支援的穿透寫入:根 include、include 陣列,以及含有同層覆寫的 include, 對 OpenClaw 管理的寫入會封閉失敗, 而不是攤平設定
- 錯誤處理:針對遺失檔案、剖析錯誤與循環 include 提供清楚錯誤
設定熱重載
Gateway 會監看~/.openclaw/openclaw.json,並自動套用變更,大多數設定不需要手動重新啟動。
直接檔案編輯在通過驗證前會被視為不受信任。監看器會等待
編輯器暫存寫入/重新命名變動穩定下來,讀取最終檔案,並透過還原
最後已知良好設定來拒絕無效的外部編輯。OpenClaw 管理的
設定寫入在寫入前會使用相同的結構描述閘門;破壞性的覆寫,
例如移除 gateway.mode 或將檔案縮小超過一半,都會被拒絕
並儲存為 .rejected.* 供檢查。
Plugin 本機驗證失敗是例外:如果所有問題都位於
plugins.entries.<id>... 底下,重新載入會保留目前設定並回報 Plugin
問題,而不是還原 .last-good。
如果你在記錄中看到 Config auto-restored from last-known-good 或
config reload restored last-known-good config,請檢查 openclaw.json
旁邊相符的 .clobbered.* 檔案,修正被拒絕的承載,然後執行
openclaw config validate。請參閱 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, canvasHost, plugins | 是 |
gateway.reload 和 gateway.remote 是例外,變更它們不會觸發重新啟動。重新載入規劃
當你編輯透過$include 參照的來源檔案時,OpenClaw 會從來源撰寫的版面配置規劃重新載入,而不是從扁平化的記憶體內視圖規劃。即使單一頂層區段位於自己的引入檔案中,例如 plugins: { $include: "./plugins.json5" },這也能讓熱重新載入決策(熱套用或重新啟動)保持可預測。如果來源版面配置不明確,重新載入規劃會以封閉失敗處理。
設定 RPC(程式化更新)
對於透過 Gateway API 寫入設定的工具,建議使用此流程:config.schema.lookup用於檢查單一子樹(淺層 schema 節點 + 子項摘要)config.get用於擷取目前的快照與hashconfig.patch用於部分更新(JSON merge patch:物件合併、null刪除、陣列取代)config.apply僅在你打算取代整個設定時使用update.run用於明確自我更新並重新啟動update.status用於檢查最新的更新重新啟動哨兵,並在重新啟動後驗證執行中的版本
config.schema.lookup 視為查詢精確欄位層級文件與限制的第一站。當需要更完整的設定對照、預設值,或專用子系統參考的連結時,請使用設定參考。
控制平面寫入(
config.apply、config.patch、update.run)會依每個 deviceId+clientIp 限制為每 60 秒 3 個請求。重新啟動請求會合併,然後在重新啟動週期之間強制執行 30 秒冷卻時間。update.status 是唯讀的,但受管理員範圍限制,因為重新啟動哨兵可能包含更新步驟摘要與命令輸出尾端。config.apply 和 config.patch 都接受 raw、baseHash、sessionKey、note 和 restartDelayMs。當設定已存在時,兩個方法都需要 baseHash。
環境變數
OpenClaw 會從父處理程序讀取 env vars,另外也讀取:- 目前工作目錄中的
.env(如果存在) ~/.openclaw/.env(全域備援)
Shell env 匯入(可選)
Shell env 匯入(可選)
如果已啟用且預期的金鑰未設定,OpenClaw 會執行你的登入 shell,並只匯入缺少的金鑰:等效 env var:
OPENCLAW_LOAD_SHELL_ENV=1設定值中的 env var 替換
設定值中的 env var 替換
在任何設定字串值中使用 規則:
${VAR_NAME} 參照 env vars:- 只比對大寫名稱:
[A-Z_][A-Z0-9_]* - 缺少或空白的變數會在載入時擲出錯誤
- 使用
$${VAR}逸出以輸出字面值 - 可在
$include檔案中運作 - 行內替換:
"${BASE}/v1"→"https://api.example.com/v1"
Secret refs(env、file、exec)
Secret refs(env、file、exec)
對於支援 SecretRef 物件的欄位,你可以使用:SecretRef 詳細資訊(包含
env/file/exec 的 secrets.providers)位於密鑰管理。支援的憑證路徑列於 SecretRef 憑證介面。完整參考
如需完整的逐欄位參考,請參閱**設定參考**。相關:設定範例 · 設定參考 · 診斷