91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenClaw進(jìn)階配置與自動(dòng)化運(yùn)維實(shí)戰(zhàn)手冊(cè)

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2026-03-24 16:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

OpenClaw 進(jìn)階配置與自動(dòng)化運(yùn)維實(shí)戰(zhàn)手冊(cè)

前言

本文檔面向已將 OpenClaw 納入生產(chǎn)運(yùn)維體系的工程師,從運(yùn)維視角系統(tǒng)闡述配置管理、定時(shí)任務(wù)、Gateway 運(yùn)維、多渠道接入等生產(chǎn)環(huán)境關(guān)鍵議題。所有結(jié)論均基于 OpenClaw 官方文檔和實(shí)際運(yùn)維經(jīng)驗(yàn),可直接用于生產(chǎn)環(huán)境部署。

本文默認(rèn)讀者已具備 OpenClaw 基礎(chǔ)操作能力,了解 SOUL.md、USER.md、IDENTITY.md 等基礎(chǔ)配置文件的作用,熟悉 workspace 概念。

第一章:OpenClaw 生產(chǎn)環(huán)境配置原理

1.1 配置文件層級(jí)與加載機(jī)制

OpenClaw 的配置體系分為三個(gè)層級(jí),從高到低依次覆蓋:

第一層:用戶配置文件

主配置文件位于~/.openclaw/openclaw.json,采用 JSON5 格式。該文件是所有配置項(xiàng)的入口,修改后通過(guò)openclaw gateway restart或配置熱重載生效。配置文件路徑優(yōu)先級(jí)為:--configCLI 參數(shù) >OPENCLAW_CONFIG環(huán)境變量 >~/.openclaw/openclaw.json。

第二層:workspace 內(nèi)配置

workspace 目錄下的配置文件定義了 Agent 的行為規(guī)范。這些文件在每次新 session 啟動(dòng)時(shí)由 Agent 自動(dòng)加載:

SOUL.md:Agent 性格定義,描述"你是一個(gè)什么樣的助手"

USER.md:用戶信息,描述"你在幫誰(shuí)"

AGENTS.md:工作手冊(cè),描述"每次上班先做什么、任務(wù)怎么做、安全邊界在哪里"

IDENTITY.md:身份標(biāo)識(shí),包含名稱、頭像、emoji 等視覺(jué)身份信息

第三層:運(yùn)行時(shí)配置覆蓋

部分配置項(xiàng)可以在運(yùn)行時(shí)通過(guò)命令或 API 臨時(shí)覆蓋,如/config命令可查看和修改當(dāng)前會(huì)話的部分參數(shù)。但運(yùn)行時(shí)修改僅對(duì)當(dāng)前會(huì)話有效,重啟后失效。

配置加載順序驗(yàn)證方法

openclaw gateway --verbose 2>&1 | grep -i"config|workspace|load"

該命令輸出配置加載的完整過(guò)程,可觀察到各層級(jí)文件的加載時(shí)機(jī)。

1.2 JSON5 配置格式規(guī)范

OpenClaw 采用 JSON5 作為配置文件格式,這意味著在標(biāo)準(zhǔn) JSON 基礎(chǔ)上支持注釋和尾隨逗號(hào)。這一設(shè)計(jì)顯著提升了配置文件的可維護(hù)性。

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 采用點(diǎn)號(hào)分隔的路徑表達(dá)嵌套配置,如agents.defaults.compaction.reserveTokensFloor。所有配置項(xiàng)均可通過(guò)完整路徑訪問(wèn)。配置結(jié)構(gòu)采用深合并策略,后續(xù)配置項(xiàng)會(huì)遞歸合并到已有配置中。

嚴(yán)格驗(yàn)證機(jī)制

OpenClaw 采用嚴(yán)格 Schema 驗(yàn)證。未知配置鍵或類型錯(cuò)誤會(huì)導(dǎo)致 Gateway 啟動(dòng)失敗。這一設(shè)計(jì)避免了配置拼寫(xiě)錯(cuò)誤等問(wèn)題的隱式傳播。驗(yàn)證失敗時(shí)會(huì)輸出詳細(xì)的錯(cuò)誤信息,指出具體是哪個(gè)配置鍵出現(xiàn)了問(wèn)題。

1.3 配置驗(yàn)證與診斷

OpenClaw 內(nèi)置診斷工具openclaw doctor,用于檢查配置完整性和環(huán)境狀態(tài)。該命令應(yīng)在生產(chǎn)部署前和故障排查時(shí)執(zhí)行。

基礎(chǔ)診斷命令

openclaw doctor

輸出包含以下檢查項(xiàng):

配置文件語(yǔ)法檢查(JSON5 解析)

必填配置項(xiàng)檢查

API Key 格式驗(yàn)證

workspace 目錄權(quán)限檢查

渠道連接性測(cè)試

深度診斷模式

openclaw doctor --verbose

該模式會(huì)輸出詳細(xì)的檢查過(guò)程,包括每個(gè)配置項(xiàng)的驗(yàn)證結(jié)果。對(duì)于配置項(xiàng)較多的大型配置文件,深度模式可以精確定位問(wèn)題所在。

單項(xiàng)配置驗(yàn)證

在修改特定配置項(xiàng)后,可使用以下命令驗(yàn)證配置語(yǔ)法:

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 運(yùn)行時(shí)狀態(tài)和 RPC 可達(dá)性。--deep參數(shù)增加系統(tǒng)級(jí)掃描,包括磁盤(pán)使用率、內(nèi)存占用、進(jìn)程狀態(tài)等。

1.4 配置熱重載與安全重啟

熱重載機(jī)制

OpenClaw Gateway 支持配置熱重載,默認(rèn)模式為hybrid。該模式下,Agent 配置變更自動(dòng)生效,Gateway 端口變更需要手動(dòng)重啟。熱重載監(jiān)控的文件路徑為~/.openclaw/openclaw.json。

熱重載配置項(xiàng):

{
 gateway: {
  reload: {
   mode: "hybrid", // hybrid | hot | restart | off
  },
 },
}

各模式行為如下:

hybrid:Agent 配置自動(dòng)熱重載,Gateway 端口等需要重啟

hot:所有配置自動(dòng)熱重載,無(wú)需重啟

restart:配置文件變更后自動(dòng)重啟 Gateway

off:禁用熱重載,所有變更需要手動(dòng)重啟

安全重啟流程

生產(chǎn)環(huán)境重啟 Gateway 應(yīng)遵循以下流程,避免消息丟失:

# 1. 檢查當(dāng)前運(yùn)行狀態(tài)
openclaw gateway status

# 2. 檢查是否有進(jìn)行中的任務(wù)
openclaw cron list

# 3. 等待進(jìn)行中的任務(wù)完成(可選)
# 如果有必須完成的任務(wù),使用以下命令等待
sleep 30

# 4. 執(zhí)行重啟
openclaw gateway restart

# 5. 驗(yàn)證重啟結(jié)果
openclaw gateway health
openclaw gateway status

重啟前的預(yù)檢清單

確認(rèn)openclaw gateway status顯示所有渠道在線

確認(rèn) cron 任務(wù)無(wú)正在執(zhí)行的任務(wù)

確認(rèn)~/.openclaw/openclaw.json語(yǔ)法正確

確認(rèn)所有必填配置項(xiàng)已填寫(xiě)

進(jìn)程保活配置

