
OpenClaw 24h 更新快报(2026-08-15):Peekaboo v2、终端注入防护、Gateway 调度修复
过去 24 小时,OpenClaw 仓库合并了大量高价值变更。macOS 端终于实现了 computer.act v2 的原生 Peekaboo 完整实现,绕过了此前只能走浏览器坐标操作的限制;CLI 多表面的终端注入风险被一次性封堵,cron 任务的"跳过"状态终于正确显示为失败而非静默跳过;Gateway worker 生命周期与 session 的绑定关系也得到了清理修正。
macOS 平台:Peekaboo 原生实现 computer.act v2
这是本次更新中影响面最广的功能变更。PR #123801 让 macOS 上的 Peekaboo 自动化框架成为 computer.act v2 的完整原生实现方,补全了此前 v1 只支持屏幕坐标系的遗憾。
v2 相比 v1 的核心区别在于:不再依赖坐标,而是通过 Accessibility Inspector 的 UI 自动化服务(UIAutomationService)获取结构化的应用/窗口/元素句柄,然后以这些 opaque ref 为目标执行操作。这意味着可以在后台对精确窗口执行点击、输入、滚动等操作,而不需要知道具体像素位置。支持的发现操作包括 list_apps、list_windows、get_accessibility_tree、get_window_state 等.lifecycle 层面也得到了加强:所有操作均受队列生命周期authority保护,一旦 lifecycle 发生变更,正在等待的任务会被取消并阻止后续结果提交,防止状态漂移。
该 PR 体量极大(+1289/-12 行),覆盖 Swift 原生层、TypeScript wire 协议、生命周期绑定以及完整的回归测试,CI 全链路绿色。值得注意的是,browser、recording、zoom、escalate_scope 四个能力仍然不被 Peekaboo 路径支持,由 CUA 浏览器 provider 提供兜底。
安全:CLI 终端注入防护全面落地
继 exec 审批表格之后,PR #123797 将终端文本清洗延伸到了所有兄弟表面:directory、cron show、agents list、channels list、sessions 等命令的输出终于不再对原始存储字符串做等宽渲染。攻击者若通过插件或对等端注入包含 ANSI escape sequence、OSC/BEL 字符、回车换行或嵌入空行的数据,此前可以直接操纵操作者的终端光标、伪造标题或覆盖已显示内容。
修复策略是收敛到统一的 renderTerminalSafeTable 和 sanitizeTerminalText 边界,而非逐命令添加清洗逻辑。JSON 模式输出(--json)保持原样字节不变,确保自动化脚本不受影响。55 个回归测试覆盖了全部六个受影响模块。
安全:禁止外部 sqlite3 打开活跃状态文件
PR #123816 在 gateway-host exec 预检阶段拦截外部 sqlite3 命令访问 OpenClaw 活跃状态目录。风险在于:agent 可能在 OpenClaw 不知情的情况下持有 WAL 句柄,导致数据库损坏。
该修复跟随命令载体、相对路径、状态目录变量和符号链接别名进行路径解析,对指向活跃状态目录的 .open 指令(包括 positional 和 -cmd 两种模式)返回可操作的错误信息。私有副本和通过 OpenClaw 命令行工具的正常访问路径不受影响。
Gateway:清理游离的 Worker Placements
PR #123785 修复了一个 session 生命周期管理的盲区:当 session 通过维护任务、cron 清理、插件回滚或迁移等渠道被删除时,对应的 worker placement 记录本应随之销毁,但此前它们可以残留下来,导致环境资源无法释放、terminal 环境保留被钉死,重启后还会被重新认领。
修复方案是在 Gateway 启动、身份变更后和周期性 placement 扫描三个时间点,将每条 placement 与 session-store 的权威证据进行三态对账:无 session → 安全销毁;有活跃 session → 先 fence 并销毁环境;状态不可读或迁移无效 → 保持不变(fail-closed)。
构建与安装:Git 克隆改为 Blobless 模式
PR #123835 将 git install 流程中的克隆策略从 partial clone 改为 blobless clone,同时保留无需 fallback 的设计决策。Blobless 克隆在需要时按需拉取对象,比 depth=1 的粗暴截断更可靠,同时避免了后续 checkout 时因对象缺失而回源的问题。
Cron:被跳过的自动化任务现在正确显示为失败
PR #123787 修复了 cron 调度器的一个体验问题:因前置条件不满足而被跳过的任务此前在 UI 中显示为普通"已暂停",与真正被用户手动暂停的任务混在一起,导致操作者无法区分哪些任务实际上已经连续失败、应该介入处理。现在跳过任务在 UI 中以独立的失败状态呈现,与失败计数器和错误指示灯正确关联。
Anthropic Provider:非交互式 onboarding 读取 Keychain 认证
PR #123839 修复了非交互式环境下配置 Anthropic Claude CLI 认证的路径,使得 headless 或自动化场景下 now_utc 的 keychain 读取能够正确完成,而不再只依赖环境变量。
本次更新覆盖了 macOS 自动化能力、安全加固、session/worker 生命周期治理和 UI 状态显示四个主要维度,质量门槛充足,可以发布。


评论