16 KiB
OpenClaw 2026.3.28 兼容性与旧版客户端风险说明
更新时间:2026-03-31 13:02 +08:00
一、文档目的
这份文档用于说明以下三个问题:
- ClawPanel 当前是否应该将 OpenClaw
2026.3.28/2026.3.28-zh.2设为推荐稳定版。 - 旧版 ClawPanel 客户端在连接 OpenClaw
2026.3.28时,兼容边界在哪里。 - 后续发布策略应该如何兼顾“新版面板适配 3.28”与“旧客户端不要被错误引导升级”。
这份文档不是 OpenClaw 3.28 的功能手册,而是面向 ClawPanel 维护者的兼容性决策说明。
二、结论摘要
1. 当前结论
OpenClaw 2026.3.28 并不是“完全不兼容”。
就当前仓库代码来看:
- 当前主干代码已经具备基础兼容能力。
- 推荐稳定版策略文件已经可以指向
2026.3.28/2026.3.28-zh.2。 - 真正需要重点关注的是旧版客户端的写入兼容性,而不是只读兼容性。
2. 不应简单得出的错误结论
以下两种判断都不准确:
- “所有版本的 ClawPanel 都已经可以安全推荐 3.28。”
- “旧版客户端完全不能连接 3.28。”
更准确的结论是:
旧版客户端大多可以读取和连接 OpenClaw 3.28,但不一定可以安全地修改其配置。
3. 推荐策略结论
后续发布不建议把 2026.3.28 直接作为所有历史 ClawPanel 版本的推荐稳定版。
更稳妥的策略是:
- 仅对已经验证过的面板版本推荐 3.28。
- 对历史旧版客户端保持旧稳定版映射,或至少不给 3.28 做默认推荐。
- 对旧客户端连接 3.28 的场景,增加明确的风险提示,尤其是配置写入场景。
三、为什么源码改了稳定版,已发布旧桌面客户端可能仍显示旧值
ClawPanel 当前有两套版本策略读取路径:
1. Web / dev-api 模式
Web 模式下,版本策略由 Node 后端在运行时读取:
- 文件:
scripts/dev-api.js - 关键常量:
VERSION_POLICY_PATH - 数据源:仓库根目录
openclaw-version-policy.json
这种模式下,只要修改策略文件并重新启动 Web 后端,新的推荐版就会立即生效。
2. Tauri 桌面端
桌面端不是运行时读 JSON 文件,而是编译时直接把策略文件嵌入到二进制:
- 文件:
src-tauri/src/commands/config.rs - 关键实现:
include_str!("../../../openclaw-version-policy.json")
这意味着:
- 已发布的桌面安装包会继续使用它编译当时内嵌进去的策略。
- 仓库里后续修改
openclaw-version-policy.json,不会自动影响用户手里的旧桌面安装包。 - 如果要让桌面端真正把稳定版从
2026.3.13切到2026.3.28,必须重新构建并重新发布桌面端。
3. 这件事对旧客户端兼容策略的影响
这实际上天然把“旧客户端兼容”分成了两类:
- 已发布旧桌面客户端:不会自动切到新推荐版。
- 未来重新打包的旧版本分支 / Web 旧客户端:会直接吃到当前策略文件。
所以后续讨论“是否推荐 3.28”时,不能只看仓库代码,还要看对应客户端是否已经重新发布。
四、兼容性需要拆成两种:只读兼容 vs 写入兼容
1. 只读兼容
只读兼容指旧版客户端在连接 OpenClaw 3.28 后,是否还能正常:
- 获取版本信息。
- 查看服务状态。
- 打开 Dashboard / About / Services 等页面。
- 执行基础聊天和基础 RPC 请求。
从当前代码和已知链路看,这部分整体风险相对可控。
原因是:
- 旧面板很多页面只是读取
getVersionInfo()、getServicesStatus()、readOpenclawConfig()等接口返回结果。 - OpenClaw 3.28 的新能力即使旧客户端不认识,通常也只是“页面不展示”,并不必然导致崩溃。
- 当前版本比较逻辑已经支持去掉
-zh.x后缀做基础版本判断,因此2026.3.28-zh.2不会天然被错误识别成不同主版本。
2. 写入兼容
写入兼容才是重点。
这里的风险不在于“旧客户端看不懂新字段”,而在于:
旧客户端一旦保存配置,会不会把 OpenClaw 3.28 新增的字段写没、改坏,或者回写成旧结构。
这是后续是否允许旧客户端“安全管理 3.28”最关键的判断标准。
五、旧客户端连接 3.28 时,当前最主要的风险点
5.1 风险一:整份 openclaw.json 回写
这是当前最需要警惕的风险。
Tauri 当前实现相对安全
在当前仓库版本里,Tauri 的 write_openclaw_config() 已经做了保留未知字段的处理:
- 文件:
src-tauri/src/commands/config.rs - 关键函数:
write_openclaw_config() - 合并逻辑:
merge_configs_preserving_fields()
写入流程大致是:
- 先读取现有配置。
- 用新配置覆盖旧配置中的同名字段。
- 保留未被新配置覆盖的已有字段。
- 最后只清理 ClawPanel 自己的 UI 字段。
这意味着:
- 如果 OpenClaw 3.28 新增了旧客户端不认识的合法字段,当前 Tauri 主干代码在整份保存时,有机会把这些字段保留下来。
- 因此当前主干 Tauri 对 3.28 的配置写入兼容性,仍然属于当前仓库里更稳的一侧。
Web dev-api 当前实现已改善,但历史旧客户端仍然有风险
在当前仓库版本里,scripts/dev-api.js 的 write_openclaw_config({ config }) 已不再是“直接写传入对象”,而是:
- 先读取现有
openclaw.json。 - 通过
mergeConfigsPreservingFields(existing, config)合并新旧配置。 - 再执行
stripUiFields(merged)。 - 最后写回磁盘。
这意味着:
- 当前主干 Web dev-api 的整份保存风险,已经明显低于之前的直接覆盖实现。
- 对于“旧客户端不认识、但本次前端没有主动覆盖”的字段,当前 Web 链路通常也能保留下来。
- 但这仍然不是零风险:
- 如果旧客户端在同一路径上用旧结构覆盖新结构,语义仍可能被改坏。
- 数组类字段、整块对象替换、用户手动删字段等场景,仍然可能破坏 3.28 配置。
- 已发布的历史旧 Web / 桌面客户端如果还没有这套 merge 逻辑,风险依旧存在。
风险结论
因此在“旧客户端兼容 3.28”这个问题上:
- Tauri 主干版本的整份配置写入风险较低,但不是零风险。
- 当前主干 Web dev-api 也已经具备 merge 保留未知字段能力,但整体风险仍略高于只读场景。
- 任何历史旧版客户端,如果尚未具备 merge 保留未知字段能力,都不应默认推荐用户去管理 3.28 配置。
5.2 风险二:配置编辑器属于高风险入口
文件:src/pages/services.js
当前配置编辑器的流程是:
api.readOpenclawConfig()读取完整配置。- 用户在文本框中编辑 JSON。
api.writeOpenclawConfig(config)保存。
这个入口的问题在于:
- 用户会把它当作“完整配置编辑器”。
- 但旧客户端不一定理解 OpenClaw 3.28 的所有新字段语义。
- 一旦旧客户端底层写入链路不保留未知字段,保存行为就可能破坏 3.28 配置。
因此对于旧客户端来说,这个页面属于:
- 高风险写入口。
如果后续要做旧客户端兼容保护,这里应该是首批增加警告或限制的页面。
5.3 风险三:Agent 高级配置字段不一定完全跟上 3.28
OpenClaw 3.28 在 Agent 侧的能力明显增强,例如:
- 推理模式细分。
- Fallback 模型链。
- Heartbeat 轻量会话配置。
- 更完整的 tools / sessions / subagents / runtime / params 配置。
当前主干代码里,ClawPanel 已经不是“完全没有 Agent 高级能力”,但也还没有完整承接 OpenClaw 3.28 的所有新能力。
当前已经有基础支持的部分
从当前代码看,以下能力已经有了基础承接:
- Agent 详情页。
- Bootstrap 文件读写。
model.primary + fallbacks。thinkingDefault。skills。tools。
相关文件包括:
src/pages/agent-detail.jssrc-tauri/src/commands/agent.rsscripts/dev-api.js
当前仍未完整对齐的部分
以下字段和能力,目前仍然更像“部分支持”或“未完整产品化”:
reasoningDefaultfastModeDefaultheartbeatsubagentssandboxparamsruntime- 更完整的会话生命周期配置
- 工具目录、生效工具、工具审批等高级工具系统
这意味着:
- 新版主干客户端连接 3.28 时,基础 Agent 管理大体可用。
- 历史旧客户端连接 3.28 时,只要涉及高级 Agent 配置写入,就存在结构丢失或无法表达的风险。
5.4 风险四:旧客户端可能“能看、能连、能聊”,但不代表“能安全写”
这是维护决策里最容易被忽略的一点。
很多时候用户看到旧客户端还能:
- 显示版本号。
- 启动 Gateway。
- 正常聊天。
就会误以为“完全兼容”。
实际上这只能说明:
- 基础运行兼容。
它不能说明:
- 配置写入兼容。
- 高级能力兼容。
- 长期运维兼容。
因此在版本发布策略上,不能把“能连上 3.28”直接等同于“可以安全把 3.28 设成旧客户端的推荐稳定版”。
六、当前主干代码对 3.28 的真实支持情况
6.1 已经具备基础兼容能力的部分
当前主干分支已经有以下基础承接能力:
-
版本策略统一文件
openclaw-version-policy.json
-
前后端统一版本信息读取
- Web:
scripts/dev-api.js - Tauri:
src-tauri/src/commands/config.rs
- Web:
-
Agent 文件管理
list_agent_filesread_agent_filewrite_agent_file
-
Agent 高级基础配置
- primary model
- fallbacks
- thinkingDefault
- tools
- skills
-
基础会话能力
sessions.listsessions.deletesessions.reset
因此,“ClawPanel 完全不支持 3.28”并不成立。
6.2 当前仍需补齐的部分
要说“ClawPanel 已完整支持 3.28 新能力”,当前也还做不到。
主要缺口包括:
- Tauri / Web 对 Agent 高级字段的承接还不完全对齐。
- 会话系统仍然只覆盖部分方法。
- 工具系统仍然缺少目录与生效状态视图。
- Heartbeat / lightContext / isolatedSession 等高级能力还没有完整面板入口。
- 旧客户端缺少针对 3.28 的显式风险提示和保护策略。
七、为什么不建议把 3.28 直接推荐给所有历史客户端
如果把 openclaw-version-policy.json 中所有历史 panels.* 全部统一改成 2026.3.28 / 2026.3.28-zh.2,会有三个风险:
1. 风险一:未来重打旧版本分支时会误导用户
策略文件本身支持按面板版本映射推荐版。
如果后续把所有历史 panel 版本都指向 3.28,那么:
- 历史旧版本一旦重新构建。
- 或 Web 模式旧代码直接读取最新策略文件。
- 用户就会被引导去安装 3.28。
但这些旧客户端并未必具备安全管理 3.28 配置的能力。
2. 风险二:旧客户端缺少写入保护
对于旧客户端来说,真正危险的是:
- 打开配置编辑器。
- 修改 Agent 高级配置。
- 写入 openclaw.json。
如果它们没有“保留未知字段”的能力,就可能把 3.28 的新字段覆盖掉。
3. 风险三:推荐版意味着维护者背书
一旦某版本被标成“推荐稳定版”,用户会自然理解为:
- 当前面板版本已经验证过。
- 可以放心安装。
- 后续出现配置或行为问题,默认认为是面板 bug。
如果实际上只是“能读能连,但不保证安全写”,就不适合把它作为所有历史客户端的推荐稳定版。
八、建议采用的版本推荐策略
8.1 分层推荐,而不是一刀切推荐
推荐策略应分为三层:
A. 已验证的新面板版本
这类版本已经完成对 3.28 的验证,可以推荐:
- official:
2026.3.28 - chinese:
2026.3.28-zh.2
B. 历史旧面板版本
这类版本不建议默认推荐 3.28。
可以继续保持旧稳定版,例如:
- official: 继续使用旧验证版
- chinese: 继续使用旧验证版
C. 未知来源 / 手动升级用户
允许用户自己切换到 3.28,但必须承担自测兼容性的责任。
适合继续保留以下原则:
- 关于页允许手动切换版本。
- 服务页只默认推荐“已验证稳定版”。
- 高于推荐版时显示风险提示。
8.2 对旧客户端,应至少明确支持两档兼容声明
后续在说明和 UI 提示中,建议把兼容性拆成两档:
只读兼容
表示:
- 可以连接 3.28。
- 可以查看状态。
- 可以做基础聊天。
- 不代表所有配置编辑都安全。
完整管理兼容
表示:
- 已验证当前客户端对 3.28 的配置读写安全。
- 已验证关键高级字段不会被误删。
- 可以作为推荐稳定版公开引导用户升级。
九、如果后续要做旧客户端保护,优先级建议
P0:先调整推荐策略
最先应该做的不是补全所有 3.28 UI,而是先控制策略风险:
- 不再给所有历史面板版本一刀切推荐 3.28。
- 只对当前验证通过的面板版本设置 3.28 推荐。
- 历史版本保留旧推荐版映射。
P1:补旧客户端风险提示
优先在这些高风险入口增加提示:
- 关于页版本管理。
- 服务页配置编辑器。
- Agent 高级配置页面。
提示目标不是阻止用户使用 3.28,而是明确说明:
- 当前客户端可能仅保证只读兼容或基础运行兼容。
- 高级配置写入需谨慎。
P2:补 Web 写入链路的未知字段保留能力
当前 scripts/dev-api.js 的 write_openclaw_config() 风险高于 Tauri。
如果要提高 3.28 在 Web 模式下的兼容性,建议优先把这条链路改成和 Tauri 一样的“先读现有配置、再 merge 保留未知字段”的模式。
P3:逐步补齐 3.28 高级能力
后续再考虑:
- reasoning / fast mode
- heartbeat 高级配置
- sessions 全量方法
- tools.catalog / tools.effective
- requireApproval / 审批策略
- subagents / sandbox / runtime / params
十、维护建议
后续在维护 OpenClaw 推荐版时,建议遵循以下原则:
- 推荐稳定版不等于上游最新版。
- 是否推荐,取决于当前面板版本是否已经验证过读写兼容。
- 旧客户端兼容性优先看写入风险,而不是页面能不能打开。
- Tauri 已发布旧包与仓库当前代码要分开判断。
- Web 模式与桌面模式的写入安全性不能混为一谈。
十一、最终结论
最终建议如下:
- 可以让当前主干 ClawPanel 以 OpenClaw
2026.3.28/2026.3.28-zh.2为推荐稳定版。 - 不要把 3.28 直接作为所有历史 ClawPanel 版本的推荐稳定版。
- 对旧客户端,应将兼容性定义为“基础运行兼容优先、配置写入兼容待验证”。
- 后续若要正式公开推广 3.28,应优先补策略分层和写入保护。
换句话说:
3.28 可以成为新面板的推荐稳定版,但不应成为所有旧客户端的默认推荐版。
十二、建议后续动作清单
建议按以下顺序推进:
- 重新审视
openclaw-version-policy.json的历史版本映射。 - 为当前已验证的面板版本单独设置 3.28 推荐。
- 保留历史旧面板版本的旧推荐版映射。
- 在旧客户端的高风险写入口增加 3.28 风险提示。
- 优先修复 Web
write_openclaw_config()的未知字段丢失风险。 - 再逐步补齐 3.28 的高级 Agent / Session / Tools 能力。