pnpm-lock.yaml。已发布的 OpenClaw npm 包使用 npm-shrinkwrap.json(npm 的可发布依赖锁文件),因此包安装会使用发布期间已审查的依赖关系图。
重要性
Shrinkwrap 是随 npm 包发布的依赖树凭据:它会告知 npm 要安装哪些确切的传递依赖版本。
对于 OpenClaw 版本发布,这意味着:
- 已发布的包不会要求 npm 在安装时临时生成全新的依赖关系图;
- 依赖项变更可以接受审查,因为它们会体现在锁文件差异中;
- 发布验证测试的是用户将要安装的同一依赖关系图;
- 包大小或原生依赖项方面的意外问题会在发布前暴露。
openclaw security audit、包来源证明或安装冒烟测试。
OpenClaw 是 Gateway 网关、插件宿主、模型路由器和智能体运行时,因此默认安装会影响启动时间、磁盘占用、原生包下载和供应链暴露面。Shrinkwrap 为发布审查提供了稳定边界:审查者可以看到传递依赖项的变化,验证程序会拒绝意外的锁文件漂移,而插件包会携带各自锁定的依赖关系图,而不是依赖根包。
生成和检查
根openclaw npm 包、OpenClaw 所有的 npm 插件包(例如 @openclaw/discord)以及 @openclaw/ai 等可发布的工作区包在发布时会包含 npm-shrinkwrap.json。工作区依赖项会从根 shrinkwrap 中省略,因为它们会与根包一同发布;每个可发布的工作区包会分别锁定自己的传递依赖树。适合的插件包也可以使用显式 bundledDependencies 进行发布,将其运行时依赖文件包含在插件 tarball 中,而不是仅依靠安装时解析。
pnpm-lock.yaml 中尚不存在的包版本。这样可以保持 pnpm 依赖项新旧程度、覆盖规则和补丁审查边界不变。
以下内容应作为安全敏感项进行审查:
pnpm-lock.yamlnpm-shrinkwrap.json- 内置插件依赖项载荷
- 任何
package-lock.json差异
package-lock.json。插件 npm 发布流程会检查插件本地的 shrinkwrap,安装包本地的内置依赖项,然后打包或发布。