生產(chǎn)環(huán)境應(yīng)配置進(jìn)程管理器,確保 Gateway 異常退出后自動(dòng)恢復(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 運(yùn)維體系

2.1 Gateway 架構(gòu)與端口管理

OpenClaw Gateway 是 OpenClaw 的核心組件,負(fù)責(zé)維持與各消息渠道的長(zhǎng)連接,處理消息路由和 Agent 生命周期管理。Gateway 采用常駐進(jìn)程設(shè)計(jì),退出時(shí)返回非零狀態(tài)碼以便 supervisor 自動(dòng)拉起。

端口優(yōu)先級(jí)機(jī)制

Gateway 監(jiān)聽(tīng)端口的確定遵循以下優(yōu)先級(jí):

--portCLI 參數(shù)(最高優(yōu)先級(jí))

OPENCLAW_GATEWAY_PORT環(huán)境變量

gateway.port配置項(xiàng)

默認(rèn)端口 18789

默認(rèn)配置下,WebSocket 控制平面綁定到127.0.0.1:18789,同一端口同時(shí)提供 HTTP 控制接口、hooks 和 A2UI 管理界面。Canvas 文件服務(wù)器默認(rèn)占用端口 18793。開(kāi)發(fā)實(shí)例使用基礎(chǔ)端口 19001,衍生端口依次為 19003(+2)和 19005(+4)。

端口配置示例

{
 gateway: {
  port: 18789,
  bind: "loopback", // loopback | lan | tailnet
 },
 canvasHost: {
  port: 18793,
 },
}

bind參數(shù)控制監(jiān)聽(tīng)地址:

loopback:僅監(jiān)聽(tīng) 127.0.0.1,僅本地可訪問(wèn)

lan:監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口,局域網(wǎng)可訪問(wèn)

tailnet:配合 Tailscale 使用

生產(chǎn)環(huán)境推薦loopback,通過(guò) SSH 隧道或 VPN 訪問(wèn) Gateway 控制接口。如需直接從局域網(wǎng)訪問(wèn),應(yīng)配合gateway.auth做好認(rèn)證和trustedProxies配置。

端口沖突檢測(cè)

啟動(dòng)前檢測(cè)端口可用性:

ss -tlnp | grep 18789
# 或
netstat -tlnp | grep 18789

如果端口已被占用,會(huì)返回占用進(jìn)程的 PID 和名稱。

2.2 認(rèn)證與訪問(wèn)控制

Gateway 默認(rèn)啟用認(rèn)證,客戶端連接時(shí)必須提供有效的憑證。認(rèn)證方式通過(guò)gateway.auth.mode配置:

{
 gateway: {
  auth: {
   mode: "token", // token | password
   token: "your-secret-token",
   password: "your-password",
   allowTailscale: false,
  },
 },
}

Token 認(rèn)證

客戶端連接時(shí)需要在 connect 參數(shù)中包含 token:

{
 connect: {
  params: {
   auth: {
    token: "your-secret-token",
   },
  },
 },
}

密碼認(rèn)證

{
 connect: {
  params: {
   auth: {
    password: "your-password",
   },
  },
 },
}

多 Gateway 隔離

安全設(shè)計(jì)假設(shè)每個(gè) Gateway 獨(dú)占一臺(tái)宿主機(jī)。如果需要部署多個(gè) Gateway 實(shí)例,必須確保:

端口不沖突(每個(gè)實(shí)例使用不同端口)

狀態(tài)目錄隔離(通過(guò)--data-dir參數(shù))

配置文件獨(dú)立

# 實(shí)例 1
openclaw gateway start --port 18789 --data-dir /var/lib/openclaw-instance1

# 實(shí)例 2
openclaw gateway start --port 18790 --data-dir /var/lib/openclaw-instance2

Tailscale 集成

如果gateway.auth.allowTailscale設(shè)為true,Tailscale 身份驗(yàn)證的用戶可以免認(rèn)證登錄。這在 Tailscale 網(wǎng)絡(luò)內(nèi)提供了零摩擦訪問(wèn)。

2.3 日志體系與調(diào)試

日志輸出位置

Gateway 日志默認(rèn)輸出到 stdout,生產(chǎn)環(huán)境應(yīng)通過(guò)進(jìn)程管理器重定向到日志文件。systemd 環(huán)境下日志由 journald 管理,可通過(guò)journalctl -u openclaw-gateway查看。

默認(rèn)日志文件路徑為/tmp/openclaw/openclaw-YYYY-MM-DD.log,可通過(guò)logging.file配置項(xiàng)修改。

日志級(jí)別配置

{
 logging: {
  level: "info",   // 全局日志級(jí)別
  file: "/var/log/openclaw/gateway.log",
  consoleLevel: "info", // 控制臺(tái)日志級(jí)別
  consoleStyle: "pretty", // pretty | compact | json
  redactSensitive: "tools", // off | tools
  redactPatterns: [],    // 自定義脫敏正則
 },
}

日志級(jí)別從低到高:debug、info、warn、error。生產(chǎn)環(huán)境通常使用info,故障排查時(shí)臨時(shí)切換到debug。

調(diào)試模式啟動(dòng)

openclaw gateway start --verbose

--verbose參數(shù)將 debug 日志同時(shí)輸出到控制臺(tái),便于實(shí)時(shí)觀察 Gateway 行為。該參數(shù)應(yīng)僅用于故障排查,不建議長(zhǎng)期使用。

日志查看命令

# 實(shí)時(shí)跟蹤日志
openclaw logs --follow

# 查看最近 100 行
openclaw logs --lines 100

# 過(guò)濾特定關(guān)鍵詞
openclaw logs --grep"error|warn"--lines 50

# 按時(shí)間范圍查看
openclaw logs --since"2026-03-20 1000"--until"2026-03-20 1200"

敏感信息脫敏

logging.redactSensitive設(shè)為tools時(shí),工具調(diào)用日志中的敏感信息(API Key、Token 等)會(huì)被自動(dòng)脫敏。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)控

健康檢查端點(diǎn)

Gateway 提供兩種健康檢查:存活性(liveness)和就緒性(readiness)。

存活性檢查確認(rèn) Gateway 進(jìn)程正常運(yùn)行:

openclaw gateway health

該命令通過(guò) WebSocket 發(fā)送存活性探測(cè),期望返回hello-ok響應(yīng)。如果 Gateway 無(wú)響應(yīng)或返回錯(cuò)誤,說(shuō)明進(jìn)程可能處于異常狀態(tài)。

就緒性檢查確認(rèn) Gateway 已準(zhǔn)備好處理請(qǐng)求:

openclaw gateway status

該命令調(diào)用健康檢查端點(diǎn),期望返回包含ok: true和渠道狀態(tài)信息的響應(yīng)。如果就緒性檢查失敗,即使進(jìn)程在運(yùn)行,Gateway 也不應(yīng)接收新請(qǐng)求。

深度狀態(tài)檢查

openclaw gateway status --deep

--deep參數(shù)增加系統(tǒng)資源檢查:

磁盤(pán)使用率(是否低于 90%)

內(nèi)存使用情況

Gateway 進(jìn)程 CPU 占用

各渠道連接狀態(tài)

Prometheus 監(jiān)控集成

通過(guò)配置 hooks 可以將指標(biāo)暴露給 Prometheus:

{
 hooks: {
  enabled: true,
  path: "/hooks",
  mappings: [{
   match: { path: "metrics" },
   action: "prometheus",
  }],
 },
}

或者直接通過(guò) HTTP 控制接口獲取狀態(tài):

curl -s http://127.0.0.1:18789/status | jq .

告警閾值建議

磁盤(pán)使用率 > 85%:告警

內(nèi)存使用率 > 90%:告警

Gateway 進(jìn)程 CPU > 80% 持續(xù) 5 分鐘:告警

任意渠道離線:告警

健康檢查連續(xù)失敗 3 次:告警

