OpenClaw 插件扩展边界(Extensions Boundary)完全指南:内置插件与第三方插件共享的开发契约
人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载OpenClaw 将扩展目录视为一个与第三方插件完全一致的边界所有插件只能通过openclaw/plugin-sdk/*与类型化子路径与核心交互绝不允许直接深入src/**内部实现。本文以仓库根目录 CLAUDE.md 定义的 Extensions Boundary 契约为骨架结合 Plugin SDK 源码、边界守卫测试与内置扩展的真实配置系统讲解公共契约清单、五条边界铁律、SDK 与 Runtime 两层架构以及如何安全地扩展这条边界。读完你将掌握 OpenClaw 插件开发中最关键的依赖约束与演进规范写出与内置插件同规格、可持续升级的插件。什么是 Extensions BoundaryOpenClaw 仓库中的 extensions/ 目录存放随项目分发的内置插件bundled plugins。根目录 CLAUDE.md 开篇即点明核心设计原则This directory contains bundled plugins. Treat it as the same boundary that third-party plugins see.也就是说内置插件与第三方插件共享同一条边界它们面对的是完全相同的 SDK 表面、相同的导入限制、相同的元数据要求。这一设计消除了内置插件可以走捷径、外部插件必须守规矩的双重标准——任何内置插件如果越界导入核心内部模块就意味着第三方插件同样可能这样做边界因此失去意义。从源码结构看这一原则与 docs/refactor/plugin-sdk.md 中记录的 SDK 重构计划一脉相承该计划的目标是每一个消息连接器都是一个插件内置或外部使用同一套稳定 API没有任何插件直接从src/**导入所有依赖都经由 SDK 或 Runtime。这正是边界文档存在的底层动因——历史上连接器曾混用直接核心导入、dist-only 桥接和自定义辅助函数三种模式导致升级脆弱也堵死了干净的第三方插件表面。公共契约清单插件开发者的第一份阅读清单边界契约由两部分构成文档与定义文件。CLAUDE.md 列出了完整的 Public Contracts。文档部分CLAUDE.md 中列举的文档路径以docs/plugins/为前缀如building-plugins.md、architecture.md、sdk-overview.md、sdk-entrypoints.md、sdk-runtime.md、sdk-channel-plugins.md、sdk-provider-plugins.md。需要说明的是在当前仓库快照的 docs/plugins/ 目录下可以确认存在的文档包括 manifest.md插件清单规范、agent-tools.md、community.md、voice-call.md、zalouser.md而 SDK 整体架构与插件工具的权威说明实际落地于 docs/refactor/plugin-sdk.mdPlugin SDK Runtime 重构方案与 docs/tools/plugin.md插件系统完整指南中文版见 docs/zh-CN/refactor/plugin-sdk.md 与 docs/zh-CN/tools/plugin.md。以 docs/plugins/manifest.md 为例它明确要求每个插件必须在插件根目录提供openclaw.plugin.jsonOpenClaw 依靠该清单在不执行插件代码的前提下完成配置校验清单缺失或非法会被当作插件错误并阻塞配置校验。定义文件部分契约的权威定义集中在 Plugin SDK 源码中这是所有插件的编译期事实来源文件作用src/plugin-sdk/plugin-entry.ts通用插件入口辅助definePluginEntry的类型与实现src/plugin-sdk/core.ts核心 SDK 面通道插件入口、配置 schema 构建、会话路由、工具函数等src/plugin-sdk/provider-entry.ts单 Provider 插件入口辅助defineSingleProviderPluginEntrysrc/plugin-sdk/channel-contract.ts纯通道契约类型ChannelAgentTool、ChannelThreadingContext、ChannelStatusIssue 等scripts/lib/plugin-sdk-entrypoints.json官方导出子路径清单共 238 个package.json包导出声明exports映射plugin-sdk-entrypoints.json是理解边界的关键它一次性列出了全部 238 个被公开的子路径涵盖index、core、runtime、setup、channel-setup、provider-entry、zod、testing等。package.json的exports字段必须与这份清单严格一致——这也是仓库中subpaths.test.ts、package-contract-guardrails.test.ts等测试所守护的对象。扩展生产代码实际可用的导入面就是这两份文件交叉验证后的结果。边界五条铁律CLAUDE.md 的 Boundary Rules 是全文最硬核的部分每条都对应着可以验证的源码或测试约束。规则一只从openclaw/plugin-sdk/*与自有 barrel 导入扩展生产代码应导入自openclaw/plugin-sdk/*及其自身的局部 barrel例如./api.ts与./runtime-api.ts。以真实内置扩展 extensions/acpx/runtime-api.ts 为例其全部导入都遵循这一模式export type { AcpRuntimeErrorCode } from openclaw/plugin-sdk/acp-runtime; // 其余导入同样来自 openclaw/plugin-sdk/core、openclaw/plugin-sdk/windows-spawn、 // openclaw/plugin-sdk/provider-env-vars 等子路径而 extensions/acpx/src/config.ts 中buildPluginConfigSchema来自openclaw/plugin-sdk/corez来自openclaw/plugin-sdk/zod——即使是最基础的配置 schema 构建也必须经过 SDK而不是直接 import 核心的 schema 工具。规则二禁止导入核心内部实现src/**、src/channels/**、src/plugin-sdk-internal/**以及另一个扩展的src/**都属于禁区。从 SDK 代码结构看src/plugin-sdk/目录中的文件如 core.ts本身就是对src/**内部模块的封装层——core.ts大量使用export { ... } from ../infra/...、from ../config/...这类再导出目的就是把内部实现收敛到稳定的 SDK 表面之后让扩展永远不需要也不应该看到这些实现细节。规则三相对导入不得逃逸当前扩展包根目录扩展内部使用./xxx、../xxx只能停留在自己包内不允许出现跳出扩展根目录的相对路径。这条规则由专门的机械检查脚本 scripts/check-extension-plugin-sdk-boundary.mjs 在 CI 中强制验证——对应的测试 extension-plugin-sdk-boundary.test.ts 对三类违规库存src-outside-plugin-sdk、plugin-sdk-internal、relative-outside-package逐一断言必须为空任何越界导入都会让检查失败。规则四元数据必须准确且不依赖执行openclaw.plugin.json与 package.json 中的openclaw块必须如实反映插件能力保证发现与 setup 在不执行插件代码的情况下即可工作。内置扩展 extensions/amazon-bedrock/openclaw.plugin.json 展示了标准清单{ id: amazon-bedrock, enabledByDefault: true, providers: [amazon-bedrock], configSchema: { type: object, additionalProperties: false, properties: {} } }其 package.json 中的openclaw块则声明入口{ name: openclaw/amazon-bedrock-provider, type: module, openclaw: { extensions: [./index.ts] } }结合 docs/plugins/manifest.md 的字段说明id与configSchema为必填kind如memory、context-engine、channels、providers、skills、name、description、uiHints、version为可选即使插件不接受任何配置也必须提供 schema空 schema 合法如{ type: object, additionalProperties: false }schema 在配置读写时校验而非运行时校验。规则五私有文件需要提升才能对外src/**、onboard.ts等本地辅助文件默认视为私有除非你有意通过api.ts必要时配合src/plugin-sdk/id.tsfacade将其提升为公共能力。反过来如果核心代码或核心测试需要某个内置插件的辅助函数也应当先从该插件的api.ts导出而不是让核心深度导入扩展内部实现。这条双向约束保证了导入方向永远是从核心流向扩展的 SDK 表面而不是反向渗透。两层架构编译期 SDK 与执行期 Runtime边界文档背后是 docs/refactor/plugin-sdk.md 规划的两层架构理解它才能理解为什么导入规则如此严格。第一层Plugin SDK编译期稳定、可发布。它只包含类型、辅助函数与配置工具没有运行时状态、没有副作用。典型内容包括ChannelPlugin等类型、buildChannelConfigSchema/setAccountEnabledInConfigSection等配置辅助、配对辅助、工具参数辅助等。这一层的消费方式是类型导入与纯函数调用。第二层Plugin Runtime执行期注入式。一切触及核心运行时行为的操作都经由OpenClawPluginApi.runtime注入插件因此永远不需要 importsrc/**。Runtime 面覆盖通道文本分块、回复分发、路由解析、配对、媒体抓取、群组策略、去抖、命令授权、日志与状态目录等能力并以channel.text、channel.reply、channel.routing、logging、state等命名空间组织。这一分层在 src/plugin-sdk/core.ts 中得到了直接体现defineChannelPluginEntry在注册通道能力的同时通过setRuntime?.(api.runtime)注入 Runtime并且只有api.registrationMode full时才执行registerFull——setup 模式与完整运行模式共享同一入口但执行不同注册深度。这正是Runtime 是访问核心行为的唯一途径这一原则的可运行实现。插件入口辅助函数三种标准化写法Plugin SDK 为不同插件形态提供了三个规范入口全部以id、name、description、configSchema、register为共同骨架plugin-entry.ts 中definePluginEntry的选项定义通用插件definePluginEntry({ id, name, description, kind?, configSchema?, register })用于 provider、tool、command、service、memory、context-engine 插件configSchema既可以是具体 schema也可以是返回 schema 的工厂函数resolvePluginConfigSchema统一处理默认值为emptyPluginConfigSchema。通道插件defineChannelPluginEntry({ id, name, description, plugin, configSchema?, setRuntime?, registerFull? })core.ts它包装definePluginEntry、自动调用api.registerChannel注册通道能力并可选注入 Runtime 与全量注册逻辑。单 Provider 插件defineSingleProviderPluginEntryprovider-entry.ts集中处理 API Key 认证方法、环境变量解析resolveEnvVars会去重合并envVars与各 auth 方法的envVar、Provider catalog 构建与 setup 向导wizard的默认配置。此外core.ts 还提供defineSetupPluginEntry给带独立setup-entry.ts的通道插件只需导出{ plugin }即可保持形状显式。扩展边界的正确姿势新增 seam 而非伸手够核心CLAUDE.md 的 Expanding The Boundary 一节给出了边界演进的三条准则这是插件生态可持续的关键需要新接口时添加类型化 Plugin SDK 子路径或增量导出而不是直接触及核心。换句话说新能力必须修路而非抄近道。新的插件面必须向后兼容并带版本管理——因为第三方插件正是消费这个表面任何破坏性变更都会波及生态。有意扩展契约时文档、导出子路径清单、package exports、API/契约检查必须在同一次变更中一并更新防止文档与实现漂移。这一准则的机器执行可以看两个真实测试 src/plugin-sdk/plugin-entry-guardrails.test.ts 遍历所有内置扩展的index.ts断言其中不得出现import { definePluginEntry } from openclaw/plugin-sdk/core——连核心 SDK 中最基础的入口辅助都禁止被扩展入口模块直接引用因为入口模块应当使用更专门的辅助如通道、Provider 专用入口src/plugin-sdk/package-contract-guardrails.test.ts 与subpaths.test.ts则守护 SDK 子路径清单与包导出的同步性。这些测试就是变更必须同步更新契约的自动化落地。写给插件开发者边界合规速查清单结合 CLAUDE.md、docs/plugins/manifest.md 与上述源码证据开发或审查一个 OpenClaw 插件时可对照以下清单导入面生产代码只从openclaw/plugin-sdk/*子路径须在 scripts/lib/plugin-sdk-entrypoints.json 清单内与自有api.ts/runtime-api.ts导入绝不出现src/**、src/channels/**、src/plugin-sdk-internal/**或其他扩展的src/**。相对路径所有相对导入都停留在扩展包根目录内不向上逃逸。元数据插件根目录必须有openclaw.plugin.jsonidconfigSchema必填package.json 的openclaw.extensions声明入口模块且清单在不执行插件代码的前提下即可完成发现与配置校验。私有边界src/**、onboard.ts等默认私有确需对外时通过api.ts显式提升必要时增加src/plugin-sdk/id.tsfacade。演进方式新能力以新增类型化子路径或增量导出方式提供保持向后兼容并同步更新文档、子路径清单、package exports 与契约测试。运行时能力凡涉及核心行为回复分发、路由、配对、媒体、群组策略等一律经由OpenClawPluginApi.runtime注入而非导入核心模块。遵守这条边界你的插件就能与 extensions/ 下的内置插件处于完全对等的地位享受同样的类型安全、同样的测试守卫也能在核心升级时保持稳定——这正是 OpenClaw 插件体系一个稳定 API、所有连接器皆插件架构目标的落地保证。赞分享人工智能大模型LLM 网关AI Agent即时通讯【免费下载链接】openclaw-zero-tokenOpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi项目地址https://gitcode.com/gh_mirrors/op/openclaw-zero-token点击查看免费下载相关推荐OpenClaw 插件边界Extensions Boundary权威指南Plugin SDK 契约、边界规则与扩展机制OpenClaw 插件边界Extensions Boundary权威指南Plugin SDK 契约、边界规则与扩展机制 本文围绕仓库根目录 AGENTS.人工智能大模型LLM 网关AI Agent即时通讯OpenClaw 扩展边界规范extensions 目录下捆绑插件的公共契约与导入边界OpenClaw 扩展边界规范extensions 目录下捆绑插件的公共契约与导入边界 本文基于 OpenClaw 仓库中 extensions/CLAUDEAI 应用AI Agent交互助手后端即时通讯网关OpenClaw 扩展边界规范内置插件如何通过 Plugin SDK 与清单契约与核心解耦OpenClaw 扩展边界规范内置插件如何通过 Plugin SDK 与清单契约与核心解耦 本文基于 OpenClaw 仓库中的扩展边界规范文档 extensAI 应用AI Agent交互助手后端即时通讯网关上一篇读懂 CLIP 模型卡tiny-universe 中 TinyIMGRAG 的图文检索基石下一篇openEuler secScanner架构解析深入理解安全扫描工具的实现原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

阿里云ECS IPv6配置全链路排障指南

阿里云ECS IPv6配置全链路排障指南

1. 为什么现在还值得花时间配通ECS的IPv6——不是赶时髦,是绕不开的现实需求 “阿里云ECS开启IPv6支持”这个标题看起来像一份过时的操作指南。毕竟IPv6喊了十几年,很多人印象里还是“实验室技术”“过渡方案”“等运营商推”。但去年底我帮某高校做一套…

2026/10/13 8:19:36 阅读更多 →
JDK编译报错“不支持发行版本6”:根因分析与Maven配置修复指南

JDK编译报错“不支持发行版本6”:根因分析与Maven配置修复指南

最近帮一位同事收拾旧项目,报错很典型:本地装的是JDK 11,代码从仓库拉下来,在IDE里一点编译,控制台直接打出java: 错误: 不支持发行版本 6。第一反应是Maven没配置好,又怀疑依赖版本冲突,折腾了…

2026/10/13 8:19:36 阅读更多 →
LLM代理成为一等优化手段:算子优化范式从手写汇编到代理驱动的转变

LLM代理成为一等优化手段:算子优化范式从手写汇编到代理驱动的转变

1. 从"手写汇编"到"代理驱动":算子优化范式正在发生什么变化2026年过半,如果你还在用纯手工的方式去调一个LLM推理场景下的算子kernel,大概率会在效率上吃大亏。这不是危言耸听,而是我这半年在几个实际项目里…

2026/10/13 8:19:36 阅读更多 →

最新新闻

SGI-STL空间配置器源码剖析:两级配置器与内存池设计

SGI-STL空间配置器源码剖析:两级配置器与内存池设计

第一次翻开SGI-STL源码时&#xff0c;大部分人都会在<stl_alloc.h>和<stl_uninitialized.h>面前停下来。这两个文件不像vector、list那样能让你立刻看到数据结构的样子&#xff0c;它们做的是更底层的事&#xff1a;在还没构造任何对象之前&#xff0c;先把裸内存准…

2026/10/13 9:01:55 阅读更多 →
基于 SQL Server 的学生选课系统数据库设计:从 ER 图到并发控制完整指南

基于 SQL Server 的学生选课系统数据库设计:从 ER 图到并发控制完整指南

简介&#xff1a;基于 SQL Server 的学生选课系统数据库设计源码与配套文档&#xff0c;面向需要完成课程设计、期末大作业的高校学生&#xff0c;尤其是 SQL Server 初学者。压缩包共 5 个文件&#xff0c;约 138KB&#xff0c;包含 SQL 脚本、Word 详细设计文档、README 说明…

2026/10/13 9:01:55 阅读更多 →
Halcon HObject 转 OpenCVSharp Mat 零拷贝实战与避坑指南

Halcon HObject 转 OpenCVSharp Mat 零拷贝实战与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 9:01:55 阅读更多 →
SQL Server选课系统数据库设计:事务、约束与并发控制实践

SQL Server选课系统数据库设计:事务、约束与并发控制实践

简介&#xff1a;一套基于SQL Server的学生选课系统数据库设计完整方案&#xff0c;面向数据库课程设计、期末大作业以及需要快速上手数据库项目的初学者。项目内含可执行SQL脚本、详细设计文档、Markdown说明与架构截图&#xff0c;覆盖数据表、关系、存储过程等核心内容&…

2026/10/13 9:01:55 阅读更多 →
WinCC用户归档实战:从配方批次追溯到SQL直连的完整案例

WinCC用户归档实战:从配方批次追溯到SQL直连的完整案例

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 9:01:55 阅读更多 →
Java Pattern.compile 原理与性能优化:从编译到复用 Matcher 的实践

Java Pattern.compile 原理与性能优化:从编译到复用 Matcher 的实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 9:00:51 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →