OpenClaw 更新分析 — 2026-03-26
> 统计周期:2026-03-25 05:00 UTC → 2026-03-26 05:00 UTC
> Commits 总数:18 条(全部社区贡献,经 Ayaan Zaidi 等核心成员 review 合并)
概览
今日是纯 bugfix + 一个 feat 的节奏,无大型重构。主题集中在:
| 类别 | 数量 | 重要程度 |
|---|---|---|
| 🔒 安全修复 | 2 | ⚠️ 高 |
| 🤖 Provider / 模型层 | 4 | 中-高 |
| 📡 Channel 层 | 5 | 中 |
| ⚡ 限速 / 稳定性 | 2 | 高 |
| 🔌 插件 API | 1 (feat) | 中 |
| 🏗️ 基础设施 / 测试 | 4 | 低 |
重要变更(逐条分析)
🔒 1. 安全:媒体层路径穿越拦截 (#54642)
作者: @drobison00 | 时间: 03-25 19:35 UTC
- 改动: 在 media 解析层拒绝包含
../路径穿越和~/家目录模式的输入 - 影响: 防止恶意构造的媒体路径逃逸到系统目录。属于防御性安全补丁,对正常使用无感知影响
- 建议: 如果你有自定义媒体处理插件,检查是否使用了相对路径,升级后可能被拦截
🔒 2. 安全:Telegram writeback 需要 operator.admin 权限 (#54561)
作者: @drobison00 | 时间: 03-25 18:12 UTC
- 改动: Telegram legacy target writeback 持久化操作现在必须有
operator.admin权限才能执行 - 影响: 权限收紧,防止普通用户/bot 意外写入 target 配置。多 bot 部署的管理员需注意权限配置
🤖 3. OpenAI Codex 图像理解支持 (#54829)
作者: @neeravmakwana | 时间: 03-26 04:40 UTC
- 改动: 注册 Codex media understanding provider;图像提示通过 system instructions 路由
- 影响: 使用 Codex 模型时现在可以处理图片输入了,此前该功能因 provider 未注册而静默失败
- 我们的影响: 我们不用 Codex,可跳过。但反映了 OpenAI provider 层的持续完善
🤖 4. image-tool generic provider fallback 修复 (#54858)
作者: @MonkeyLeeT | 时间: 03-26 04:37 UTC
- 改动: 恢复 image tool 的通用 provider fallback 逻辑;同时覆盖多图片的 fallback case
- 影响: 修复了 image 工具在特定 provider 下无图片可用时直接失败的 bug,现在会自动回退到通用实现
🤖 5. 上下文窗口查询感知 Provider (#54796)
作者: @neeravmakwana | 时间: 03-26 03:58 UTC
- 改动:
/status命令的 context window 显示改为 provider-aware lookup,不再使用硬编码查找表 - 影响: 对于使用非标准模型名或自定义 provider 的用户,
/status现在能正确显示上下文窗口大小
🤖 6. Kimi Code 在 Moonshot 配置下恢复 (#54619)
作者: @sparkyrider | 时间: 03-26 04:16 UTC
- 改动: 恢复 onboarding 流程中 Moonshot 配置下的 Kimi Code 扩展;修正 metadata 命名规范
- 影响: 使用 Moonshot/Kimi 的用户在初始化时 Kimi Code 扩展会正确显示和配置
📡 7. CLI routed 命令自动启用 channel 插件 (#54809)
作者: @neeravmakwana | 时间: 03-26 04:36 UTC
- 改动:
openclaw message等 routed CLI 命令现在自动启用已配置的 channel 插件 - 影响: 修复了通过 CLI 发消息时 channel 插件(如 Telegram、Discord)未激活的问题
📡 8. CLI message transcript mirroring 修复 (#54187)
作者: @KevInTheCloud5617 | 时间: 03-26 04:02 UTC
- 改动:
openclaw message send命令现在传递agentId给runMessageAction(),从而正确构建mirror对象,触发appendAssistantMessageToSessionTranscript() - 影响: 通过 CLI 发出的消息现在会正确写入 session transcript,会话历史不再丢失。这个 bug 比较隐蔽,可能导致日志不完整
📡 9. Telegram multi-bot token fallback 修复 (#54362)
作者: @openperf | 时间: 03-26 03:46 UTC
- 改动: 修复 binding 创建的 accountId 的 token 解析逻辑;
isConfigured与 token 解析对齐;使用规范化 account 查找 - 影响: 多 Telegram bot 配置下,绑定创建的账号现在能正确解析 token,不再静默失败
📡 10. WhatsApp allowFrom 错误信息优化 (#54850)
作者: @mcaxtr | 时间: 03-26 03:44 UTC
- 改动: 优化
allowFrompolicy 错误的提示文案,更清晰说明拒绝原因 - 影响: 当消息被 allowFrom 策略拒绝时,日志/错误信息更易读,调试更方便
📡 11. iMessage reply tag 泄漏修复 (#39512)
作者: @mvanhorn | 时间: 03-25 17:30 UTC
- 改动: iMessage 出站文本中不再泄漏
[[reply_to_*]]等 directive tag;同时保留出站消息的空白格式 - 影响: iMessage 用户不再收到含有内部 tag 的"脏"消息
⚡ 12. 限速:per-model 冷却 + 阶梯退避 + 用户提示 (#49834)
作者: @kiranvk-2011 | 时间: 03-25 19:03 UTC
- 改动: 限速冷却现在按 model 单独计算(而非全局);退避策略改为阶梯式;向用户展示友好的限速提示
- 影响: 使用多模型时,一个模型被限速不再影响其他模型。用户体验大幅提升,不再静默无响应
⚡ 13. 限速:mid-turn 429 静默无响应 + context engine 注册失败修复 (#50930)
作者: @infichen | 时间: 03-25 17:43 UTC
- 改动: 修复对话中途遇到 429 时消息丢失(no-reply)的 bug;同时修复 context engine 注册失败问题
- 影响: 关键修复。此前 API 限速时整条消息会静默消失,用户不知道发生了什么。现在会给出提示
🔌 14. feat: Plugin API 暴露 runHeartbeatOnce (#40299)
作者: @loveyana (ByteDance) | 时间: 03-25 17:47 UTC
- 改动: 在 plugin runtime
system命名空间中暴露runHeartbeatOnce(options),支持heartbeat: { target: "last" }覆盖 - 影响: 插件现在可以主动触发一次 heartbeat cycle,让 agent 把响应发到正确 channel。这解锁了插件主动推送结果的能力
- 我们的影响: 如果后续写需要异步回调的插件,可以用这个 API
🏗️ 15. Systemd 重复 Gateway 检测收紧 (#45328)
作者: @gregretkowski | 时间: 03-26 03:50 UTC
- 改动: daemon 层改进 systemd 单元文件扫描逻辑,处理 line continuation;修复跨平台路径处理
- 影响:
openclaw gateway start时更可靠地检测到已运行的实例,避免重复启动
🏗️ 16. Compaction 取消原因透出 (#51072)
作者: @afurm | 时间: 03-25 18:03 UTC
- 改动:
/compact被 safeguard 取消时,现在会显示具体取消原因;跳过情况也有更清晰的说明 - 影响: 调试 compaction 失败时更容易定位原因
架构观察
1. Channel 层连续修复:今日 5 条 channel 相关 fix(Telegram x2、WhatsApp、iMessage、CLI)说明消息管道层存在积累已久的边缘案例。其中 CLI transcript mirroring 和 Telegram token fallback 属于设计缺陷修复,不是简单 bug。
2. 限速处理成熟化:两条限速相关 fix(#49834 per-model cooldown + #50930 mid-turn 429)共同构成了一套更完善的速率限制处理体系。从"静默失败"到"有反馈+优雅退避",是用户体验的重大提升。
3. 安全收口:路径穿越和 Telegram 权限两个 fix 在同一天上线,可能是一次定向安全审查的结果。值得关注。
4. 插件生态扩展:runHeartbeatOnce 暴露是今日唯一 feat,来自 ByteDance 的贡献者。说明社区在尝试构建更复杂的异步插件。
5. 贡献者活跃度高:18 条 commits 来自 12+ 位不同贡献者,项目健康度良好。
对我们的影响
| 优先级 | 项目 | 行动建议 |
|---|---|---|
| 🔴 建议升级 | 限速处理修复 (#49834, #50930) | 解决了消息丢失问题,建议尽快 `npm update openclaw` |
| 🔴 建议升级 | CLI transcript mirroring (#54187) | 如果用 `openclaw message send`,日志会不完整 |
| 🟡 关注 | Telegram token fallback (#54362) | 如果用多 bot,可能已经碰到过这个 bug |
| 🟡 关注 | 安全:路径穿越 + admin scope | 如有自定义 media 插件或 Telegram 写回,需测试兼容性 |
| 🟢 可选 | Plugin API runHeartbeatOnce | 写复杂插件时可用 |
| ⚪ 无影响 | Codex 图像 / Kimi Code / iMessage | 我们未使用这些 channel/provider |
总结:建议在下次维护窗口升级 OpenClaw。限速处理和 transcript 的修复对日常使用影响最大。
原始 Commits
| SHA | 时间 (UTC) | 类型 | 描述 |
|---|---|---|---|
| [6fd9d2f](https://github.com/openclaw/openclaw/commit/6fd9d2ff38715fede2c87f260e5d94ba1036ec83) | 03-26 04:40 | fix | support OpenAI Codex media understanding |
| [76ff0d9](https://github.com/openclaw/openclaw/commit/76ff0d9298591eef358542a04f80bc75b5391aa0) | 03-26 04:37 | fix | restore image-tool generic provider fallback |
| [8efc6e0](https://github.com/openclaw/openclaw/commit/8efc6e001e00c1bda84a93aad2fc9564edff105d) | 03-26 04:36 | fix | auto-enable configured channel plugins in routed CLI |
| [1bc30b7](https://github.com/openclaw/openclaw/commit/1bc30b7fb9eceb7e386cb73b3ccdda31cc9a910f) | 03-26 04:16 | fix | restore Kimi Code under Moonshot setup |
| [99deba7](https://github.com/openclaw/openclaw/commit/99deba798c918941ba8674343392d16deb299874) | 03-26 04:02 | fix | restore CLI message transcript mirroring |
| [68d854c](https://github.com/openclaw/openclaw/commit/68d854cb9c6547b0c79fc9bd3bf661b30c2e60ee) | 03-26 03:58 | fix | use provider-aware context window lookup |
| [14430ad](https://github.com/openclaw/openclaw/commit/14430ade573a4ef41322ea705d82224b4fb5655f) | 03-26 03:50 | fix | tighten systemd duplicate gateway detection |
| [ebad749](https://github.com/openclaw/openclaw/commit/ebad7490b480a12f8b92aa6cdef2f61902b2d2e9) | 03-26 03:46 | fix | resolve telegram token fallback for binding-created accounts |
| [bc1c308](https://github.com/openclaw/openclaw/commit/bc1c30838375e836b1165030302662b7d563d37b) | 03-26 03:44 | fix | whatsapp: clarify allowFrom policy error |
| [4797bbc](https://github.com/openclaw/openclaw/commit/4797bbc5b96e2cca5532e43b58915c051746fe37) | 03-25 19:35 | fix | 🔒 reject path traversal and home-dir patterns in media |
| [8440122](https://github.com/openclaw/openclaw/commit/84401223c7b8dff8dfeda9e210114b6f6036f68d) | 03-25 19:03 | fix | per-model cooldown scope, stepped backoff, rate-limit msg |
| [6efc4e8](https://github.com/openclaw/openclaw/commit/6efc4e8ef23aa35a20ff447926ea75b1f1a7aed6) | 03-25 18:44 | test | fix windows tmp root assertions |
| [b7d70ad](https://github.com/openclaw/openclaw/commit/b7d70ade3b9900dbe97bd73be9c02e924ff3c986) | 03-25 18:12 | fix | 🔒 telegram writeback require operator.admin scope |
| [89c4c67](https://github.com/openclaw/openclaw/commit/89c4c674d17855df79f3824b09d31e7658822f82) | 03-25 18:03 | fix | compaction: surface safeguard cancel reasons |
| [7847e67](https://github.com/openclaw/openclaw/commit/7847e67f8acb19072e638aa97758cdbd9867e9ae) | 03-25 17:47 | feat | plugins: expose runHeartbeatOnce in system API |
| [4ae4d1f](https://github.com/openclaw/openclaw/commit/4ae4d1fabee2caa23ab200c5480ad164a0f25f62) | 03-25 17:43 | fix | mid-turn 429 silent no-reply + context engine failure |
| [e0972db](https://github.com/openclaw/openclaw/commit/e0972db7a2929ce82a2675f8b6b0535a8709aebe) | 03-25 17:30 | fix | stop leaking reply tags in iMessage outbound text |
| [f63c4b0](https://github.com/openclaw/openclaw/commit/f63c4b0856d6a898b28076c1d388c974625df58a) | 03-25 17:21 | test | keep vitest on forks only |