2.5 服務(wù)管理與進(jìn)程保活

進(jìn)程?;罴軜?gòu)

生產(chǎn)環(huán)境必須配置進(jìn)程管理器,確保 Gateway 異常退出后自動(dòng)拉起。推薦的架構(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

該配置實(shí)現(xiàn)了:

自動(dòng)重啟:Gateway 異常退出后 10 秒內(nèi)自動(dòng)拉起

最小權(quán)限:使用專用用戶運(yùn)行,不使用 root

文件系統(tǒng)隔離:只允許寫(xiě)入指定目錄

臨時(shí)文件隔離:使用私有 /tmp

日志輪轉(zhuǎn)配置

通過(guò) 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
}

啟動(dòng)順序

如果 Gateway 依賴其他服務(wù)(如數(shù)據(jù)庫(kù)、Redis),應(yīng)在 systemd unit 中通過(guò)After和Wants聲明依賴關(guān)系:

[Unit]
Description=OpenClaw Gateway
After=network.target redis.service
Wants=redis.service

手動(dòng)服務(wù)控制

# 啟動(dòng)
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ā)送重啟信號(hào)(觸發(fā)熱重載)
openclaw gateway reload

# 或通過(guò) API
curl -X POST http://127.0.0.1:18789/api/reload 
 -H"Authorization: Bearer your-token"

第三章:定時(shí)任務(wù)與自動(dòng)化運(yùn)維

3.1 三種調(diào)度類型對(duì)比

OpenClaw Cron 調(diào)度系統(tǒng)支持三種調(diào)度類型,適用于不同的時(shí)間觸發(fā)場(chǎng)景:

at類型:一次性定時(shí)任務(wù)

在指定時(shí)間點(diǎn)執(zhí)行一次后自動(dòng)刪除。適用于會(huì)議提醒、生日提醒、一次性通知等場(chǎng)景。

{
 "name": "喝水提醒",
 "schedule": { "kind": "at", "at": "2026-03-20T1600+08:00" },
 "payload": { "kind": "systemEvent", "text": "提醒:該喝水了!" },
 "sessionTarget": "main",
 "deleteAfterRun": true,
}

時(shí)間格式為 ISO 8601,建議始終包含時(shí)區(qū)信息(+08:00表示北京時(shí)間)。如果不帶時(shí)區(qū),OpenClaw 默認(rèn)使用 UTC 時(shí)間。

every類型:固定間隔循環(huán)任務(wù)

按固定時(shí)間間隔重復(fù)執(zhí)行,適用于心跳檢測(cè)、狀態(tài)輪詢等場(chǎng)景。

{
 "name": "服務(wù)巡檢",
 "schedule": { "kind": "every", "everyMs": 3600000 },
 "payload": { "kind": "agentTurn", "message": "檢查服務(wù)狀態(tài)" },
 "sessionTarget": "isolated",
 "delivery": { "mode": "announce" },
}

常用時(shí)間換算:

間隔 everyMs 值
5 分鐘 300000
15 分鐘 900000
30 分鐘 1800000
1 小時(shí) 3600000
6 小時(shí) 21600000
24 小時(shí) 86400000

cron類型:Cron 表達(dá)式調(diào)度

最靈活的調(diào)度方式,支持標(biāo)準(zhǔn) 5 字段 cron 表達(dá)式。適用于周期性報(bào)告、定時(shí)任務(wù)等復(fù)雜調(diào)度場(chǎng)景。

{
 "name": "每日早報(bào)",
 "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
 "payload": { "kind": "agentTurn", "message": "生成今日簡(jiǎn)報(bào)" },
 "sessionTarget": "isolated",
 "delivery": { "mode": "announce" },
}

字段順序?yàn)椋悍?時(shí) 日 月 周

常用 cron 表達(dá)式示例:

表達(dá)式 含義
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

時(shí)區(qū)配置重要性

tz字段必須設(shè)置,否則默認(rèn)使用 UTC 時(shí)間。一個(gè)常見(jiàn)的踩坑案例:配置了0 9 * * *(期望北京時(shí)間 9:00),但沒(méi)有設(shè)置tz,實(shí)際會(huì)在 UTC 1:00(北京時(shí)間 9:00)執(zhí)行。這對(duì)于國(guó)內(nèi)服務(wù)器通常是正確的,但對(duì)于海外服務(wù)器或容器時(shí)區(qū)配置不一致時(shí),會(huì)導(dǎo)致難以察覺(jué)的調(diào)度偏差。

3.2 執(zhí)行模式與會(huì)話管理

Cron 任務(wù)支持兩種執(zhí)行模式,決定了任務(wù)在什么會(huì)話環(huán)境中運(yùn)行。

systemEvent模式:主會(huì)話注入

將事件文本注入到主會(huì)話,在下次 heartbeat 時(shí)處理。適用于提醒、通知類場(chǎng)景。

{
 "payload": {
  "kind": "systemEvent",
  "text": "提醒:10 分鐘后有會(huì)議"
 },
 "sessionTarget": "main",
 "wakeMode": "now",
}

sessionTarget: "main"只能搭配systemEvent類型,不可混用。該模式復(fù)用主會(huì)話的上下文,因此可以訪問(wèn) MEMORY.md 等主會(huì)話專屬文件。

agentTurn模式:獨(dú)立會(huì)話執(zhí)行

啟動(dòng)一個(gè)獨(dú)立的 cron session 執(zhí)行任務(wù)。適用于需要執(zhí)行操作、生成報(bào)告等場(chǎng)景。

{
 "payload": {
  "kind": "agentTurn",
  "message": "生成今日項(xiàng)目報(bào)告",
  "model": "sonnet"
 },
 "sessionTarget": "isolated",
 "wakeMode": "next-heartbeat",
}

獨(dú)立會(huì)話的 session key 格式為cron:??梢允褂貌煌P蛨?zhí)行任務(wù)(model參數(shù)),這為成本優(yōu)化提供了空間。

會(huì)話目標(biāo)組合限制

sessionTarget payload.kind wakeMode 有效組合
main systemEvent now / next-heartbeat 有效
isolated agentTurn now / next-heartbeat 有效
main agentTurn - 無(wú)效組合
isolated systemEvent - 無(wú)效組合

如果配置了無(wú)效組合,Gateway 會(huì)在任務(wù)調(diào)度時(shí)報(bào)告錯(cuò)誤。

wakeMode 參數(shù)

now:立即觸發(fā)執(zhí)行

next-heartbeat:等待下一次 heartbeat 時(shí)執(zhí)行

next-heartbeat模式可以批量處理多個(gè)定時(shí)事件,減少模型調(diào)用次數(shù)。now模式則立即執(zhí)行,適用于有時(shí)間敏感性的任務(wù)。

3.3 任務(wù)狀態(tài)存儲(chǔ)與歷史追溯

任務(wù)列表查看

openclaw cron list

該命令列出所有已注冊(cè)的定時(shí)任務(wù),包括任務(wù) ID、名稱、調(diào)度表達(dá)式、下次執(zhí)行時(shí)間、啟用狀態(tài)。

執(zhí)行歷史查看

openclaw cron runs --id <任務(wù)ID>

