
OpenClaw 24h 更新快报(2026-05-01):心跳结构化响应、事件循环阻塞修复、插件工具链追踪
过去 24 小时内,OpenClaw 项目合并了多项重要更新,其中最值得关注的是两项核心改动:一是心跳机制引入了结构化响应规范,彻底告别纯文本约定;二是 Gateway 会话转录的同步 I/O 被全面异步化,扫除了长期困扰生产环境的事件循环饥饿问题。此外,插件工具链的性能追踪也得到系统性加固。
Agent 与会话调度:心跳响应结构化,Codex 工具调用规范化
PR #75765 为心跳机制引入了显式的结构化工具 heartbeat_respond,取代了此前依赖 HEARTBEAT_OK 纯文本约定的隐式控制方案。新接口包含 outcome、notify、summary、notificationText、reason、priority 和 nextCheck 等字段,Channel/Codex/嵌入式运行管线均可统一消费。
对于 Codex 模式,心跳轮次默认获得 heartbeat_respond 工具;messages.visibleReplies: "message_tool" 模式下的心跳也通过常规工具策略路径获取。Legacy 非工具心跳仍保留旧文本兜底方案,行为不降级。实测中,Codex 线程调用 heartbeat_respond 并以 NO_REPLY 结束时,Telegram 通知来自结构化心跳响应而非最终文本解析,控制流不再依赖最终 token 内容。
同期,PR #75779 清理了 message-tool 模式下的 NO_REPLY 提示词冲突——在工具独占投递路径中,静默操作等价于"不调用 message",而非"调用 message 后附上静默 token"。新方案保留 legacy 自动直接投递、cron 和 subagent 路径的静默行为,同时修正了这些路径对 message-tool 模式的误触。
此外,PR #75802 放开了子代理思考配置的补丁权限,允许通过 config.patch 修改 agents.defaults.subagents.thinking 和 agents.list[].subagents.thinking,在保持 Gateway 配置路径校验逻辑不变的前提下为该字段补充了边界守卫覆盖。
Gateway 与运行时:转录 I/O 全面异步化,事件循环饥饿问题根除
PR #75595 是本次窗口内最关键的生产稳定性修复,解决了两类事件循环阻塞:
sessions.list 热路径阻塞:buildGatewaySessionRow 在会话列表构建时对每个条目执行 fs.statSync + fs.openSync + 双 fs.readSync,100+ 会话场景下可阻塞事件循环 32–64 秒,导致 WebSocket 心跳、Channel I/O 和并发 RPC 集体饿死。新增 listSessionsFromStoreAsync() 每处理 10 行转录字段后通过 setImmediate 让出事件循环,sessions.list RPC 处理器已切换至该异步版本。
会话压缩文件复制阻塞:captureCompactionCheckpointSnapshot 使用 fsSync.copyFileSync 处理转录文件,线上曾观测到超过 20MB 的转录导致单次复制阻塞事件循环长达 43 分钟。新增 captureCompactionCheckpointSnapshotAsync() 替换为 fs.promises 异步 API,compact.ts 和 compact.queued.ts 均已迁移。
安全与稳定性:配置包含路径隔离,插件依赖处理简化
PR #75746 引入 OPENCLAW_INCLUDE_ROOTS 环境变量,允许配置文件 $include 从操作员预先批准的安全根路径解析,在维持默认配置目录边界的同时,对符号链接真实路径进行二次校验以防止路径穿越。回归测试覆盖路径解析、放行名单和符号链接逃逸场景。
PR #75823 为插件工具工厂引入了耗时追踪机制:单个工厂耗时 ≥1s 或总工厂准备耗时 ≥5s 时自动提升至 warn 级别,否则仅在 trace 日志开启时输出。同时修正了 MCP 日志路由问题,确保 trace 日志写入 stderr 而非 stdout,并在官方文档中补充了操作员排查路径。
其他值得注意的更新
- PR #75671:插件策略开关切换不再触发不必要的源码重编译,降低开发迭代噪音。
- PR #75620:冷启动检查注册快照复用,避免重复初始化开销。
- PR #75613:安全修复,确保纯文本审计日志不携带插件运行时信息。
- PR #75521:每次运行均复用活跃插件注册表进行工具解析,消除冗余查询。
整体来看,本次更新以运行时健壮性提升为主线,事件循环饥饿问题的系统性修复将显著改善大规模部署下的稳定性表现。


评论