
OpenClaw 24h 更新快报(2026-11-08):插件准备开销、Control UI 加载、Knowledge 浏览
本次窗口内,OpenClaw 的更新几乎都围绕同一条主线展开:收回重复付出的开销。Agent 运行侧,插件自动启用的准备结果开始在同一个运行时世代内复用,恢复的 Anthropic 会话历史也不再在每次工具回合被重新编码。控制台侧,Systems、Devices 这类清单页不再被无关遥测或配置读取拖住,隐藏标签页也停止逐条渲染流式回复。
另一条线索是边界行为的收敛:会话归档后的 Undo 变成纯前端操作,不再向 Gateway 发第二次请求;更新被信号中断时明确报告 interrupted,而不是笼统的 unexpected-error。对使用受邀可见性、cron on-exit 自动化或 llama.cpp 本地推理的用户,这些改动比单纯的性能数字更影响日常操作。
Agent 运行:插件准备与会话历史不再重复计费
- PR #194816:配置了降级模型时,Agent 运行仍会反复执行插件自动启用准备,即使主模型成功也是如此。现在准备结果按未变的运行时世代复用,配置 reload 依然立即生效,包括发布器复用同一个可变配置对象的情况。改动 11 个文件、净增约 500 行,属于运行时路径上的实质性行为变更。
- PR #194806:恢复的 Anthropic 会话在工具循环中会反复编码庞大的历史工具结果,原因是最终历史准备封存了 assistant 消息,却让恢复出来的 user 与 tool-result 消息保持可变。修复后未变更的历史片段可直接复用且不改变 prompt-cache 字节数,在一个约 200 条消息的合成会话中,warm 主线程 CPU 下降 44%,采样 JS 分配下降 85%;代价是一次性冷启动中位数增加 1.33 毫秒,仍低于每次 warm 请求节省的 3.52 毫秒。
- PR #194790:失败的文件编辑会为诊断候选计算完整的字符串距离,而那些候选最终根本不会被展示;大目录下缺失文件的读取还会保留并排序所有符合条件的文件名。现在每一层只保留既有机制下的最佳三个候选,并把后续距离计算限制在当前第三名的分数与距离以内,返回的候选、顺序、分数与提示文本完全不变。
控制台:清单页不再被无关请求拖住
- PR #194807:打开 Systems 会同时等待规范清单与互不相关的遥测数据,一个缓慢或永久挂起的 node.list、未缓存的 system.info 都会把已知设备藏起来;某个卡住的遥测源还会压制其他健康源。现在 environments.list 独立渲染,每个遥测源各自持有 pending 请求,任何一个都能自行完成并继续轮询;成员关系、可用性与初始选择仍来自规范清单,遥测只负责刷新状态。
- PR #194795:慢速 config.get 会让 Devices 一直停在路由加载页,尽管设备清单与审批数据已经到达。配置服务于绑定控件而非清单本身,因此 loader 先返回权威清单,再在当前路由数据被采用后刷新既有的配置 owner,绑定加载状态、错误、草稿归属与连接检查仍留在原属主手里。
- PR #194745:首屏访问会额外发起一些共享控件请求,占用 HTTP 连接槽,使页面自身的 CSS 或 JavaScript 再延迟一个响应周期。改动移除了独立的 Switch 请求,并让 Dashboard 与 Custodian 可以用键盘 radio 导航而无需加载 Radio 样式表;在模拟 100 毫秒 RTT 的 20 组配对对比中,受影响引擎与路由单元的完整内容中位数改善了 10.5% 至 22.2%。
- PR #194752:浏览器标签页处于隐藏状态时,只要回复还在流式输出,实时记录就会持续被渲染。现在隐藏期间该数据源随已有的 document-visibility 与 parked 机制一起停下,返回标签页时显示最新状态;事件摄取、持久化、未读归属、在线状态与通知准入均未改变。
- PR #194694:归档会话后点击 Undo 需要等待第二次 unarchive 请求与名册刷新才能恢复那一行,看起来明显延迟。改动后归档立即隐藏会话行,Undo 可以瞬时本地恢复,在 Undo 通知关闭或离开页面前不向 Gateway 发送任何内容;真正的归档请求只在这之后发出,因此会话的活跃工作可以继续运行。
Knowledge 插件与 Gateway 会话开销
- PR #194792:打开 Knowledge 的 Recent 或 Browse 会等待所有运行中 store 的记录数,而这些视图根本不显示这些计数;一个无关但有数据的 store 就能让整页停在加载骨架。现在 Browse 在加载选定 agent 的视图前不再扫描无关 store,Settings 仍保留实时计数,配置、权限、存储格式与视觉设计均未变动。
- PR #194796:冷启动的 Knowledge 目录扫描会在写入观察行之后立即再做一次历史查找,而新行本身已经确立了非 agent 来源。改动只在观察者刚插入 observed 或 external-edit 行时跳过这次冗余查找,未变更记录仍按原有方式处理写入者与转换关系。
- PR #194791:会话列表与会话事件行发布会急切读取邀请成员关系,而调用方的可见性能力往往并不使用它。现在只有 invited 能力会消费成员信息,其他能力的列表、关联行与事件调用方都不再准备这项无用输入,可见行、共享角色、草稿处理与邀请撤销行为不变。
配置、更新与本地推理的边界语义
- PR #194648:升级已发布的 2026.11.1 Workboard PostgreSQL 安装时,系统会为已有数据的 SQLite 共享状态选中 PostgreSQL,导致配置读取与 Doctor 失败。修复后 Workboard-only 设置保持原有含义,共享状态与其他 family 仍留在 SQLite;保存配置会通过正常备份流程记录明确的引擎意图,范围化的 Workboard 端口在迁移数据前保留该意图,用户不需要手工改配置。
- PR #194659:被信号中断的更新会报成 requester-revoked 或 unexpected-error,而一次根本没有触碰数据库的回滚却会宣称数据处于风险中。现在被信号停止的更新明确报告 interrupted,包括 Gateway 健康且未被触碰时的激活前阶段;未改动任何数据库的回滚会说明当前数据库未被改动,同时仍保持 Gateway 停止状态并把 Doctor 作为下一步。
- PR #194653:没有安装 PyYAML 时,随包发布的 skill-creator 校验器会拒绝 name: comment-skill # identifier 这类合法 frontmatter,还会把 description: # notes 误判为非空描述。修复后回退解析器会在既有的引号与块头处理之前剥离标量注释,同时尊重前导引号标量与空白分隔;字面 # 与块内容仍按原规则校验。
- PR #194687:在 macOS 上,多个托管 llama.cpp 会话共享孤立的服务器恢复流程时,停止其中一个会话会让其他正在等待的会话一起失败。现在只有发起方的精确取消会中止它,其余会话继续准备托管服务器;清理仍在取消返回前完成,真正的进程清理失败仍会终止所有已加入的请求。
- PR #194704:重新武装的 on-exit 自动化会在上一份执行回执仍活跃时丢掉自己的下一次退出。现在替代性退出会等待前一份持久执行回执结算,调用方取消与队列关闭仍保留原有语义,不会为了一个忽略中止的载荷而无限等待。
- PR #194718:Control UI 更新会让未变化的公共字体、主题与图标失效,因为它们的 URL 同时包含发布标识与内容摘要。现在公共 URL 改用已有的聚合内容摘要,更新后未变化的公共资源可以直接复用缓存;完整构建标识仍然控制文档与 Gateway 的准入,首次部署会改变一次 URL 格式,之后的更新才持续受益。
这次的基调是收回重复付出的代价:插件激活、会话历史、控制台首屏与 Knowledge 浏览都停止重复计算,而归档撤销、更新中断与共享状态升级则把含糊的边界行为改成了可预期的语义。


评论