OpenClaw 更新分析 — 2026-03-30
> 数据窗口:2026-03-29T05:00Z — 2026-03-30T05:00Z
> 贡献者:Vincent Koc (@vincentkoc)、Gustavo Madeira Santana (@gumadeiras)
概览
今日活跃度极高,过去 24 小时内共有 12+ 条 commits,全部集中在 2026-03-30 04:50–05:00 UTC(北京时间 12:50–13:00)。这是一次集中的内部架构重构冲刺,围绕两个核心主题展开:
1. 任务执行器(Executor)大重构 — 为 ACP 和 subagent 两类任务调度引入统一执行门面(Facade)
2. Runtime 与 Telegram 类型化清理 — 消除 typing lease 冗余代码、修复 QMD 类型合约
无面向用户的新功能(feat),以 refactor + fix + 测试加固 为主。
重要变更(逐条分析)
🔧 [refactor] Executor Facade 三部曲(PR #57478 / #57481 / #57482)
涉及 commits:
126f773—refactor(tasks): route acp through executor (#57478)ec13f6d—refactor(tasks): route subagents through executor (#57481)1c90538—refactor(cron): split main and detached dispatch (#57482)
改了什么:
这是最核心的一组变更,分三个 PR 逐步落地:
1. 先抽象出 executor facade(统一执行入口)
2. 提取 delivery policy(投递策略层)
3. 将 ACP 任务路由 改走 executor
4. 将 subagent 任务路由 也改走 executor
5. 最后拆分 cron 的 主派发(main dispatch) 和 独立派发(detached dispatch)
用户影响:
对普通用户透明,但这是一次重要的内部解耦。将来为不同类型的任务(cron、subagent、ACP 会话)独立调整执行行为、错误处理、重试策略将变得容易。cron 任务稳定性可能有微小提升。
🔧 [refactor] Runtime:Telegram typing lease 清理
涉及 commits:
b33a18e—Runtime: remove dead telegram typing lease0e078e8—Runtime: dedupe typing lease logic
改了什么:
删除了 Telegram 频道中已死的 typing lease 代码,并合并了重复的 typing lease 逻辑。"typing lease"是控制「机器人正在输入...」指示器生命周期的机制。
用户影响:
Telegram 用户理论上可能注意到「正在输入」状态更准确/稳定。代码更简洁,减少潜在的状态泄漏 bug。
🐛 [fix] Memory:QMD 医生合约类型修复
涉及 commits:
16b4520—Memory: fix QMD doctor contract typing
改了什么:
修复了 QMD(Quick Memory Doctor,快速内存诊断器)的类型合约定义。
用户影响:
QMD 相关功能的运行时类型错误将减少,内存诊断/检测更可靠。
🧪 [test] 测试套件加固(4 commits)
涉及 commits:
4be290c—fix(test): trim onboarding registry imports10723a0—Tests: tighten scoped channel account fixturesfca8880—Tests: reuse QMD availability mock type73b128e—Tests: trim channels add registry importsc842ca0—fix(test): trim channel account registry imports
改了什么:
清理测试文件的冗余 import、收紧 channel account fixture 的作用域、复用 QMD 可用性 mock 类型。
用户影响:
无直接影响。测试质量提升意味着未来版本回归风险降低,CI 速度可能略有提升。
架构观察
Executor Facade 模式的意义
这次重构将任务执行从「各自为政」(ACP 一套逻辑、subagent 一套逻辑、cron 一套逻辑)走向统一执行门面。这种设计的好处:
Before:
cron → 直接调度
subagent → 直接调度
ACP → 直接调度
After:
cron ──────┐
subagent ──┼→ ExecutorFacade → DeliveryPolicy → 实际执行
ACP ───────┘
- DeliveryPolicy 独立 — 可以为不同场景配置不同的投递行为(如超时、重试、优先级)
- cron 主/独立派发分离 — 主循环派发和独立(detached)任务派发不再耦合,提升 cron 的可预测性
主要贡献者分工
| 贡献者 | 重点 |
|---|---|
| @vincentkoc | 架构设计,主导 executor 重构 PR |
| @gumadeiras | Runtime/Memory 清理,测试加固 |
两人并行工作,今天凌晨集中合并了大量准备中的变更。
对我们的影响
| 维度 | 评估 | 说明 |
|---|---|---|
| 即时稳定性 | ✅ 中性 | 均为内部重构,无破坏性变更 |
| Cron 任务 | ✅ 微改善 | dispatch 分离后逻辑更清晰 |
| Telegram 通道 | ✅ 微改善 | typing lease 清理 |
| Subagent 派发 | ⚠️ 关注 | 路由逻辑改变,如遇异常需排查 executor 层 |
| ACP 会话 | ⚠️ 关注 | 同上,路由走了新的 executor facade |
| 升级建议 | 🔄 可升级 | 无破坏性变更,建议跟随更新 |
行动建议:
1. 下次 npm update -g openclaw 后,重点观察 cron 任务和 subagent 派发是否正常
2. 如遇 subagent/ACP 会话异常,查看是否与 executor 新层有关
3. Telegram 用户可观察「正在输入」状态是否更流畅
原始 commits
| SHA | 时间 (UTC) | 消息 | 类型 | 作者 |
|---|---|---|---|---|
| [1c90538](https://github.com/openclaw/openclaw/commit/1c9053802a98fbcd42bda03c3d5fa301b0e65318) | 04:59:55 | refactor(cron): split main and detached dispatch (#57482) | refactor | vincentkoc |
| [4be290c](https://github.com/openclaw/openclaw/commit/4be290c15ff0181e88aaac6c3ca0dd830123c9c3) | 04:59:28 | fix(test): trim onboarding registry imports | fix/test | vincentkoc |
| [10723a0](https://github.com/openclaw/openclaw/commit/10723a0013532d3cc1b1a0452130404dcb3029c5) | 04:59:01 | Tests: tighten scoped channel account fixtures | test | gumadeiras |
| [fca8880](https://github.com/openclaw/openclaw/commit/fca8880968b8ea69aa1f4e0c35d064dd540d9575) | 04:57:59 | Tests: reuse QMD availability mock type | test | gumadeiras |
| [ec13f6d](https://github.com/openclaw/openclaw/commit/ec13f6d73eb581f8d702773c0e506cd57d385697) | 04:59:23 | refactor(tasks): route subagents through executor (#57481) | refactor | vincentkoc |
| [126f773](https://github.com/openclaw/openclaw/commit/126f77315f0baca8c25bacc9aa075e511f93eb93) | 04:58:51 | refactor(tasks): route acp through executor (#57478) | refactor | vincentkoc |
| [0e078e8](https://github.com/openclaw/openclaw/commit/0e078e8bc0e5a38a661547d2f6ceb94ad66e0c2d) | 04:57:33 | Runtime: dedupe typing lease logic | refactor | gumadeiras |
| [73b128e](https://github.com/openclaw/openclaw/commit/73b128e37dbcccc7358d811f7ebd4364ba364340) | 04:53:56 | Tests: trim channels add registry imports | test | gumadeiras |
| [16b4520](https://github.com/openclaw/openclaw/commit/16b452040b0bb2c9c8bc43e8a689424022e8e949) | 04:53:45 | Memory: fix QMD doctor contract typing | fix | gumadeiras |
| [b33a18e](https://github.com/openclaw/openclaw/commit/b33a18e2800d9c83c245994bd3328aa8901cfb49) | 04:51:59 | Runtime: remove dead telegram typing lease | refactor | gumadeiras |
| [c842ca0](https://github.com/openclaw/openclaw/commit/c842ca0166862d69a8a525f9e3fec81fc113ef83) | 04:50:39 | fix(test): trim channel account registry imports | fix/test | vincentkoc |