該命令顯示任務(wù)的執(zhí)行歷史,包括每次執(zhí)行的開(kāi)始時(shí)間、結(jié)束時(shí)間、執(zhí)行狀態(tài)(成功/失?。?、執(zhí)行時(shí)長(zhǎng)。如果任務(wù)執(zhí)行失敗,會(huì)顯示錯(cuò)誤信息。

執(zhí)行狀態(tài)說(shuō)明

pending:任務(wù)已調(diào)度,等待執(zhí)行

running:任務(wù)正在執(zhí)行

completed:任務(wù)執(zhí)行成功

failed:任務(wù)執(zhí)行失敗

cancelled:任務(wù)被取消

任務(wù)啟用/禁用

禁用任務(wù)而不是刪除任務(wù)是推薦的運(yùn)維實(shí)踐。禁用后的任務(wù)保留執(zhí)行歷史,可以隨時(shí)重新啟用。

openclaw cron edit <任務(wù)ID> --disable
openclaw cron edit <任務(wù)ID> --enable

手動(dòng)觸發(fā)執(zhí)行

用于測(cè)試任務(wù)配置或立即執(zhí)行緊急任務(wù):

openclaw cron run --id <任務(wù)ID> --force

--force參數(shù)強(qiáng)制執(zhí)行,忽略調(diào)度時(shí)間和禁用狀態(tài)。

清理歷史記錄

執(zhí)行歷史會(huì)占用存儲(chǔ)空間,定期清理是必要的:

openclaw cron runs --id <任務(wù)ID> --clear

3.4 典型運(yùn)維場(chǎng)景配置示例

場(chǎng)景一:每日科技新聞?wù)?/strong>

{
 "name": "每日早報(bào)",
 "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
 "payload": {
  "kind": "agentTurn",
  "message": "搜索今天的科技和 AI 領(lǐng)域新聞熱點(diǎn),整理成 5 條簡(jiǎn)報(bào)。每條包含:標(biāo)題、一句話摘要、來(lái)源鏈接。",
  "model": "haiku"
 },
 "sessionTarget": "isolated",
 "delivery": {
  "mode": "announce",
  "channel": "telegram",
  "to": "user:123456789"
 }
}

該配置使用 Haiku 模型生成簡(jiǎn)報(bào)以控制成本,結(jié)果通過(guò) Telegram 投送到指定用戶。

場(chǎng)景二:服務(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ù)離線,說(shuō)明哪個(gè)服務(wù)、返回的錯(cuò)誤碼、可能的處理建議。",
  "model": "haiku"
 },
 "sessionTarget": "isolated",
 "delivery": { "mode": "announce" }
}

該配置實(shí)現(xiàn)了"靜默正常"模式——服務(wù)正常時(shí)不會(huì)騷擾用戶,只有異常時(shí)才發(fā)送通知。

場(chǎng)景三:每周項(xiàng)目周報(bào)生成

{
 "name": "項(xiàng)目周報(bào)",
 "schedule": { "kind": "cron", "expr": "0 10 * * 1", "tz": "Asia/Shanghai" },
 "payload": {
  "kind": "agentTurn",
  "message": "讀取 memory/ 目錄下最近 7 天的日志文件,整理成一份周報(bào)。周報(bào)包含:
1. 本周完成的事項(xiàng)(按項(xiàng)目分類)
2. 進(jìn)行中的項(xiàng)目及進(jìn)展
3. 遇到的問(wèn)題及解決方案
4. 下周計(jì)劃
格式簡(jiǎn)潔,使用 bullet points。",
  "model": "sonnet"
 },
 "sessionTarget": "isolated",
 "delivery": {
  "mode": "announce",
  "channel": "discord",
  "to": "channel:987654321"
 }
}

場(chǎng)景四:一次性提醒

通過(guò)自然語(yǔ)言告知 AI 創(chuàng)建,AI 會(huì)自動(dòng)生成對(duì)應(yīng)的 Cron 配置:

"幫我設(shè)置一個(gè) 20 分鐘后的提醒:開(kāi)會(huì)"

OpenClaw 會(huì)自動(dòng)解析并創(chuàng)建類似以下配置:

{
 "name": "開(kāi)會(huì)提醒",
 "schedule": {
  "kind": "at",
  "at": "2026-03-20T1600+08:00"
 },
 "payload": {
  "kind": "systemEvent",
  "text": "開(kāi)會(huì)時(shí)間到了"
 },
 "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時(shí),投遞失敗不會(huì)重試,適合對(duì)可靠性要求不高的通知場(chǎng)景。

多渠道同時(shí)投遞

需要同時(shí)投送到多個(gè)渠道時(shí),可以創(chuàng)建多個(gè) Cron 任務(wù),或者在任務(wù)消息中指定多個(gè)渠道:

{
 "name": "每日雙渠道通知",
 "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
 "payload": {
  "kind": "agentTurn",
  "message": "生成今日摘要,結(jié)果同時(shí)投送到 Discord 和 Telegram",
 },
 "sessionTarget": "isolated",
 "delivery": {
  "mode": "announce",
  "channel": "discord",
  "to": "channel:111111111"
 }
}

如果需要同時(shí)投送多個(gè)渠道,建議在消息中明確說(shuō)明,Agent 會(huì)在執(zhí)行后自動(dòng)處理跨渠道投遞。

第四章:記憶系統(tǒng)與上下文管理

4.1 Compaction 機(jī)制原理

OpenClaw 的 Compaction(壓縮)機(jī)制是解決 AI 長(zhǎng)期對(duì)話失憶問(wèn)題的核心。當(dāng)對(duì)話長(zhǎng)度接近模型的上下文窗口限制時(shí),OpenClaw 會(huì)自動(dòng)將舊的對(duì)話內(nèi)容壓縮成摘要,釋放 token 空間供后續(xù)對(duì)話使用。

觸發(fā)條件

Compaction 在以下條件滿足時(shí)觸發(fā):

對(duì)話歷史總 token 數(shù)接近模型上下文窗口上限

剩余 token 空間低于reserveTokensFloor閾值

壓縮過(guò)程中,已壓縮的對(duì)話會(huì)以摘要形式保留,未壓縮的近期對(duì)話保持原樣。壓縮完成后,新對(duì)話可以繼續(xù)進(jìn)行。

壓縮策略配置

{
 agents: {
  defaults: {
   compaction: {
    reserveTokensFloor: 20000,
    strategy: "default",
   },
  },
 },
}

reserveTokensFloor表示壓縮后至少保留的最近對(duì)話 token 數(shù)。設(shè)為 20000 時(shí),壓縮后最近 20K token 的對(duì)話保持原樣,更早的對(duì)話被壓縮為摘要。

手動(dòng)觸發(fā)壓縮

用戶可以通過(guò)命令手動(dòng)觸發(fā)壓縮,并指定希望保留的重點(diǎn)內(nèi)容:

/compact 重點(diǎn)保留技術(shù)決策和代碼架構(gòu)相關(guān)討論

該命令會(huì)立即對(duì)當(dāng)前對(duì)話進(jìn)行壓縮,保留指令中指定的內(nèi)容優(yōu)先于其他內(nèi)容。

4.2 memoryFlush 配置與閾值設(shè)計(jì)

memoryFlush 機(jī)制

memoryFlush 是 Compaction 的增強(qiáng)功能,在觸發(fā)壓縮之前先讓 AI 將重要信息寫(xiě)入文件。開(kāi)啟后,AI 不會(huì)因?yàn)閴嚎s而丟失關(guān)鍵記憶。

配置參數(shù)

{
 agents: {
  defaults: {
   compaction: {
    reserveTokensFloor: 20000,
    memoryFlush: {
     enabled: true,
     softThresholdTokens: 4000,
    },
   },
  },
 },
}

參數(shù) 含義 推薦值
enabled 是否開(kāi)啟壓縮前自動(dòng)保存 true
softThresholdTokens 距離壓縮多少 token 時(shí)觸發(fā)保存 4000

softThresholdTokens: 4000意味著當(dāng)對(duì)話剩余空間降至 4000 token 時(shí),觸發(fā) memoryFlush。AI 會(huì)將重要信息寫(xiě)入文件,這些信息在壓縮后仍可通過(guò)讀取文件恢復(fù)。

