
OpenClaw 24h 更新快报(2026-09-20):Session History、Subagent 调度、Web UI
过去 24 小时,openclaw/openclaw 仓库共合并 30 个 Pull Request,涵盖 Gateway 运行时性能、Web UI 交互细节、发布链路稳定性以及子 Agent 调度逻辑等多个层面。本期最值得关注的更新是会话历史加载的整体重构,大幅削减了重复查询和主线程开销;同时子 Agent 回复传递的边界条件也得到修复,避免历史遗留任务意外阻塞当前结果送达。
会话历史:减少重复加载开销
本次最大改动来自 Peter Steinberger 的会话历史重构(PR #153161),该 PR 属 P2 优先级,代码变更规模达 +267/-454 行,最终净删除 108 行生产代码和 79 行测试代码。原有逻辑在每次读取历史消息时都会重建重复查询、解析已保存的 Prompt 存在性检查,并对可能永远不会被访问的存档执行解压操作。新方案复用了现有的消息查询 owner 和编译后读取器,改用索引集查找替代映射操作,同时让存档读取器只服务于实际保留的重置存档。
实测数据显示:512 KiB 已保存 Prompt 的存在性检查从解析 524,845 字节降至 120 字节;两个存档候选时解压操作从 2 次降至 1 次,压缩字节数从 105,565 降至 52,783。最新消息查询 p50 从 0.0506 ms 降至 0.0393 ms,降幅约 22%。
子 Agent 调度:修复历史任务阻塞当前回复传递
另一个 P2 级别的重要修复解决了子 Agent 回复传递中的边界条件问题(PR #153157)。当一个父任务等待已完成的子 Agent 时,如果该会话下存在来自更早任务的历史遗留失败子任务,当前结果会被意外阻塞无法送达。修复将终端结算阻挡者的范围限定在当前批次中最早创建的子节点执行重叠区域,同时保留历史失败记录和现有的重试、取消、会话身份等检查逻辑。
该 PR 附带了完整的生命周期证明测试,用隔离的 SQLite 状态调用生产级 spawn、yield、run registry、completion capture 和 requester-wake 逻辑,验证了仅传递当前结果、无历史结果泄露、所有当前子节点清理均已送达等不变量。
Web UI:多项交互体验优化
Web UI 层面集中出现多个小型但有明确用户价值的修复。
会话消息广播的主线程序列化开销得到削减(PR #122):原有实现在广播前对原始载荷做了一次不必要的编码,而每个接收者最终都会用各自投影后的载荷重新序列化。优化后对普通无 Proxy 投影信封跳过该编码步骤,在 1 接收者/7,168 字节场景下主线程 CPU 降低约 44%,8 接收者场景降低约 12%。
聊天历史加载时的布局计算被进一步精简(PR #137):之前每次重新渲染都会为长消息预览重新安装 Observer,并将 DOM 写入与布局读取交错执行。新方案在应用限制前批量读取所有预览几何数据,实测 900 条消息场景下披露测量 CPU 降低约 55%(53.34 → 24.17 ms),首次绘制平均时间降低约 10%(408.6 → 365.8 ms)。
侧边栏现可正确显示活跃的子 Agent 跟进任务(PR #118):此前在聊天中可见运行中的子 Agent,但其父任务在侧边栏显示为空闲状态;修复后会话投影在计算祖先活跃状态时包含了当前跟进任务,父任务在子节点运行期间保留其活动指示环。此外新开标签页现在会保持侧边栏展开状态(PR #106),Swarm 结果展开后的键盘焦点轮廓也不再与第一行结果重叠(PR #168)。
Talk 直接咨询的答案现在可正确匹配其运行身份(PR #140):此前同一个 Talk 咨询成功后会显示两个重复答案,原因是生成的运行 ID 包含时间戳加冒号加 UUID 的格式,恰好匹配了默认的凭证脱敏正则,导致保存的答案获得了缩短后的 ID。修复后使用连字符分隔符替代冒号,避免引入凭证形状的边界。
插件与生命周期
出站发送中的插件生命周期现在得到正确尊重(PR #105),解决了此前可能在插件更新尚未完成时就触发后续流程的问题。同时 CLI 插件更新和后核插件更新的最终化步骤现在都能在无隐式截止时间的情况下正常完成(分别为 PR #85 和 PR #109),避免了因超时导致更新流程被意外中断。
发布链路稳定性
扩展稳定版 2026.7.34 的验证链路连续获得多个针对性修复:Gemini 实时门控从要求 Gemini 2.5 Pro 账户权限改为使用更广泛可用的 Gemini 2.5 Flash(PR #189),解决了账户权限导致的验证假失败;实时提供商回退池逻辑被回填到 7.34 分支(PR #108),避免目录漂移时验证lane以零成功提供商证明结束;OpenCode Go 首选模型从已停用的 glm-5 切换到 kimi-k2.6,MiniMax 探针也改用普通可见项目替代隐藏文件以避免误触发安全拒绝(PR #152);npm 产物验证从频繁接收关机信号的托管运行器切换到 Blacksmith 32vCPU 运行器(PR #154)。
其他修复
SQLite 清理验证在大事务写入延迟较高时不再误报失败(PR #68);ACP 任务现确保只显示一次(PR #71);eval 启动命令触发的会话归档清理现在可正常执行(PR #115);CI 安全审核&查验流程在 fork 合并后不再出现 checkout 失败(PR #89 和 PR #102);不支持的启动器符号链接元数据现已能正常容错处理(PR #81);Team Reports 插件现已避免传输未使用的 Markdown 内容(PR #111);测试中龙虾变体生成的资源浪费也已消除(PR #62)。
本期更新整体基调偏向运行时效率优化和边界条件修复,没有破坏性变更,对普通用户使用体验的改善主要集中在历史加载速度和子 Agent 交互正确性两个方面。


评论