深度

OpenClaw Capability 架构指南:插件边界、共享运行时和供应商解耦

OpenClaw Capability Cookbook 官方文档中文整理:什么时候创建 capability、标准开发顺序、core/vendor plugin/feature plugin 分工、provider registry、runtime helper、image generation 示例和架构审查清单。

2026/6/43分钟 阅读ClaudeEagle

OpenClaw 的 Capability Cookbook 是给核心开发者看的架构指南,但它对理解 OpenClaw 插件系统非常有价值。核心原则只有一句:plugin 是所有权边界,capability 是共享 core contract。


为什么需要 Capability?

假设要加入图像生成能力。错误做法是:某个 channel 或 tool 直接调用 OpenAI、Google 或其他供应商 API。

这样会导致:

  • 供应商逻辑散落在各处
  • 后续替换模型困难
  • 配置和 fallback 不统一
  • 权限和审计难集中管理
  • 插件之间互相耦合

正确做法是先定义 capability,再让不同 vendor plugin 实现它。


判断是否该创建 Capability

满足这些条件时应创建 capability:

  1. 未来可能有多个供应商实现
  2. channel/tool/feature plugin 都可能消费它
  3. core 需要统一 fallback、policy、config 或 delivery 行为

如果只是单一供应商的私有功能,可以先放在 vendor plugin 中;一旦出现通用需求,就应该抽象成 capability。


标准开发顺序

  1. 定义 typed core contract
  2. 增加 plugin registration
  3. 增加 shared runtime helper
  4. 接入一个真实 vendor plugin 作为 proof
  5. 让 feature/channel consumer 调 runtime helper
  6. 增加 contract tests
  7. 补充 operator-facing 文档和配置说明

这套顺序能防止“先写死一个供应商,之后再艰难重构”。


三层分工

Core

负责:

  • request/response 类型
  • provider registry
  • fallback 和 policy
  • config schema
  • runtime helper

Vendor Plugin

负责:

  • 调供应商 API
  • 处理供应商认证
  • 做 vendor-specific normalization
  • 注册 capability provider

Feature/Channel Plugin

负责:

  • 调用 runtime helper
  • 不直接 import vendor code
  • 专注自己的交互和业务场景

image generation 示例

图像生成能力的正确形态:

  1. core 定义 ImageGenerationProvider
  2. core 提供 provider registry
  3. runtime 暴露 imageGeneration.generate
  4. OpenAI/Google 插件分别注册实现
  5. 频道或工具只调用 runtime,不关心供应商是谁

这样未来新增供应商,不需要改频道代码。


架构审查清单

如果一个 PR 新增能力,应检查:

  • channel/tool 是否直接 import vendor code
  • 是否有共享 contract
  • 是否有 runtime helper
  • 是否有 provider registry
  • 配置项是否清晰
  • 是否有 contract tests
  • 文档是否说明所有权边界

如果直接把供应商行为写进 channel/tool,应该退回重构。


来源:OpenClaw 官方文档 - Adding Capabilities | 整理:ClaudeEagle

相关文章推荐

深度OpenClaw 插件开发完全指南:从零构建自定义渠道和工具插件OpenClaw 插件(Plugin)开发完整教程:插件类型(渠道插件/工具插件/Provider插件)、插件的目录结构和 package.json 规范、使用 Plugin SDK 开发自定义消息渠道(实现 onMessage/sendMessage 接口)、开发自定义工具(Tool)的函数签名和参数 Schema、本地插件安装与调试(openclaw plugins install ./local-plugin)、发布到 npm 的规范要求(@openclaw/ 命名空间)、插件的权限声明(capabilities)、社区插件列表(Plugin Bundles)获取,以及常见插件开发错误和调试技巧。2026/3/25深度OpenClaw Session ID 生命周期规则:什么时候会开新会话,什么时候延续旧会话详解 OpenClaw sessionKey 与 sessionId 的区别,以及触发新会话的四种情形:手动重置、每日重置、空闲过期、父级分叉保护,附 Session Store 字段说明和 Cron 会话保留策略。2026/8/13深度OpenClaw 计费故障处理机制:余额不足时系统怎么办,Backoff 退避策略详解详解 OpenClaw 账单/额度类故障处理机制:与普通限流超时不同,计费故障采用更长的指数退避(5小时起步翻倍至24小时封顶)并标记禁用,附三类故障处理力度对比表和多账号部署实战建议。2026/8/13深度OpenClaw Model Failover 完全解析:Auth Profile 怎么轮换,为什么你的 OAuth 账号会"莫名其妙"被切走详解 OpenClaw Model Failover 机制:Auth Profile 轮换顺序、Session Stickiness 会话粘性、指数退避冷却规则,解释多账号场景下 OAuth 与 API Key 切换的常见困惑及固定账号的配置方法。2026/8/13深度OpenClaw Context Engine 完全指南:四个生命周期钩子如何决定模型看到什么详解 OpenClaw 可插拔上下文引擎架构:Ingest/Assemble/Compact/After turn 四个生命周期钩子的工作原理,systemPromptAddition 动态注入机制,以及如何安装和配置自定义 Context Engine 插件。2026/8/12深度OpenClaw Delegate 架构详解:让 Agent 以组织身份代表你行动,而不是冒充你详解 OpenClaw Delegate 代表架构:Agent 如何拥有独立身份代表组织成员行动而不冒充人类,三级能力分层(只读起草/代表发送/主动式)及硬性阻断规则、Gateway工具限制、沙箱隔离等安全配置。2026/8/12