大家好,我是程序员虎哥,跟踪学习、不定期同步以 OpenClaw 为代表的 Agent 技术。技术发展应该为劳动者减负,而不应该增加焦虑和内耗~
OpenClaw 每日更新 | 3 月 21-22 日:性能集中优化 + 双搜索插件
📊 概览
统计时间:2026 年 3 月 21-22 日(太平洋时区 PDT UTC-7)
| 总 Commits | |
| 贡献者 | |
| 修改文件 | |
| 新增代码 | |
| 删除代码 |
分类统计
主要贡献者 TOP 5
🚀 重点功能
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- 预计算基础配置 schemaperf: 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- 从预检范围扇出 macOSperf(ci): gate install smoke on changed-smoke- 在 changed-smoke 上门控安装 smoke
意义:CI 运行更快、更可靠。
📈 贡献者榜单
📝 观察与总结
技术趋势
性能优化成为重中之重:两天内 20+ 个 perf commits,显示团队对启动性能的极致追求。通过懒加载、预计算、元数据生成等手段,大幅降低冷启动开销。
搜索能力扩展:DuckDuckGo 和 Exa 两个搜索插件的加入,为用户提供了更多选择:
DuckDuckGo:免费、无需 API 密钥 Exa:专业 AI 搜索、神经搜索模式 ClawHub 生态建设:优先从 ClawHub 安装插件,表明团队在构建官方插件市场的决心。
Android 端稳定性提升:Kaneki 的一系列内存泄漏修复显示 OpenClaw Android 客户端正在成熟,适合长时间运行。
测试驱动开发: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
夜雨聆风