OpenClaw 進階配置與自動化運維實戰(zhàn)手冊
前言
本文檔面向已將 OpenClaw 納入生產(chǎn)運維體系的工程師,從運維視角系統(tǒng)闡述配置管理、定時任務(wù)、Gateway 運維、多渠道接入等生產(chǎn)環(huán)境關(guān)鍵議題。所有結(jié)論均基于 OpenClaw 官方文檔和實際運維經(jīng)驗,可直接用于生產(chǎn)環(huán)境部署。
本文默認讀者已具備 OpenClaw 基礎(chǔ)操作能力,了解 SOUL.md、USER.md、IDENTITY.md 等基礎(chǔ)配置文件的作用,熟悉 workspace 概念。
第一章:OpenClaw 生產(chǎn)環(huán)境配置原理
1.1 配置文件層級與加載機制
OpenClaw 的配置體系分為三個層級,從高到低依次覆蓋:
第一層:用戶配置文件
主配置文件位于~/.openclaw/openclaw.json,采用 JSON5 格式。該文件是所有配置項的入口,修改后通過openclaw gateway restart或配置熱重載生效。配置文件路徑優(yōu)先級為:--configCLI 參數(shù) >OPENCLAW_CONFIG環(huán)境變量 >~/.openclaw/openclaw.json。
第二層:workspace 內(nèi)配置
workspace 目錄下的配置文件定義了 Agent 的行為規(guī)范。這些文件在每次新 session 啟動時由 Agent 自動加載:
SOUL.md:Agent 性格定義,描述"你是一個什么樣的助手"
USER.md:用戶信息,描述"你在幫誰"
AGENTS.md:工作手冊,描述"每次上班先做什么、任務(wù)怎么做、安全邊界在哪里"
IDENTITY.md:身份標識,包含名稱、頭像、emoji 等視覺身份信息
第三層:運行時配置覆蓋
部分配置項可以在運行時通過命令或 API 臨時覆蓋,如/config命令可查看和修改當前會話的部分參數(shù)。但運行時修改僅對當前會話有效,重啟后失效。
配置加載順序驗證方法:
openclaw gateway --verbose 2>&1 | grep -i"config|workspace|load"
該命令輸出配置加載的完整過程,可觀察到各層級文件的加載時機。
1.2 JSON5 配置格式規(guī)范
OpenClaw 采用 JSON5 作為配置文件格式,這意味著在標準 JSON 基礎(chǔ)上支持注釋和尾隨逗號。這一設(shè)計顯著提升了配置文件的可維護性。
JSON5 特性示例:
{
// 核心配置區(qū)
agents: {
defaults: {
workspace: "~/.openclaw/workspace",
model: {
primary: "provider/claude-sonnet-4",
fallbacks: ["provider/claude-haiku-4"],
},
// compaction 策略
compaction: {
reserveTokensFloor: 20000,
memoryFlush: {
enabled: true,
softThresholdTokens: 4000,
},
},
},
},
// Gateway 配置
gateway: {
port: 18789,
bind: "loopback",
auth: { token: "your-secret-token" },
reload: { mode: "hybrid" },
},
// 渠道配置
channels: {
discord: {
token: "your-bot-token",
allowFrom: ["server:123456789"],
ackReaction: "",
},
},
}
配置路徑規(guī)范:
OpenClaw 采用點號分隔的路徑表達嵌套配置,如agents.defaults.compaction.reserveTokensFloor。所有配置項均可通過完整路徑訪問。配置結(jié)構(gòu)采用深合并策略,后續(xù)配置項會遞歸合并到已有配置中。
嚴格驗證機制:
OpenClaw 采用嚴格 Schema 驗證。未知配置鍵或類型錯誤會導(dǎo)致 Gateway 啟動失敗。這一設(shè)計避免了配置拼寫錯誤等問題的隱式傳播。驗證失敗時會輸出詳細的錯誤信息,指出具體是哪個配置鍵出現(xiàn)了問題。
1.3 配置驗證與診斷
OpenClaw 內(nèi)置診斷工具openclaw doctor,用于檢查配置完整性和環(huán)境狀態(tài)。該命令應(yīng)在生產(chǎn)部署前和故障排查時執(zhí)行。
基礎(chǔ)診斷命令:
openclaw doctor
輸出包含以下檢查項:
配置文件語法檢查(JSON5 解析)
必填配置項檢查
API Key 格式驗證
workspace 目錄權(quán)限檢查
渠道連接性測試
深度診斷模式:
openclaw doctor --verbose
該模式會輸出詳細的檢查過程,包括每個配置項的驗證結(jié)果。對于配置項較多的大型配置文件,深度模式可以精確定位問題所在。
單項配置驗證:
在修改特定配置項后,可使用以下命令驗證配置語法:
openclaw config validate --key agents.defaults.model
健康狀態(tài)檢查:
openclaw gateway health openclaw gateway status openclaw gateway status --deep
health命令執(zhí)行存活性檢查:建立 WebSocket 連接,發(fā)送req:connect,期望收到res包含hello-ok。status命令檢查 supervisor 運行時狀態(tài)和 RPC 可達性。--deep參數(shù)增加系統(tǒng)級掃描,包括磁盤使用率、內(nèi)存占用、進程狀態(tài)等。
1.4 配置熱重載與安全重啟
熱重載機制:
OpenClaw Gateway 支持配置熱重載,默認模式為hybrid。該模式下,Agent 配置變更自動生效,Gateway 端口變更需要手動重啟。熱重載監(jiān)控的文件路徑為~/.openclaw/openclaw.json。
熱重載配置項:
{
gateway: {
reload: {
mode: "hybrid", // hybrid | hot | restart | off
},
},
}
各模式行為如下:
hybrid:Agent 配置自動熱重載,Gateway 端口等需要重啟
hot:所有配置自動熱重載,無需重啟
restart:配置文件變更后自動重啟 Gateway
off:禁用熱重載,所有變更需要手動重啟
安全重啟流程:
生產(chǎn)環(huán)境重啟 Gateway 應(yīng)遵循以下流程,避免消息丟失:
# 1. 檢查當前運行狀態(tài) openclaw gateway status # 2. 檢查是否有進行中的任務(wù) openclaw cron list # 3. 等待進行中的任務(wù)完成(可選) # 如果有必須完成的任務(wù),使用以下命令等待 sleep 30 # 4. 執(zhí)行重啟 openclaw gateway restart # 5. 驗證重啟結(jié)果 openclaw gateway health openclaw gateway status
重啟前的預(yù)檢清單:
確認openclaw gateway status顯示所有渠道在線
確認 cron 任務(wù)無正在執(zhí)行的任務(wù)
確認~/.openclaw/openclaw.json語法正確
確認所有必填配置項已填寫
進程?;钆渲?/strong>:
生產(chǎn)環(huán)境應(yīng)配置進程管理器,確保 Gateway 異常退出后自動恢復(fù)。推薦使用 systemd:
[Unit] Description=OpenClaw Gateway After=network.target [Service] Type=simple User=ubuntu ExecStart=/usr/local/bin/openclaw gateway start Restart=always RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
將該文件保存為/etc/systemd/system/openclaw-gateway.service,然后執(zhí)行:
sudo systemctl daemon-reload sudo systemctlenableopenclaw-gateway sudo systemctl start openclaw-gateway
第二章:Gateway 運維體系
2.1 Gateway 架構(gòu)與端口管理
OpenClaw Gateway 是 OpenClaw 的核心組件,負責維持與各消息渠道的長連接,處理消息路由和 Agent 生命周期管理。Gateway 采用常駐進程設(shè)計,退出時返回非零狀態(tài)碼以便 supervisor 自動拉起。
端口優(yōu)先級機制:
Gateway 監(jiān)聽端口的確定遵循以下優(yōu)先級:
--portCLI 參數(shù)(最高優(yōu)先級)
OPENCLAW_GATEWAY_PORT環(huán)境變量
gateway.port配置項
默認端口 18789
默認配置下,WebSocket 控制平面綁定到127.0.0.1:18789,同一端口同時提供 HTTP 控制接口、hooks 和 A2UI 管理界面。Canvas 文件服務(wù)器默認占用端口 18793。開發(fā)實例使用基礎(chǔ)端口 19001,衍生端口依次為 19003(+2)和 19005(+4)。
端口配置示例:
{
gateway: {
port: 18789,
bind: "loopback", // loopback | lan | tailnet
},
canvasHost: {
port: 18793,
},
}
bind參數(shù)控制監(jiān)聽地址:
loopback:僅監(jiān)聽 127.0.0.1,僅本地可訪問
lan:監(jiān)聽所有網(wǎng)絡(luò)接口,局域網(wǎng)可訪問
tailnet:配合 Tailscale 使用
生產(chǎn)環(huán)境推薦loopback,通過 SSH 隧道或 VPN 訪問 Gateway 控制接口。如需直接從局域網(wǎng)訪問,應(yīng)配合gateway.auth做好認證和trustedProxies配置。
端口沖突檢測:
啟動前檢測端口可用性:
ss -tlnp | grep 18789 # 或 netstat -tlnp | grep 18789
如果端口已被占用,會返回占用進程的 PID 和名稱。
2.2 認證與訪問控制
Gateway 默認啟用認證,客戶端連接時必須提供有效的憑證。認證方式通過gateway.auth.mode配置:
{
gateway: {
auth: {
mode: "token", // token | password
token: "your-secret-token",
password: "your-password",
allowTailscale: false,
},
},
}
Token 認證:
客戶端連接時需要在 connect 參數(shù)中包含 token:
{
connect: {
params: {
auth: {
token: "your-secret-token",
},
},
},
}
密碼認證:
{
connect: {
params: {
auth: {
password: "your-password",
},
},
},
}
多 Gateway 隔離:
安全設(shè)計假設(shè)每個 Gateway 獨占一臺宿主機。如果需要部署多個 Gateway 實例,必須確保:
端口不沖突(每個實例使用不同端口)
狀態(tài)目錄隔離(通過--data-dir參數(shù))
配置文件獨立
# 實例 1 openclaw gateway start --port 18789 --data-dir /var/lib/openclaw-instance1 # 實例 2 openclaw gateway start --port 18790 --data-dir /var/lib/openclaw-instance2
Tailscale 集成:
如果gateway.auth.allowTailscale設(shè)為true,Tailscale 身份驗證的用戶可以免認證登錄。這在 Tailscale 網(wǎng)絡(luò)內(nèi)提供了零摩擦訪問。
2.3 日志體系與調(diào)試
日志輸出位置:
Gateway 日志默認輸出到 stdout,生產(chǎn)環(huán)境應(yīng)通過進程管理器重定向到日志文件。systemd 環(huán)境下日志由 journald 管理,可通過journalctl -u openclaw-gateway查看。
默認日志文件路徑為/tmp/openclaw/openclaw-YYYY-MM-DD.log,可通過logging.file配置項修改。
日志級別配置:
{
logging: {
level: "info", // 全局日志級別
file: "/var/log/openclaw/gateway.log",
consoleLevel: "info", // 控制臺日志級別
consoleStyle: "pretty", // pretty | compact | json
redactSensitive: "tools", // off | tools
redactPatterns: [], // 自定義脫敏正則
},
}
日志級別從低到高:debug、info、warn、error。生產(chǎn)環(huán)境通常使用info,故障排查時臨時切換到debug。
調(diào)試模式啟動:
openclaw gateway start --verbose
--verbose參數(shù)將 debug 日志同時輸出到控制臺,便于實時觀察 Gateway 行為。該參數(shù)應(yīng)僅用于故障排查,不建議長期使用。
日志查看命令:
# 實時跟蹤日志 openclaw logs --follow # 查看最近 100 行 openclaw logs --lines 100 # 過濾特定關(guān)鍵詞 openclaw logs --grep"error|warn"--lines 50 # 按時間范圍查看 openclaw logs --since"2026-03-20 1000"--until"2026-03-20 1200"
敏感信息脫敏:
logging.redactSensitive設(shè)為tools時,工具調(diào)用日志中的敏感信息(API Key、Token 等)會被自動脫敏。logging.redactPatterns支持自定義脫敏規(guī)則:
{
logging: {
redactPatterns: [
"sk-[a-zA-Z0-9]{20,}", // OpenAI API Key 格式
"Bearer [a-zA-Z0-9._-]+", // Bearer Token 格式
],
},
}
2.4 健康檢查與監(jiān)控
健康檢查端點:
Gateway 提供兩種健康檢查:存活性(liveness)和就緒性(readiness)。
存活性檢查確認 Gateway 進程正常運行:
openclaw gateway health
該命令通過 WebSocket 發(fā)送存活性探測,期望返回hello-ok響應(yīng)。如果 Gateway 無響應(yīng)或返回錯誤,說明進程可能處于異常狀態(tài)。
就緒性檢查確認 Gateway 已準備好處理請求:
openclaw gateway status
該命令調(diào)用健康檢查端點,期望返回包含ok: true和渠道狀態(tài)信息的響應(yīng)。如果就緒性檢查失敗,即使進程在運行,Gateway 也不應(yīng)接收新請求。
深度狀態(tài)檢查:
openclaw gateway status --deep
--deep參數(shù)增加系統(tǒng)資源檢查:
磁盤使用率(是否低于 90%)
內(nèi)存使用情況
Gateway 進程 CPU 占用
各渠道連接狀態(tài)
Prometheus 監(jiān)控集成:
通過配置 hooks 可以將指標暴露給 Prometheus:
{
hooks: {
enabled: true,
path: "/hooks",
mappings: [{
match: { path: "metrics" },
action: "prometheus",
}],
},
}
或者直接通過 HTTP 控制接口獲取狀態(tài):
curl -s http://127.0.0.1:18789/status | jq .
告警閾值建議:
磁盤使用率 > 85%:告警
內(nèi)存使用率 > 90%:告警
Gateway 進程 CPU > 80% 持續(xù) 5 分鐘:告警
任意渠道離線:告警
健康檢查連續(xù)失敗 3 次:告警
2.5 服務(wù)管理與進程?;?/p>
進程保活架構(gòu):
生產(chǎn)環(huán)境必須配置進程管理器,確保 Gateway 異常退出后自動拉起。推薦的架構(gòu)是 systemd 作為 primary supervisor,Gateway 作為被管理的服務(wù)。
systemd 服務(wù)配置:
[Unit] Description=OpenClaw Gateway Service After=network-online.target Wants=network-online.target [Service] Type=simple User=openclaw Group=openclaw ExecStart=/usr/local/bin/openclaw gateway start --verbose Restart=always RestartSec=10 StandardOutput=journal StandardError=journal Environment=OPENCLAW_GATEWAY_PORT=18789 # 安全加固 NoNewPrivileges=true ProtectSystem=strict ProtectHome=true ReadWritePaths=/var/lib/openclaw /var/log/openclaw PrivateTmp=true [Install] WantedBy=multi-user.target
該配置實現(xiàn)了:
自動重啟:Gateway 異常退出后 10 秒內(nèi)自動拉起
最小權(quán)限:使用專用用戶運行,不使用 root
文件系統(tǒng)隔離:只允許寫入指定目錄
臨時文件隔離:使用私有 /tmp
日志輪轉(zhuǎn)配置:
通過 logrotate 管理日志文件大?。?/p>
/var/log/openclaw/*.log{
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 openclaw openclaw
sharedscripts
postrotate
systemctl reload openclaw-gateway > /dev/null 2>&1 ||true
endscript
}
啟動順序:
如果 Gateway 依賴其他服務(wù)(如數(shù)據(jù)庫、Redis),應(yīng)在 systemd unit 中通過After和Wants聲明依賴關(guān)系:
[Unit] Description=OpenClaw Gateway After=network.target redis.service Wants=redis.service
手動服務(wù)控制:
# 啟動 sudo systemctl start openclaw-gateway # 停止 sudo systemctl stop openclaw-gateway # 重啟 sudo systemctl restart openclaw-gateway # 查看狀態(tài) sudo systemctl status openclaw-gateway # 查看日志 sudo journalctl -u openclaw-gateway -f
平滑重啟:
生產(chǎn)環(huán)境建議使用平滑重啟,避免服務(wù)中斷:
# 向 Gateway 發(fā)送重啟信號(觸發(fā)熱重載) openclaw gateway reload # 或通過 API curl -X POST http://127.0.0.1:18789/api/reload -H"Authorization: Bearer your-token"
第三章:定時任務(wù)與自動化運維
3.1 三種調(diào)度類型對比
OpenClaw Cron 調(diào)度系統(tǒng)支持三種調(diào)度類型,適用于不同的時間觸發(fā)場景:
at類型:一次性定時任務(wù)
在指定時間點執(zhí)行一次后自動刪除。適用于會議提醒、生日提醒、一次性通知等場景。
{
"name": "喝水提醒",
"schedule": { "kind": "at", "at": "2026-03-20T1600+08:00" },
"payload": { "kind": "systemEvent", "text": "提醒:該喝水了!" },
"sessionTarget": "main",
"deleteAfterRun": true,
}
時間格式為 ISO 8601,建議始終包含時區(qū)信息(+08:00表示北京時間)。如果不帶時區(qū),OpenClaw 默認使用 UTC 時間。
every類型:固定間隔循環(huán)任務(wù)
按固定時間間隔重復(fù)執(zhí)行,適用于心跳檢測、狀態(tài)輪詢等場景。
{
"name": "服務(wù)巡檢",
"schedule": { "kind": "every", "everyMs": 3600000 },
"payload": { "kind": "agentTurn", "message": "檢查服務(wù)狀態(tài)" },
"sessionTarget": "isolated",
"delivery": { "mode": "announce" },
}
常用時間換算:
| 間隔 | everyMs 值 |
|---|---|
| 5 分鐘 | 300000 |
| 15 分鐘 | 900000 |
| 30 分鐘 | 1800000 |
| 1 小時 | 3600000 |
| 6 小時 | 21600000 |
| 24 小時 | 86400000 |
cron類型:Cron 表達式調(diào)度
最靈活的調(diào)度方式,支持標準 5 字段 cron 表達式。適用于周期性報告、定時任務(wù)等復(fù)雜調(diào)度場景。
{
"name": "每日早報",
"schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
"payload": { "kind": "agentTurn", "message": "生成今日簡報" },
"sessionTarget": "isolated",
"delivery": { "mode": "announce" },
}
字段順序為:分 時 日 月 周
常用 cron 表達式示例:
| 表達式 | 含義 |
|---|---|
| 0 9 * * * | 每天 9:00 |
| 0 9 * * 1 | 每周一 9:00 |
| 0 9,18 * * * | 每天 9:00 和 18:00 |
| */30 * * * * | 每 30 分鐘 |
| 0 0 1 * * | 每月 1 日 0:00 |
| 0 9 * * 1-5 | 工作日 9:00 |
時區(qū)配置重要性:
tz字段必須設(shè)置,否則默認使用 UTC 時間。一個常見的踩坑案例:配置了0 9 * * *(期望北京時間 9:00),但沒有設(shè)置tz,實際會在 UTC 1:00(北京時間 9:00)執(zhí)行。這對于國內(nèi)服務(wù)器通常是正確的,但對于海外服務(wù)器或容器時區(qū)配置不一致時,會導(dǎo)致難以察覺的調(diào)度偏差。
3.2 執(zhí)行模式與會話管理
Cron 任務(wù)支持兩種執(zhí)行模式,決定了任務(wù)在什么會話環(huán)境中運行。
systemEvent模式:主會話注入
將事件文本注入到主會話,在下次 heartbeat 時處理。適用于提醒、通知類場景。
{
"payload": {
"kind": "systemEvent",
"text": "提醒:10 分鐘后有會議"
},
"sessionTarget": "main",
"wakeMode": "now",
}
sessionTarget: "main"只能搭配systemEvent類型,不可混用。該模式復(fù)用主會話的上下文,因此可以訪問 MEMORY.md 等主會話專屬文件。
agentTurn模式:獨立會話執(zhí)行
啟動一個獨立的 cron session 執(zhí)行任務(wù)。適用于需要執(zhí)行操作、生成報告等場景。
{
"payload": {
"kind": "agentTurn",
"message": "生成今日項目報告",
"model": "sonnet"
},
"sessionTarget": "isolated",
"wakeMode": "next-heartbeat",
}
獨立會話的 session key 格式為cron:
會話目標組合限制:
| sessionTarget | payload.kind | wakeMode | 有效組合 |
|---|---|---|---|
| main | systemEvent | now / next-heartbeat | 有效 |
| isolated | agentTurn | now / next-heartbeat | 有效 |
| main | agentTurn | - | 無效組合 |
| isolated | systemEvent | - | 無效組合 |
如果配置了無效組合,Gateway 會在任務(wù)調(diào)度時報告錯誤。
wakeMode 參數(shù):
now:立即觸發(fā)執(zhí)行
next-heartbeat:等待下一次 heartbeat 時執(zhí)行
next-heartbeat模式可以批量處理多個定時事件,減少模型調(diào)用次數(shù)。now模式則立即執(zhí)行,適用于有時間敏感性的任務(wù)。
3.3 任務(wù)狀態(tài)存儲與歷史追溯
任務(wù)列表查看:
openclaw cron list
該命令列出所有已注冊的定時任務(wù),包括任務(wù) ID、名稱、調(diào)度表達式、下次執(zhí)行時間、啟用狀態(tài)。
執(zhí)行歷史查看:
openclaw cron runs --id <任務(wù)ID>
該命令顯示任務(wù)的執(zhí)行歷史,包括每次執(zhí)行的開始時間、結(jié)束時間、執(zhí)行狀態(tài)(成功/失?。?、執(zhí)行時長。如果任務(wù)執(zhí)行失敗,會顯示錯誤信息。
執(zhí)行狀態(tài)說明:
pending:任務(wù)已調(diào)度,等待執(zhí)行
running:任務(wù)正在執(zhí)行
completed:任務(wù)執(zhí)行成功
failed:任務(wù)執(zhí)行失敗
cancelled:任務(wù)被取消
任務(wù)啟用/禁用:
禁用任務(wù)而不是刪除任務(wù)是推薦的運維實踐。禁用后的任務(wù)保留執(zhí)行歷史,可以隨時重新啟用。
openclaw cron edit <任務(wù)ID> --disable openclaw cron edit <任務(wù)ID> --enable
手動觸發(fā)執(zhí)行:
用于測試任務(wù)配置或立即執(zhí)行緊急任務(wù):
openclaw cron run --id <任務(wù)ID> --force
--force參數(shù)強制執(zhí)行,忽略調(diào)度時間和禁用狀態(tài)。
清理歷史記錄:
執(zhí)行歷史會占用存儲空間,定期清理是必要的:
openclaw cron runs --id <任務(wù)ID> --clear
3.4 典型運維場景配置示例
場景一:每日科技新聞?wù)?/strong>
{
"name": "每日早報",
"schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
"payload": {
"kind": "agentTurn",
"message": "搜索今天的科技和 AI 領(lǐng)域新聞熱點,整理成 5 條簡報。每條包含:標題、一句話摘要、來源鏈接。",
"model": "haiku"
},
"sessionTarget": "isolated",
"delivery": {
"mode": "announce",
"channel": "telegram",
"to": "user:123456789"
}
}
該配置使用 Haiku 模型生成簡報以控制成本,結(jié)果通過 Telegram 投送到指定用戶。
場景二:服務(wù)器健康狀態(tài)巡檢
{
"name": "服務(wù)巡檢",
"schedule": { "kind": "every", "everyMs": 3600000 },
"payload": {
"kind": "agentTurn",
"message": "用 curl 檢查以下服務(wù)是否在線:
1. http://localhost:8080
2. http://localhost:3000
3. http://localhost:5432
如果全部正常,不要通知。如果有服務(wù)離線,說明哪個服務(wù)、返回的錯誤碼、可能的處理建議。",
"model": "haiku"
},
"sessionTarget": "isolated",
"delivery": { "mode": "announce" }
}
該配置實現(xiàn)了"靜默正常"模式——服務(wù)正常時不會騷擾用戶,只有異常時才發(fā)送通知。
場景三:每周項目周報生成
{
"name": "項目周報",
"schedule": { "kind": "cron", "expr": "0 10 * * 1", "tz": "Asia/Shanghai" },
"payload": {
"kind": "agentTurn",
"message": "讀取 memory/ 目錄下最近 7 天的日志文件,整理成一份周報。周報包含:
1. 本周完成的事項(按項目分類)
2. 進行中的項目及進展
3. 遇到的問題及解決方案
4. 下周計劃
格式簡潔,使用 bullet points。",
"model": "sonnet"
},
"sessionTarget": "isolated",
"delivery": {
"mode": "announce",
"channel": "discord",
"to": "channel:987654321"
}
}
場景四:一次性提醒
通過自然語言告知 AI 創(chuàng)建,AI 會自動生成對應(yīng)的 Cron 配置:
"幫我設(shè)置一個 20 分鐘后的提醒:開會"
OpenClaw 會自動解析并創(chuàng)建類似以下配置:
{
"name": "開會提醒",
"schedule": {
"kind": "at",
"at": "2026-03-20T1600+08:00"
},
"payload": {
"kind": "systemEvent",
"text": "開會時間到了"
},
"sessionTarget": "main",
"deleteAfterRun": true
}
3.5 多渠道投遞配置
投遞模式:
Cron 任務(wù)的delivery.mode參數(shù)控制執(zhí)行結(jié)果的投遞方式:
| 模式 | 行為 |
|---|---|
| announce | 將執(zhí)行摘要投送到指定渠道 |
| none | 僅內(nèi)部執(zhí)行,不發(fā)送通知 |
渠道投遞配置:
{
"delivery": {
"mode": "announce",
"channel": "discord",
"to": "channel:987654321",
"bestEffort": true
}
}
to參數(shù)格式:
channel:
user:
group:
bestEffort參數(shù)設(shè)為true時,投遞失敗不會重試,適合對可靠性要求不高的通知場景。
多渠道同時投遞:
需要同時投送到多個渠道時,可以創(chuàng)建多個 Cron 任務(wù),或者在任務(wù)消息中指定多個渠道:
{
"name": "每日雙渠道通知",
"schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
"payload": {
"kind": "agentTurn",
"message": "生成今日摘要,結(jié)果同時投送到 Discord 和 Telegram",
},
"sessionTarget": "isolated",
"delivery": {
"mode": "announce",
"channel": "discord",
"to": "channel:111111111"
}
}
如果需要同時投送多個渠道,建議在消息中明確說明,Agent 會在執(zhí)行后自動處理跨渠道投遞。
第四章:記憶系統(tǒng)與上下文管理
4.1 Compaction 機制原理
OpenClaw 的 Compaction(壓縮)機制是解決 AI 長期對話失憶問題的核心。當對話長度接近模型的上下文窗口限制時,OpenClaw 會自動將舊的對話內(nèi)容壓縮成摘要,釋放 token 空間供后續(xù)對話使用。
觸發(fā)條件:
Compaction 在以下條件滿足時觸發(fā):
對話歷史總 token 數(shù)接近模型上下文窗口上限
剩余 token 空間低于reserveTokensFloor閾值
壓縮過程中,已壓縮的對話會以摘要形式保留,未壓縮的近期對話保持原樣。壓縮完成后,新對話可以繼續(xù)進行。
壓縮策略配置:
{
agents: {
defaults: {
compaction: {
reserveTokensFloor: 20000,
strategy: "default",
},
},
},
}
reserveTokensFloor表示壓縮后至少保留的最近對話 token 數(shù)。設(shè)為 20000 時,壓縮后最近 20K token 的對話保持原樣,更早的對話被壓縮為摘要。
手動觸發(fā)壓縮:
用戶可以通過命令手動觸發(fā)壓縮,并指定希望保留的重點內(nèi)容:
/compact 重點保留技術(shù)決策和代碼架構(gòu)相關(guān)討論
該命令會立即對當前對話進行壓縮,保留指令中指定的內(nèi)容優(yōu)先于其他內(nèi)容。
4.2 memoryFlush 配置與閾值設(shè)計
memoryFlush 機制:
memoryFlush 是 Compaction 的增強功能,在觸發(fā)壓縮之前先讓 AI 將重要信息寫入文件。開啟后,AI 不會因為壓縮而丟失關(guān)鍵記憶。
配置參數(shù):
{
agents: {
defaults: {
compaction: {
reserveTokensFloor: 20000,
memoryFlush: {
enabled: true,
softThresholdTokens: 4000,
},
},
},
},
}
| 參數(shù) | 含義 | 推薦值 |
|---|---|---|
| enabled | 是否開啟壓縮前自動保存 | true |
| softThresholdTokens | 距離壓縮多少 token 時觸發(fā)保存 | 4000 |
softThresholdTokens: 4000意味著當對話剩余空間降至 4000 token 時,觸發(fā) memoryFlush。AI 會將重要信息寫入文件,這些信息在壓縮后仍可通過讀取文件恢復(fù)。
閾值設(shè)計原則:
softThresholdTokens越小,觸發(fā)越頻繁,AI 有更多 token 用于正常對話
softThresholdTokens越大,觸發(fā)越早,有更多時間準備保存內(nèi)容
推薦值 4000 考慮了保存操作本身需要消耗的 token
驗證 memoryFlush 生效:
開啟 verbose 模式后,可以在對話中看到Auto-compaction complete提示:
openclaw gateway restart --verbose
然后在對話中使用/verbose命令開啟 verbose 模式。memoryFlush 執(zhí)行時不會有額外提示(靜默執(zhí)行),只有在 compaction 完成后才會在 verbose 模式下看到提示。
4.3 記憶分層結(jié)構(gòu)設(shè)計
分層架構(gòu)概述:
OpenClaw 的記憶系統(tǒng)采用分層設(shè)計,不同層級的文件承擔不同的記憶職能:
| 層級 | 文件 | 用途 | 更新頻率 |
|---|---|---|---|
| 索引層 | MEMORY.md | 核心信息、能力概覽、記憶索引 | 索引變化時 |
| 項目層 | memory/projects.md | 各項目當前狀態(tài)與待辦 | 項目有進展時 |
| 基礎(chǔ)設(shè)施層 | memory/infra.md | 服務(wù)器、API、部署等配置速查 | 配置變更時 |
| 教訓(xùn)層 | memory/lessons.md | 踩過的坑,按嚴重程度分級 | 踩坑后 |
| 日志層 | memory/YYYY-MM-DD.md | 每日原始記錄 | 每日或多日 |
索引層設(shè)計:
MEMORY.md是記憶系統(tǒng)的入口,應(yīng)保持精簡(建議不超過 40 行)。內(nèi)容應(yīng)包含:
用戶核心信息和偏好
Agent 能力概覽
記憶文件索引(指向其他記憶文件)
當前項目的關(guān)鍵上下文
示例結(jié)構(gòu):
# 核心記憶 ## 用戶信息 -姓名: -時區(qū):Asia/Shanghai -主要語言:中文 ## 項目索引 -項目A:memory/projects.md#project-a -項目B:memory/projects.md#project-b ## 最近重要上下文 -2026-03:完成了系統(tǒng)重構(gòu),詳見 memory/2026-03.md -當前主要任務(wù):優(yōu)化 Gateway 性能 ## 教訓(xùn)索引 -部署相關(guān):memory/lessons.md#deploy -配置相關(guān):memory/lessons.md#config
日志層設(shè)計:
日志文件命名格式為memory/YYYY-MM-DD.md,按日期歸檔。日志應(yīng)采用結(jié)構(gòu)化格式,便于后續(xù)檢索。
日志格式規(guī)范:
### [PROJECT:項目名] 標題 -**結(jié)論**: 一句話核心結(jié)論 -**文件變更**: 涉及的文件路徑 -**教訓(xùn)**: 踩坑點和解決方案(如有) -**標簽**:#tag1#tag2
好日志 vs 壞日志對比:
壞日志示例(流水賬,信息密度低):
### 部署 今天部署了項目。先試了直接跑,報錯了。然后查了半天,發(fā)現(xiàn)是端口被占了。最后用 nginx 反代解決了問題。
好日志示例(結(jié)構(gòu)化,高信息密度):
### [PROJECT:MyApp] nginx 反代部署成功 -**結(jié)論**: 通過 nginx 反代部署成功,監(jiān)聽 80 端口 -**文件變更**: /etc/nginx/sites-available/myapp -**教訓(xùn)**: 直接暴露端口不可行,必須走 nginx 反代 -**標簽**:#myapp#deploy#nginx
好日志的判斷標準:只看結(jié)論能否快速理解發(fā)生了什么事,不需要閱讀正文。
4.4 向量檢索與 Embedding 配置
memorySearch 機制:
OpenClaw 的memorySearch功能基于向量語義檢索。當用戶詢問歷史相關(guān)問題時,Agent 會調(diào)用 memorySearch 在記憶文件中進行語義搜索,返回最相關(guān)的內(nèi)容。
SiliconFlow bge-m3 配置:
國內(nèi)用戶推薦使用 SiliconFlow 提供的免費 bge-m3 向量模型:
{
memorySearch: {
enabled: true,
provider: "openai",
remote: {
baseUrl: "https://api.siliconflow.cn/v1",
apiKey: "your-siliconflow-api-key",
},
model: "BAAI/bge-m3",
},
}
bge-m3 模型優(yōu)勢:
完全免費,適合個人和小型團隊
中英文雙語支持優(yōu)秀
向量維度 1024,精度和性能平衡良好
在中文語義理解任務(wù)上表現(xiàn)優(yōu)異
獲取 SiliconFlow API Key:
訪問 siliconflow.cn
注冊賬號并完成認證
進入控制臺 → API Keys → 創(chuàng)建新 Key
復(fù)制 Key 并配置到 openclaw.json
向量檢索優(yōu)化策略:
結(jié)構(gòu)化日志的檢索命中率顯著高于非結(jié)構(gòu)化文本。原因在于結(jié)構(gòu)化日志的每個字段都有明確的語義標簽,向量模型能夠更準確地理解檢索意圖。
提高檢索命中率的實踐:
標簽規(guī)范化:為每個日志定義統(tǒng)一的標簽體系,如#deploy、#config、#bug
關(guān)鍵詞前置:在日志標題中包含核心關(guān)鍵詞
結(jié)論獨立可讀:結(jié)論字段應(yīng)能獨立表達完整語義,不依賴正文
定期索引維護:刪除過期日志,更新項目狀態(tài),保持索引新鮮
自動記憶維護:
通過 Heartbeat 任務(wù)實現(xiàn)自動記憶維護:
{
"name": "記憶維護",
"schedule": { "kind": "every", "everyMs": 604800000 }, // 7天
"payload": {
"kind": "agentTurn",
"message": "讀取 memory/heartbeat-state.json,檢查 lastMemoryMaintenance 字段。如果距今 >= 7 天,執(zhí)行以下維護任務(wù):
1. 讀最近 7 天的 memory/YYYY-MM-DD.md 日志
2. 提煉有價值的信息到對應(yīng)文件(projects.md / lessons.md)
3. 壓縮已完成一次性任務(wù)的日志為一行結(jié)論
4. 刪除明顯過期的信息
5. 更新 heartbeat-state.json 的 lastMemoryMaintenance 為今天",
},
"sessionTarget": "isolated",
"delivery": { "mode": "none" },
}
維護狀態(tài)文件memory/heartbeat-state.json:
{
"lastMemoryMaintenance":"2026-03-01"
}
第五章:多渠道接入運維
5.1 Discord Bot 配置與 MESSAGE CONTENT INTENT
配置流程概述:
Discord Bot 接入需要以下步驟:創(chuàng)建應(yīng)用 → 開啟 Intent → 獲取 Token → 配置權(quán)限 → 邀請到服務(wù)器 → 配置 openclaw.json。
第一步:創(chuàng)建 Discord 應(yīng)用:
訪問 Discord Developer Portal(https://discord.com/developers/applications)
點擊 "New Application" → 輸入應(yīng)用名稱 → 點擊 "Create"
在應(yīng)用頁面左側(cè)點擊 "Bot"
點擊 "Reset Token" → 確認 → 復(fù)制顯示的 Token(只會顯示一次)
第二步:開啟 Privileged Gateway Intents:
這是 90% 新手踩坑的地方。MESSAGE CONTENT INTENT 必須開啟,否則 Bot 收到消息時無法讀取內(nèi)容。
在 Bot 頁面找到 "Privileged Gateway Intents" 部分:
PRESENCE INTENT:讀取用戶在線狀態(tài)(根據(jù)需要開啟)
SERVER MEMBERS INTENT:讀取服務(wù)器成員列表(根據(jù)需要開啟)
MESSAGE CONTENT INTENT:讀取消息內(nèi)容(必須開啟)
將需要的三項設(shè)置為 ON,點擊 "Save Changes"。
第三步:配置 Bot 權(quán)限:
左側(cè)點擊 "OAuth2" → "OAuth2 URL Generator"
Scopes 勾選:bot
Bot Permissions 勾選:
Send Messages
Read Message History
Add Reactions
Use Slash Commands
Embed Links(推薦)
復(fù)制生成的 OAuth2 URL,在瀏覽器中打開并授權(quán)到目標服務(wù)器
第四步:獲取服務(wù)器 ID:
Discord 客戶端 → 設(shè)置 → 高級 → 開啟 "開發(fā)者模式"
右鍵服務(wù)器名稱 → 復(fù)制服務(wù)器 ID
第五步:配置 openclaw.json:
{
channels: {
discord: {
token: "your-bot-token",
allowFrom: [
"server:123456789012345678",
"user:987654321098765432",
"channel:111111111111111111",
],
ackReaction: "",
dm: {
enabled: true,
policy: "pairing",
},
guilds: {
"123456789012345678": {
historyLimit: 20,
textChunkLimit: 2000,
},
},
},
},
}
allowFrom 格式說明:
| 格式 | 含義 |
|---|---|
|
server: |
允許整個服務(wù)器 |
|
user: |
允許特定用戶 |
|
channel: |
允許特定頻道 |
可以組合使用,Bot 只響應(yīng)來自允許來源的消息。
ackReaction 配置:
建議使用不常見的 emoji 作為已讀確認,便于在大量消息中識別:
{
channels: {
discord: {
ackReaction: "", // 已讀確認 emoji
removeAckAfterReply: false,
},
},
}
常見問題排查:
| 現(xiàn)象 | 原因 | 解決方案 |
|---|---|---|
| Bot 在線但不回復(fù) | MESSAGE CONTENT INTENT 未開啟 | Developer Portal → Bot → 開啟 → Save |
| Bot 完全不在線 | Token 錯誤或 Gateway 未啟動 | 檢查 Token,openclaw status查日志 |
| 只能在部分頻道回復(fù) | Bot 在該頻道缺少權(quán)限 | 確認 Bot 在頻道有 Send Messages 權(quán)限 |
| DM 不工作 | dm.policy 設(shè)為 pairing 且未完成配對 | 設(shè)為 "open" 或完成配對流程 |
驗證 Discord 連接:
openclaw gateway status
輸出中應(yīng)顯示 Discord 渠道狀態(tài)為在線。如果顯示離線,檢查:
Token 是否正確
MESSAGE CONTENT INTENT 是否開啟
Bot 是否已被移除出服務(wù)器
Gateway 日志中的具體錯誤信息
5.2 Telegram Bot 接入
創(chuàng)建 Telegram Bot:
Telegram 搜索 @BotFather
發(fā)送/newbot
按提示輸入 Bot 名稱和用戶名
BotFather 會返回 Bot Token,格式類似:123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ
獲取用戶 ID:
Telegram 搜索 @userinfobot
向該 Bot 發(fā)送任意消息
Bot 會返回你的用戶 ID,格式類似:123456789
配置 openclaw.json:
{
channels: {
telegram: {
botToken: "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
allowFrom: ["123456789"],
dm: {
enabled: true,
policy: "pairing",
},
historyLimit: 50,
replyToMode: "first",
linkPreview: true,
streamMode: "partial",
},
},
}
dm.policy 選項:
| 值 | 含義 |
|---|---|
| pairing | 用戶需要先完成配對流程 |
| allowlist | 只允許 allowFrom 列表中的用戶 |
| open | 允許任何人使用 |
| disabled | 禁用 DM |
Telegram + Discord 多渠道同時在線:
{
channels: {
discord: {
token: "discord-bot-token",
allowFrom: ["server:123456789"],
ackReaction: "",
},
telegram: {
botToken: "telegram-bot-token",
allowFrom: ["123456789"],
},
},
}
多渠道配置時,消息路由自動處理——來自哪個渠道的請求,響應(yīng)就發(fā)送到哪個渠道。
5.3 多渠道消息路由機制
路由規(guī)則:
OpenClaw 的消息路由基于以下規(guī)則:
每條消息攜帶來源渠道標識
路由決策根據(jù)消息來源和配置中的 bindings 確定目標 Agent
響應(yīng)總是發(fā)送到消息來源的同一渠道
多 Agent 綁定:
如果需要不同渠道或不同賬號綁定不同的 Agent:
{
agents: {
list: [
{ id: "main", default: true, workspace: "~/.openclaw/workspace-main" },
{ id: "work", workspace: "~/.openclaw/workspace-work" },
],
},
bindings: [
{ agentId: "main", match: { channel: "telegram", accountId: "personal" } },
{ agentId: "work", match: { channel: "telegram", accountId: "biz" } },
{ agentId: "main", match: { channel: "discord" } },
],
channels: {
telegram: {
accounts: {
personal: { botToken: "token1" },
biz: { botToken: "token2" },
},
},
},
}
跨渠道身份鏈接:
如果用戶同時使用多個渠道并希望共享上下文:
{
session: {
identityLinks: [
{ key: "user-alice", channels: ["telegram:123456", "discord:987654"] },
],
},
}
配置后,來自這兩個渠道的消息會被識別為同一用戶,共享會話歷史。
5.4 平臺格式適配規(guī)范
各平臺格式支持差異:
| 格式 | Discord | Telegram | |
|---|---|---|---|
| Markdown 表格 | 支持 | 不支持 | 不支持 |
| 代碼塊 | 支持 | 支持 | 不支持 |
| 粗體/斜體 | 支持 | 支持 | 支持 |
| Emoji Reaction | 支持 | 支持 | 支持 |
| 鏈接預(yù)覽 | 自動 | 需要配置 | 不支持 |
| 互動按鈕 | 不支持 | 支持 | 有限支持 |
格式適配規(guī)則配置:
在 AGENTS.md 中添加平臺格式適配規(guī)范:
## 平臺格式 ### Discord -可以使用完整 Markdown -代碼塊使用 triple backtick 包裹 -多鏈接使用<>包裹防止預(yù)覽刷屏 -支持 embed 格式 ### Telegram -支持 Markdown(部分標簽) -代碼塊使用 triple backtick 包裹 -不支持 Markdown 表格,用 bullet list 代替 -支持內(nèi)聯(lián)按鈕 ### WhatsApp -不支持 Markdown 表格,使用 bullet list -代碼塊使用 inline code(單反引號) -鏈接會自動轉(zhuǎn)換,但不支持預(yù)覽
輸出格式動態(tài)調(diào)整:
AI 會根據(jù)消息來源自動調(diào)整輸出格式。如果需要顯式控制:
## 輸出格式控制 當被要求"用表格展示"時: -如果是 Discord:用 Markdown 表格 -如果是 Telegram 或 WhatsApp:用等寬字符模擬表格或改用 bullet list
第六章:配置速查與故障排查
6.1 核心配置參數(shù)速查表
Gateway 核心配置:
| 配置路徑 | 作用 | 推薦值 |
|---|---|---|
| gateway.port | WebSocket/HTTP 端口 | 18789 |
| gateway.bind | 監(jiān)聽地址 | loopback |
| gateway.auth.mode | 認證模式 | token |
| gateway.auth.token | 認證 Token | 生產(chǎn)環(huán)境必填 |
| gateway.reload.mode | 熱重載模式 | hybrid |
Agent 核心配置:
| 配置路徑 | 作用 | 推薦值 |
|---|---|---|
| agents.defaults.workspace | workspace 目錄 | ~/.openclaw/workspace |
| agents.defaults.model.primary | 主用模型 | 實際使用模型 |
| agents.defaults.compaction.reserveTokensFloor | 壓縮后保留 token 數(shù) | 20000 |
| agents.defaults.compaction.memoryFlush.enabled | 壓縮前自動保存 | true |
| agents.defaults.heartbeat.every | 心跳間隔 | 30m |
| agents.defaults.heartbeat.activeHours | 活躍時段 | {"start":"08:00","end":"23:00"} |
渠道配置速查:
| 渠道 | 必填配置 | 可選配置 |
|---|---|---|
| Discord | token | allowFrom 、ackReaction、guilds |
| Telegram | botToken | allowFrom 、dmPolicy、historyLimit |
| allowFrom (E.164 格式) | groupPolicy 、sendReadReceipts | |
| Slack | botToken 、appToken | dm.enabled 、channels |
工具配置:
| 配置路徑 | 作用 | 推薦值 |
|---|---|---|
| tools.exec.enabled | 允許執(zhí)行 shell 命令 | true |
| tools.web.search.enabled | 允許網(wǎng)頁搜索 | true |
| tools.media.image.enabled | 允許圖片識別 | true (需模型支持) |
| agents.defaults.sandbox.mode | 沙箱模式 | non-main (生產(chǎn)環(huán)境) |
流式輸出配置:
| 配置路徑 | 作用 | 推薦值 |
|---|---|---|
| agents.defaults.blockStreamingDefault | 全局流式開關(guān) | "on" |
| agents.defaults.blockStreamingBreak | 分塊觸發(fā)條件 | "text_end" |
| agents.defaults.blockStreamingChunk.minChars | 最小分塊大小 | 200 |
| agents.defaults.blockStreamingChunk.maxChars | 最大分塊大小 | 1500 |
6.2 常見故障診斷流程
故障一:Gateway 無法啟動
診斷步驟:
# 1. 檢查配置文件語法 openclaw doctor # 2. 檢查端口是否被占用 ss -tlnp | grep 18789 # 3. 查看詳細錯誤日志 openclaw gateway start --verbose 2>&1 # 4. 檢查日志文件 tail -100 /var/log/openclaw/gateway.log
常見原因:
JSON5 語法錯誤(注釋格式問題、尾隨逗號問題)
端口被占用
auth token 未設(shè)置但綁定到非 loopback 地址
workspace 目錄權(quán)限不足
故障二:渠道 Bot 不工作
通用診斷流程:
# 1. 檢查渠道狀態(tài) openclaw gateway status # 2. 查看渠道連接日志 openclaw logs --grep"discord|telegram|whatsapp"--lines 50 # 3. 測試渠道 API 連通性 # Discord: 檢查 Bot 是否在線 # Telegram: curl https://api.telegram.org/bot/getMe
Discord 專項檢查:
確認 MESSAGE CONTENT INTENT 已開啟
確認 Bot 未被服務(wù)器禁言或移除
確認 Bot 在目標頻道有 Send Messages 權(quán)限
Telegram 專項檢查:
確認 Bot Token 正確
確認 Bot 未被 Ban
確認用戶 ID 在 allowFrom 列表中
故障三:Cron 任務(wù)不觸發(fā)
診斷步驟:
# 1. 檢查任務(wù)列表 openclaw cron list # 2. 查看任務(wù)詳情 openclaw cron list --verbose # 3. 檢查執(zhí)行歷史 openclaw cron runs --id <任務(wù)ID> # 4. 檢查調(diào)度器狀態(tài) openclaw gateway status
常見原因:
時區(qū)問題:未設(shè)置tz字段,默認使用 UTC
任務(wù)被禁用:enabled: false
delivery.mode 問題:不設(shè)為announce時任務(wù)靜默執(zhí)行
調(diào)度器未運行:cron.enabled: false
故障四:AI 失憶
診斷步驟:
# 1. 檢查 memoryFlush 配置 openclaw config get agents.defaults.compaction # 2. 檢查記憶文件是否存在 ls -la ~/.openclaw/workspace/memory/ # 3. 檢查 memorySearch 是否配置 openclaw config get memorySearch # 4. 查看 compaction 觸發(fā)日志 openclaw logs --grep"compaction|memoryFlush"--lines 50
常見原因:
memoryFlush 未開啟
softThresholdTokens 設(shè)置過小
記憶文件寫入權(quán)限問題
memorySearch 未配置導(dǎo)致檢索不到歷史
故障五:消息無響應(yīng)
診斷步驟:
# 1. 檢查 allowFrom 配置 openclaw config get channels..allowFrom # 2. 檢查消息是否被正確接收 openclaw logs --grep"message|inbound"--lines 50 # 3. 檢查 session 狀態(tài) openclaw sessions list
常見原因:
消息來源不在 allowFrom 列表
DM policy 問題(pairing 模式未完成配對)
用戶被禁言或 Bot 被拉黑
6.3 證據(jù)鏈式的結(jié)論驗證
配置生效驗證:
每個配置變更都應(yīng)通過以下方式驗證生效:
重啟驗證:變更配置后執(zhí)行openclaw gateway restart,觀察日志無錯誤輸出
狀態(tài)驗證:openclaw gateway status顯示所有渠道在線
功能驗證:實際測試配置的功能點(如發(fā)送消息測試 Cron 投遞)
日志證據(jù)收集:
故障排查時,應(yīng)收集以下日志作為證據(jù):
# 獲取時間范圍內(nèi)的日志 openclaw logs --since"2026-03-20 1000"--until"2026-03-20 1200"> /tmp/gateway-logs.txt # 獲取特定關(guān)鍵詞日志 openclaw logs --grep"error|warn"--lines 200 > /tmp/errors.txt # 導(dǎo)出完整狀態(tài) openclaw gateway status --deep > /tmp/status.txt
配置回滾流程:
重大配置變更前,應(yīng)先備份當前配置:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup-$(date +%Y%m%d-%H%M%S)
如需回滾:
# 查看備份列表 ls -la ~/.openclaw/openclaw.json.backup-* # 回滾到指定備份 cp ~/.openclaw/openclaw.json.backup-20260320-143000 ~/.openclaw/openclaw.json # 重啟 Gateway openclaw gateway restart
健康檢查基準線:
建立正常運行時的基準數(shù)據(jù),便于故障時對比:
# 記錄基準狀態(tài) openclaw gateway status --deep > /tmp/status-baseline.txt # 記錄 Cron 任務(wù)列表 openclaw cron list > /tmp/cron-baseline.txt
附錄一:配置清單
部署前檢查清單
[ ] 配置文件 JSON5 語法驗證通過(openclaw doctor)
[ ] Gateway 認證 Token 已設(shè)置
[ ] workspace 目錄權(quán)限正確
[ ] 進程管理器已配置(systemd)
[ ] 日志輪轉(zhuǎn)已配置
[ ] 所有渠道 Token/Key 已配置
[ ] memorySearch 已配置(推薦 SiliconFlow bge-m3)
[ ] 心跳活躍時段已設(shè)置(避免半夜打擾)
運維巡檢清單
[ ]openclaw gateway status所有渠道在線
[ ]openclaw cron list無禁用任務(wù)異常
[ ] 磁盤使用率 < 85%
[ ] 日志文件大小正常,無積壓
[ ] 記憶文件定期更新
安全加固清單
[ ] Gateway 綁定到 loopback
[ ] 認證 Token 足夠復(fù)雜
[ ] allowFrom 限制最小必要范圍
[ ] 日志中無敏感信息泄露(檢查 redactSensitive 配置)
[ ] 定期更新 OpenClaw 版本
附錄二:命令速查
Gateway 管理
openclaw gateway start # 啟動 Gateway openclaw gateway restart # 重啟 Gateway openclaw gateway stop # 停止 Gateway openclaw gateway reload # 熱重載配置 openclaw gateway health # 存活性檢查 openclaw gateway status # 狀態(tài)檢查 openclaw gateway status --deep# 深度狀態(tài)檢查
日志管理
openclaw logs --follow # 實時跟蹤 openclaw logs --lines 100 # 最近 100 行 openclaw logs --grep"error" # 過濾關(guān)鍵詞
Cron 管理
openclaw cron list # 任務(wù)列表 openclaw cron runs --id# 執(zhí)行歷史 openclaw cron edit --disable# 禁用任務(wù) openclaw cron edit --enable # 啟用任務(wù) openclaw cron run --id --force # 手動觸發(fā)
配置管理
openclaw config validate # 驗證配置 openclaw config get# 獲取配置項 openclaw doctor # 診斷檢查
附錄三:配置文件模板
{
// Workspace 配置
agents: {
defaults: {
workspace: "~/.openclaw/workspace",
repoRoot: "~/.openclaw/workspace",
skipBootstrap: false,
model: {
primary: "provider/claude-sonnet-4",
fallbacks: ["provider/claude-haiku-4"],
},
imageModel: "provider/claude-sonnet-4",
timeoutSeconds: 600,
compaction: {
reserveTokensFloor: 20000,
memoryFlush: {
enabled: true,
softThresholdTokens: 4000,
},
},
heartbeat: {
every: "30m",
target: "last",
activeHours: {
start: "08:00",
end: "23:00",
},
},
blockStreamingDefault: "on",
blockStreamingBreak: "text_end",
blockStreamingChunk: {
minChars: 200,
maxChars: 1500,
},
},
},
// Gateway 配置
gateway: {
port: 18789,
bind: "loopback",
auth: {
mode: "token",
token: "your-secret-token",
},
reload: {
mode: "hybrid",
},
},
// 日志配置
logging: {
level: "info",
consoleStyle: "pretty",
redactSensitive: "tools",
},
// 渠道配置
channels: {
discord: {
token: "your-discord-bot-token",
allowFrom: ["server:your-server-id"],
ackReaction: "",
dm: {
enabled: true,
policy: "pairing",
},
historyLimit: 20,
textChunkLimit: 2000,
},
telegram: {
botToken: "your-telegram-bot-token",
allowFrom: ["your-user-id"],
dm: {
enabled: true,
policy: "pairing",
},
historyLimit: 50,
replyToMode: "first",
linkPreview: true,
streamMode: "partial",
},
},
// 向量檢索配置
memorySearch: {
enabled: true,
provider: "openai",
remote: {
baseUrl: "https://api.siliconflow.cn/v1",
apiKey: "your-siliconflow-api-key",
},
model: "BAAI/bge-m3",
},
// 工具配置
tools: {
exec: {
enabled: true,
},
web: {
search: {
enabled: true,
},
},
media: {
image: {
enabled: true,
},
},
},
// Cron 配置
cron: {
enabled: true,
maxConcurrentRuns: 2,
},
}
-
自動化
+關(guān)注
關(guān)注
31文章
5962瀏覽量
90431 -
文件
+關(guān)注
關(guān)注
1文章
596瀏覽量
26092
原文標題:OpenClaw 進階配置與自動化運維實戰(zhàn)手冊
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
誠聘高級運維自動化工程師
銳捷助互聯(lián)網(wǎng)數(shù)據(jù)中心網(wǎng)絡(luò)自動化、可視化運維
Linux運維都要會哪些shell技能
配電自動化實用化運維指標研究
厲害了!山東電力運維自動化平臺正式投運
Python接口測試框架實戰(zhàn)與自動化進階視頻教程免費下載
Ansible企業(yè)級自動化運維探索的詳細資料說明
城域網(wǎng)自動化運維實現(xiàn)的關(guān)鍵點、難點和解決方案研究
城域網(wǎng)是什么,其生命周期和自動化運維應(yīng)用有哪些特點
使用Python腳本實現(xiàn)自動化運維任務(wù)
網(wǎng)絡(luò)設(shè)備自動化運維工具—ansible入門筆記介紹
Python腳本實現(xiàn)運維工作自動化案例
容器化NPB + Ansible:自動化運維方案
OpenClaw進階配置與自動化運維實戰(zhàn)手冊
評論