乐于分享
好东西不私藏

OpenClaw 每日更新 | 3 月 21-22 日:性能集中优化 + 双搜索插件

OpenClaw 每日更新 | 3 月 21-22 日:性能集中优化 + 双搜索插件

大家好,我是程序员虎哥,跟踪学习、不定期同步以 OpenClaw 为代表的 Agent 技术。技术发展应该为劳动者减负,而不应该增加焦虑和内耗~


OpenClaw 每日更新 | 3 月 21-22 日:性能集中优化 + 双搜索插件

📊 概览

统计时间:2026 年 3 月 21-22 日(太平洋时区 PDT UTC-7)

指标
数据
总 Commits
210+
贡献者
15+ 人
修改文件
637+ 个
新增代码
~30,954 行
删除代码
~6,289 行

分类统计

类型
数量
占比
🔧 fix
85
40%
♻️ refactor
50
24%
🧪 test
45
21%
⚡ perf
20
10%
✨ feat
7
3%
📝 docs
3
2%

主要贡献者 TOP 5

排名
贡献者
Commits
主要工作
1
Peter Steinberger
85+
性能优化、测试改进、重构
2
Vincent Koc
60+
性能优化、文档、搜索插件
3
scoootscooob
10+
插件 SDK 重构
4
Jacob Tomlinson
8+
文档改进
5
Kaneki
6+
Android 内存泄漏修复

🚀 重点功能

1. 性能集中优化(3 月 21-22 日连续优化)

贡献者:Peter Steinberger, Vincent Koc

内容:

  • perf(inbound): trim cold startup import graph - 修剪冷启动导入图
  • perf(inbound): trim reply startup imports - 修剪回复启动导入
  • perf: reduce plugin and memory startup overhead - 减少插件和内存启动开销
  • perf: reduce runtime and test startup overhead - 减少运行时和测试启动开销
  • perf(core): trim provider and inbound startup imports - 修剪提供者和入站启动导入
  • perf: lazy-load plugin runtime heavy surfaces - 懒加载插件运行时重型表面
  • perf: generate bundled plugin metadata for cold startup - 为冷启动生成捆绑插件元数据
  • perf: precompute base config schema - 预计算基础配置 schema
  • perf: avoid plugin loader on provider fast paths - 在提供者快速路径上避免插件加载器

意义:这是一系列密集的性能优化,显著减少了 OpenClaw 的冷启动时间。通过懒加载、预计算、元数据生成等手段,大幅降低了启动时的 CPU 和内存开销。

2. DuckDuckGo 搜索插件

贡献者:Vincent Koc

内容:

  • feat(web-search): add DuckDuckGo bundled plugin - 添加 DuckDuckGo 捆绑插件
  • 无需 API 密钥的免费搜索方案
  • 支持 region 和 safeSearch 参数
  • 标记为 experimental(实验性)

意义:DuckDuckGo 作为无需 API 密钥的搜索方案,为用户提供了更多选择,特别是对预算有限的用户。

3. Exa 搜索插件

贡献者:Vincent Koc

内容:

  • feat(web-search): add bundled Exa plugin - 添加 Exa 捆绑插件
  • 支持神经/关键词/混合搜索模式
  • 支持内容提取(highlights、text、summary)
  • 100 结果上限

意义:Exa 是一个专业的 AI 搜索引擎,提供神经搜索和内容提取能力,适合深度研究场景。

4. ClawHub 优先安装

贡献者:Peter Steinberger

内容:

  • feat!: prefer clawhub plugin installs before npm - 优先从 ClawHub 安装插件
  • 裸插件规格先尝试 ClawHub,再回退到 npm
  • 添加原生 ClawHub 安装流程

意义:ClawHub 作为 OpenClaw 官方的插件市场,优先安装可以提高插件发现性和安装可靠性。

5. 会话管理改进

贡献者:Val Alexander

内容:

  • feat(ui): add multi-session selection and deletion - 添加会话多选和删除功能
  • feat(sessions): add page deselection functionality - 添加页面取消选择功能
  • refactor(usage): drop empty detail placeholder state - 删除空详情占位符状态

意义:Web UI 会话管理更高效,支持批量操作。


🔧 关键 Bug 修复

1. Telegram 消息丢失修复

贡献者:moltbot886

问题:当 OpenClaw 回复的消息在发送前被删除时,Telegram API 会拒绝整个 sendMessage 调用,导致机器人响应静默丢失并永久卡在失败队列中。

修复:

  • fix(telegram): add allow_sending_without_reply to prevent lost messages
  • 设置 allow_sending_without_reply: true 告诉 Telegram 如果回复目标不存在则作为独立消息发送
  • 应用于 6 个位置(send.ts、bot/delivery.send.ts、draft-stream.ts、bot-handlers.runtime.ts)

影响:Telegram 消息可靠性大幅提升,避免因原消息被删除导致的响应丢失。

2. WebChat 图片持久化

贡献者:fuller-stack-dev