閾值設(shè)計(jì)原則

softThresholdTokens越小,觸發(fā)越頻繁,AI 有更多 token 用于正常對(duì)話

softThresholdTokens越大,觸發(fā)越早,有更多時(shí)間準(zhǔn)備保存內(nèi)容

推薦值 4000 考慮了保存操作本身需要消耗的 token

驗(yàn)證 memoryFlush 生效

開(kāi)啟 verbose 模式后,可以在對(duì)話中看到Auto-compaction complete提示:

openclaw gateway restart --verbose

然后在對(duì)話中使用/verbose命令開(kāi)啟 verbose 模式。memoryFlush 執(zhí)行時(shí)不會(huì)有額外提示(靜默執(zhí)行),只有在 compaction 完成后才會(huì)在 verbose 模式下看到提示。

4.3 記憶分層結(jié)構(gòu)設(shè)計(jì)

分層架構(gòu)概述

OpenClaw 的記憶系統(tǒng)采用分層設(shè)計(jì),不同層級(jí)的文件承擔(dān)不同的記憶職能:

層級(jí) 文件 用途 更新頻率
索引 MEMORY.md 核心信息、能力概覽、記憶索引 索引變化時(shí)
項(xiàng)目層 memory/projects.md 各項(xiàng)目當(dāng)前狀態(tài)與待辦 項(xiàng)目有進(jìn)展時(shí)
基礎(chǔ)設(shè)施層 memory/infra.md 服務(wù)器、API、部署等配置速查 配置變更時(shí)
教訓(xùn)層 memory/lessons.md 踩過(guò)的坑,按嚴(yán)重程度分級(jí) 踩坑后
日志層 memory/YYYY-MM-DD.md 每日原始記錄 每日或多日

索引層設(shè)計(jì)

MEMORY.md是記憶系統(tǒng)的入口,應(yīng)保持精簡(jiǎn)(建議不超過(guò) 40 行)。內(nèi)容應(yīng)包含:

用戶核心信息和偏好

Agent 能力概覽

記憶文件索引(指向其他記憶文件)

當(dāng)前項(xiàng)目的關(guān)鍵上下文

示例結(jié)構(gòu):

# 核心記憶

## 用戶信息
-姓名:
-時(shí)區(qū):Asia/Shanghai
-主要語(yǔ)言:中文

## 項(xiàng)目索引
-項(xiàng)目A:memory/projects.md#project-a
-項(xiàng)目B:memory/projects.md#project-b

## 最近重要上下文
-2026-03:完成了系統(tǒng)重構(gòu),詳見(jiàn) memory/2026-03.md
-當(dāng)前主要任務(wù):優(yōu)化 Gateway 性能

## 教訓(xùn)索引
-部署相關(guān):memory/lessons.md#deploy
-配置相關(guān):memory/lessons.md#config

日志層設(shè)計(jì)

日志文件命名格式為memory/YYYY-MM-DD.md,按日期歸檔。日志應(yīng)采用結(jié)構(gòu)化格式,便于后續(xù)檢索。

日志格式規(guī)范:

### [PROJECT:項(xiàng)目名] 標(biāo)題

-**結(jié)論**: 一句話核心結(jié)論
-**文件變更**: 涉及的文件路徑
-**教訓(xùn)**: 踩坑點(diǎn)和解決方案(如有)
-**標(biāo)簽**:#tag1#tag2

好日志 vs 壞日志對(duì)比

壞日志示例(流水賬,信息密度低):

### 部署
今天部署了項(xiàng)目。先試了直接跑,報(bào)錯(cuò)了。然后查了半天,發(fā)現(xiàn)是端口被占了。最后用 nginx 反代解決了問(wèn)題。

好日志示例(結(jié)構(gòu)化,高信息密度):

### [PROJECT:MyApp] nginx 反代部署成功

-**結(jié)論**: 通過(guò) nginx 反代部署成功,監(jiān)聽(tīng) 80 端口
-**文件變更**: /etc/nginx/sites-available/myapp
-**教訓(xùn)**: 直接暴露端口不可行,必須走 nginx 反代
-**標(biāo)簽**:#myapp#deploy#nginx

好日志的判斷標(biāo)準(zhǔn):只看結(jié)論能否快速理解發(fā)生了什么事,不需要閱讀正文。

4.4 向量檢索與 Embedding 配置

memorySearch 機(jī)制

OpenClaw 的memorySearch功能基于向量語(yǔ)義檢索。當(dāng)用戶詢問(wèn)歷史相關(guān)問(wèn)題時(shí),Agent 會(huì)調(diào)用 memorySearch 在記憶文件中進(jìn)行語(yǔ)義搜索,返回最相關(guān)的內(nèi)容。

SiliconFlow bge-m3 配置

國(guó)內(nèi)用戶推薦使用 SiliconFlow 提供的免費(fèi) 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)勢(shì)

完全免費(fèi),適合個(gè)人和小型團(tuán)隊(duì)

中英文雙語(yǔ)支持優(yōu)秀

向量維度 1024,精度和性能平衡良好

在中文語(yǔ)義理解任務(wù)上表現(xiàn)優(yōu)異

獲取 SiliconFlow API Key

訪問(wèn) siliconflow.cn

注冊(cè)賬號(hào)并完成認(rèn)證

進(jìn)入控制臺(tái) → API Keys → 創(chuàng)建新 Key

復(fù)制 Key 并配置到 openclaw.json

向量檢索優(yōu)化策略

結(jié)構(gòu)化日志的檢索命中率顯著高于非結(jié)構(gòu)化文本。原因在于結(jié)構(gòu)化日志的每個(gè)字段都有明確的語(yǔ)義標(biāo)簽,向量模型能夠更準(zhǔn)確地理解檢索意圖。

提高檢索命中率的實(shí)踐:

標(biāo)簽規(guī)范化:為每個(gè)日志定義統(tǒng)一的標(biāo)簽體系,如#deploy、#config、#bug

關(guān)鍵詞前置:在日志標(biāo)題中包含核心關(guān)鍵詞

結(jié)論獨(dú)立可讀:結(jié)論字段應(yīng)能獨(dú)立表達(dá)完整語(yǔ)義,不依賴正文

定期索引維護(hù):刪除過(guò)期日志,更新項(xiàng)目狀態(tài),保持索引新鮮

自動(dòng)記憶維護(hù)

通過(guò) Heartbeat 任務(wù)實(shí)現(xiàn)自動(dòng)記憶維護(hù):

{
 "name": "記憶維護(hù)",
 "schedule": { "kind": "every", "everyMs": 604800000 }, // 7天
 "payload": {
  "kind": "agentTurn",
  "message": "讀取 memory/heartbeat-state.json,檢查 lastMemoryMaintenance 字段。如果距今 >= 7 天,執(zhí)行以下維護(hù)任務(wù):
1. 讀最近 7 天的 memory/YYYY-MM-DD.md 日志
2. 提煉有價(jià)值的信息到對(duì)應(yīng)文件(projects.md / lessons.md)
3. 壓縮已完成一次性任務(wù)的日志為一行結(jié)論
4. 刪除明顯過(guò)期的信息
5. 更新 heartbeat-state.json 的 lastMemoryMaintenance 為今天",
 },
 "sessionTarget": "isolated",
 "delivery": { "mode": "none" },
}

維護(hù)狀態(tài)文件memory/heartbeat-state.json:

{
"lastMemoryMaintenance":"2026-03-01"
}

第五章:多渠道接入運(yùn)維

5.1 Discord Bot 配置與 MESSAGE CONTENT INTENT

