OpenClaw 更新分析 — 2026-03-22

概览

过去 24 小时(2026-03-21T05:00 UTC ~ 2026-03-22T05:00 UTC)共有 22+ 条 commits 合并入主线,活跃贡献者包括 Vincent Koc、Peter Steinberger(steipete)、Tak Hoffman、社区贡献者 Felippe Mercurio、Goweii 等。

本轮更新呈现以下三大主题:

1. 性能优化 — 启动速度提升,插件缓存机制重建

2. doctor 模块大重构 — 持续拆分大函数,代码解耦进行时

3. 多平台 Bug 修复 — Discord 消息重复、Android Gateway 端口、Agent 媒体迁移

重要变更(逐条分析)

🔧 [fix] models: cache models.json readiness for embedded runs (#52077)

🔧 [fix] discord: dedupe inbound message deliveries (#51950)

🔧 [fix] android: use scheme default port for gateway setup URLs (#43540)

🔧 [fix] configure cache ownership for plugin resolvers (#52018)

- 配置缓存所有权归属

- web-search 缓存策略复查

- provider wizard 缓存重键

- 遵守插件的 cache opt-out 设置

- 修复缓存失效漏洞

- 对齐 plugin snapshot TTL

🔧 [fix] agents: migrate remaining media artifacts

🔧 [fix] android: update status bar appearance in OpenClawTheme (#51098)

⚡ [perf] inbound: narrow reply startup imports (#51943)

⚡ [perf] reduce plugin and memory startup overhead

🎨 [refactor] doctor 模块系列重构(4 个 commits)

- extract matrix sequencing (#52056) — 抽取矩阵排序逻辑

- extract flow finalization (#52067) — 抽取流程终止化逻辑

- extract note emission (#52076) — 抽取 note 输出逻辑

- extract preview warning collection (#51942) — 抽取预览警告收集逻辑

🖥️ [feat/fix] Control UI: disambiguate duplicate agent session labels (#48209)

🧪 [test/ci] 测试与 CI 改进(多个 commits)

- 精简 bluebubbles webhook 测试 fixtures

- 去重 bluebubbles 监控 helpers 和 webhook 测试

- 去重 startup 和 nostr 测试 fixtures

- 刷新单元测试时序快照

- CI smoke test 失败信号透传

- CI 豁免 bad-barnacle 标签 PR 的自动关闭

架构观察

1. doctor 模块正在经历系统性解耦:连续 4 个 commit 抽取独立函数,从 matrix sequencing → flow finalization → note emission → preview warning,说明 doctor 此前是一个职责过重的"大函数",团队正在按关注点分离重写。预计后续还会有更多相关 refactor。

2. 启动性能是当前优先级perf(inbound) 缩减 import,perf 减少 plugin/memory 开销,以及 models.json 缓存 —— 三个独立 commit 都指向同一目标:降低冷启动延迟。

3. 缓存系统重建:plugin resolver 的缓存所有权修复涵盖了 web-search、provider wizard、snapshot TTL 多个层面,说明缓存架构此前存在设计漏洞,此次做了系统性清理。

4. 社区贡献活跃:Felippe Mercurio(Android 端口)、Goweii(Android 状态栏)、wilsonIs(Control UI)均为社区 PR,说明 OpenClaw 多平台生态在社区驱动下持续完善。

对我们的影响

变更影响程度操作建议
Discord 消息去重⭐⭐⭐ 高若之前遇到机器人重复响应,升级后应自动解决
启动性能优化⭐⭐ 中下次升级后观察重启/冷启动速度
插件缓存修复⭐⭐ 中web-search 结果刷新更可靠,缓存过期更准确
slash-command 大小写⭐ 低命令 token 现在统一小写化,参数保留原始大小写
doctor 模块重构⭐ 低内部重构,`openclaw doctor` 用户体验无变化
Android 相关修复N/A我们主要使用服务端,暂不影响

总结:这批更新以质量和性能改善为主,没有 breaking change,建议跟进升级。Discord 去重修复插件缓存修复 是最值得关注的两个变更。

原始 commits

SHA消息作者时间
[2b21070](https://github.com/openclaw/openclaw/commit/2b210703a3b99f4740897ad1643c42ff76090546)fix(models): cache models.json readiness for embedded runsVincent Koc04:58
[432e894](https://github.com/openclaw/openclaw/commit/432e8943adf07386ad55f5f5f96a7730537e2a96)fix(discord): dedupe inbound message deliveriesTak Hoffman04:55
[7a0dacb](https://github.com/openclaw/openclaw/commit/7a0dacbfba79cd4a2ae6d843d9b79d5964fee20f)refactor(doctor): extract note emissionVincent Koc04:52
[8790c54](https://github.com/openclaw/openclaw/commit/8790c54635b00847b5cab019cf976522bae1634e)fix(android): use scheme default port for gateway setup URLsFelippe Mercurio04:51
[0f6dbb4](https://github.com/openclaw/openclaw/commit/0f6dbb4390e368ee1cfa448ee3d8f224d92f4630)Fix configure cache ownership for plugin resolversTak Hoffman04:41
[ec59974](https://github.com/openclaw/openclaw/commit/ec59974a469fed47c47d2e881b0b62f4ed90a1f5)refactor(doctor): extract flow finalizationVincent Koc04:27
[60f559e](https://github.com/openclaw/openclaw/commit/60f559e2178a2ccb1a854050f6834862e4427800)refactor(doctor): extract matrix sequencingVincent Koc04:10
[4c9f411](https://github.com/openclaw/openclaw/commit/4c9f411f6d17a96e60e6a58f22297848b630cfa3)test(discord): stabilize tool-result reply testsPeter Steinberger04:07
[7ac312b](https://github.com/openclaw/openclaw/commit/7ac312b8fecb87b0e4517b2430b47d3404ecfd27)fix(agents): migrate remaining media artifactsPeter Steinberger03:57
[e7e4c68](https://github.com/openclaw/openclaw/commit/e7e4c68caf71da6eec25e3cc8987546417aa498d)Android: update status bar appearance in OpenClawThemeGoweii04:03
[b1ab7ba](https://github.com/openclaw/openclaw/commit/b1ab7ba3ac9f62b58c32ed770706262e0fe5fbf2)refactor(test): trim bluebubbles webhook fixturesPeter Steinberger02:41
[4f210e9](https://github.com/openclaw/openclaw/commit/4f210e98a56d271573eaf9ee901b2b10cddbe2aa)refactor(test): dedupe bluebubbles monitor helpersPeter Steinberger02:11
[7b344b8](https://github.com/openclaw/openclaw/commit/7b344b8a8ab7bf3e10f3f05f92078b7faa31095b)test: refresh unit timing snapshotPeter Steinberger02:04
[d81772d](https://github.com/openclaw/openclaw/commit/d81772dbc719b4677c8367242f2a385811106c87)test: trim import-heavy startup pathsPeter Steinberger02:03
[2cc7775](https://github.com/openclaw/openclaw/commit/2cc777539a6f06b30836a15aa6ed6b2dcedda85d)perf: reduce plugin and memory startup overheadPeter Steinberger02:03
[1ad3893](https://github.com/openclaw/openclaw/commit/1ad3893b395411c335d8deece74889e9fa7998e8)Control UI: disambiguate duplicate agent session labelswilsonIs02:11
[17713ec](https://github.com/openclaw/openclaw/commit/17713ec98813d2f191c3f34ff3ca353d3c8a79b6)refactor(test): dedupe bluebubbles webhook testsPeter Steinberger01:29
[1e4688a](https://github.com/openclaw/openclaw/commit/1e4688a58490212ceff9f581461bb543017d7e2e)CI: exempt bad-barnacle from dirty auto-closeTak Hoffman01:19
[d6c05c1](https://github.com/openclaw/openclaw/commit/d6c05c19417039bce25c285c0bde190d747970c6)ci: surface hidden failures in smoke helpersTak Hoffman01:21
[ab38f64](https://github.com/openclaw/openclaw/commit/ab38f6471c8719adb7ff21ac5e14df1b26107a0c)perf(inbound): narrow reply startup importsVincent Koc01:18
[f1b2c56](https://github.com/openclaw/openclaw/commit/f1b2c5639aff2fad0df44d7524d7324e8c9c3207)refactor(test): dedupe startup and nostr test fixturesPeter Steinberger00:52
[3775651](https://github.com/openclaw/openclaw/commit/3775651480b787268ac5cfbbac20c5c1e2ff26f1)refactor(doctor): extract preview warning collectionVincent Koc01:11