v2026.8.1: 插件与集成
管理员现在可以通过 Control UI 浏览、搜索、安装、启用、禁用和移除插件,同一中心还可以安装经过精选的 ClawHub 技能并添加经过审核的 MCP 连接器。受管安装会在需要时暂停以进行来源审查,将失败的更改回滚到可重试状态,并在不丢弃健康配置的情况下修复过期或不完整的记录。插件更新还会让正在进行中的工作继续使用其启动时的版本,只有在替代版本成功加载后,后续工作才会切换到新版本。
ClawHub 安装会在桌面端和移动端之间携带所选发布者、版本、扫描状态和来源;当连接或目录发生变化时,MCP 服务器会独立恢复;插件作者可获得类型化的 Gateway 和 SDK 契约,用于基于 OpenClaw 进行构建。与厂商无关的 Agent 插件可以将技能和受支持的 MCP 服务器与作用域存储结合在一起,为集成提供从软件包到运行系统的更清晰路径。
安装和管理插件
管理员现在可以在 Control UI 中浏览和搜索已安装的插件,查看每个插件提供的内容,启用或禁用它,移除外部插件,安装经过精选的 ClawHub 结果,并添加经过审核的 MCP 连接器。只读操作员可以查看相同的清单,而 Web 表单无法安全表示的高级来源、更新和配置仍可通过命令行使用。
从任意软件包、仓库、归档、本地路径或市场来源进行的首次安装会暂停以进行明确审查。仍需要设置的插件可以保持禁用状态,失败的受管安装会将部分更改回滚,以便可以正常重试。修复可以恢复过期或不完整的安装代次,同时保留健康配置,而完整性或版本漂移仍然需要审查。
插件列表和诊断现在可以区分已禁用的插件、发现或验证失败、活动运行时失败以及后台服务失败。使用 plugins doctor 进行本地发现和配置检查,使用 openclaw health 检查运行中系统的插件和服务状态。某些安装和移除操作仍需要重启后才能生效。
来源和完整变更列表
改进
- 要求对任意插件来源进行确认 #102197
- 在 Control UI 中管理插件和 MCP 连接器 #103176
- 允许 Codex 轮次使用已批准的工作区目录插件 #104188
- 将插件控制项直接放在卡片和行上 #106040
- 在 Control UI 中显示插件目录插图 #109510
- 为安装策略警告添加经审查的确认 #116489
- 加速每个
openclaw plugins list表单 #117900 - 大幅加快已配置 CLI 帮助和状态的加载速度 #124562
- 稳定 Plugins 中心的导航和控制 #126061
- 在插件列表中使用受信任的托管元数据 #109629
- 按最近更新时间对精选插件排序 #110273
- 澄清 Plugins 导航并对齐设置控制项 #110482
- 使用当前元数据快照加速插件列表 #115353
- 通过 Gateway 加速钩子状态命令 #118288
- 加速 Doctor 插件契约检查 #120811
- 加速冷启动 Telegram 频道设置 #122955
- refactor(plugins): 将同意变更与清单分离 #131146
- perf(plugins): 将状态数据库写入机制排除在元数据读取路径之外 #131417
- 对齐插件过滤器样式 #106168
- 澄清 MXC 沙箱设置并警告出站网络访问 #110256
- 添加规范的 Plugins Discover URL #115587
- 加速插件 doctor 和设置加载 #120876
- 移除已退役的 ACPX 配置键 #120937
- 延迟渲染屏幕外的插件行 #125585
- 在插件兼容性警告中添加故障排查步骤 #94019
Bug 修复
- 阻止在插件和技能安装中注入 Git 选项 #102398
- 减少插件列表启动内存占用 #103132
- 在 npm 元数据检查失败时保留健康插件 #107063
- 从不完整的锁元数据中恢复受管 npm 插件 #107294
- 从过期的受管安装中恢复插件生命周期命令 #107691
- 升级后加载活动的受管插件代次 #111141
- 序列化插件生命周期更改并保留需要设置的安装 #112763
- 报告插件安全扫描中的所有可执行调用 #116222
- 在管理视图中保留所选代理的工作区插件 #117265
- 在恢复期间保留插件安装记录 #121045
- 在多入口插件包的整个生命周期中保持一致性 #121174
- 授权来自已发现 Codex 市场的插件 #122389
- 拒绝空白的技能凭据值 #108848
- 保持 Control 的精选插件与受信任的 ClawHub 策展一致 #109418
- 将不可读的插件清单报告为权限失败 #110200
- 让根命令和插件 CLI 帮助能够干净退出 #111322
- 在 Doctor 修复期间遵循配置的插件加载路径 #113200
- 跨兼容性 ID 保留插件设置 #114521
- 在槽位选择前强制实施受支持的插件类型 #114537
- 重新安装后加载替代 npm 插件 #114713
- 防止有效插件被过期的 npm 元数据隔离 #115610
- 在 Codex 迁移期间报告损坏的策展市场 #115865
- 从仅 pnpm 的覆盖语法中恢复插件安装 #116245
- 保留技能凭据并对配置更新进行排序 #116749
- 在 plugins doctor 中显示可操作的警告 #117357
- 市场更新后刷新运行中的 Gateway #117724
- 移除已禁用插件拥有的频道配置 #118127
- 插件更新保留索引策略并安全回滚 #119228
- 将安全的插件安装警告返回给管理员 #120783
- 从清单中恢复插件配置标签 #121329
- 修复捆绑插件清单和 Talk 语音配置 #121354
- fix(plugins): 允许在出站频道架构不一致时安装 #122984
- 为去重后的捆绑插件保留受管所有权 #123063
- 在没有系统所有者的情况下保持插件清单可用 #123378
- 在插件检查期间保留较新数据库错误 #125493
- fix(plugins): 在离线市场中列出 MXC #126211
- 在瞬时启动失败后恢复插件目录 #126815
- fix(ui): 移除过时的插件生命周期反馈 #127273
- fix(plugins): 在安装时报告缺失清单而不是误导性的 ID 不匹配 #128527
- fix(cli): 渲染钩子报告 JSON 失败 #128641
- fix(cli): 在插件安装提示中保留活动目标 #129283
- fix(plugins): 在抛出的失败中回滚受管 npm 安装状态 #130884
- fix(plugins): 拒绝在现有受管检出上执行 git 安装 #131175
- fix(plugins): 在状态检查期间避免重复读取清单 #131334
- fix(cli): 避免在启动时重复准备插件 #131503
- fix(plugins): 在注册表恢复前保留读取错误 #131521
- 为新添加的扩展刷新过期的插件注册表 #96080
- 在不重写用户配置的情况下更新插件记录 #98422
- 在深度安全审计期间限制插件清单读取 #101773
- 当主目录变量为空时正确查找全局插件 #102413
- 防止插件更新和卸载误读原型命名的记录 #102872
- 在插件修复期间遵循 Doctor 当前的安装策略 #103808
- 允许 Control UI 管理员通过严格允许列表启用已安装插件 #106318
- 在批准前恢复插件来源验证 #107768
- 拒绝空白的必填钩子环境值 #108928
- 允许 CLI 插件卸载以缩减配置 #110991
- 修正可选插件 CLI 启用指南 #112019
- 在插件列表 JSON 中省略未观察到的 harness ID #112235
- 通过 npm 包名称查找 Control UI 插件 #113933
- 解释 npm 插件安装静默失败的原因 #114215
- 报告缺失的插件文件而不产生误报的边界警告 #115053
- 在 beta 版上停止重复的 bundledDiscovery 迁移通知 #115208
- 将无事件钩子报告为未就绪 #116083
- 一致地显示无事件钩子状态 #116127
- 报告缺失的插件依赖并给出可操作的错误提示 #117029
- 在经身份验证的 HEAD 请求中保留图标元数据 #117079
- 阐明 plugins doctor 实际检查的内容 #117160
- 保持 marketplace JSON 输出可解析 #117307
- 在软件包安装之前拒绝重复的钩子名称 #117439
- 在冷插件清单中报告 manifest 声明的工具 #117461
- fix(plugins): 报告已注册的检查能力 #117518
- 当插件策略阻止启用时返回错误 #117536
- 在 CLI 输出中解释已过滤的已安装插件 #117556
- 在 plugins doctor 中显示已验证的插件警告 #118526
- 在卸载期间移除过时的插件加载路径 #118930
- 加快对缺失频道插件的状态检查 #119203
- 对格式错误的插件图标路由返回 404 #119559
- 在 HEAD 请求上保留缺失图标的元数据 #120133
- 阻止 Doctor 将频道元数据视为插件 #120891
- 防止重复的 Skills 页面预加载请求 #123705
- 在聊天安装后显示所需的插件设置 #123727
- 当 skills 信息缺失时返回失败状态 #123997
- 显示插件清理、设置和 CLI 加载失败 #124570
- 让钩子开关可以选择代理工作区 #124761
- 一致地报告过时的插件注册表 #125048
- 当无法读取已安装插件的元数据时发出警告 #125117
- 显示插件策略拒绝而不采用崩溃框架 #125304
- 阻止全新安装显示误报的插件注册表修复警告 #126799
- 在 Skills 命令中拒绝未知的代理 ID #126954
- 从失败的 skills 命令返回 JSON 错误 #127016
- fix(cli): 为钩子启用/禁用失败提供后续步骤 #127370
- fix(cli): 呈现插件搜索的 JSON 失败 #127679
- fix(plugins): 在漂移修复命令中规范化修正版本 #127800
- fix(plugins): 在默认插件列表中显示加载错误 #128849
- fix(plugins): 名称冲突时检查会加载错误的插件 #129079
- fix(plugins): doctor 将受支持的纯钩子插件报告为不健康 #129083
- fix(plugins): 列表静默隐藏发现和注册表失败 #129091
- fix(plugins): 正常禁用被报告为错误 #129158
- fix(health): 已激活插件的失败被静默省略 #129161
- fix(cli): 将插件更新恢复提示保留在活动容器内 #129231
- fix(plugins): 在另一个插件失败时保留健康的 CLI 命令 #129248
- fix: 当 marketplace 列表失败时返回 JSON #129263
- fix(plugins): 在 Plugins Hub 中将缺失依赖显示为错误 #129480
- fix(plugins): 避免插件检查中出现重复的命令名称 #130339
- fix(plugins): 在运行时检查中报告 registerFull 路由 #130904
- fix: 在匹配键别名之前检查确切的钩子名称 #131081
- fix(ui): 使插件中心的标题和选项卡与内容对齐 #131239
- fix(ui): 缩小过大的插件垃圾桶图标 #131280
- fix(plugins): 从清单中隐藏已卸载的 TGZ 插件 #131880
- fix(plugins): 每次调用解析一次 CLI 插件元数据 #131884
- fix(plugins): 在 CLI 和聊天检查中显示包来源 #133140
文档
- 修正扩展安装命令 [#112057](https://github.com/openclaw/openclaw/pull/112057)
- docs(plugins): 在生成的插件清单中注册 imap [#130363](https://github.com/openclaw/openclaw/pull/130363)
- docs: 修正 Copilot Proxy 的默认启用状态 [#131164](https://github.com/openclaw/openclaw/pull/131164)
- docs(plugins): 修正内置覆盖优先级 [#132181](https://github.com/openclaw/openclaw/pull/132181)
</details>
ClawHub、Claws 与技能共享
ClawHub 现在会在审核和安装过程中携带所选发布者、版本、扫描结果和确切来源,即使两个技能同名也是如此。在技能或插件安装之前,其 ClawHub 安全审计会显示确切发布版本、Safe(安全)、Review(需审核)或 Blocked(已阻止)结果、ClawHub 概览和审计链接。“需审核”结果会提供相应上下文,并继续走常规确认流程,而非设置第二道风险门槛;而“已阻止”发布仍然无法安装。Mac、iPhone、iPad 和 Android 用户使用相同的发布者、版本和审计契约,而外部 skills.sh 结果则保留其固定的来源身份,并明确标记为不在 ClawHub 扫描范围内。
除非操作员明确强制覆盖,否则技能更新会保护本地编辑和并发编辑。直接下载会验证声明的摘要,并在支持的大小限制内检查完整归档;没有指纹的旧版受管安装需要一次强制更新来建立该基线。
实验性 Claws 可将代理与受管工作区文件、技能、插件、MCP 服务器和计划任务打包在一起。你可以在应用前预览确切计划;更新和移除仅作用于 Claw 拥有的资源;共享资源会保留在原位,除非你特意选择冲突感知清理。使用相同 ID 重新创建 Claw 时,现在会等待旧 Claw 的清理完成,因此中断的移除会保持隔离且可重试,而不会删除替换状态。Claws 仍受 OPENCLAW_EXPERIMENTAL_CLAWS=1 控制;不确定的外部操作可能留下可见的部分状态,需要重新制定计划;此外,该包不会携带其不拥有的凭据、提供方、绑定、任意本地路径、可执行配置、会话或主机状态。
来源与完整变更列表
改进
- 安全预览实验性 Claw 代理包 #101328
- 添加经同意的 Claw 代理安装 #101755
- 在 Android 上管理技能并从 ClawHub 安装 #101864
- 创建 Claw 管理的受管工作区文件 #101973
- 绑定签名的 ClawHub 目录信任并使其过期 #101981
- 为实验性 Claws 安装精确的 ClawHub 包 #102228
- 检查并安全移除实验性 Claw 代理 #102296
- 将已安装的代理导出为可移植 Claw 包 #102306
- 让实验性 Claws 安全管理 MCP 服务器所有权 #102406
- 向 Doctor 添加实验性只读 Claw 生命周期诊断 #102427
- 安全预览分组的 Claw 代理更新 #102959
- 将受同意约束的更新应用到已安装的 Claws #102982
- 让 Android 技能管理更易于浏览和审核 #105592
- 在 iOS 和 macOS 上添加原生技能管理 #105814
- 添加人工编写的 CLAW.md 清单 #111391
- 安装外部 skills.sh 目录引用 #112751
- 将可移植 Claw 身份与 OpenClaw 策略分离 #112773
- 让 CLAW.md 携带可移植的代理提示词 #113454
- 添加可移植的 OpenClaw 配置文件与原生 Claw 引导 #115237
- 随 Claw 包导出经审核的首次运行说明 #115371
- 为 schema-v1 Claw 配置文件添加插件要求 #115962
- 添加实验性本地 Claw 创作生命周期 #117037
- 加载仓库技能以及代理工作区技能 #125786
- feat(clawhub): 在安装前显示安全审计 #131233
- 在刷新和快照复用期间验证签名的市场订阅源 #98338
- 将技能上传暂存移入 SQLite #108346
- 在 Control UI 中显示 ClawHub 技能图标 #114152
- 为签名的市场订阅源配置信任密钥 #98316
- 在 CLI 输出中公开签名的市场订阅源信任 #98350
- 通过 grizzly CLI 添加 Bear Notes 技能 #120
Bug 修复
- 重试瞬态 ClawHub 包读取 #105388
- fix(skills): 阻止技能更新破坏本地技能更改 #118190
- 在安装过程中保留外部 ClawHub 技能身份 #124250
- fix(skills): 在解压前拒绝被篡改的下载归档 #129486
- 遵循标准 ClawHub 插件 API 比较器 #106889
- 规范化代理 git 包安装身份 #107637
- 在密钥轮换期间保留签名订阅源的回滚保护 #108342
- 拒绝签名插件目录中的畸形时间戳 #109742
- 接受标准 DSSE 插件目录订阅源 #110037
- 在首次加载技能时显示 ClawHub 安全判定 #110166
- 安装正确的推荐技能并保持失败可重试 #111518
- 显示并安装备选技能 CLI 要求 #113767
- 强化实验性 Claw 的添加和移除生命周期 #114670
- 在 Claw 就绪检查中报告缺失的插件凭据 #114899
- 恢复技能依赖安装的同意流程 #116644
- 在审核和安装过程中保留所选 ClawHub 发布者 #121697
- 安全恢复 Claw 生命周期所有权 #123254
- 在技能解压前拒绝不完整的 tar 列表 #125406
- fix(claws): 未更改的所属技能不再阻止更新 #126479
- fix(cli): 拒绝源技能中仅用于 ClawHub 的标志 #128162
- fix(claws): 在清理期间保持删除隔离 #128500
- fix(skills): 限制安装程序下载 #129630
- fix(native): 移除不支持的 ClawHub 确认重试 #131979
- fix(android): 停止提供过时的 ClawHub 确认重试 #132016
- 恢复通过 ClawHub 发布 Fish Audio 05e3ce1
- 迁移 Claude 命令描述时保留 Unicode #102616
- 将 ClawHub 推荐刷新保持在超时时间内 #105411
- 忽略畸形的 ClawHub Retry-After 时间 #105479
- 通过受管锁文件链接全局安装的 ClawHub 技能 #106479
- 拒绝 ClawHub 推荐订阅源中的不可能日期 #106942
- 在 ClawHub 技能验证失败时发出警告 #107143
- 在 ClawHub 发布错误中保留 emoji #108172
- 忽略畸形的 ClawHub 速率限制重置提示 #108815
- 为重复的 ClawHub 技能结果显示发布者 #110903
- 拒绝 ClawHub 响应中的畸形 UTF-8 #111164
- 将 ClawHub 技能搜索结果保持在一个终端行内 #111441
- 拒绝托管插件目录中的畸形 UTF-8 #111768
- 阻止 doctor 将当前 OCM 技能路径标记为过期 #112236
- 澄清未验证插件的信任指南 #112249
- 统计成功的 ClawHub 插件安装 #113133
- 通过受管代理路由技能验证 #113683
- 为版本固定的技能保留启动保护措施 #114924
- 将技能命令提示保持在所选实例上 #117555
- 安全移除按所有者限定的 ClawHub 技能 #119606
- 将 Fish Audio 插件迁移到其规范身份 #119900
- 保持技能验证错误机器可读 #123761
- 保持 Claws 更新 JSON 输出可解析 #124130
- 为缺失的 ClawHub 技能提供可操作错误 #124764
- 使缺失技能验证错误可操作 #125317
- 保持 Claw 项目工件在不同运行时下确定性一致 #125801
- 修复 ClawHub 预发布兼容性检查 #126020
- 将缺失的 ClawHub 技能指向搜索 #126987
加载和更新插件
插件更新 现在会为正在进行中的工作保留一个运行时代际。已接受的消息、补全和 worker 会以它们启动时的插件版本完成运行,后续工作只会在替换版本成功加载后才切换到新版本。如果热重载失败,OpenClaw 会恢复上次活跃的命令、提供者、钩子、内存及其他注册项。
OpenClaw 还会跨轮次复用已准备的插件元数据和运行时,而不是每次重新构建相同的环境,同时健康状态会直接显示失败的激活、清理或后台服务。已知的插件自身故障可以被隔离,而无需将健康插件或整个 OpenClaw 下线;但无效配置、迁移失败、所有权不明确以及无法验证的状态仍会阻止激活。
上下文引擎插件在新轮次中仍会被选中,并且可以通过将限制应用于已接受的轮次而非全部累积历史,在长时间会话中推进持久状态。现有的 v1 引擎在采用新接口之前继续保持其全历史契约,单个超过 8 MiB 或 20,000 事件的已接受轮次仍然会停止。
来源和完整变更列表
改进
- 降低捆绑的 Ollama 插件带来的非活动启动成本 #119745
- 跨热 Gateway 轮次复用插件准备结果 #105646
- 为插件入口副作用添加持久的重放防护 #110846
- 在重复的目录读取中复用插件通道发现结果 #114324
- 在加载期间复用已准备的插件元数据 #114807
- 减少插件密集场景下的 Gateway 启动时间和内存 #115020
- 从 Gateway 轮次中移除重复的插件指纹计算工作 #118334
- 在 agent 工具构建期间复用已准备的插件上下文 #118398
- 将可选的 xAI 能力运行时推迟到首次使用时 #119374
- 延迟加载 Anthropic 会话目录 #119619
- 复用未更改的沙箱技能快照 #121379
- perf(plugins): 在 secrets 热路径上复用生命周期元数据 #126629
- 在技能监视器刷新期间复用插件元数据 #127088
- perf(plugins): 统一渐进式插件缓存所有权 #131442
- perf(plugins): 在提供者发现期间避免导入 logging #132744
- 避免在路由和状态路径中进行冷插件加载 #109348
- 阻止插件元数据查找轮询磁盘 #114289
- 避免对缺失的插件外观进行重复查找 #124664
- perf(plugins): 每个 CLI 进程复用一个插件元数据快照 #129181
- perf(agents): 避免在流式传输期间创建未使用的扩展上下文 #130158
Bug 修复
- 防止 Codex 插件发现阻塞 agent 轮次 #108311
- 当某个 secret 失败时保持健康技能可用 #109791
- 当某个配置的插件损坏时保持 Gateway 运行 #110239
- 保留捆绑插件的发现和作用域化激活 #114547
- 减少重复的插件注册表路径扫描 #115783
- 在一次性 agent 运行期间保持已安装插件可用 #116336
- 恢复已配置 agent 轮次的已准备运行时复用 #117768
- 统一插件 webhook 路由所有权和启动失败处理 #118203
- fix(plugins): 将格式错误的清单模式与插件加载和配置验证隔离 #119825
- 保留多入口插件和关联的安装源 #120026
- 阻止重复的插件扫描导致 gateway 冻结 #120344
- 在新轮次中保持已配置的上下文引擎活跃 #121461
- 减少重复插件元数据发现导致的 Gateway 停顿 #124844
- 在 agent 运行时路径中保持已分析的插件工具可用 #124947
- 阻止插件元数据重新扫描导致 Gateway 停滞 #125596
- 跨 Gateway 实例隔离插件运行时所有权 #125821
- 防止终止的上下文引擎行降低后续轮次的性能 #126593
- fix: 不透明目标的插件会话绑定失败 #132733
- fix: 在启动时缺少受信任的运行时插件时恢复会话 #132804
- fix(channels): 遵循受信任插件激活契约 (#114492) 9b77c06
- 跨已准备的 Gateway 运行时保留已构建的插件 ef91c81
- 停止对不可用通道插件的重复扫描 #100377
- 防止递归的提示构建钩子分发 #102554
- 当热重载失败时保持活跃插件正常工作 #103812
- 在插件注册失败后清理调度器任务 #106890
- 在注册失败后完全恢复插件状态 #108084
- 在同一个注册中保持有状态的插件钩子和工具 #108110
- 在缓慢的 Telegram 发送期间保留 Device Pair 通知 #108164
- 防止源码安装时出现重复的捆绑插件实例 #108508
- 防止 ACPX 进程清理挂起 #109146
- 在突发期间限制回复钩子的使用元数据 #109610
- 在通道运行时上下文被销毁时释放中止监听器 #109708
- 防止无响应的插件中间件冻结 agent 运行 #110731
- 加载没有清单的已配置独立插件文件 #111515
- 在插件重新加载时刷新提供者元数据 #112699
- 在 CLI 进程退出时释放共享状态租约 #113839
- 跨生命周期和 agent 运行隔离 Gateway 插件状态 #114476
- 在重连期间保留 ACPX 进程所有权 #115247
- 避免 agent 轮次期间的插件元数据停滞 #115426
- 限制插件钩子等待并淘汰过时的注册 #115695
- 在模型所有者之前发布插件激活的 Gateway 配置 #115747
- 跨共享运行时保持 Codex 应用清单最新 #115866
- 在正确的数据库上保持插件注册表状态 #116427
- 恰好一次清理失败的插件服务启动 #116804
- 在插件生命周期变更后刷新通道元数据 #117005
- 修正插件诊断并稳定发现顺序 #117025
- 将延迟的插件转换保存在持久缓存中 #117355
- 保持持久化的插件注册表快照一致 #117561
- 在插件路由就绪之前返回可重试的 503 #117852
- 遏制被拒绝的同步插件钩子 #117988
- 在插件停止时释放 llama.cpp 模型内存 #119238
- 为本地 agent 执行加载已安装的 agent 框架 #119855
- 防止已停止的 ACPX 运行时返回 #120029
- 停止虚假的遗留上下文引擎降级警告 #120722
- 在运行时可用性变化时刷新 ACPX 技能 #121181
- fix(beam): 重试失败的终端镜像上传 #121186
- 在长时间会话中保持持久上下文引擎持续推进 #121647
- 在长时间会话中保持上下文引擎状态持续推进 #122149
- 使插件设置注册具有原子性 #123506
- 保留失败插件诊断而不激活能力 #125046
- 在健康状态中显示插件服务失败 #125366
- 将压缩操作保持在单个已准备的插件代际上 #125688
- 将补全和 worker 保持在单个插件代际上 #125761
- 在 Gateway 轮次中保持单个插件代际 #125990
- 保持 agent 轮次使用其已接纳的插件代际 #126626
- 防止 Gateway 重载后出现过期的插件状态 #126627
- 将 Gateway 启动时的运行时加载限制为活动插件 #126703
- 在生命周期变更时退役可执行插件缓存 #126719
- 加载执行工作区技能时复用已准备好的插件元数据 #126720
- 在过期加载失败后保留已刷新的插件提取器 #126829
- fix(plugins): 使用替换停止超时限制启动失败的服务清理 #126907
- fix(plugins): 在生命周期重置后重新加载被替换的 setup 模块 #128110
- fix(agents): 防止重载导致丢失排队中的回复或恢复过期凭据 #128138
- fix(plugins): 防止重复的后台服务和发现通告器 #128179
- fix(hooks): 在恢复 mtime 的编辑后重新加载可变处理器 #128477
- fix(agents): 保留插件工具终止 #128505
- perf(plugins): 强制仅加载一次——默认凭据来源门控和隔离注册表复用 #128639
- fix(plugins): 在激活回滚后保持通道为权威 #129232
- fix(plugins): 阻止已退役的回调更改运行上下文 #129250
- fix(sessions): 将维护与通道插件解析器隔离 #129490
- fix(plugins): 暴露无效的后台和发现服务 #129651
- fix(agents): 将 fall-through 插件注册表加载限定到活动运行时注册表 #130167
- fix(plugins): 注册期间插件运行时不可用时失败关闭 #130597
- fix(sandbox): 随注册表生命周期退役插件后端 #130662
- fix(plugins): 报告失败的插件斜杠命令,而不是静默忽略它们 #130743
- fix(plugins): 保持 SecretRef 配置可加载 #131310
- fix: Gateway 启动时跨工作区刷新插件失败 #131936
- fix(plugins): 随运行时注册退役加载器缓存 #132093
- fix(plugins): 加载源工件而不丢失凭据目标 #132166
- fix(plugin-sdk): 保留环境 agent 解析 #132541
- fix(gateway): 停止跨进程内重启的堆增长 #132933
- fix(channels): 在 agent 工作区之前解析已注册的插件 (#124709) 4f59053
- 在路由失败后完成插件 HTTP 响应 #102125
- 在 ACPX Codex 错误诊断中保留 Unicode #103738
- 当 agent 停止时取消待处理的 bundle LSP 工具 #104110
- 注册后保持插件运行上下文可用 #107028
- 在插件发现期间忽略 TypeScript 声明文件 #107994
- 通过 manifest ID 识别已配置的插件依赖项 #113691
- 防止仅路径的 bootstrap 文件使 agent 轮次崩溃 #115395
- 在元数据更新后刷新捆绑插件工件位置 #117041
- 使插件验证重启指导与安装无关 #119508
- 保持 ACPX 句柄操作在同一个会话快照上 #120924
- 为直接 agent 入口加载已配置的插件运行时 #121787
- 当插件路由分发失败时返回 HTTP 500 #124033
- 阻止已取消的 llm-task 调用返回过期的 JSON #124673
- 在激活前拒绝缓存的插件加载失败 #126737
- fix(plugins): 限制允许列表警告历史 #127126
- fix(agents): 为通道轮次保留已接纳的运行时代际 #127217
- perf(agents): 复用活动 Gateway 插件代际 #127278
- fix(diffs): 当 runtime.state 不可用时,防止轻量级 CLI 注册导致崩溃 #128360
- fix(plugins): 在检查期间显示已注册的 Gateway 发现服务 #130267
- fix(plugins): 合并 setup 错误并回滚失败的通道 #131983
- fix(plugins): 将并发目录采用限定到每个 agent #132734
MCP 服务器和应用程序
MCP 服务器 现在可以在启动过晚、传输丢失、服务器重启或工具列表变化后恢复其连接和目录,而无需重启 OpenClaw,也不会将健康服务器一并中断。工具结果会保留结构化数据、截图、音频、资源、恢复指引和真实错误状态。首次发现已过期有状态会话的调用仍会失败一次且不重放,因为它可能已经更改了某些内容。
本地 MCP 登录可以在浏览器中完成,保存并验证凭据,并在进程重启后恢复新启动的授权。共享操作员登录仍为默认方式,而受支持的 HTTP MCP 服务器可以选择按人员 OAuth,使每个凭据都绑定到受信任通道、机器人账户和发送者。远程和无头操作员保留手动代码路径,且此首个按人员模式不会添加私有登录投递、自动轮次恢复或 Control UI 账户管理。
MCP Apps 仍为可选启用,在完成所需配置和重启后,可以显示受支持的交互式服务器界面。它们将信任扩展到服务器提供的 UI 代码,重建的会话视图保持只读,并且 app 上下文作为不受信任的输入进入下一轮。无头节点可以将请求-响应 MCP 工具发布到 Code Mode,而 OAuth、流式传输、通知、采样和移动发布仍不属于此首个节点托管版本。
来源和完整变更列表
改进
- 添加请求者范围的 MCP 连接 #106359
- 添加受同意控制的 MCP App 消息桥接和实时主机上下文 #109807
- 添加带工单的只读独立 MCP App 主机 #109861
- 在独立 MCP Apps 中启用工具和资源 #110515
- 让交互式 MCP Apps 提供单轮模型上下文 #111212
- 让原生插件声明 MCP Apps #113224
- 与嵌入式 MCP apps 共享 Control UI 样式 #113464
- 为节点 MCP 服务器提供带类型的 Code Mode 命名空间 #114876
- 为 MCP 服务器添加按请求者 OAuth #122166
- 向 Control UI 添加可选启用的沙箱 MCP Apps #69039
- 节点托管工具、MCP 服务器和技能 #90431
- 懒加载 MCP Apps 聊天桥接 #106288
- 集中管理 MCP OAuth 身份和可恢复登录状态 #122115
- 缓存不可变的捆绑 MCP 配置发现 #79882
Bug 修复
- 从共享聊天 show 输出中隐藏 MCP 凭据 #103396
- 防止 MCP 服务器配置出现在群聊回复中 #103502
- 将 MCP 刷新令牌绑定到其颁发者 #112032
- 在结构化结果旁保留非文本 MCP 内容 #115521
- fix(gateway):拥有独立 MCP App 请求生命周期 #119388
- 在浏览器批准后完成 MCP OAuth 登录 #120431
- 实时恢复节点托管的 MCP 目录和会话 #125092
- 防止过期的 MCP 目录和静默工具故障 #125564
- 将已解决的 OpenClaw 工具故障标记为 MCP 错误 #126472
- 在会话重置或删除后清理过期的 MCP 进程 #93559
- 使 MCP OAuth 凭据在 CLI 和本地 Codex 运行时中可用 #96120
- 抑制 MCP 通知的响应 #101730
- 使用配置的超时限制停滞的 MCP OAuth 请求 #103704
- 保留节点 MCP 配对和断开连接恢复 #104745
- 在静默轮次和重新加载之间保留 MCP App 预览 #105728
- 保留每个 MCP 字面量联合操作 #108054
- 对格式错误的 MCP App CSP 元数据执行失败关闭 #108883
- 在 CLI run 清理后保持共享 MCP 传输存活 #110251
- 让嵌入式 MCP Apps 在视图关闭前完成清理 #111124
- 拒绝 MCP App 沙箱策略中的格式错误 UTF-8 #111282
- 在服务器恢复后重试 MCP 工具目录 #111962
- 在注册表变更期间保持请求者范围的 MCP 解析器 #112579
- 在断开连接和重复超时后恢复捆绑的 MCP 服务器 #113916
- 拒绝保留的
__proto__MCP 服务器名称 #116112 - 限制 MCP 目录分页和加载时间 #116845
- 显示超时而不是让独立 MCP Apps 挂起 #119276
- 隔离过大的 MCP stdout 帧,而不是使主机崩溃 #119379
- 通过浏览器回调完成 MCP OAuth 登录 #120433
- fix(mcp):保留客户端和请求者生命周期所有权 #120894
- 在登录期间重用有效的 MCP OAuth 会话 #122129
- 使 Codex MCP 审批设置和无解路径可操作 #124766
- 解释超时的 Codex MCP 审批 #125860
- 在结构化 MCP 工具结果中保留恢复指引 #125914
- 退役过期的 MCP 传输和进程树 #126101
- 修复 MCP 通道媒体、事件投递和清理 #126592
- fix(node-host):防止故障后 MCP 重连风暴 #128196
- fix(ai):展平根级 anyOf 工具架构时保留根属性 #128799
- fix(codex):使用带点 MCP 工具名称的轮次以静音结束且无回复 #128900
- fix:Gateway 替换后过期的 dashboard app 视图仍会渲染 #130172
- fix(mcp):防止元数据和清理过早加载运行时 #133028
- fix(gateway):保留独立 MCP app HEAD 响应元数据 (#120905) 6f4b9a2
- 在 MCP 工具架构中保留原型命名字段 #102856
- 修复存储在直接包含配置中的 MCP 标志 #103970
- 拒绝并修复不受支持的 MCP 禁用设置 #104495
- 拒绝十六进制 MCP 超时选项 #104633
- 防止过大的计时器设置导致立即 MCP 超时 #105769
- 将过大的 MCP 超时限制到 Node 安全限值 #105784
- 限制并发 MCP doctor 探测 #109870
- 拒绝格式错误的已解码 MCP 沙箱策略元数据 #110275
- fix(mcp):防止分块 stdio 诊断被损坏 #110652
- 当 initialize 超时时使 MCP 设置失败 #111318
- 保持仅资源 MCP 服务器可用 #115169
- fix(agents):为服务器名称 toolsAllow 通配符实例化 MCP #115277
- 在服务器重启后重连有状态 MCP 工具 #115614
- 在 MCP App 沙箱 HEAD 响应中保留 Content-Length #118553
- 使 MCP doctor 遵循 Windows PATH 大小写 #121595
- fix(cli):合并嵌套 MCP configure 和 tools 补丁 #124551
- fix(mcp):去重被阻止的 stdio env 警告 #128102
- fix(mcp):防止 add 替换现有服务器 #128129
- fix(cli):无论大小写如何识别 OAuth 授权头 #129279
- fix(codex):保留已禁用的 MCP 传输 #130872
- fix(doctor):在警告中忽略已禁用的 MCP 服务器 #131352
- fix(agents):在配置变更时使已通告的 MCP 目录失效 #131793
- fix(macos):MCP Apps 保持在 dashboard 内 #132096
构建插件和集成
正在构建 Gateway 客户端或嵌入 OpenClaw 的开发者现在拥有带类型的协议模式、运行时验证、认证、重连、就绪状态、超时,以及浏览器或 Node 入口点指南。Gateway 协议和参考客户端已作为按日历版本管理的 npm 包准备就绪,并将在发布列车发布它们时变为可安装。
插件作者也获得了针对请求者感知钩子、通道设置、CLI 后端、有界提供商流、只读密钥引用和浏览器会议适配器的聚焦契约。钩子策略仍位于通道准入、沙箱、审批、仅限所有者的工具和其他主机策略之下,并且 Codex 钩子中继的超时清理适用于 POSIX 主机而非 Windows。
契约清理移除了已退役的七月和八月 SDK 路径,并用 gateway_stop 替换了 deactivate 别名,同时 beta.5 会话存储桥接在 2026 年 10 月 12 日之前仍可用。使用 v2026.7.2 beta 的 question、worker 或 session-catalog 形状的客户端需要迁移到重命名和扁平化的契约。自定义 agents.defaults.cliBackends 命令、参数、环境变量、别名和解析器现在属于一个后端插件,其可执行文件对 OpenClaw 服务可用。
来源和完整变更列表
改进
- 将嵌入式运行启动阶段发布到诊断 #107984
- 向插件工具钩子暴露请求者身份 #111190
- 通过插件提供程序将会话讨论添加到 Control UI #111337
- 添加通道拥有的设置契约 #112176
- 将 CLI 后端适配器从配置迁移到插件 #112539
- 在保留旧版兼容性的同时添加以事实为先的媒体 API #113355
- 添加全新的无工具模型补全 #114343
- 为类型化展示退役 Slack 内联回复指令 #114738
- 加快 Codex 原生钩子启动 #115078
- 退役八月 Plugin SDK 兼容路径 #124416
- 为 CLI 后端添加插件拥有的 JSONL 解析 #95386
- 保持增量 Swift 协议字段源码兼容 #103493
- 添加共享 Plugin SDK HTML 转义辅助函数 #105975
- 添加一个规范的插件配置合并辅助函数 #106919
- 提取共享 meeting-bot 运行时和适配器 SDK #109755
- 为扩展添加可靠的会话空闲事件 #110174
- 在替换之间添加有界转录游标 #110374
- 整合通道能力和附件提示 #110985
- 在公共包发布前清理 Gateway 协议契约 #111041
- 退役全局 Plugin SDK 提供程序发布 #111426
- 移除过期的插件 SDK 兼容接口面 #111451
- 将 Gateway 协议包发布到 npm #111664
- 为 npm 发布准备 Gateway 客户端 #111707
- 向分发前钩子暴露规范的入站消息身份 #112359
- 在原生文本通道之间共享带归属的 Markdown 渲染 #112907
- 为每个消费者一次性规范化入站回复文本 #113179
- 为通道 DM 策略设置添加共享 Plugin SDK 契约 #113537
- 将工具取消转发到插件钩子 #115817
- 将 GitHub Copilot OAuth 所有权移入其提供程序插件 #118063
- 在 Gateway 终端中启动新的 CLI-agent 会话 #121020
- 退役已弃用的 Plugin SDK 导入和 deactivate 钩子别名 #121845
- 添加仅限提供程序的视频输入契约 #121887
- 添加规范的 Computer Use 提供程序 SDK #123509
- 添加共享 Plugin SDK 流和 SecretRef 实用工具 #124835
- 复用共享缓存用于 WhatsApp 去重 #104962
- 弃用 Discord 中止信号辅助函数而不破坏导入 #109166
- 在类型化步骤上统一计划更新回调 #109660
- 移除旧版媒体占位符解析 #111891
- 共享通道探测时序和错误处理 #113540
- 为消息审批目标添加共享 Plugin SDK 解析器 #113568
- 移除已被取代的 sessions.observer.ask Gateway 方法 #113791
- 统一实时提供程序模型投影 #113903
- 添加标准原始事件入口配置 #117859
- 共享插件迁移和密钥契约辅助函数 #120346
- 将 Chutes OAuth 刷新移入提供程序插件 #120840
- 移除未使用的 Gateway RPC 和客户端接口面 #121387
- 退役旧版上下文引擎主机参数默认值 #122434
- 从聚焦媒体 SDK 导出受管理的 URL 摄取 #125278
Bug 修复
- 恢复官方 beta 插件升级和 Repo E2E [#105287](https://github.com/openclaw/openclaw/pull/105287)
- 防止超时的 Codex hook 中继耗尽 Linux 内存 [#109446](https://github.com/openclaw/openclaw/pull/109446)
- 将 Codex hook 中继限制到 tools 插件目标 [#109603](https://github.com/openclaw/openclaw/pull/109603)
- 保持插件下一轮注入在注册后可调用 [#111131](https://github.com/openclaw/openclaw/pull/111131)
- 恢复已发布 channel 插件兼容性并保留并发安装记录 [#113101](https://github.com/openclaw/openclaw/pull/113101)
- fix(gateway): 隔离 SDK 事件流并保留重连所有权 (#116904) [b611914](https://github.com/openclaw/openclaw/commit/b611914)
- fix(plugin-sdk): 保留随附的调用方契约 [e1199b1](https://github.com/openclaw/openclaw/commit/e1199b1)
- 允许插件工具使用受支持的 provider 凭据 [#103852](https://github.com/openclaw/openclaw/pull/103852)
- fix(cron): 中止已被取代的对账 hooks [#104368](https://github.com/openclaw/openclaw/pull/104368)
- 拒绝本地工具 schema 引用中的非规范数组索引 [#105922](https://github.com/openclaw/openclaw/pull/105922)
- 移除已弃用的 SDK 导出并现代化 Zalo 投递 [#106010](https://github.com/openclaw/openclaw/pull/106010)
- 终止已完成的原生 Codex hook 中继 [#106899](https://github.com/openclaw/openclaw/pull/106899)
- 保持 claiming-hook 超时由注册方管理 [#107996](https://github.com/openclaw/openclaw/pull/107996)
- 允许 reply hooks 认领普通用户轮次 [#108353](https://github.com/openclaw/openclaw/pull/108353)
- 清理 Plugin SDK SSRF 辅助函数中的格式错误 URL 错误 [#109729](https://github.com/openclaw/openclaw/pull/109729)
- 防止已准备的 channel-turn 生命周期泄漏 [#110981](https://github.com/openclaw/openclaw/pull/110981)
- 使 ACP help 和 stdin EOF 干净退出 [#111091](https://github.com/openclaw/openclaw/pull/111091)
- fix(sessions): 拒绝被篡改的可见消息游标 [#111264](https://github.com/openclaw/openclaw/pull/111264)
- 将 channel 设置标志移入插件清单 [#112239](https://github.com/openclaw/openclaw/pull/112239)
- 保持 channel 配置提升由插件管理 [#112293](https://github.com/openclaw/openclaw/pull/112293)
- 更安全的清单驱动 provider 注册 [#114381](https://github.com/openclaw/openclaw/pull/114381)
- 将 DeepInfra 嵌入迁移到受支持的插件契约 [#114727](https://github.com/openclaw/openclaw/pull/114727)
- 恢复 provider 流兼容性导出 [#115757](https://github.com/openclaw/openclaw/pull/115757)
- 显式声明 context-engine 主机参数 [#115872](https://github.com/openclaw/openclaw/pull/115872)
- 恢复 OpenAI Chat response-hook 生命周期 [#117056](https://github.com/openclaw/openclaw/pull/117056)
- 为仅契约 channel 保留设置和 agent 绑定 [#117106](https://github.com/openclaw/openclaw/pull/117106)
- 防止小数 chunk 限制导致文本投递停滞 [#117727](https://github.com/openclaw/openclaw/pull/117727)
- 当客户端握手失败时停止 ACP 服务器 [#117901](https://github.com/openclaw/openclaw/pull/117901)
- 整合插件辅助函数并修复 Voice Call 和 Vault 行为 [#118509](https://github.com/openclaw/openclaw/pull/118509)
- 当旧版 hook 注册无法接收类型化事件时发出警告 [#118601](https://github.com/openclaw/openclaw/pull/118601)
- 报告格式错误的插件 schema 引用而不崩溃 [#120254](https://github.com/openclaw/openclaw/pull/120254)
- 保持 OpenAI Responses hooks 在请求超时内 [#121163](https://github.com/openclaw/openclaw/pull/121163)
- 使外部 Plugin SDK 入口点类型兼容 [#121512](https://github.com/openclaw/openclaw/pull/121512)
- fix: 防止 prompt 模板和审批替换中的 $-模式注入 [#123015](https://github.com/openclaw/openclaw/pull/123015)
- fix(plugins): 恢复随附的 channel 兼容性 [#126003](https://github.com/openclaw/openclaw/pull/126003)
- fix(sessions): 当 probe 保留禁用时保留 model-run 会话 [#128023](https://github.com/openclaw/openclaw/pull/128023)
- fix(agents): 将具有已死亡 pid 的原生 hook 中继记录视为不存在 [#128112](https://github.com/openclaw/openclaw/pull/128112)
- fix(plugin-sdk): 在 readBooleanParam 中读取 snake_case 键 [#131350](https://github.com/openclaw/openclaw/pull/131350)
- fix(http): 在关闭上传之前投递 body 拒绝响应 [#131724](https://github.com/openclaw/openclaw/pull/131724)
- 为工具密集型运行添加 Codex loop-relay 退出选项 [#97224](https://github.com/openclaw/openclaw/pull/97224)
- 完成插件 session-catalog 契约 [dfa580e](https://github.com/openclaw/openclaw/commit/dfa580e)
- 保持 Plugin SDK expect 声明自包含 [feff4c7](https://github.com/openclaw/openclaw/commit/feff4c7)
- 解析大型 schema 数组中的有效本地引用 [#102195](https://github.com/openclaw/openclaw/pull/102195)
- 尊重显式空 document extractor 范围 [#103731](https://github.com/openclaw/openclaw/pull/103731)
- fix(channels): 尊重空 catalog docs 前缀 [#103794](https://github.com/openclaw/openclaw/pull/103794)
- fix(ai): 拒绝非有限工具 schema 数字 [#104470](https://github.com/openclaw/openclaw/pull/104470)
- 保留已弃用的 Plugin SDK 错误分类导出 [#104546](https://github.com/openclaw/openclaw/pull/104546)
- 允许插件创建在其启动目录消失后完成 [#106425](https://github.com/openclaw/openclaw/pull/106425)
- 在扩展命令输出中保留 Unicode 文本 [#108365](https://github.com/openclaw/openclaw/pull/108365)
- 允许插件运行时补全请求推理 [#108759](https://github.com/openclaw/openclaw/pull/108759)
- 共享 channel 重试辅助函数并移除冗余状态探测 [#108903](https://github.com/openclaw/openclaw/pull/108903)
- 验证受约束的插件配置 schema [#109569](https://github.com/openclaw/openclaw/pull/109569)
- 在插件构建错误中显示格式错误的包路径 [#109916](https://github.com/openclaw/openclaw/pull/109916)
- 强化 channel 轮次生命周期边界 [#110406](https://github.com/openclaw/openclaw/pull/110406)
- 防止原生 hook 中继截止时间竞争导致 CLI 失败 [#111413](https://github.com/openclaw/openclaw/pull/111413)
- 在规范化 SDK 事件 ID 中保留零值 [#113349](https://github.com/openclaw/openclaw/pull/113349)
- 每个 hook 对解析一次入站认领会话身份 [#115491](https://github.com/openclaw/openclaw/pull/115491)
- 为已记录的 Plugin SDK 导入提供 TypeScript 声明 [#116345](https://github.com/openclaw/openclaw/pull/116345)
- 统一核心和 Control UI 中的 JSON Schema 验证 [#116622](https://github.com/openclaw/openclaw/pull/116622)
- 在 Discord 和 Slack 之间共享原生命令合并 [#120972](https://github.com/openclaw/openclaw/pull/120972)
- 保留入站 reply shim 直到下一个 SDK 主版本 [#121922](https://github.com/openclaw/openclaw/pull/121922)
- 在整合强制转换辅助函数时忽略格式错误的 New Session 草稿 [#122020](https://github.com/openclaw/openclaw/pull/122020)
- 准确报告 ClickClack 媒体支持 [#126168](https://github.com/openclaw/openclaw/pull/126168)
- 整合媒体和进程运行时辅助函数 [#126490](https://github.com/openclaw/openclaw/pull/126490)
- fix(auto-reply): 将 chunkByNewline 中的尾部空行限制到 chunk 限制 [#127253](https://github.com/openclaw/openclaw/pull/127253)
- fix(protocol): 使聊天历史游标类型可消费 [#128018](https://github.com/openclaw/openclaw/pull/128018)
- fix(mcp): 从较早消息中检索附件 [#131702](https://github.com/openclaw/openclaw/pull/131702)
- fix(gateway): 接受可空插件审批元数据 [#133112](https://github.com/openclaw/openclaw/pull/133112)
文档
- 修正 beta 版 Plugin SDK session-store 兼容性契约 [#105341](https://github.com/openclaw/openclaw/pull/105341)
- 添加 Gateway 客户端和嵌入式应用指南 [#111726](https://github.com/openclaw/openclaw/pull/111726)
- 在翻译文档中保留字面名称 [6beb726](https://github.com/openclaw/openclaw/commit/6beb726)
- 在参考文档中保留精确的插件接口标识符 [ce07836](https://github.com/openclaw/openclaw/commit/ce07836)
- 将 Mattermost 和 Microsoft Teams 的仅限测试导出设为私有 [#107924](https://github.com/openclaw/openclaw/pull/107924)
- 发布已弃用 Plugin SDK 路径的移除窗口 [#108035](https://github.com/openclaw/openclaw/pull/108035)
- 宣布 Plugin SDK 子路径移除和降级窗口 [#108415](https://github.com/openclaw/openclaw/pull/108415)
- 更新保留的 Plugin SDK 门面的迁移指南 [#111535](https://github.com/openclaw/openclaw/pull/111535)
- 将插件设置弃用项链接到迁移指南 [#112692](https://github.com/openclaw/openclaw/pull/112692)
- 修复 ACPX 设置指南中的 Copilot CLI 链接 [#114057](https://github.com/openclaw/openclaw/pull/114057)
- 澄清配对请求钩子仅用于观察 [#116055](https://github.com/openclaw/openclaw/pull/116055)
- 澄清哪个插件拥有入站消息声明 [#116082](https://github.com/openclaw/openclaw/pull/116082)
- 记录插件关闭排空截止时间 [#118099](https://github.com/openclaw/openclaw/pull/118099)
- docs(plugins): 注明工厂工具 execute 签名 [#120097](https://github.com/openclaw/openclaw/pull/120097)
- 澄清 Codex 循环检测中继何时安装 [#124918](https://github.com/openclaw/openclaw/pull/124918)
- [AI 辅助] docs(copilot): 描述转录日志,而非已移除的双写镜像 [#125599](https://github.com/openclaw/openclaw/pull/125599)
- 单独记录插件根 CLI 命令,区别于聊天命令 [#126621](https://github.com/openclaw/openclaw/pull/126621)
- docs(hooks): 澄清命令日志器存储 [#128478](https://github.com/openclaw/openclaw/pull/128478)
- docs(plugins): CLI 后端示例安装后无法编译 [#129646](https://github.com/openclaw/openclaw/pull/129646)
- docs(hooks): 澄清设置和执行契约 [#130734](https://github.com/openclaw/openclaw/pull/130734)
- docs(plugins): 澄清已安装入口点源回退 [#131640](https://github.com/openclaw/openclaw/pull/131640)
- docs(protocol): 重建七月和八月 wire 历史;添加 deferred-changes 部分 [#133063](https://github.com/openclaw/openclaw/pull/133063)
- 澄清仅钩子插件的启动和运行时检查 [#77629](https://github.com/openclaw/openclaw/pull/77629)
**维护**
- 合并同级 provider 适配器 [#117822](https://github.com/openclaw/openclaw/pull/117822)
</details>
插件包和主机兼容性
OpenClaw 现在可以从目录、归档或 Git 源安装厂商中立的 Agent Plugins,加载其直接子级 skills 以及有效的 stdio、HTTP 或 SSE MCP 服务器,并为其提供作用域化的 bundle 和持久数据路径。OpenClaw 扩展可以添加激活提示,而 providers、channels、配置 schemas 和运行时入口点仍位于此可移植 bundle 契约之外。无效的 MCP 条目会被跳过,而不会阻止有效的同级项。
Cohere、Meta、BytePlus、ComfyUI、OpenCode、Voyage、Vydra、Volcengine、Mistral、NovitaAI、Teams 会议和 Zoom 会议现在作为单独安装的 官方包 提供。新安装会安装相关包并重启 OpenClaw,而现有已启用的安装会在外部工件可用时迁移。OpenCode Go 仍保持捆绑,因为其外部占位符不可用。
插件加载现在处理 npm 10 到 12 的特定元数据和锁定行为、直接和 peer OpenClaw 依赖、打包的主机运行时导入,以及此前导致成功安装无法激活的并发 Node ESM 情况。Canvas 现在专注于 macOS 演示器和 session-board A2UI 路径,其独立 workspace、eval 和 snapshot 界面、原生 push 和 reset 命令,以及 iOS、Android 和 Linux 客户端已被移除。Dashboard 和 A2UI 操作仍保持显式授权和沙箱化。
来源和完整变更列表
改进
- 为 Linux 桌面应用添加 Canvas 和 A2UI 支持 #107633
- 从类型化展示按钮启动托管 widgets #108927
- 在 Control UI 和 Discord 中统一 show_widget #108983
- 为 dashboard widgets 提供已批准的网络和主机工具 #111687
- 将 Mistral 迁移到官方外部 provider 插件 #116919
- 将 NovitaAI 外部化为官方 provider 插件 #117007
- 将 OpenCode 迁移到官方外部 provider 插件 #117035
- 将 OpenCode Go 迁移到官方外部插件目录 #117064
- 重新设计浏览器扩展弹窗 #118095
- 支持 Agent Plugins bundles #120115
- 为可移植 Agent Plugins 添加 OpenClaw 激活元数据 #120214
- 添加自动本地 Chrome 扩展设置 #121586
- 为受管理的 Codex app-server 添加预检检查 #124137
- 将 A2UI 应用作为 session board widgets 运行 #125803
- 将 Canvas 重新聚焦为 macOS widget 演示器 #126030
- 添加 custodian 作用域的运维技能库 #126186
- feat(dashboard): 允许 widgets 运行已授权操作并打开链接 #127315
- 添加官方 Windows MXC 沙箱插件 #97086
- 替换 npm shrinkwrap 以兼容 npm 12 #114006
- 将 Cohere 和 Meta providers 移出核心包 #116662
- 将 Teams 和 Zoom 会议迁移到官方外部插件 #116682
- 将 DuckDuckGo 搜索迁移到按需官方插件 #116740
- 将 Voyage embeddings 迁移到外部插件 #116785
- 将 Vydra 从核心包迁移到官方外部插件 #116813
- 将 Volcengine 迁移到官方外部 provider 包 #116854
- 将 BytePlus 迁移到官方外部 provider 插件 #116866
- refactor(plugins)!: 移除 OpenProse #128494
- 退役实验性 Workspaces 插件 #110416
- 将内联 widget 托管移入核心 #110475
- 将 ComfyUI 外部化为官方 provider 插件 #116888
- 从 Apps 页面链接 Chrome Web Store 列表 #118327
Bug 修复
- 恢复 npm 12 上的插件元数据读取 [#109699](https://github.com/openclaw/openclaw/pull/109699)
- 恢复 Canvas 控件并加固已弃用 Workspaces 清理 [#110927](https://github.com/openclaw/openclaw/pull/110927)
- 恢复官方外部插件的主机运行时导入 [#112021](https://github.com/openclaw/openclaw/pull/112021)
- 恢复令牌认证 Codex 运行的已连接应用 [#115075](https://github.com/openclaw/openclaw/pull/115075)
- fix(scripts): 构建堆忽略其 systemd 内存预算并占用完整默认值 [#123979](https://github.com/openclaw/openclaw/pull/123979)
- fix(openshell): 沙箱清理、工作区同步和网关设置失败 [#129641](https://github.com/openclaw/openclaw/pull/129641)
- 防止 Node 24 插件回退启动竞态 [5839c2e](https://github.com/openclaw/openclaw/commit/5839c2e)
- 在启动工作之前评估 Codex app-server 启动截止时间 [6625ea9](https://github.com/openclaw/openclaw/commit/6625ea9)
- 恢复打包的 Codex sessions 命令 [#102803](https://github.com/openclaw/openclaw/pull/102803)
- 在源码构建镜像中打包选定的外部插件 [#103629](https://github.com/openclaw/openclaw/pull/103629)
- 阻止静默 Codex ACP 租约创建空 stderr 日志 [#106799](https://github.com/openclaw/openclaw/pull/106799)
- 允许 OCM 本地构建包含工作区依赖 [#110426](https://github.com/openclaw/openclaw/pull/110426)
- 当环境变量值为空时保留 MXC Windows 路径回退 [#111077](https://github.com/openclaw/openclaw/pull/111077)
- 防止打包的 macOS Settings 崩溃 [#111300](https://github.com/openclaw/openclaw/pull/111300)
- 为 Codex 已连接应用发现提供更多启动时间 [#112418](https://github.com/openclaw/openclaw/pull/112418)
- 保持用户主目录 Codex app-servers 使用原生身份验证 [#114397](https://github.com/openclaw/openclaw/pull/114397)
- 在不启用监督的情况下遵循用户主目录 Codex 设置 [#114413](https://github.com/openclaw/openclaw/pull/114413)
- 从 Node ESM require 竞态中恢复插件加载 [#114618](https://github.com/openclaw/openclaw/pull/114618)
- 停止打包的 macOS Settings 崩溃 [#114648](https://github.com/openclaw/openclaw/pull/114648)
- 在服务会话中启用已配置的 Codex 应用 [#115433](https://github.com/openclaw/openclaw/pull/115433)
- 阻止 Diffs 指导提及不可用的工具 [#115919](https://github.com/openclaw/openclaw/pull/115919)
- 识别 Codex 的 API 精选插件市场名称 [#115955](https://github.com/openclaw/openclaw/pull/115955)
- 接受已物化的技能目录作为沙箱工作目录 [#116414](https://github.com/openclaw/openclaw/pull/116414)
- 防止画布刷新风暴和过期续期定时器 [#117173](https://github.com/openclaw/openclaw/pull/117173)
- fix(ui): 限制沙箱主机中停滞的小部件内容获取 [#117363](https://github.com/openclaw/openclaw/pull/117363)
- 恢复托管插件的主机运行时链接 [#117408](https://github.com/openclaw/openclaw/pull/117408)
- 从所属清单生成官方频道目录 [#118097](https://github.com/openclaw/openclaw/pull/118097)
- 修复预发布构建的 CUA 打包和 Slack 回退限制 [#118103](https://github.com/openclaw/openclaw/pull/118103)
- 刷新捆绑的频道技能以适配当前工具并提升工作流安全性 [#119020](https://github.com/openclaw/openclaw/pull/119020)
- 对齐 Fish Audio Speech 插件目录 [#120084](https://github.com/openclaw/openclaw/pull/120084)
- 保持 OpenCode Go 可作为捆绑提供商使用 [#120985](https://github.com/openclaw/openclaw/pull/120985)
- 执行打包的 `.mjs` CLI 回退 [#121963](https://github.com/openclaw/openclaw/pull/121963)
- 恢复可通过 npm 安装的源码 Worker 捆绑包 [#122430](https://github.com/openclaw/openclaw/pull/122430)
- 为捆绑插件解析新导出的 media-core 路径 [#122523](https://github.com/openclaw/openclaw/pull/122523)
- 在首次连接时唤醒本地 Chrome 扩展中继 [#122537](https://github.com/openclaw/openclaw/pull/122537)
- 恢复失败的捆绑插件视图 [#122823](https://github.com/openclaw/openclaw/pull/122823)
- 避免无会话运行产生 Codex 转录警告 [#122831](https://github.com/openclaw/openclaw/pull/122831)
- 保持打包的 Zalo 设置向导可加载 [#122902](https://github.com/openclaw/openclaw/pull/122902)
- fix(dashboard): 通过主机打开小部件链接,而不是沙箱弹出窗口 [#128125](https://github.com/openclaw/openclaw/pull/128125)
- fix(startup): 保留预加载的解析器钩子 [#128663](https://github.com/openclaw/openclaw/pull/128663)
- fix(sessions): 规范化包资源加载 [#129098](https://github.com/openclaw/openclaw/pull/129098)
- fix(skills): 安全加载受信任的 Bun 和 Nix 包硬链接 [#129662](https://github.com/openclaw/openclaw/pull/129662)
- chore(deps): 刷新七天冷却的提供商和原生工具 [#130653](https://github.com/openclaw/openclaw/pull/130653)
- fix(codex): 将托管运行时更新到 0.150.1 [#130685](https://github.com/openclaw/openclaw/pull/130685)
- 为打包插件捆绑私有 SSRF 运行时 [#96994](https://github.com/openclaw/openclaw/pull/96994)
- 在 npm 包中提供 Crabbox 租约辅助工具 [28954c8](https://github.com/openclaw/openclaw/commit/28954c8)
- 在截止时间后停止 Codex 启动阶段 [c953d8e](https://github.com/openclaw/openclaw/commit/c953d8e)
- 将 Microsoft Teams 运行时入口点构建为原生 CommonJS [#102366](https://github.com/openclaw/openclaw/pull/102366)
- 保持 Codex 应用清单诊断 UTF-16 安全 [#102414](https://github.com/openclaw/openclaw/pull/102414)
- 保持 AI 包环境变量键加载对浏览器捆绑包安全 [#102947](https://github.com/openclaw/openclaw/pull/102947)
- 在 Codex 诊断边界中保留 Unicode [#103740](https://github.com/openclaw/openclaw/pull/103740)
- 在 Podman 上恢复选定插件的镜像构建 [#103814](https://github.com/openclaw/openclaw/pull/103814)
- 防止过时的插件构建导致 Slack 启动崩溃 [#104831](https://github.com/openclaw/openclaw/pull/104831)
- 遵循捆绑包命令调用策略 [#105013](https://github.com/openclaw/openclaw/pull/105013)
- fix(plugins): 前向移植捆绑 SDK 回退加固 [#107131](https://github.com/openclaw/openclaw/pull/107131)
- 对多字节 URI 强制执行 OC Path 限制 [#108576](https://github.com/openclaw/openclaw/pull/108576)
- 在镜像构建期间限制 Docker 签名密钥下载 [#108894](https://github.com/openclaw/openclaw/pull/108894)
- 修复 Codex 命令会话解析和预发布检查 [#113820](https://github.com/openclaw/openclaw/pull/113820)
- 按 JSON 结构比较插件元数据 [#117486](https://github.com/openclaw/openclaw/pull/117486)
- 忽略格式错误的插件 build-version 元数据 [#117639](https://github.com/openclaw/openclaw/pull/117639)
- 链接声明 OpenClaw 为直接依赖的插件 [#117738](https://github.com/openclaw/openclaw/pull/117738)
- fix(diffs): 在查看器路由上恢复 GET/HEAD Content-Length 一致性 [#120280](https://github.com/openclaw/openclaw/pull/120280)
- fix(diffs-language-pack): 在资源 HEAD 请求上提供字节精确的 Content-Length [#120282](https://github.com/openclaw/openclaw/pull/120282)
- 将操作系统不兼容的常驻技能报告为不可用 [#123731](https://github.com/openclaw/openclaw/pull/123731)
- 保持打包的外部插件条目在其运行时根目录内 [#125173](https://github.com/openclaw/openclaw/pull/125173)
- fix: 打包的 Crabbox 命令无需开发依赖即可运行 [#125419](https://github.com/openclaw/openclaw/pull/125419)
- 在不可变部署中保护插件覆盖层 [#125902](https://github.com/openclaw/openclaw/pull/125902)
- fix(oc-path): 为位置 JSONC 键添加引号 [#130499](https://github.com/openclaw/openclaw/pull/130499)
- fix(plugins): 源码依赖修剪后原生导入失败 [#131615](https://github.com/openclaw/openclaw/pull/131615)
- fix(plugins): 保持开发运行使用检出插件 [#132201](https://github.com/openclaw/openclaw/pull/132201)
- fix(plugins): 保持已编译插件别名位于已构建运行时上 [#132545](https://github.com/openclaw/openclaw/pull/132545)
- 在 Linux 上使用 CodexBar 启用 model-usage [#87986](https://github.com/openclaw/openclaw/pull/87986)
文档
- 更新 Codex 应用发现文档至 app/installed [#115867](https://github.com/openclaw/openclaw/pull/115867)
- docs(mxc):隔离测试设置和清理 [#118945](https://github.com/openclaw/openclaw/pull/118945)
- 将 Agent Plugins 添加到 plugin-page 发现提示 [#120323](https://github.com/openclaw/openclaw/pull/120323)
</details>
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw