OpenClaw 升级到 v2.3 后的变化和踩坑记录

昨天把 OpenClaw 从 v2.1 升级到 v2.3,记录下过程和遇到的问题。

升级方法

docker pull openclaw/openclaw:v2.3
docker-compose down && docker-compose up -d

简单粗暴,但建议先备份 data 目录。

主要变化

  1. 新的 Skill API:v2.3 改了 Skill 的注册方式,旧的 skill.yaml 格式不兼容。如果你有自定义 Skill,需要按新格式改一下
  2. 性能提升:官方说提升 30%,实际体感确实快了一些,特别是 Skill 的调度速度
  3. 安全修复:修了那个 Gateway 未授权访问的漏洞(CVE-2026-25253),强烈建议升级
  4. 新增 Gemini 2.0 支持:可以用 Gemini 2.0 Flash了

踩坑

1. 配置文件迁移

v2.3 的 config.yaml 格式变了,llm 部分从扁平结构改成了嵌套结构。旧配置能用但会有 warning,建议手动迁移。

2. Skill 不兼容

我写的代码审查 Skill 挂了,因为 context.llm.chat() 的参数变了。花了一个小时改好。

3. 数据库迁移

升级后第一次启动会自动迁移数据库,如果数据量大可能要等几分钟。千万别中途 kill。

总体来说 v2.3 是一个值得升级的版本,但要做好备份和测试。

v2.1升2.3这个跨版本升级确实有风险。建议每个小版本都跟着升,不要跳版本

Skill API改了是最大的痛点。好不容易写的Skill升级后全部报错

先备份data目录这个建议太重要了。我同事升级没备份,配置全丢了

新的Skill注册方式比旧的好用吗?还是单纯增加了学习成本

升级前建议先看Release Notes和Breaking Changes。不要盲目升级

配置文件格式变化是最烦的。每次升级都要对着新文档改配置

Docker升级方式确实简单,但建议用docker-compose.yml固定版本号

有没有人做过版本兼容性矩阵?哪些版本之间可以直接升,哪些需要中间版本过渡

建议官方出一个升级迁移工具。自动检测配置差异并提示修改

@debug_jinist 这条建议太重要了 我之前从2.0直接跳到2.3 Skill全挂了 后来回滚到2.1 一个版本一个版本升才没出问题 跨版本升级就是在赌命

@zenhelab 备份data目录应该做成升级脚本的必选步骤 不是建议而是强制 没备份就不让升 这样才能避免数据丢失的悲剧

升级踩坑是日常操作了

建议先在测试环境升级

日志分级很重要,生产环境千万别开debug

建议接个ELK,方便后期排查问题

乖乖照做就不会出问题

默认deny然后按需开放最安全