概述

OpenClaw 通过命名兼容性适配器维护旧版插件契约,在 SDK、manifest、配置和 Agent 运行时契约演进过程中保护现有插件。

核心要点

兼容性注册表位置:

  • 运行时兼容性:src/plugins/compat/registry.ts
  • Doctor 修复/迁移兼容性:src/commands/doctor/shared/deprecation-compat.ts

每条兼容性记录包含:

  • 稳定的兼容性代码
  • 状态:active、deprecated、removal-pending、removed
  • 所有者:SDK/配置/设置/Channel/Provider/插件执行/Agent 运行时/核心
  • 引入和废弃日期
  • 替换指导、文档、诊断和测试

废弃策略(7步迁移序列):

  1. 添加新契约
  2. 通过命名兼容性适配器保持旧行为
  3. 当插件作者可以行动时发出诊断/警告
  4. 记录替换和时间线
  5. 测试新旧两条路径
  6. 等待公告的迁移窗口
  7. 仅在明确的破坏性发布批准后删除

废弃记录要求:

  • 必须包含警告开始日期、替换方案、文档链接
  • 最终删除日期不超过警告开始后三个月
  • 不得添加开放式删除窗口的废弃路径

当前兼容性领域(部分):

  • 旧版宽泛 SDK 导入(openclaw/plugin-sdk/compat)
  • 旧版 hook-only 插件形状和 before_agent_start
  • 旧版 activate(api) 入口点(迁移到 register(api))
  • 旧版 SDK 别名(openclaw/extension-api、openclaw/plugin-sdk/channel-runtime 等)
  • 旧版 Provider/Channel 环境变量 manifest 元数据
  • 旧版运行时别名(api.runtime.taskFlow、api.runtime.stt 等)
  • 旧版内存插件分割注册
  • setup-api 运行时回退(迁移到 setup.requiresRuntime: false)

配置/使用

插件检查器 CLI(计划中):

openclaw-plugin-inspector ./my-plugin
openclaw-plugin-inspector ./my-plugin --json  # CI 用机器可读输出

维护者验收通道:

pnpm crabbox:run -- --provider blacksmith-testbox --timing-json --shell -- \
  "pnpm install && pnpm build && npm exec --yes @openclaw/plugin-inspector@0.1.0 -- ./extensions/telegram --json"

相关页面

  • concepts/plugin-architecture — 插件能力模型和兼容性立场
  • concepts/plugin-manifest — Manifest 格式和废弃字段
  • concepts/plugin-building — 新插件开发(使用当前 API)