OpenClaw 更新分析 — 2026-03-24
概览
过去 24 小时(2026-03-23T05:04Z ~ 2026-03-24T05:04Z)共有 11 个 commits 合并入主分支,涉及 4 个主要方向:MS Teams 扩展大幅升级、Cron/Heartbeat 行为修复、UI 细节打磨、Doctor 命令稳定性改进。整体活跃度高,社区贡献者质量较好。
| 类型 | 数量 |
|---|---|
| feat | 2 |
| fix | 7 |
| style/refactor | 1 |
| test | 1 |
重要变更(逐条分析)
🚀 [feat] MS Teams 扩展 — 全面升级 AI Agent UX (`cd90130`)
模块: extensions/msteams
作者: Sid Uppal (@SidU)
PR: #51808
最大的一笔变更。将 Teams 扩展从 @microsoft/agents-hosting 迁移到官方 Teams SDK(@microsoft/teams.apps + @microsoft/teams.api),并实现了微软 AI UX 最佳实践:
- AI 标识徽章:所有机器人消息带 AI 生成标签 + 点赞/踩反馈按钮
- 流式响应:1:1 聊天支持 Teams streaminfo 协议,用户体验大幅提升
- 欢迎卡片:安装时展示可配置的提示启动器
- 反馈反思机制:负面反馈会在后台触发 AI 自我反思(reflective learning)
- 输入指示器:私聊 & 群聊支持 typing indicator(频道聊天中禁用)
- 状态进度条:LLM 处理时展示状态更新
- 安全改进:JWT 验证通过 Teams SDK,图片下载 auth 白名单修复,预解析认证门禁
- Bug 修复:反思 dispatcher 生命周期泄露、Windows 路径冒号安全问题、冷却缓存无边界增长
影响: 对使用 Teams 渠道的用户影响极大,体验接近一线商业 AI 助手。
🚀 [feat] MS Teams — 消息编辑/删除支持 (`6e97001`)
模块: extensions/msteams
作者: sudie-codes
PR: #49925
为 Teams 扩展增加 edit/delete 动作处理器,支持 in-thread 编辑/删除,补全了 channel runtime 的 editMessageMSTeams/deleteMessageMSTeams 接口。
影响: Teams 用户现在可以正常使用消息编辑删除功能,与其他渠道齐平。
🔧 [fix] Cron Heartbeat 提示抑制 (`ea62655` + `9d21be4`)
模块: agents/cron
作者: Protocol-zero-0(贡献),steipete(合并)
PR: #53152
核心问题: cron 触发的嵌入式运行会继承 default-agent 的 heartbeat 提示,导致非 cron 会话目标去读取 HEARTBEAT.md,污染计划任务轮次。
修复: cron 触发的嵌入式运行不再注入 heartbeat 提示。Memory 触发和无触发器运行仍然保留 heartbeat 提示注入。
影响: 直接影响我们当前的使用方式! 我们的 cron 任务(如本报告的 cron)不再会意外收到 HEARTBEAT.md 提示,行为更纯净可预期。这是一个重要的正确性修复。
🧪 [test] Heartbeat 提示触发覆盖 (`9f86314`)
模块: tests/agents
作者: Protocol-zero-0
补充测试,文档化 default-agent heartbeat 提示对 memory 触发和无触发器运行仍然适用,而 cron 被排除在外的行为规范。测试由 Cursor 辅助编写。
🎨 [style/fix] Agent 文件预览 & 使用量弹窗优化 (`da5b7ff`)
模块: ui/agent-context
作者: Val Alexander (@BunsDev)
PR: #53382
UI 细节打磨:
- Workspace 路径变为可点击链接(跳转到对应文件面板)
- Markdown 预览对话框调整宽度、对齐、缩进
- 使用量过滤弹窗定位修复(向右展开)
- 侧边栏底部 padding 和 z-index 调整
影响: UI 更易用,文件路径可直接点击导航。
🔧 [fix] Model Provider 解析 — 从 Catalog 而非缓存 Session (`be20eeb`)
模块: ui/app-render, slash-command-executor
作者: HCL
核心 Bug: 切换模型时,UI 使用 session 的旧 modelProvider 来拼接模型 ID,比如用了 zai/deepseek-chat 而正确应该是 deepseek/deepseek-chat,导致「model not allowed」错误。
修复: resolveModelOverrideValue()、resolveDefaultModelValue() 和 /model slash command 的 3 处调用点均改为通过 model catalog 查找正确 provider,旧 session provider 作为兜底。
影响: 多 provider 环境(混用 deepseek/zai/openai 等)下切换模型不再报错。Co-authored by Claude Opus 4.6 🤖
🔧 [fix] Config Clobber 取证 (`5ab3782`)
模块: core/config
作者: steipete
添加了 config 被覆盖时的 forensic 日志,便于诊断配置文件神秘被重写的问题。背景应该是 PR #53382 发现的配置覆盖竞态条件。
影响: 诊断能力提升,对日常使用无感知影响。
🔧 [fix] Doctor 命令三连修 (`67c7f98` + `d8aada9` + `3359dcf`)
模块: cli/doctor
作者: giulio-leone
三个 doctor 命令相关修复(Copilot 协助):
1. 跳过更新期间的服务配置修复:openclaw update 时不应该触发 service config 修复,避免干扰更新流程
2. 保留 no-restart 标志:doctor fix 时不应重置 no-restart 选项
3. 非交互模式下 --fix 正常工作:openclaw doctor --fix --non-interactive 现在能自动接受推荐修复(entrypoint drift 等),不再卡住等待用户输入
影响: 服务器/CI 环境下自动更新更可靠,不会因 doctor 流程卡住。
架构观察
1. Teams 扩展成熟化:两个 Teams 相关的大 PR 表明微软 Teams 是 OpenClaw 的重点商业拓展方向,正在向 enterprise-grade AI agent UX 对齐。
2. Cron/Heartbeat 机制细化:heartbeat 提示注入逻辑被精细化管理,区分了 cron/memory/triggerless 三种场景。这是 cron 机制逐渐成熟的信号——之前的 "一刀切" 注入策略被替换为更精准的上下文感知注入。
3. 社区贡献活跃:本期 11 个 commits 来自 5+ 个不同贡献者(SidU, Protocol-zero-0, BunsDev, HCL, giulio-leone),steipete 主导 code review。说明项目进入良性社区协作阶段。
4. AI 辅助开发普及:多个 commit 标注 Co-authored-by: Claude Opus 4.6 或 Made-with: Cursor,OpenClaw 自己在吃自己的狗粮。
对我们的影响
| 变更 | 影响级别 | 行动建议 |
|---|---|---|
| Cron heartbeat 提示抑制 | ⭐⭐⭐ 高 | 无需任何修改,行为自动改善。我们的 cron 任务现在不再会意外接收到 HEARTBEAT.md 内容 |
| Model provider 解析修复 | ⭐⭐ 中 | 如果你在用多个 provider(deepseek + 其他),升级后切换模型不再报错 |
| Doctor 非交互修复 | ⭐⭐ 中 | 如果有自动化更新脚本用到 `openclaw doctor --fix`,升级后会更可靠 |
| UI 改进 | ⭐ 低 | 纯 UI 优化,无需关注 |
| Teams 扩展升级 | ⭐ 低 | 我们未使用 Teams,暂不影响 |
建议: 尽快运行 openclaw update 获取 cron heartbeat 修复。
原始 Commits
| SHA | 时间 | 作者 | 描述 |
|---|---|---|---|
| [cd90130](https://github.com/openclaw/openclaw/commit/cd90130877f1817e2e76459370ff643861b098c9) | 2026-03-24T05:03Z | SidU | msteams: implement Teams AI agent UX best practices (#51808) |
| [ea62655](https://github.com/openclaw/openclaw/commit/ea62655e193d18b19c524f1c26a7391aecf2e6ce) | 2026-03-24T04:53Z | steipete | fix: land cron heartbeat prompt suppression (#53152) |
| [9f86314](https://github.com/openclaw/openclaw/commit/9f863140d567a2340488e77f10821f768080e582) | 2026-03-23T21:06Z | Protocol-zero-0 | test(agents): cover additional heartbeat prompt triggers |
| [9d21be4](https://github.com/openclaw/openclaw/commit/9d21be419336c1d679ab33d95027d36b6206ff66) | 2026-03-23T20:40Z | Protocol-zero-0 | fix(agents): suppress heartbeat prompt for cron-triggered embedded runs |
| [da5b7ff](https://github.com/openclaw/openclaw/commit/da5b7ff0afaf47d23a7ac76f86761e60f1a2f645) | 2026-03-24T04:55Z | BunsDev | style(ui): polish agent file preview and usage popovers (#53382) |
| [be20eeb](https://github.com/openclaw/openclaw/commit/be20eebc21692ac9e1113a0104af8e2ad70cbeae) | 2026-03-23T23:05Z | hclsys | fix(ui): resolve model provider from catalog instead of stale session default |
| [5ab3782](https://github.com/openclaw/openclaw/commit/5ab378221582a793428efd39ed37a33b32227dd5) | 2026-03-24T04:49Z | steipete | fix: add config clobber forensics |
| [67c7f98](https://github.com/openclaw/openclaw/commit/67c7f98c328bbf5d8cf58e6ab523e9ad7061b059) | 2026-03-24T03:54Z | giulio-leone | fix(doctor): skip service config repairs during updates |
| [d8aada9](https://github.com/openclaw/openclaw/commit/d8aada9d4516dc865e2e6a5bec6a2010552882b6) | 2026-03-23T22:45Z | giulio-leone | Preserve no-restart during update doctor fixes |
| [3359dcf](https://github.com/openclaw/openclaw/commit/3359dcfdcf174a67551e248ea3805e9f3087f2fa) | 2026-03-23T22:15Z | giulio-leone | fix(doctor): honor --fix in non-interactive mode |
| [6e97001](https://github.com/openclaw/openclaw/commit/6e970010f77ba6bb7175bfc6c939db5abb8eaeb1) | 2026-03-24T04:42Z | sudie-codes | msteams: add message edit and delete support (#49925) |