Apple Silicon核心arm64 架构MAC部署openclaw

Apple Silicon核心arm64 架构MAC部署openclaw

背景: 

周末尝试部署了一下最近大火的小龙虾 。发现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. [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)!

OpenClaw 的 install.sh 脚本会自动检测并安装 Homebrew(如果没有),而 Homebrew 的官方安装脚本需要一次 sudo 来创建 /usr/local 等目录(后续用 brew install 东西就不需要 sudo 了)。

但因为你用 curl ... | bash 管道方式运行,整个过程是非交互的(stdin 不是终端),sudo 没法弹出密码输入框 → 直接失败。

运行 Homebrew 官方安装命令(它会提示输入密码):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2. 提示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

3. > [email protected] 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 [email protected] 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 (<anonymous>)
npm verbose stack at callLimit (/Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/npm/node_modules/promise-call-limit/dist/commonjs/index.js:35:69)
npm verbose pkgid [email protected]
npm error code 1
npm error path /Users/jyxc-dz-0100474/.nvm/versions/node/v22.12.0/lib/node_modules/openclaw/node_modules/node-llama-cpp
npm error command failed
npm error command sh -c node ./dist/cli/cli.js postinstall
npm verbose cwd /Users/jyxc-dz-0100474
npm verbose os Darwin 25.3.0
npm verbose node v22.12.0
npm verbose npm v10.9.0
npm verbose exit 1
npm verbose code 1
npm error A complete log of this run can be found in: /Users/jyxc-dz-0100474/.npm/_logs/2026-03-03T08_52_52_856Z-debug-0.log

核心问题:你的 Node.js 是 x64(Intel 架构),但你的 Mac 是 Apple Silicon(M1/M2/M3/M4,arm64 架构)。这意味着 Node 运行在 Rosetta 2 模拟层下,而 node-llama-cpp(基于 llama.cpp)不支持在 Rosetta 上运行(因为 llama.cpp 用到了 ARM 特定的指令或 Metal GPU 加速,Rosetta 会触发 "illegal hardware instruction")。

看上面 重新装一个arm的node

记得一定要用苹果自带的终端。因为别的终端通常都是x64架构的

nvm alias default 14 #先把node版本切换掉。不然不能卸载常用node 卸载当前 x64 Node(清理掉问题版本): nvm uninstall 22 # 或 nvm uninstall 22.12.0 如果是精确版 nvm uninstall --lts # 如果你设了默认

Read more

【Prometheus】如何通过prometheus监控springboot程序运行状态,并实时告警通知

【Prometheus】如何通过prometheus监控springboot程序运行状态,并实时告警通知

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,ZEEKLOG全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生k8s,Prometheus监控,linux,shell脚本等实操经验,网站搭建,数据库等分享。 所属的专栏:Prometheus监控系统零基础到进阶 景天的主页:景天科技苑 文章目录 * prometheus监控spring boot程序 * 1、下载jmx-exporter * 1. 访问github下载 * 2. 准备config.yml配置文件 * 2、运行SpringBoot应用 * 1. 安装java基础环境 * 2. 下载java应用然后进行编译

By Ne0inhk
MySQL的数据类型

MySQL的数据类型

MySQL的数据类型 * 1.数据类型分类 * 2.数值类型 * 2.1.tinyint类型 * 2.2.bit类型 * 2.3.float类型 * 2.4.decimal类型 * 3.字符串类型 * 3.1.char类型 * 3.2.varchar类型 * 3.3.char和varchar比较 * 4.日期和时间类型 * 5.enum和set类型 🌟🌟hello,各位读者大大们你们好呀🌟🌟 🚀🚀系列专栏:【MySQL的学习】 📝📝本篇内容:数据类型分类;数值类型;tinyint类型;bit类型;float类型;decimal类型;字符串类型;char类型;varchar类型;char和varchar比较;日期和时间类型;enum和set类型 ⬆⬆⬆⬆上一篇:

By Ne0inhk
详解Spring AOP篇三

详解Spring AOP篇三

目录 代理模式 定义 代理模式的主要角色 静态代理 动态代理 JDK动态代理 接口介绍 CGLIB动态代理 Spring AOP源码解析 验证 没实现接口 实现了接口  小结 Spring AOP 是基于动态代理来实现AOP的. 代理模式 代理模式, 也叫委托模式. 定义 为其他对象提供⼀种代理以控制对这个对象的访问. 它的作⽤就是通过提供⼀个代理类, 让我们在调⽤⽬标⽅法的时候, 不再是直接对⽬标⽅法进⾏调⽤, ⽽是通过代理类间接调⽤. 在某些情况下, ⼀个对象不适合或者不能直接引⽤另⼀个对象, ⽽代理对象可以在客⼾端和⽬标对象之间起到中介的作⽤. 使⽤代理前: 使用代理后: 代理模式的主要角色 1. Subject: 业务接⼝类.

By Ne0inhk

Node.js完整安装配置指南(包含国内镜像配置)

Node.js完整安装配置指南(包含国内镜像配置) 一、Node.js安装 方法1:使用Chocolatey安装(推荐) # 安装最新LTS版本 choco install nodejs # 或安装指定版本 choco install nodejs --version=20.11.0 方法2:官网下载安装 1. 访问 Node.js官网 2. 下载LTS版本(推荐) 3. 运行安装程序,勾选"Add to PATH"选项 方法3:使用国内镜像下载 # 从淘宝镜像下载# 访问: https://npmmirror.com/mirrors/node/# 选择对应版本下载 二、

By Ne0inhk