问题:通过 WebChat 控制 UI 发送的图片从未写入磁盘,导致:

  • 对话压缩后图片丢失
  • 图片编辑/生成工作流失败
  • ~/.openclaw/media/inbound/ 目录不完整

修复:

  • feat(gateway): persist webchat inbound images to disk
  • 在 parseMessageWithAttachments 提取图片后,调用 saveMediaBuffer() 持久化
  • 使用 fire-and-forget 模式,磁盘 I/O 不阻塞响应
  • 在 dispatch 后持久化媒体引用

影响:WebChat 图片现在正确持久化,支持后续编辑和生成工作流。

3. ACP 隐藏思考回放

贡献者:Vincent Koc

内容:

  • fix(acp): preserve hidden thought replay on session load - 保留会话加载时的隐藏思考回放
  • fix(acp): preserve hidden thought chunks from gateway chat - 保留网关聊天的隐藏思考块

意义:ACP 会话现在能正确回放隐藏思考,提高调试体验。

4. session_status 的 sessionKey=current 别名

贡献者:Bryan Tegomoh

问题:session_status 工具支持 sessionKey=current 别名,但其他会话工具不支持,导致行为不一致。

修复:

  • fix: accept session_status sessionKey=current alias
  • 将 "current" 别名处理移动到共享会话解析层
  • 在 resolveSessionReference 和 resolveInternalSessionKey 中统一处理

影响:所有会话工具现在一致支持 sessionKey=current。

5. Android 内存泄漏修复系列

贡献者:Kaneki

内容:

  • Android: fix Bitmap memory leaks in PhotosHandler - 修复 PhotosHandler 中的 Bitmap 内存泄漏
  • Android: fix Bitmap memory leaks in CanvasController snapshots - 修复 CanvasController 快照中的 Bitmap 内存泄漏
  • Android: fix temp file leak in CameraHandler.handleClip - 修复 CameraHandler 中的临时文件泄漏
  • Android: fix sensor callback race condition in MotionHandler - 修复 MotionHandler 中的传感器回调竞争条件
  • Android: fix incomplete JS string escaping in A2UI action status - 修复 A2UI 动作状态中的 JS 字符串转义

意义:修复了多个 Android 端的内存泄漏问题,提高了长时间运行的稳定性。

6. 交付队列重试计数修复

贡献者:Stephen Schoettler

问题:当交付恢复超过 60 秒时间预算时,剩余的待处理条目被静默延迟到下次重启,retryCount 不增加,导致它们在重启间无限循环,永远达不到 MAX_RETRIES。

修复:

  • fix(delivery-queue): increment retryCount on deferred entries when time budget exceeded
  • 在超过截止时间前调用 failDelivery() 增加 retryCount
  • 条目最终会耗尽 MAX_RETRIES 并被永久跳过

影响:交付队列现在正确处理超时条目,避免无限循环。

7. Control UI WebSocket 范围修复

贡献者:XING

问题:Control UI WebSocket 连接参数只声明了 admin、approvals 和 pairing 范围,缺少 operator.read 和 operator.write,导致网关拒绝所有 agent/send RPC 调用。

修复:

  • fix(control-ui): add missing operator.read and operator.write scopes to connect params
  • 添加两个缺失的范围到连接参数数组

影响:Dashboard WebChat 现在可以发送消息和读取会话状态。


📝 重构系列

1. Doctor 命令重构

贡献者:Vincent Koc

提取的模块:

  • refactor(doctor): extract note emission - 提取笔记发出
  • refactor(doctor): extract flow finalization - 提取流程完成
  • refactor(doctor): extract matrix sequencing - 提取 Matrix 排序
  • refactor(doctor): extract repair sequencing - 提取修复排序
  • refactor(doctor): extract preview warning collection - 提取预览警告收集
  • refactor(doctor): extract empty allowlist scanning - 提取空 allowlist 扫描
  • refactor(doctor): extract matrix provider helpers - 提取 Matrix 提供者助手
  • refactor(doctor): extract exec safe-bin helpers - 提取 exec 安全 bin 助手
  • refactor(doctor): extract legacy tools-by-sender helpers - 提取遗留工具助手
  • refactor(doctor): extract default account warnings - 提取默认账户警告
  • refactor(doctor): extract telegram allowfrom scanning - 提取 Telegram allowfrom 扫描
  • refactor(doctor): extract telegram allowfrom repair - 提取 Telegram allowfrom 修复
  • refactor(doctor): extract discord id repair - 提取 Discord ID 修复

意义:Doctor 命令代码更模块化、可维护。

2. 插件 SDK 重构

贡献者:scoootscooob, Peter Steinberger

内容:

  • refactor: route Telegram runtime through plugin sdk - 通过插件 SDK 路由 Telegram 运行时
  • refactor: route iMessage runtime through plugin sdk - 通过插件 SDK 路由 iMessage 运行时
  • refactor: route Slack runtime through plugin sdk - 通过插件 SDK 路由 Slack 运行时
  • refactor: route discord runtime through plugin sdk - 通过插件 SDK 路由 Discord 运行时
  • refactor: adopt chat plugin builder in [channel] - 在多个频道中采用聊天插件构建器

意义:统一了插件运行时架构,提高了代码复用性。

3. Exec 包装器重构

贡献者:Peter Steinberger

内容:

  • refactor(exec): rename wrapper plans for trust semantics - 重命名包装器计划以体现信任语义
  • refactor(exec): share wrapper trust planning - 共享包装器信任计划
  • refactor(exec): make dispatch wrapper semantics spec-driven - 使调度包装器语义由规范驱动
  • refactor(exec): split wrapper resolution modules - 拆分包装器解析模块

意义:Exec 包装器语义更清晰,信任计划更透明。


🧪 测试改进

1. Vitest 线程优化

贡献者:Peter Steinberger

内容:

  • perf: default unit vitest lanes to threads - 默认单元测试通道使用线程
  • perf: expand vitest thread lanes - 扩展 Vitest 线程通道
  • perf: automate vitest thread candidate scans - 自动化 Vitest 线程候选扫描
  • perf: default extension vitest lanes to threads - 默认扩展测试通道使用线程
  • perf: enable vitest fs module cache by default - 默认启用 Vitest 文件系统模块缓存

意义:测试运行更快,CI 反馈更及时。

2. CI 优化

贡献者:Vincent Koc, Peter Steinberger, Tak Hoffman

内容:

  • ci(actions): optimize main CI lanes - 优化主 CI 通道
  • ci(actions): skip heavy draft pr workflows - 跳过繁重的草稿 PR 工作流
  • fix(test): recycle unit-fast ci batches - 回收 unit-fast CI 批次
  • ci: surface hidden failures in smoke helpers - 暴露 smoke 助手中的隐藏失败
  • perf(ci): fan out macos from preflight scope - 从预检范围扇出 macOS
  • perf(ci): gate install smoke on changed-smoke - 在 changed-smoke 上门控安装 smoke

意义:CI 运行更快、更可靠。


📈 贡献者榜单

贡献者
Commits
主要贡献领域
Peter Steinberger
85+
性能、测试、重构
Vincent Koc
60+
性能、文档、搜索插件
scoootscooob
10+
插件 SDK 重构
Jacob Tomlinson
8+
文档
Kaneki
6+
Android 内存泄漏
fuller-stack-dev
2+
WebChat 图片、GitHub Copilot
Val Alexander
4+
UI、会话管理
Tak Hoffman
4+
CI
moltbot886
2+
Telegram
Stephen Schoettler
4+
交付队列
XING
2+
Control UI
Bryan Tegomoh
1+
session_status
Harold Hunt
2+
Discord、文档
Kevin ONeill
2+
.env 文件
Charles Dusek
3+
CLI JSON 输出

📝 观察与总结

技术趋势

  1. 性能优化成为重中之重:两天内 20+ 个 perf commits,显示团队对启动性能的极致追求。通过懒加载、预计算、元数据生成等手段,大幅降低冷启动开销。

  2. 搜索能力扩展:DuckDuckGo 和 Exa 两个搜索插件的加入,为用户提供了更多选择:

    • DuckDuckGo:免费、无需 API 密钥
    • Exa:专业 AI 搜索、神经搜索模式
  3. ClawHub 生态建设:优先从 ClawHub 安装插件,表明团队在构建官方插件市场的决心。

  4. Android 端稳定性提升:Kaneki 的一系列内存泄漏修复显示 OpenClaw Android 客户端正在成熟,适合长时间运行。

  5. 测试驱动开发:21% 的 commits 是测试相关,表明团队重视测试覆盖和 CI 稳定性。

代码质量观察

  • 性能意识强:大量 perf commits 显示团队对性能的关注
  • 重构及时:Doctor、Exec、插件 SDK 的重构在代码变得复杂之前进行
  • Android 端投入:内存泄漏修复系列显示对移动端的重视
  • 文档改进:Jacob Tomlinson 的文档改进系列提高了用户体验

🔗 相关链接

  • OpenClaw GitHub: https://github.com/openclaw/openclaw[1]
  • DuckDuckGo 搜索插件文档:https://docs.openclaw.ai/tools/duckduckgo-search.md[2]
  • Exa 搜索插件文档:https://docs.openclaw.ai/tools/exa-search.md[3]
  • ClawHub: https://clawhub.com[4]

这是「Agent 扫地僧」的 OpenClaw 每日更新(3 月 21-22 日合并篇)。如果你觉得有价值,欢迎关注公众号,一起跟踪学习 Agent 技术~ 🧹

引用链接

[1]https://github.com/openclaw/openclaw

[2]https://docs.openclaw.ai/tools/duckduckgo-search.md

[3]https://docs.openclaw.ai/tools/exa-search.md

[4]https://clawhub.com

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料