配置流程概述

Discord Bot 接入需要以下步驟:創(chuàng)建應(yīng)用 → 開(kāi)啟 Intent → 獲取 Token → 配置權(quán)限 → 邀請(qǐng)到服務(wù)器 → 配置 openclaw.json。

第一步:創(chuàng)建 Discord 應(yīng)用

訪問(wèn) Discord Developer Portal(https://discord.com/developers/applications)

點(diǎn)擊 "New Application" → 輸入應(yīng)用名稱 → 點(diǎn)擊 "Create"

在應(yīng)用頁(yè)面左側(cè)點(diǎn)擊 "Bot"

點(diǎn)擊 "Reset Token" → 確認(rèn) → 復(fù)制顯示的 Token(只會(huì)顯示一次)

第二步:開(kāi)啟 Privileged Gateway Intents

這是 90% 新手踩坑的地方。MESSAGE CONTENT INTENT 必須開(kāi)啟,否則 Bot 收到消息時(shí)無(wú)法讀取內(nèi)容。

在 Bot 頁(yè)面找到 "Privileged Gateway Intents" 部分:

PRESENCE INTENT:讀取用戶在線狀態(tài)(根據(jù)需要開(kāi)啟)

SERVER MEMBERS INTENT:讀取服務(wù)器成員列表(根據(jù)需要開(kāi)啟)

MESSAGE CONTENT INTENT:讀取消息內(nèi)容(必須開(kāi)啟)

將需要的三項(xiàng)設(shè)置為 ON,點(diǎn)擊 "Save Changes"。

第三步:配置 Bot 權(quán)限

左側(cè)點(diǎn)擊 "OAuth2" → "OAuth2 URL Generator"

Scopes 勾選:bot

Bot Permissions 勾選:

Send Messages

Read Message History

Add Reactions

Use Slash Commands

Embed Links(推薦)

復(fù)制生成的 OAuth2 URL,在瀏覽器中打開(kāi)并授權(quán)到目標(biāo)服務(wù)器

第四步:獲取服務(wù)器 ID

Discord 客戶端 → 設(shè)置 → 高級(jí) → 開(kāi)啟 "開(kāi)發(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 格式說(shuō)明

格式 含義
server: 允許整個(gè)服務(wù)器
user: 允許特定用戶
channel: 允許特定頻道

可以組合使用,Bot 只響應(yīng)來(lái)自允許來(lái)源的消息。

ackReaction 配置

建議使用不常見(jiàn)的 emoji 作為已讀確認(rèn),便于在大量消息中識(shí)別:

{
 channels: {
  discord: {
   ackReaction: "", // 已讀確認(rèn) emoji
   removeAckAfterReply: false,
  },
 },
}

常見(jiàn)問(wèn)題排查

現(xiàn)象 原因 解決方案
Bot 在線但不回復(fù) MESSAGE CONTENT INTENT 未開(kāi)啟 Developer Portal → Bot → 開(kāi)啟 → Save
Bot 完全不在線 Token 錯(cuò)誤或 Gateway 未啟動(dòng) 檢查 Token,openclaw status查日志
只能在部分頻道回復(fù) Bot 在該頻道缺少權(quán)限 確認(rèn) Bot 在頻道有 Send Messages 權(quán)限
DM 不工作 dm.policy 設(shè)為 pairing 且未完成配對(duì) 設(shè)為 "open" 或完成配對(duì)流程

驗(yàn)證 Discord 連接

openclaw gateway status

輸出中應(yīng)顯示 Discord 渠道狀態(tài)為在線。如果顯示離線,檢查:

Token 是否正確

MESSAGE CONTENT INTENT 是否開(kāi)啟

Bot 是否已被移除出服務(wù)器

Gateway 日志中的具體錯(cuò)誤信息

5.2 Telegram Bot 接入

創(chuàng)建 Telegram Bot

Telegram 搜索 @BotFather

發(fā)送/newbot

按提示輸入 Bot 名稱和用戶名

BotFather 會(huì)返回 Bot Token,格式類似:123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ

獲取用戶 ID

Telegram 搜索 @userinfobot

向該 Bot 發(fā)送任意消息

Bot 會(huì)返回你的用戶 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 選項(xiàng)

含義
pairing 用戶需要先完成配對(duì)流程
allowlist 只允許 allowFrom 列表中的用戶
open 允許任何人使用
disabled 禁用 DM

Telegram + Discord 多渠道同時(shí)在線

{
 channels: {
  discord: {
   token: "discord-bot-token",
   allowFrom: ["server:123456789"],
   ackReaction: "",
  },
  telegram: {
   botToken: "telegram-bot-token",
   allowFrom: ["123456789"],
  },
 },
}

多渠道配置時(shí),消息路由自動(dòng)處理——來(lái)自哪個(gè)渠道的請(qǐng)求,響應(yīng)就發(fā)送到哪個(gè)渠道。

5.3 多渠道消息路由機(jī)制

路由規(guī)則

OpenClaw 的消息路由基于以下規(guī)則:

每條消息攜帶來(lái)源渠道標(biāo)識(shí)

路由決策根據(jù)消息來(lái)源和配置中的 bindings 確定目標(biāo) Agent

響應(yīng)總是發(fā)送到消息來(lái)源的同一渠道

多 Agent 綁定

如果需要不同渠道或不同賬號(hào)綁定不同的 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" },
   },
  },
 },
}

跨渠道身份鏈接

如果用戶同時(shí)使用多個(gè)渠道并希望共享上下文:

{
 session: {
  identityLinks: [
   { key: "user-alice", channels: ["telegram:123456", "discord:987654"] },
  ],
 },
}

配置后,來(lái)自這兩個(gè)渠道的消息會(huì)被識(shí)別為同一用戶,共享會(huì)話歷史。

5.4 平臺(tái)格式適配規(guī)范

各平臺(tái)格式支持差異

格式 Discord Telegram WhatsApp
Markdown 表格 支持 不支持 不支持
代碼塊 支持 支持 不支持
粗體/斜體 支持 支持 支持
Emoji Reaction 支持 支持 支持
鏈接預(yù)覽 自動(dòng) 需要配置 不支持
互動(dòng)按鈕 不支持 支持 有限支持

格式適配規(guī)則配置

在 AGENTS.md 中添加平臺(tái)格式適配規(guī)范:

## 平臺(tái)格式

### Discord
-可以使用完整 Markdown
-代碼塊使用 triple backtick 包裹
-多鏈接使用<>包裹防止預(yù)覽刷屏
-支持 embed 格式

### Telegram
-支持 Markdown(部分標(biāo)簽)
-代碼塊使用 triple backtick 包裹
-不支持 Markdown 表格,用 bullet list 代替
-支持內(nèi)聯(lián)按鈕

### WhatsApp
-不支持 Markdown 表格,使用 bullet list
-代碼塊使用 inline code(單反引號(hào))
-鏈接會(huì)自動(dòng)轉(zhuǎn)換,但不支持預(yù)覽

輸出格式動(dòng)態(tài)調(diào)整

AI 會(huì)根據(jù)消息來(lái)源自動(dòng)調(diào)整輸出格式。如果需要顯式控制:

## 輸出格式控制

當(dāng)被要求"用表格展示"時(shí):
-如果是 Discord:用 Markdown 表格
-如果是 Telegram 或 WhatsApp:用等寬字符模擬表格或改用 bullet list

第六章:配置速查與故障排查

6.1 核心配置參數(shù)速查表

Gateway 核心配置

