升级之前
阅读版本发布说明,检查是否有新的环境变量、Compose profile、迁移或存储操作。对于较重要的版本,请安排一段空闲时段,避免智能体在切换期间领取或写入工作。
- 导出一份 PostgreSQL 备份。
- 为 artifact 存储卷做快照或复制一份。
- 安全地保存当前的
.env和 Compose 配置。 - 记下当前部署的镜像标签。
- 确认备份可以正常读取。
使用更新脚本
通过一行命令安装的实例都自带更新脚本。在安装目录中运行它(默认为 ~/emperorclaw)。它会拉取新的预构建镜像并重建服务。
bash scripts/update.sh --docker
# Windows PowerShell
.\scripts\update.ps1 -Docker
如果要手动操作,拉取镜像并重建服务即可。整个过程不涉及 Git 检出或本地构建:
docker compose pull
docker compose up -d
源码安装(用 Node.js 构建的 Git 检出)使用不带 --docker 的 ./scripts/update.sh。
数据库迁移
应用会在启动时执行已注册的迁移。EmperorClaw 的版本迁移都设计为增量式的:只会新增表、列或索引,不会删除已有的业务数据。在生产环境中,请不要用 drizzle-kit push 取代这一流程。
观察启动日志,直到迁移完成。如果某个迁移失败,请先停下来排查,不要反复重启所有服务。
验证清单
- 确认每个容器都健康且运行稳定。
- 打开仪表盘,检查显示的版本号。
- 打开一个已有的客户、项目、任务和 Company Brain 笔记。
- 下载一个已有的 artifact,并验证其内容。
- 给某个智能体发一条测试消息,确认它的回复出现在正确的线程中。
- 检查各项集成和更新横幅。
回滚
如果新版本无法安全运行,请停止服务,恢复与之匹配的数据库和存储备份,恢复之前的 Compose 配置,然后启动之前的镜像标签。只回滚镜像、却保留已迁移的状态,并不是完整的恢复方案。
每个版本都会发布为独立的镜像标签。在 docker-compose.yml 中固定上一个版本(app 服务默认使用 :latest),然后拉取并重建:
# docker-compose.yml, service "app":
# image: ghcr.io/emperorclaw/emperorclaw:v0.8.103
docker compose pull app
docker compose up -d app
准备再次升级时,把这一行改回 :latest 即可。
0.8.0 版本的特别说明
0.8.0 版本新增了存储镜像的数据库结构和真实的文件系统目录布局。在常规迁移完成后,先预览存储对齐,然后在启用 Google Drive 之前执行它:
docker compose exec app npm run storage:reconcile
docker compose exec app npm run storage:reconcile -- --apply
该命令是幂等的,并会保留已有的 artifact ID。Google Drive 仍然是可选的;未启用其 Compose profile 的安装会继续使用常规的存储路径。