背景:
周末尝试部署了一下最近大火的小龙虾 。发现arm64的装起来跟普通的似乎不太一样 。特地写个文档给大家解决一下问题
我的mac是 Apple Silicon(M1/M2/M3/M4,arm64 架构)。
环境准备:
注意命令必须运行在原生的终端里
首先检查一下你的node版本
node -v
确认node架构
node -e "console.log(process.platform, process.arch)"
- 如果输出 darwin x64 → 就是 Rosetta/x64 问题。
- 应该输出 darwin arm64 才对。
如果node版本比较低或者架构不对。比如14.几 建议升级到最新版22
nvm install 22 --reinstall-packages-from=current # 这会自动选 arm64 二进制
适合mac的新芯片
切换并设为默认
nvm use 22
nvm alias default 22
验证 arm64
node -e "console.log(process.platform, process.arch)" # 必须是 darwin arm64
node -v # v22.x.x
which node # 应该在 ~/.nvm/versions/node/v22.../bin/node
arch # 输出 arm64
确保 Xcode Command Line Tools 已安装
xcode-select --install
安装一下homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
开始安装:
直接就是一条命令行
curl -fsSL https://openclaw.ai/install.sh | bash
然后就会自动弹出设置菜单,首先让你确认安全风险,Yes就完事了。

下一个设置项是Onboarding mode,QuickStart就好。新手接入,我先建议不要搞太多设置,多数设置可以设置为默认,反正后期都是可以修改的。

下一步选择模型提供商。由于我们要薅OpenRouter免费token的羊毛,就选OpenRouter。

于此同时,我们去OpenRouter创建一个API_KEY。点击OpenRouter的Step-3.5页面,然后Create API KEY,名字随便起,例如OpenClaw,创建API_KEY,并保存好KEY。

然后返回OpenClaw设置页面,粘贴你的Key。

下一步就是选模型,由于OpenRouter有很多模型,你可能要在这一步翻一下,模型是按字母排序的,往下翻就找到了stepfun/step-3.5-flash:free。

就完成了Step 3.5 Flash的接入。下一步就是接入飞书。之前的教程会让你用个插件,但OpenClaw最新版本已经官方集成了飞书/Lark接入,就不再需要插件了

下一步是配置Skill。这个可以自己看着弄,例如接入苹果记事本,bear记事本等工具。

剩下的步骤,可以先选择跳过,例如Google的API设置等

最后是启动方式,

TUI就是在terminal里跑的UI,随便问个问题,看看接入成功没。

可以看到,现在接入成功了,本地跑Agent,免费的模型API接口,总共花费:0。
最后,还得开Gateway,才能实现和通信软件互通信息。
openclaw gateway start
Gateway dashboard
飞书配置
注:在配置飞书时,可能会出现找不到模块zod的错误

如果遇到,则npm install zod即可解决。
然后我们去飞书开放平台,然后在开发者后台,点击「创建企业自建应用」

起个自己喜欢的名字,然后进入应用后台,在「凭证和基础信息」这里,把App ID和App Secret复制下来

然后添加个机器人的能力

配置机器人。权限添加,点击这个按钮,

导入下面这段JSON,就自动配置好了基础的权限
{
"scopes": {
"tenant": [
"contact:user.base:readonly",
"im:chat",
"im:chat:read",
"im:chat:update",
"im:message",
"im:message.group_at_msg:readonly",
"im:message.p2p_msg:readonly",
"im:message:send_as_bot",
"im:resource"
],
"user": [
"contact:contact.base:readonly"
]
}
}
订阅方式:使用长连接接收事件,并添加事件「接受消息」

在回调设置,也是一样:使用长连接接收事件

最后,点击左上方的「创建版本」。飞书这边的设置就好了

然后到OpenClaw这边设置。去OpenClaw的后台,选择Channels,在feishu这项设置

翻到下面,把前面复制的App ID和App Secret粘贴到对应的位置

然后这个时候你从飞书发消息给OpenClaw,应该会出现这个情况。

解决方法很简单,选中那段话,复制下来,粘贴到电脑端的OpenClaw对话框里。就完成配对了。

再次试验,成功!

一些报错:
-
1/3\] Preparing environment · Homebrew not found, installing ✗ Installing Homebrew failed --- re-run with --verbose for details Warning: Running in non-interactive mode because stdin is not a TTY. ==\> Checking for sudo access (which may request your password)... Need sudo access on macOS (e.g. the user 0100474 needs to be an Administrator)!
但因为你用 curl ... | bash 管道方式运行,整个过程是非交互的(stdin 不是终端),sudo 没法弹出密码输入框 → 直接失败。
运行 Homebrew 官方安装命令(它会提示输入密码):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 提示node版本是xxxx 然后开始安装 node 随后失败
手动安装下
如果node版本比较低或者架构不对。比如14.几 建议升级到最新版22
nvm install 22 --reinstall-packages-from=current # 这会自动选 arm64 二进制
适合mac的新芯片
切换并设为默认
nvm use 22
nvm alias default 22
验证 arm64
node -e "console.log(process.platform, process.arch)" # 必须是 darwin arm64
node -v # v22.x.x
which node # 应该在 ~/.nvm/versions/node/v22.../bin/node
arch # 输出 arm64
- > node-llama-cpp@3.16.2 postinstall
> node ./dist/cli/cli.js postinstall
node-llama-cpp\] llama.cpp is not supported under Rosetta on Apple Silicone Macs. Ensure that you're using a native arm64 node.js installation.
\[node-llama-cpp\] process.platform: darwin, process.arch: x64
\[node-llama-cpp\] troubleshooting: https://node-llama-cpp.withcat.ai/guide/troubleshooting#illegal-hardware-instruction
npm info run node-llama-cpp@3.16.2 postinstall { code: 1, signal: null }
npm verbose stack Error: command failed
npm verbose stack at promiseSpawn (/Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:22:22)
npm verbose stack at spawnWithShell (/Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:124:10)
npm verbose stack at promiseSpawn (/Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/@npmcli/promise-spawn/lib/index.js:12:12)
npm verbose stack at runScriptPkg (/Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/run-script-pkg.js:77:13)
npm verbose stack at runScript (/Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/run-script.js:9:12)
npm verbose stack at /Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/rebuild.js:329:17
npm verbose stack at run (/Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/promise-call-limit/dist/commonjs/index.js:67:22)
npm verbose stack at /Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/promise-call-limit/dist/commonjs/index.js:84:9
npm verbose stack at new Promise (\