配置路徑 作用 推薦值
gateway.port WebSocket/HTTP 端口 18789
gateway.bind 監(jiān)聽(tīng)地址 loopback
gateway.auth.mode 認(rèn)證模式 token
gateway.auth.token 認(rèn)證 Token 生產(chǎn)環(huán)境必填
gateway.reload.mode 熱重載模式 hybrid

Agent 核心配置

配置路徑 作用 推薦值
agents.defaults.workspace workspace 目錄 ~/.openclaw/workspace
agents.defaults.model.primary 主用模型 實(shí)際使用模型
agents.defaults.compaction.reserveTokensFloor 壓縮后保留 token 數(shù) 20000
agents.defaults.compaction.memoryFlush.enabled 壓縮前自動(dòng)保存 true
agents.defaults.heartbeat.every 心跳間隔 30m
agents.defaults.heartbeat.activeHours 活躍時(shí)段 {"start":"08:00","end":"23:00"}

渠道配置速查

渠道 必填配置 可選配置
Discord token allowFrom 、ackReaction、guilds
Telegram botToken allowFrom 、dmPolicy、historyLimit
WhatsApp allowFrom (E.164 格式) groupPolicy 、sendReadReceipts
Slack botToken 、appToken dm.enabled 、channels

工具配置

配置路徑 作用 推薦值
tools.exec.enabled 允許執(zhí)行 shell 命令 true
tools.web.search.enabled 允許網(wǎng)頁(yè)搜索 true
tools.media.image.enabled 允許圖片識(shí)別 true (需模型支持)
agents.defaults.sandbox.mode 沙箱模式 non-main (生產(chǎn)環(huán)境)

流式輸出配置

配置路徑 作用 推薦值
agents.defaults.blockStreamingDefault 全局流式開(kāi)關(guān) "on"
agents.defaults.blockStreamingBreak 分塊觸發(fā)條件 "text_end"
agents.defaults.blockStreamingChunk.minChars 最小分塊大小 200
agents.defaults.blockStreamingChunk.maxChars 最大分塊大小 1500

6.2 常見(jiàn)故障診斷流程

故障一:Gateway 無(wú)法啟動(dòng)

診斷步驟:

# 1. 檢查配置文件語(yǔ)法
openclaw doctor

# 2. 檢查端口是否被占用
ss -tlnp | grep 18789

# 3. 查看詳細(xì)錯(cuò)誤日志
openclaw gateway start --verbose 2>&1

# 4. 檢查日志文件
tail -100 /var/log/openclaw/gateway.log

常見(jiàn)原因:

JSON5 語(yǔ)法錯(cuò)誤(注釋格式問(wèn)題、尾隨逗號(hào)問(wèn)題)

端口被占用

auth token 未設(shè)置但綁定到非 loopback 地址

workspace 目錄權(quán)限不足

故障二:渠道 Bot 不工作

通用診斷流程:

# 1. 檢查渠道狀態(tài)
openclaw gateway status

# 2. 查看渠道連接日志
openclaw logs --grep"discord|telegram|whatsapp"--lines 50

# 3. 測(cè)試渠道 API 連通性
# Discord: 檢查 Bot 是否在線
# Telegram: curl https://api.telegram.org/bot/getMe

Discord 專項(xiàng)檢查:

確認(rèn) MESSAGE CONTENT INTENT 已開(kāi)啟

確認(rèn) Bot 未被服務(wù)器禁言或移除

確認(rèn) Bot 在目標(biāo)頻道有 Send Messages 權(quán)限

Telegram 專項(xiàng)檢查:

確認(rèn) Bot Token 正確

確認(rèn) Bot 未被 Ban

確認(rèn)用戶 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

常見(jiàn)原因:

時(shí)區(qū)問(wèn)題:未設(shè)置tz字段,默認(rèn)使用 UTC

任務(wù)被禁用:enabled: false

delivery.mode 問(wèn)題:不設(shè)為announce時(shí)任務(wù)靜默執(zhí)行

調(diào)度器未運(yùn)行: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

常見(jiàn)原因:

memoryFlush 未開(kāi)啟

softThresholdTokens 設(shè)置過(guò)小

記憶文件寫(xiě)入權(quán)限問(wèn)題

memorySearch 未配置導(dǎo)致檢索不到歷史

故障五:消息無(wú)響應(yīng)

診斷步驟:

# 1. 檢查 allowFrom 配置
openclaw config get channels..allowFrom

# 2. 檢查消息是否被正確接收
openclaw logs --grep"message|inbound"--lines 50

# 3. 檢查 session 狀態(tài)
openclaw sessions list

常見(jiàn)原因:

消息來(lái)源不在 allowFrom 列表

DM policy 問(wèn)題(pairing 模式未完成配對(duì))

用戶被禁言或 Bot 被拉黑

6.3 證據(jù)鏈?zhǔn)降慕Y(jié)論驗(yàn)證

配置生效驗(yàn)證

每個(gè)配置變更都應(yīng)通過(guò)以下方式驗(yàn)證生效:

重啟驗(yàn)證:變更配置后執(zhí)行openclaw gateway restart,觀察日志無(wú)錯(cuò)誤輸出

狀態(tài)驗(yàn)證:openclaw gateway status顯示所有渠道在線

功能驗(yàn)證:實(shí)際測(cè)試配置的功能點(diǎn)(如發(fā)送消息測(cè)試 Cron 投遞)

日志證據(jù)收集

故障排查時(shí),應(yīng)收集以下日志作為證據(jù):

# 獲取時(shí)間范圍內(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)先備份當(dā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

健康檢查基準(zhǔn)線

建立正常運(yùn)行時(shí)的基準(zhǔn)數(shù)據(jù),便于故障時(shí)對(duì)比:

# 記錄基準(zhǔn)狀態(tài)
openclaw gateway status --deep > /tmp/status-baseline.txt

# 記錄 Cron 任務(wù)列表
openclaw cron list > /tmp/cron-baseline.txt

附錄一:配置清單

部署前檢查清單

[ ] 配置文件 JSON5 語(yǔ)法驗(yàn)證通過(guò)(openclaw doctor)

[ ] Gateway 認(rèn)證 Token 已設(shè)置

[ ] workspace 目錄權(quán)限正確

[ ] 進(jìn)程管理器已配置(systemd)

[ ] 日志輪轉(zhuǎn)已配置

[ ] 所有渠道 Token/Key 已配置

[ ] memorySearch 已配置(推薦 SiliconFlow bge-m3)

[ ] 心跳活躍時(shí)段已設(shè)置(避免半夜打擾)

運(yùn)維巡檢清單

[ ]openclaw gateway status所有渠道在線

[ ]openclaw cron list無(wú)禁用任務(wù)異常

[ ] 磁盤(pán)使用率 < 85%

[ ] 日志文件大小正常,無(wú)積壓

[ ] 記憶文件定期更新

安全加固清單

[ ] Gateway 綁定到 loopback

[ ] 認(rèn)證 Token 足夠復(fù)雜

[ ] allowFrom 限制最小必要范圍

[ ] 日志中無(wú)敏感信息泄露(檢查 redactSensitive 配置)

[ ] 定期更新 OpenClaw 版本

附錄二:命令速查

Gateway 管理

openclaw gateway start     # 啟動(dòng) 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    # 實(shí)時(shí)跟蹤
openclaw logs --lines 100   # 最近 100 行
openclaw logs --grep"error" # 過(guò)濾關(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 # 手動(dòng)觸發(fā)

配置管理

openclaw config validate    # 驗(yàn)證配置
openclaw config get    # 獲取配置項(xiàng)
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,
 },
}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    31

    文章

    5958

    瀏覽量

    90427
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    596

    瀏覽量

    26090

原文標(biāo)題:OpenClaw 進(jìn)階配置與自動(dòng)化運(yùn)維實(shí)戰(zhàn)手冊(cè)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    誠(chéng)聘高級(jí)運(yùn)自動(dòng)化工程師

    獵頭職位:高級(jí)運(yùn)自動(dòng)化工程師【合肥】工作職責(zé): 1、根據(jù)基礎(chǔ)架構(gòu)運(yùn)管理需求,規(guī)劃設(shè)計(jì)運(yùn)
    發(fā)表于 12-12 10:37

    銳捷助互聯(lián)網(wǎng)數(shù)據(jù)中心網(wǎng)絡(luò)自動(dòng)化、可視運(yùn)

    可靠的業(yè)務(wù)支撐。然而目前大多數(shù)互聯(lián)網(wǎng)企業(yè)IDC所依賴的系統(tǒng)環(huán)境與其可視性需求之間仍然存在著巨大差距,銳捷通過(guò)基于SDN技術(shù)的運(yùn)營(yíng)配置自動(dòng)化及網(wǎng)絡(luò)運(yùn)可視化解決方案,不僅能夠簡(jiǎn)化網(wǎng)絡(luò)
    發(fā)表于 01-25 09:42

    Linux運(yùn)都要會(huì)哪些shell技能

    在充斥著各種的互聯(lián)網(wǎng)+的數(shù)字時(shí)代,Linux運(yùn)也越來(lái)越趨于自動(dòng)化方向發(fā)展,越來(lái)越多的運(yùn)工作者奔跑在了
    發(fā)表于 11-30 17:38

    ansible-first-book 自動(dòng)化運(yùn)工具

    ansible-first-book 自動(dòng)化運(yùn)工具
    發(fā)表于 09-08 09:31 ?5次下載

    配電自動(dòng)化實(shí)用運(yùn)指標(biāo)研究

    根據(jù)《配電自動(dòng)化實(shí)用化驗(yàn)收細(xì)則》中對(duì)配電自動(dòng)化運(yùn)考核要求,重點(diǎn)圍繞終端在線率、遙信動(dòng)作正確率、遙控使用率與遙控成功率四項(xiàng)指標(biāo)進(jìn)行考核。目前對(duì)配電
    發(fā)表于 03-05 14:55 ?0次下載

    厲害了!山東電力運(yùn)自動(dòng)化平臺(tái)正式投運(yùn)

    日前,國(guó)網(wǎng)山東省電力集團(tuán)公司通過(guò)了山東信息通信技術(shù)監(jiān)督裝備及運(yùn)支撐工具開(kāi)發(fā)實(shí)施項(xiàng)目的驗(yàn)收,代表著運(yùn)自動(dòng)化平臺(tái)正式投
    發(fā)表于 04-30 11:18 ?4843次閱讀

    Python接口測(cè)試框架實(shí)戰(zhàn)自動(dòng)化進(jìn)階視頻教程免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Python接口測(cè)試框架實(shí)戰(zhàn)自動(dòng)化進(jìn)階視頻教程免費(fèi)下載主要包括了:第1章 接口測(cè)試基礎(chǔ)回顧,第2章 fiddler在工作中的運(yùn)用,第3章 如何開(kāi)發(fā)get,第4章
    發(fā)表于 08-28 15:32 ?75次下載
    Python接口測(cè)試框架<b class='flag-5'>實(shí)戰(zhàn)</b>與<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>進(jìn)階</b>視頻教程免費(fèi)下載

    Ansible企業(yè)級(jí)自動(dòng)化運(yùn)探索的詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Ansible企業(yè)級(jí)自動(dòng)化運(yùn)探索的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:場(chǎng)景一:自動(dòng)化運(yùn)
    發(fā)表于 06-03 08:00 ?2次下載
    Ansible企業(yè)級(jí)<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b>探索的詳細(xì)資料說(shuō)明

    城域網(wǎng)自動(dòng)化運(yùn)實(shí)現(xiàn)的關(guān)鍵點(diǎn)、難點(diǎn)和解決方案研究

      針對(duì)城域網(wǎng)運(yùn)自動(dòng)化水平較低、人工成本高且無(wú)法擺脫重復(fù)運(yùn)勞動(dòng)的現(xiàn)狀,本文探討了當(dāng)前城域網(wǎng)自動(dòng)化
    發(fā)表于 10-28 09:09 ?3342次閱讀
    城域網(wǎng)<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b>實(shí)現(xiàn)的關(guān)鍵點(diǎn)、難點(diǎn)和解決方案研究

    城域網(wǎng)是什么,其生命周期和自動(dòng)化運(yùn)應(yīng)用有哪些特點(diǎn)

    Labs 摘? 要針對(duì)城域網(wǎng)運(yùn)自動(dòng)化水平較低、人工成本高且無(wú)法擺脫重復(fù)運(yùn)勞動(dòng)的現(xiàn)狀,本文探討了當(dāng)前城域網(wǎng)
    的頭像 發(fā)表于 12-25 14:24 ?1864次閱讀

    使用Python腳本實(shí)現(xiàn)自動(dòng)化運(yùn)任務(wù)

    許多運(yùn)工程師會(huì)使用 Python 腳本來(lái)自動(dòng)化運(yùn)任務(wù)。Python 是一種流行的編程語(yǔ)言,具有豐富的第三方庫(kù)和強(qiáng)大的自動(dòng)化能力,適用于許
    的頭像 發(fā)表于 04-08 10:36 ?2553次閱讀

    網(wǎng)絡(luò)設(shè)備自動(dòng)化運(yùn)工具—ansible入門(mén)筆記介紹

    Ansible是一款自動(dòng)化運(yùn)工具,基于Python開(kāi)發(fā),集合了眾多運(yùn)工具 (Puppet、CFengine、Chef、SaltStack)的優(yōu)點(diǎn),實(shí)現(xiàn)了批量系統(tǒng)
    的頭像 發(fā)表于 01-15 13:46 ?3807次閱讀
    網(wǎng)絡(luò)設(shè)備<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b>工具—ansible入門(mén)筆記介紹

    Python腳本實(shí)現(xiàn)運(yùn)工作自動(dòng)化案例

    還在為重復(fù)性運(yùn)工作而煩惱?每天被各種告警、監(jiān)控、部署搞得焦頭爛額?作為一名有10年經(jīng)驗(yàn)的運(yùn)老司機(jī),今天分享5個(gè)超實(shí)用的Python自動(dòng)化
    的頭像 發(fā)表于 08-27 14:46 ?1237次閱讀

    容器NPB + Ansible:自動(dòng)化運(yùn)方案

    傳統(tǒng)NPB設(shè)備手動(dòng)配置效率低下。星融元NPB 2.0基于SONiC系統(tǒng),支持通過(guò)Ansible實(shí)現(xiàn)自動(dòng)化運(yùn)。通過(guò)編寫(xiě)Playbook可批量秒級(jí)下發(fā)
    的頭像 發(fā)表于 12-08 12:00 ?1004次閱讀
    容器<b class='flag-5'>化</b>NPB + Ansible:<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>運(yùn)</b><b class='flag-5'>維</b>方案

    新西蘭服務(wù)器運(yùn)必備:自動(dòng)化監(jiān)控與故障預(yù)警實(shí)踐

    在現(xiàn)代互聯(lián)網(wǎng)運(yùn)中,服務(wù)器的穩(wěn)定運(yùn)行至關(guān)重要。新西蘭的服務(wù)器運(yùn)同樣不例外,高效的監(jiān)控和預(yù)警系統(tǒng)能夠顯著提高運(yùn)
    的頭像 發(fā)表于 02-26 14:26 ?212次閱讀