2026 OpenClaw「不回復」與靜默失敗排查:heartbeat、thinking 與 Cron 通道對照清單
你已經能打開 Dashboard、埠 18789 也放行,但用戶側看到長時間「無回復」,或 Cron/定時任務跑完卻沒有任何投遞,或網關日誌裡像成功、IM 裡卻空無一物——這三類在 2026 年社區反饋裡常被混為一談。本文按現象分層先把「模型側 thinking/heartbeat 空輸出」「工作流幻覺文件」「通道/Webhook」與「安裝/升級/埠」拆開;給出對照表、不少於 5 步的最短診斷順序(doctor / models status / logs),並說明何時不必重裝;與 常見報錯清單、sessions_spawn 排錯、Webhook 通道 交叉閱讀可覆蓋絕大多數「靜默」類工單。
本文要點
1. 三類痛點:為什麼「不回復」不等於「網關掛了」
OpenClaw 的請求路徑長:通道入站 → 網關調度 → 模型推理 → 工具/工作流 → 再經通道出站。任一環節無異常棧但無可見輸出,用戶都會概括為「不回復」。這與 安裝階段報錯 不同:後者有明確 exit code 或 TLS/依賴錯誤;靜默類問題更需要分層取證。下文默認你已能訪問網關管理面;若 18789 仍不可達,請先回到 首次上線與防火牆 章節。
- 模型側「thinking」與 heartbeat 任務:部分模型在開啟 thinking 模式時,Cron 或短任務可能長時間處於「內部推理」狀態,最終可交付正文為空,通道層便無任何消息可發。社區實踐中常見 workaround 是在 heartbeat/定時代理路徑上關閉 thinking 或縮短思考預算,使任務在數十秒內產出可投遞片段。若你僅在交互聊天裡正常、而定時任務永遠「無聲」,應優先懷疑這一條,而非立刻重裝 npm 包。
- 工作流與虛構文件路徑:多輪對話裡模型可能反覆引用並不存在的
WORKFLOW_AUTO.md等路徑;若你的自動化真去讀取這些文件,會表現為「任務結束但無輸出」或「日誌裡像跑了腳本實則 no-op」。處理方式是:用倉庫內真實文件固定工作流入口,並在提示詞層禁止模型自創路徑;同時對照 沙箱與工作目錄,確認相對路徑與運行用戶一致。 - 通道投遞與速率限制:網關側顯示 handled,但 Telegram/Slack/企業 IM 因 429、Webhook 失效 URL、或 Bot 被禁言而無展示。此類問題與模型無關,卻最容易被誤判為「OpenClaw 壞了」。應對照 Webhook 與常駐進程 文中的 curl 自檢與 launchd 環境變量。
把上述三類映射到你的現象:交互正常與否、是否僅 Cron、是否僅某一通道——再進入下一節表格,可避免同時修改模型密鑰、重裝依賴和改防火牆十條規則。
另有一類「假靜默」來自客戶端展示層:例如移動 IM 對長消息摺疊、或 Web 控制臺緩存舊會話,而網關實際已返回。處理辦法是在日誌中搜索該請求的 correlation id / trace id,與通道 API 的 HTTP 狀態碼對齊;若日誌顯示 200 而客戶端仍空白,應轉向客戶端版本與 CDN 緩存,而不是調整模型溫度。再一類與並發與隊列相關:多 worker 或多次重複註冊同一 Webhook 時,後入隊任務可能被去重策略丟棄,表象也是「沒回」;需在網關配置裡顯式打開隊列深度與丟棄原因的 debug 級別日誌(具體開關以版本為準),並與 網關 Token 與限流 文檔核對。
2. 現象分流表:全靜默、僅 Cron、僅通道
| 現象 | 優先懷疑層 | 首選驗證 | 通常可先排除 |
|---|---|---|---|
| 交互與 Cron 都不回復,doctor 有黃項 | 提供商密鑰/模型路由 | openclaw models status、試最小單輪對話 | 埠 18789(若 HTTP 健康檢查仍通) |
| 僅 Cron/heartbeat 無聲,手動聊天正常 | thinking/heartbeat 配置、任務超時 | 對 Cron 用戶關閉 thinking 或限思考步數;看日誌時長分布 | 整包重裝 |
| 網關日誌成功,IM 無消息 | 通道 Token、Webhook、限流 | 對 Webhook URL 做 curl、核對 Bot 權限 | 模型 temperature 一類參數 |
| 偶發「跑完但空輸出」 | 工作目錄、沙箱、虛構路徑 | 固定 cwd、最小可復現腳本 | 「隨機不穩定」(多為環境漂移) |
| 升級後出現 | 配置鍵遷移、默認行為變更 | 對照 升級說明 與 OPENCLAW_* diff | 硬體故障 |
若你同時啟用 生產加固 的沙箱與出站限制,記得把「通道出站」「模型 API 出站」同時列入允許列表,否則會出現「部分任務靜默失敗」的假象。
排障時建議隨手打開對照表的一行作為工單標題前綴(例如「僅 Cron + thinking 可疑」),這樣與同事的交接成本最低;若後續證明是通道 429,再把前綴改為「通道限流」即可閉環。對於已接入多個 IM 的環境,務必標註哪一條通道復現,避免把 Telegram 的配置改動誤記到 Slack 工單上。
3. 落地步驟:5 步最短診斷路徑
下列順序刻意先軟體分層、後重裝,適合在 Mac 雲 7×24 節點上由值班按 Runbook 執行。
- 基線健康:運行
openclaw doctor與openclaw health --json(若版本提供),保存輸出;確認 Node 大版本與官方要求一致,與 極速部署 文檔對齊。 - 模型與憑證:
openclaw models status或等價命令,驗證各 provider 401/429 是否乾淨;對靜默任務單獨指定已知可用的模型做 A/B。 - 日誌與時間線:
openclaw logs --follow(或你部署的 journal 路徑),從「入站事件 ID」追到「出站發送」;若日誌在推理後戛然而止,回到 thinking/heartbeat 配置。 - 通道探針:用最小 echo 任務經同一通道發一條消息;失敗則查 Webhook/Token/env 是否與 launchd plist 一致(非交互 shell 未繼承
.zshrc是高頻根因)。 - 配置最小化對比:複製一份 staging 配置,僅保留單通道+單模型+關閉工具,驗證是否仍靜默;若 staging 正常而生產靜默,逐步合併差異而非整體重裝。
launchctl 託管網關,任何僅在 ~/.zshrc 裡 export 的 API Key 都不會進入守護進程環境;表現為「SSH 手動啟動正常、重啟後全靜默」。
完成前五步仍無解時,再考慮版本回滾或隔離目錄重裝,並保留舊配置與日誌 tarball 以便與上遊 issue 對齊。盲目 npm install -g --force 往往會抹掉你已調好的 heartbeat 片段,延長故障時間。
建議在 Runbook 中為「靜默」類工單增加時間盒:例如前 15 分鐘只執行分層表中的「通道探針 + models status」,禁止同時改動三處以上配置;這樣排障記錄可讀,也方便事後復盤是模型策略還是運維環境導致。對多地域團隊,可在 Mac 雲節點上保留只讀 dashboard 截圖或 JSON 導出,與本地筆記本現象對照,快速判斷是否為「僅雲上 launchd 環境缺失變量」這一固定模式。
4. 可引用配置點與參數
① heartbeat / 定時代理:為短周期任務關閉 thinking 或限制推理步數,可顯著降低「空輸出」概率(具體鍵名以你安裝的 OpenClaw 版本文檔為準,升級後務必 diff)。② 超時:通道客戶端與上遊模型超時需匹配;過短會截斷長任務,過長會讓用戶以為「死機」。③ 重試:對 429/5xx 的退避策略應記錄到日誌,否則界面層仍靜默。④ Mac 雲磁碟與日誌輪轉:日誌寫滿會導致進程異常退出,表象也像「不回復」;結合 會話與權限 檢查寫權限。⑤ 合規:生產環境避免在日誌裡列印完整密鑰;排障時使用臨時 read-only token。⑥ 時鐘同步:NTP 漂移會導致 JWT 或籤名型 Webhook 間歇失敗,日誌裡偶發 401;在 Mac 雲上對 sntp 或系統時間做一次基線檢查往往比換模型更快定位。⑦ 字符集與消息長度:個別通道對 Unicode 或附件大小有限制,模型輸出非空卻在投遞層被截斷為空,應在通道側打開原始 payload 日誌對比。
5. 從反覆重裝到可復現的 Mac 雲 Agent 底座
每次「不回復」都重裝全局包,會把環境變量、launchd 單元、沙箱策略的真實根因掩蓋掉,尤其在筆記本與 Mac 雲混用密鑰時,極易演變成「本地永遠正常、雲上永遠靜默」的不可復現故事。
更穩妥的是固定分層診斷表與五步 Runbook,把 thinking/heartbeat、通道、工作目錄三類檢查拆票;需要長期 7×24 承載多通道與自動化時,租賃 VPSMAC 的 M4 Mac 雲主機 並在交付時附帶「靜默類問題」專項自檢,通常比在異構虛擬機或臨時容器裡反覆重裝更省時:日誌路徑統一、進程用戶清晰、與 Apple 工具鏈同機,減少一層「到底哪條環境沒繼承」的猜測。
6. 常見問題
手動聊天正常,只有 Cron 靜默,最先改什麼?
優先查 Cron/heartbeat 路徑上的 thinking 配置與運行用戶環境;再查超時與空輸出是否被通道丟棄。
日誌裡沒有報錯算不算「成功」?
不算。必須看到出站或通道 ACK;否則繼續追模型輸出長度與通道層。
何時應該重裝?
當 doctor 顯示安裝損壞、二進位與 Node ABI 不匹配、或官方升級腳本要求淨目錄安裝時;單純靜默優先分層排查。
與「常見報錯清單」如何分工閱讀?
安裝失敗、埠佔用、TLS 握手錯誤等請看 常見報錯清單;本文聚焦無棧或弱提示的靜默。二者疊加可覆蓋從「裝不上」到「裝得上但不說話」的全鏈路。