openclaw gateway 启不来的两次经历

openclaw gateway 启不来的两次经历

一、feishu 配置格式写错,gateway 直接拒绝启动

第一次遇到是在 feishu 渠道刚配好之后重启 OpenClaw,gateway 没有起来。openclaw doctor 提示配置校验失败,但具体原因需要进日志看。最终定位到两个问题,都是 openclaw.json 里的字段格式不对:

capabilities 必须是数组,不能是对象。

原来写的是:

"feishu": {
  "capabilities": {
    "inlineButtons": true
  }
}

改成:

"feishu": {
  "capabilities": ["inlineButtons"]
}

footer 字段不在 schema 里。

想加一行 gateway 发出去的消息底部文字,自然地想到 footer,写进去通过了 JSON 语法检查,但 openclaw config validate --json 报错,提示 channels.feishu.footer 是 unknown field。

这两个问题都能通过 openclaw config validate 发现,但校验工具的错误信息不会告诉你把哪个字段改成什么格式,只告诉你哪里校验没过。第一次用的时候需要结合文档或错误上下文才能快速定位。


二、改了三个地方,默认模型才真正生效

想把默认模型从 openai-codex/gpt-5.4 改成 openai/gpt-5.3-codex。看了 openclaw.json 里有个 defaultModel 字段,改了,重启。跑一次请求,日志里还是 gpt-5.4

原因是 defaultModel 在某些版本里不是优先级最高的字段。真正控制默认模型的是:

"agents": {
  "defaults": {
    "model": {
      "primary": "openai/gpt-5.3-codex"
    }
  }
}

agents.defaults.model.primary 会覆盖外层的 defaultModel

但这还不够。如果装了 model-router hook,hook 里也有 hardcode 的模型名:

// hooks/model-router/handler.js
modelOverride: 'openai-codex/gpt-5.4'  // 代码类请求

这里没改的话,代码类请求还是走旧模型。需要同时把 hook 里的 modelOverride 也更新。

改了三处(defaultModelagents.defaults.model.primary、model-router hook)之后,openclaw models status --plain 才返回正确的新模型名,日志里的请求也才真正走新模型。


三、memory-lancedb 载入失败,整个 CLI 退出

某次 openclaw configure 时出现:

memory-lancedb failed to load from /usr/local/lib/node_modules/openclaw/dist/extensions/memory-lancedb/index.js: 
Error: ENOENT: no such file or directory, open '/usr/local/lib/node_modules/openclaw/dist/package.json'

[openclaw] Failed to start CLI: PluginLoadFailureError: plugin load failed

报错不是插件本身有 bug,而是 npm install -g openclaw 之后 dist/ 目录结构不完整,缺了 dist/package.jsonmemory-lancedb 插件加载时会用这个文件做路径发现,找不到就直接 PluginLoadFailureError,连带整个 CLI 都退出了,什么都做不了。

短期解法是在 openclaw.json 里把 memory 插件禁掉:

"plugins": {
  "slots": {
    "memory": "none"
  },
  "entries": {
    "memory-lancedb": {
      "enabled": false
    }
  }
}

禁掉之后 CLI 恢复正常,其他功能不受影响。真正修复是重装 openclaw 全局包,确保 dist/package.json 存在。但在急着要用的情况下,先禁用比较实际。

这个问题有个不直观的地方:错误信息里提到的是 memory-lancedb,但如果你不了解插件加载机制,容易理解成"内存数据库文件不见了",而不是"npm 安装后包目录结构有问题"。

posted @ 2026-04-16 16:18  难删亦删  阅读(30)  评论(0)    收藏  举报