mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-29 04:10:00 +08:00
fix(openclaw): update recommended kernel target and delta protocol handling
面板原本只声明 maxProtocol=3 的握手范围,且 chat delta 处理只接受前缀扩展。 连接到 2026.5.12+ 内核时会出现握手兼容问题;agent 输出在内容回滚或重排场景也会 丢失最新文本,前端 streaming 气泡停留在旧前缀。 ## Connect 握手协议范围 - 将桌面端 connect frame 的 maxProtocol 从 3 扩展到 4 - 将 Web 模式 connect frame 的 maxProtocol 从 3 扩展到 4 - minProtocol 继续保留 3,用于兼容历史内核 - 范围 [3, 4] 同时覆盖旧内核和 5.12+ 内核,不需要按版本分支 ## Chat delta replace 语义 - 当 payload.replace=true 时,无条件覆盖当前 AI 文本缓存 - 保留前缀扩展场景的增量更新逻辑 - 修复内容回滚或重排时文本长度变短导致 UI 不刷新的问题 ## 推荐内核版本 - official 推荐目标升到 2026.5.12 - chinese 推荐目标升到 2026.5.12-zh.1 - KERNEL_FLOOR 不变,继续兼容历史安装 ## 验证 - cargo check:PASS - npm run build:PASS
This commit is contained in:
@@ -9,10 +9,10 @@
|
||||
},
|
||||
"default": {
|
||||
"official": {
|
||||
"recommended": "2026.5.7"
|
||||
"recommended": "2026.5.12"
|
||||
},
|
||||
"chinese": {
|
||||
"recommended": "2026.5.7-zh.1"
|
||||
"recommended": "2026.5.12-zh.1"
|
||||
}
|
||||
},
|
||||
"panels": {
|
||||
|
||||
@@ -6288,7 +6288,8 @@ const handlers = {
|
||||
id: `connect-${idHex}-${rndHex}`,
|
||||
method: 'connect',
|
||||
params: {
|
||||
minProtocol: 3, maxProtocol: 3,
|
||||
// 协议握手范围声明:下限 3 用于继续兼容历史内核,上限 4 启用新版增量 delta 协议。
|
||||
minProtocol: 3, maxProtocol: 4,
|
||||
client: { id: 'openclaw-control-ui', version: '1.0.0', platform, deviceFamily: 'desktop', mode: 'ui' },
|
||||
role: 'operator', scopes: SCOPES, caps: [],
|
||||
auth: { token: gatewayToken || '' },
|
||||
|
||||
@@ -138,8 +138,9 @@ pub fn create_connect_frame(
|
||||
"id": format!("connect-{:08x}-{:04x}", signed_at as u32, rand::random::<u16>()),
|
||||
"method": "connect",
|
||||
"params": {
|
||||
// 协议握手范围声明:下限 3 用于继续兼容历史内核,上限 4 启用新版增量 delta 协议。
|
||||
"minProtocol": 3,
|
||||
"maxProtocol": 3,
|
||||
"maxProtocol": 4,
|
||||
"client": {
|
||||
"id": "openclaw-control-ui",
|
||||
"version": env!("CARGO_PKG_VERSION"),
|
||||
|
||||
@@ -189,8 +189,10 @@ export const KERNEL_FLOOR = {
|
||||
*/
|
||||
export const KERNEL_TARGET = {
|
||||
openclaw: {
|
||||
official: '2026.5.6',
|
||||
chinese: '2026.5.6-zh.2',
|
||||
// 内核协议在 5.12 升级到 v4(MIN_CLIENT_PROTOCOL_VERSION=4,新增增量 chat delta payloads),
|
||||
// 面板通过 connect frame `[minProtocol=3, maxProtocol=4]` 同时兼容新旧内核
|
||||
official: '2026.5.12',
|
||||
chinese: '2026.5.12-zh.1',
|
||||
},
|
||||
hermes: {
|
||||
default: '0.13.x',
|
||||
|
||||
@@ -1862,7 +1862,10 @@ function handleChatEvent(payload) {
|
||||
if (c?.audios?.length) _currentAiAudios = c.audios
|
||||
if (c?.files?.length) _currentAiFiles = c.files
|
||||
if (c?.tools?.length) _currentAiTools = c.tools
|
||||
if (c?.text && c.text.length > _currentAiText.length) {
|
||||
// 增量 delta 协议下,当输出文本不是前缀扩展时(例如内容回滚或重排),
|
||||
// 对端会带 replace=true,此时新文本可能比当前缓存短,必须无条件覆盖,否则会丢失最新内容。
|
||||
const isReplace = payload.replace === true
|
||||
if (c?.text && (isReplace || c.text.length > _currentAiText.length)) {
|
||||
showTyping(false)
|
||||
if (!_currentAiBubble) {
|
||||
_currentAiBubble = createStreamBubble()
|
||||
|
||||
Reference in New Issue
Block a user