Plugin SDK 影响评估 是做什么的?
结合当前的 ClawHub 库存和对每个捆绑的 OpenClaw 插件的源代码扫描(包括那些不在 ClawHub 上的插件),以做出兼容性决策。静态使用情况标识依赖关系,但不能证明执行或依赖特定行为。有关批准和弃用规则,请遵循 SDK 边界指南 的权威说明。
调查
-
从源代码识别所有受影响的公共表面,包括备选的 SDK 导出和运行时路径。根据定义和已知调用者验证拼写;不正确的键可能会返回具有误导性的零结果。同时追踪分组门面、SDK 帮助器和注册读取器:一个平面别名可能对受支持的分组方法的直接插件调用为零。
-
在干净的 OpenClaw 检出目录中,使用 Plugin Inspector 的静态源代码分析扫描每个捆绑插件。请使用已安装的 Inspector 0.4.3 或更新版本;否则,请在单独的临时目录中安装它,无需生命周期脚本:
inspector_dir=$(mktemp -d) npm install --prefix "$inspector_dir" --ignore-scripts @openclaw/[email protected] node {baseDir}/scripts/scan-bundled.mjs \ --inspector "$inspector_dir/node_modules/@openclaw/plugin-inspector" \ --out /tmp/openclaw-bundled-sdk-usage.json扫描器默认使用此技能的检出目录;使用
--root <checkout>选择其他目录。它会发现extensions/*/openclaw.plugin.json,从不执行插件代码,并记录提交、输入指纹、Inspector 版本、每个插件以及不完整的分析。扫描失败或超时会留下缺口。没有声明入口点的插件也会留下覆盖率缺口,因为 Inspector 可能会遗漏隐式入口点。中断的语料库扫描不能用作完成的库存。当源保持不变时,可以重用报告进行多次查询。更改的提交、插件列表或未提交的源代码会使报告失效;请重新扫描,不要编辑现有收据。 -
使用两个来源查询每个规范键:
node {baseDir}/scripts/query.mjs 'api-member:api.registerTool' \ --bundled /tmp/openclaw-bundled-sdk-usage.json如需查询“在过去三个月内更新的”结果,请添加
--months 3。这意味着最新的符合条件的公开发布版本是在从现在起算的三个日历月内上传的,以 UTC 时间衡量(月末会被截断)。列表编辑和重新扫描不计为更新。存储的发布日期是其创建/上传时间;公开批准可能发生得更晚。使用--since 2026-07-16T12:00:00Z接受一个明确的截止日期。报告来自releaseWindow的确切包含截止日期,而不是猜测的日期。公共消费者和覆盖率在每个页面上使用相同的时间窗口。捆绑的源代码没有可比较的上传日期:即使问题涉及近期发布版本,也应单独报告,不经过滤。合并计数是该公开发布版本窗口和当前捆绑源代码的并集,而不是近期发布版本的计数。该帮助工具会跟踪所有使用和覆盖率页面,包括空的中间页面。计数和覆盖率包含每个结果;
items、gaps和warnings包含有界示例,省略的计数在output.omitted中。混合引用会在运行时和类型总计中重复计数。对于需要每个消费者或缺口的研究,请将--full输出保存到文件并分段读取:node {baseDir}/scripts/query.mjs 'api-member:api.registerTool' \ --bundled /tmp/openclaw-bundled-sdk-usage.json --full > sdk-usage.json--help文档记录了本地端点和遍历限制。 -
检查匹配的证据与提议的变更。方法调用可能并不使用正在被变更的行为。仅用于类型的消费者对于类型/导出移除仍然重要。分别查询相关的成员;模块导入不能证明使用了每个导出。插件中的重复引用计为一个消费者。
-
对于使用计数的问题,报告键、查询时间、确切的发布版本窗口(如果要求)、ClawHub 和捆绑计数、它们的合并计数、捆绑提交以及两者的覆盖率缺口。顶层的
distinctPlugins和coverage仅限 ClawHub;bundled描述源代码结果;combined只合并一次确切包身份。某些捆绑插件没有包名称:当它们可能与公共匹配重叠时,combined.distinctPlugins为 null,并且distinctPluginBounds报告可能的范围。observedPluginIdentities在这种不确定重叠之前计算源代码身份。报告范围,而不是将其上限报告为确切计数。不同的名称始终保持不同;永远不要根据显示名称猜测别名。缺少捆绑证据会使合并影响不可用。 对于提议的 SDK 变更,还要报告匹配的证据、间接调用者以及您的兼容性建议。使用维护者的决策完成变更调查:保留行为、弃用并提供迁移路径,或根据现有政策继续。绝不要根据计数推断权限。
规范键
| 表面 | 示例 |
|---|---|
| SDK 模块 | sdk-module:openclaw/plugin-sdk/core |
| 命名的 SDK 导出 | sdk-export:openclaw/plugin-sdk/core#OpenClawPluginApi |
| 插件 API 方法 | api-member:api.registerTool |
| 宿主运行时成员 | runtime-member:runtime.channel.reply.dispatchReplyFromConfig |
| 命名的钩子 | hook:hook.before_agent_start |
| 清单契约 | manifest-contract:manifest.contracts.tools:example_tool |
键描述 SDK 身份,而非本地别名。api.runtime 成员被规范化为 runtime.*。库存包括受支持和已弃用的引用;非空的 deprecationCodes 选择与现有警告关联的条目。可按插件在 https://clawhub.ai/api/v1/sdk-usage/plugin?package=<encoded-name> 进行审查;跟踪其 nextCursor 直到 null 以获取完整库存。
解释结果
| 结果 | 报告 |
|---|---|
| 观察到的消费者 | 报告公共、捆绑和合并计数及其各自的范围。在判断行为变更之前检查证据。 |
| 无观察到的消费者,覆盖率完整 | “在 N 个公共/捆绑插件身份中未检测到静态引用。”需要两次扫描;排除私有非捆绑插件和非捆绑依赖项。不能证明没有人使用该 API。 |
| 部分、失败、缺失、不兼容或未解决的分析 | 说明观察到的匹配项、缺口计数和代表性缺口。零匹配意味着影响未知。 |
| 空语料库 | 未观察到符合条件的插件;这不能提供生态系统保证。 |
| 端点不可用、结果格式错误或遍历不完整 | 影响未知。保留错误并使用本地证据;绝不要用零代替。 |
覆盖率与当前发布版本/工件和分析版本相关。符合条件的 ClawHub 报告具有 inputKind: "artifact";捆绑报告使用 "source"。源代码检出基准无法确定已发布包包含的内容。仅源代码的类型引用对于 SDK 类型和导出移除仍然重要;保留每个匹配的源。旧的扫描时间戳本身不会使不可变工件过时。证据是采样的;每次扫描报告其证据/未知的限制。页面是实时读取的,而不是单个快照:如果在调查期间发布版本或可见性发生变化,请重新运行。帮助工具会标记其观察到的更改,但无法建立事务范围的快照。
不要仅仅因为没有观察到消费者就 dismissing 安全问题。描述使用证据如何影响兼容性风险;安全性和 SDK 所有者仍决定修复方案以及对正常迁移窗口的任何例外。