今天做了一次完整的 OpenClaw 稳定性修复,目标很明确:

  1. 打通 Gmail(gog)
  2. 解决“新建对话长时间没响应”
  3. 避免以后升级后补丁丢失

  ### 1) Gmail 接入:先验证能力,再谈优化

  安装技能:

  clawdhub install gog

  手动授权(403 最终可用路径):

  gog auth add zishuifeng892@gmail.com --services gmail,calendar,drive,contacts,sheets,docs --manual --force-consent

  验证授权与读取:

 

gog auth list
  gog gmail search "newer_than:7d" --max 3 --account zishuifeng892@gmail.com

  这一步跑通后,说明 Gmail 能力已可用,问题就从“接入层”转向“运行稳定性”。

  ———

  ### 2) 真正根因:不是 /new 慢,是 lane 队列堵了

  排查日志后发现:session-memory 写文件在毫秒级完成。
  真正异常是同一 lane 只入队不出队:

  - lane=session:agent:main:main queueSize 持续增长
  - lane task done 长时间不出现

  结论:前序任务挂住,后续请求全部排队,看起来像“新会话卡死”。

  ———

  ### 3) 第一层修复:占位回复自动续跑(避免“稍等”后断轮)

  我在运行层加了“占位回复识别 + 自动继续同任务”。

  核心代码(节选):

  const PLACEHOLDER_AUTO_RETRY_LIMIT = 2;

  function isPlaceholderOnlyReply(text) {
    if (!text || text.length > 160) return false;
    if (/status:\s*(done|failed|need_input)|error|http|```/im.test(text)) return false;
    return [/let me\b/i, /one moment/i, /hold on/i, /i'?ll check/i].some((p) => p.test(text));
  }

  // ...
  const runText = extractPayloadText(runResult);
  if (placeholderRetryCount < PLACEHOLDER_AUTO_RETRY_LIMIT && isPlaceholderOnlyReply(runText)) {
    placeholderRetryCount += 1;
    promptBody = buildPlaceholderFollowupPrompt(originalPrompt);
    continue;
  }

  效果:模型先回“我先处理”时不会直接结束轮次,会自动继续执行。

  ———

  ### 4) 第二层修复:watchdog 自动自愈(不再手动重启)

  我做了一个守护脚本,定时看队列健康度,卡住就自动重启 gateway。

  核心逻辑(节选):

  if ($health.LastQueue -lt $QueueThreshold) { return @{ IsStuck=$false; Reason='queue_low' } }
  if ($health.LastTaskDoneUtc -and $health.LastEnqueueUtc -le $health.LastTaskDoneUtc) { return
  @{ IsStuck=$false } }

  $enqueueAgeSec = (New-TimeSpan -Start $health.LastEnqueueUtc -End (Get-Date).ToUniversalTime()).TotalSeconds
  if ($enqueueAgeSec -ge ($StuckMinutes * 60)) {
    # stuck -> restart gateway
  }

  重启动作按端口找 PID,杀掉并拉起:

  netstat -ano -p tcp
  Stop-Process -Id $pid -Force
  Start-Process cmd.exe "/c C:\Users\Administrator\.openclaw\gateway.cmd"

  ———

  ### 5) 第三层修复:升级后“一键回补”

  因为运行层补丁可能被升级覆盖,我做了可重复执行脚本:

  powershell -ExecutionPolicy Bypass -File C:\Users\Administrator\oc-reapply-openclaw-patch.ps1

  脚本自动做三件事:

  1. 回补占位续跑逻辑
  2. 恢复技能最小集(仅保留 gog)
  3. 重启 gateway

  ———

  ### 6) 最终结果

  1. Gmail 接入可用(已实测检索邮件)
  2. 新会话长时间无响应问题可自动自愈
  3. 升级后补丁可一键重放,不再手改文件

  这次最关键的经验:
  先区分表象和瓶颈,再把临时操作沉淀成自动化脚本。

  ———

  如果你也遇到 “OpenClaw 回了‘稍等’就没下文” 或 “新会话偶发卡死”,评论区留你的日志片段,我可以给你一版最小改动的修复
  策略。
 

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