1.6 KiB
1.6 KiB
引擎数据库 schema 19→21 自动迁移(新装机/升级机不再卡 AgentDatabaseAdmissionError,加 API 密钥畅通):
【1. ai助手\修复引擎数据库.cmd(新增,GBK+raw string 规则)】
- 进入 openclaw 包目录,runtime\node.exe openclaw.mjs doctor --fix,输出全部追加 引擎控制台.log,结束写"修复完成"标记。
【2. OpenClawHost.cs 三新成员 + 启动引擎自动修复链】
- 引擎数据库版本():System.Data.SQLite 只读打开 ~/.openclaw/agents/main/agent/openclaw-agent.sqlite,SELECT schema_version FROM schema_meta WHERE meta_key='primary';无库返回 -1(全新机器)。
- 清引擎死租约():打开 ~/.openclaw/state/openclaw.sqlite,DELETE FROM agent_database_leases(doctor 被 PID 复用幻影租约卡死的根治,全参数化/无拼接)。
- 启动引擎() 在 EnsureConfigured 后插入:库版本∈[1,20] 时 → 记日志 → 确保引擎已停(跑 停止引擎静默.cmd+等3秒)→ 清死租约 → ShellExecuteW 静默跑 修复引擎数据库.cmd → 每2秒轮询库版本直到≥21(最长90秒)→ 继续原启动流程;失败也放行并落日志。
【3. 验证】
- 先备份本机 agent 库 → 把 schema_meta 人为改成 19 → 重启软件走自动修复链(应见:停引擎→清租约→doctor→版本回 21→引擎起来 healthz live)→ 异常则恢复备份。
- 脚本副本同步装机目录;make_package 自动带新脚本(ai助手 目录整体拷贝)。
【4. 更新包 v3】
- 更新包_20260922 追加 ai助手\修复引擎数据库.cmd(与 exe、models-config.json 三件套),新电脑覆盖后重启即自动迁移。