跳转至

Bun

Warning

Node 仍然是 OpenClaw 的主要、默认和推荐运行时。提供 WAL 重置安全的 node:sqlite 的 Bun 1.4+ 构建可以作为显式选择项运行 CLI、Gateway 和托管 node host。OpenClaw 要求 SQLite 3.51.3+、3.50.x 中的 3.50.7+,或 3.44.x 中的 3.44.6+;旧版 Bun 以及包含不安全 SQLite 的构建会被拒绝。

Bun 仍可作为可选的包脚本运行器使用。默认包管理器仍然是 pnpm,它得到完全支持,并被文档工具链使用。Bun 无法使用 pnpm-lock.yaml 并会忽略它,并且当前 Bun 版本在 bun install 期间无法解析此仓库的 pnpm-workspace.yaml 布局,因此依赖安装应使用 pnpm install。

安装

1. 安装依赖

pnpm install

Bun 无法解析此仓库的 pnpm workspace 布局,因此 bun install 会在 workspace 解析期间失败。请使用 pnpm install。

2. 构建和测试

bun run build
bun run vitest run

对于启动 OpenClaw 的命令,默认使用 Node。

在 Bun 下从源码运行时,复用当前可执行文件的 worker 会使用 Bun 的原生 TypeScript 支持,即使可执行文件具有自定义文件名。明确要求 Node 的 worker 会保留其 Node 加载器。

3. 使用 Bun 运行 OpenClaw

要在 Bun 下运行 onboarding 并在 Bun 下安装托管 Gateway:

bun openclaw.mjs onboard --install-daemon --daemon-runtime bun

对于托管 node host,请单独选择 Bun:

bun openclaw.mjs node install --runtime bun

生命周期脚本

除非显式信任,否则 Bun 会阻止依赖生命周期脚本。对于此仓库,常见被阻止的脚本并非必需:

  • baileys preinstall:检查 Node 主版本 >= 20(OpenClaw 要求 Node 24.16+ 或 26.1+,推荐 Node 26)
  • protobufjs postinstall:发出关于不兼容版本方案的警告(无构建产物)

如果遇到需要这些脚本的运行时问题,请显式信任它们:

bun pm trust baileys protobufjs

注意事项

在 macOS 上,运行 brew install sqlite 以支持原生向量搜索。Bun 1.4.2 在关闭后可能保留 SQLite 句柄以及 WAL/共享内存文件;当 prompt 文件释放很重要时,请使用 Node。有关库选择、要求和限制,请参阅 Bun 兼容性。

一些包脚本在内部硬编码了 pnpm(例如 check:docs、ui:*、protocol:check)。通过 bun run 运行它们时仍会 shell 调用 pnpm,因此请直接通过 pnpm 运行这些脚本。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw