Matrix 迁移
从之前的公开 matrix 插件升级到当前实现。
对大多数用户而言,升级是原地进行的:
- 插件仍为
@openclaw/matrix - 通道仍为
matrix - 你的配置仍位于
channels.matrix下 - 缓存凭据会迁移到共享的
state/openclaw.sqlite插件状态中 - 运行时状态仍位于
~/.openclaw/matrix/下
你无需重命名配置键,也无需以新名称重新安装插件。
根 openclaw 包不再捆绑 Matrix 运行时代码或 Matrix SDK 依赖。如果 openclaw channels status 显示 Matrix 已配置但插件未安装,请运行 openclaw doctor --fix 或
openclaw plugins install @openclaw/matrix;不要将 Matrix SDK 包安装到根 OpenClaw 包中。
迁移自动执行的操作¶
当你运行 openclaw doctor --fix 时,Matrix 迁移会执行。专用 Matrix 存储旁边的基于文件的 sidecar 仍保留客户端启动回退机制,但凭据文件导入仅由 Doctor 执行;运行时仅读取规范的 SQLite 凭据状态。
Doctor 迁移涵盖:
- 在归档之前,导入并验证已弃用的
~/.openclaw/credentials/matrix/credentials*.json文件 - 保持相同的账户选择和
channels.matrix配置 - 将基于文件的 sidecar 状态(
bot-storage.json同步缓存、recovery-key.json、legacy-crypto-migration.json、IndexedDB 快照)导入 Matrix SQLite 状态;已迁移的文件会以.migrated后缀归档 - 当 access token 稍后发生变化时,为相同的 Matrix 账户、homeserver、用户和设备复用最完整的现有 token-hash 存储根
从 2026.4 之前的 OpenClaw 版本升级¶
截至 2026.6 系列的版本还会迁移原始的扁平单存储 Matrix 布局(~/.openclaw/matrix/bot-storage.json 加上
~/.openclaw/matrix/crypto/),并准备从旧的 rust 加密存储恢复加密状态。当前版本不再包含该迁移。
如果你正在升级仍使用扁平布局的安装,请先升级到 2026.6 版本,运行 openclaw doctor --fix,并启动一次 gateway,以便扁平存储和任何可恢复的房间密钥被迁移。然后更新到最新版本。
之前的公开 Matrix 插件没有自动创建 Matrix 房间密钥备份。如果你的旧安装只有本地加密历史且从未备份,那么无论迁移路径如何,一些较早的加密消息在升级后可能仍无法读取。
推荐升级流程¶
- 正常更新 OpenClaw 和 Matrix 插件。
- 运行:
- 启动或重启 gateway。
- 检查当前验证和备份状态:
-
将你要修复的 Matrix 账户的恢复密钥放入账户专属环境变量。对于单个默认账户,使用
MATRIX_RECOVERY_KEY即可。对于多个账户,每个账户使用一个变量,例如MATRIX_RECOVERY_KEY_ASSISTANT,并在命令中添加--account assistant。 -
如果 OpenClaw 提示需要恢复密钥,请为匹配的账户运行命令:
printf '%s\n' "$MATRIX_RECOVERY_KEY" | openclaw matrix verify backup restore --recovery-key-stdin
printf '%s\n' "$MATRIX_RECOVERY_KEY_ASSISTANT" | openclaw matrix verify backup restore --recovery-key-stdin --account assistant
- 如果此设备仍未验证,请为匹配的账户运行命令:
printf '%s\n' "$MATRIX_RECOVERY_KEY" | openclaw matrix verify device --recovery-key-stdin
printf '%s\n' "$MATRIX_RECOVERY_KEY_ASSISTANT" | openclaw matrix verify device --recovery-key-stdin --account assistant
如果恢复密钥被接受且备份可用,但 Cross-signing verified
仍为 no,请从另一个 Matrix 客户端完成自验证:
在另一个 Matrix 客户端中接受请求,比较表情符号或十进制数,
并且仅在它们匹配时输入 yes。该命令会等待完整的 Matrix
身份信任建立后才报告成功。
- 如果你有意放弃无法恢复的旧历史,并希望为未来消息建立新的备份基线,请运行:
仅当旧恢复密钥应停止解锁新备份时,才添加 --rotate-recovery-key。
- 如果尚不存在服务器端密钥备份,请创建一个用于未来恢复:
常见消息及其含义¶
Failed migrating legacy Matrix client storage: ...
- 含义:在将基于文件的 sidecar 状态导入 SQLite 时,Matrix 客户端回退失败。启动会停止。已完成的 SQLite 导入和已归档的 sidecar 保持原样;尚未归档的文件仍可用于重试。
- 处理方法:检查文件系统权限或冲突,保持 SQLite 状态以及源文件或
.migrated文件完整,并在修复错误后重试。
Matrix is installed from a custom path: ...
- 含义:Matrix 被固定为路径安装,因此主线更新不会自动将其替换为默认 Matrix 包。
- 处理方法:当你想返回默认 Matrix 插件时,使用
openclaw plugins install @openclaw/matrix重新安装。
Matrix is installed from a custom path that no longer exists: ...
- 含义:你的插件安装记录指向一个已不存在的本地路径。
- 处理方法:使用
openclaw plugins install @openclaw/matrix重新安装,或者如果你是从仓库检出运行,则使用openclaw plugins install ./path/to/local/matrix-plugin。openclaw doctor --fix也可以为你移除过时的 Matrix 插件引用。
手动恢复消息¶
openclaw matrix verify status 和 openclaw matrix verify backup status 会在此设备的房间密钥备份不健康时,打印一行 Backup issue: 以及 Next steps: 指导:
| 备份问题 | 含义 | 解决方法 |
|---|---|---|
no room-key backup exists on the homeserver |
没有可恢复的内容 | 运行 openclaw matrix verify bootstrap 以创建房间密钥备份 |
backup decryption key is not loaded on this device |
密钥存在但在此设备上未激活 | openclaw matrix verify backup restore;如果仍无法加载密钥,通过 --recovery-key-stdin 传入恢复密钥 |
backup decryption key could not be loaded from secret storage (...) |
秘密存储加载失败或不受支持 | 传入恢复密钥:printf '%s\n' "$MATRIX_RECOVERY_KEY" \| openclaw matrix verify backup restore --recovery-key-stdin |
backup key mismatch (...) |
存储的密钥与活动服务器备份不匹配 | 使用活动服务器备份密钥重新运行 verify backup restore --recovery-key-stdin,或运行 verify backup reset --yes 以建立新基线 |
backup signature chain is not trusted by this device |
设备尚不信任交叉签名链 | 运行 verify device --recovery-key-stdin,然后如果信任仍不完整,从另一个已验证客户端运行 verify self |
backup exists but is not active on this device |
服务器备份存在,但本地会话未激活 | 先验证设备,然后使用 openclaw matrix verify backup status 重新检查 |
backup trust state could not be fully determined |
诊断结果不明确 | openclaw matrix verify status --verbose |
其他恢复错误:
Matrix recovery key is required
- 含义:在需要恢复密钥时,未提供恢复密钥就尝试了恢复步骤。
- 处理方法:使用
--recovery-key-stdin重新运行命令,例如printf '%s\n' "$MATRIX_RECOVERY_KEY" | openclaw matrix verify device --recovery-key-stdin。
Invalid Matrix recovery key: ...
- 含义:提供的密钥无法解析或不符合预期格式。
- 处理方法:使用 Matrix 客户端或恢复密钥导出中的准确恢复密钥重试。
Matrix recovery key was applied, but this device still lacks full Matrix identity trust.
- 含义:恢复密钥解锁了可用的备份材料,但 Matrix 尚未为此设备建立完整的交叉签名身份信任。检查命令输出中的
Recovery key accepted、Backup usable、Cross-signing verified和Device verified by owner。 - 处理方法:运行
openclaw matrix verify self,在另一个 Matrix 客户端中接受请求,比较 SAS,并且仅在匹配时输入yes。仅当您有意替换当前交叉签名身份时,才使用printf '%s\n' "$MATRIX_RECOVERY_KEY" | openclaw matrix verify bootstrap --recovery-key-stdin --force-reset-cross-signing。
如果您接受丢失无法恢复的旧加密历史,您也可以改为使用 openclaw matrix verify backup reset --yes 重置当前备份基线。当存储的备份秘密损坏时,该重置还会修复秘密存储,使新的备份密钥在重启后能够正确加载。
如果加密历史仍然无法恢复¶
按顺序运行这些检查:
openclaw matrix verify status --verbose
openclaw matrix verify backup status --verbose
printf '%s\n' "$MATRIX_RECOVERY_KEY" | openclaw matrix verify backup restore --recovery-key-stdin --verbose
如果备份成功恢复,但某些旧房间仍然缺少历史,那么这些缺失的密钥可能从未被之前的插件备份。
如果您想为未来消息重新开始¶
如果您接受丢失无法恢复的旧加密历史,并且只想为今后建立一个干净的备份基线,请按顺序运行以下命令:
openclaw matrix verify backup reset --yes
openclaw matrix verify backup status --verbose
openclaw matrix verify status
如果之后设备仍未验证,请从您的 Matrix 客户端完成验证:比较 SAS 表情符号或十进制代码,并确认它们匹配。
相关¶
- Matrix:频道设置与配置。
- Matrix 推送规则:通知路由。
- Doctor:健康检查与自动迁移触发。
- 迁移指南:所有迁移路径(机器迁移、跨系统导入)。
- 插件:插件安装与注册。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw