macOS 上 OpenClaw + QQBot 安装指南

一、环境准备

1.1 安装 Node.js

brew installnode

验证安装:

npm-v# 输出: 11.11.0

1.2 配置 npm 镜像源

配置淘宝镜像源以加速下载:

npm config set registry https://registry.npmmirror.com 

验证配置:

npm config get registry # 输出: https://registry.npmmirror.com 即为配置成功

二、安装 OpenClaw

2.1 安装 OpenClaw

npminstall-g openclaw@latest 

验证安装:

openclaw --version# 输出: 2026.3.2

2.2 向导式配置

openclaw onboard 

在向导中选择:

  • Onboarding mode: QuickStart(Configure details later via openclaw configure)

三、解决常见配置问题

3.1 解决 “origin not allowed” 错误

编辑配置文件 ~/.openclaw/openclaw.json,在 gateway 段中添加:

"gateway":{"controlUi":{"allowedOrigins":["*"]}}

3.2 解决 “pairing required” 错误

  1. 列出设备请求:
openclaw devices list 
  1. 记录 RequestId
  2. 批准设备配对:
openclaw devices approve <RequestId>

四、浏览器配置

4.1 安装 Chrome 插件

openclaw browser extension install

插件文件会下载到 ~/.openclaw/browser/chrome-extension/

4.2 查看隐藏文件

macOS 默认隐藏以 . 开头的文件和目录,可通过以下方式查看:

  • 快捷键: 在访达中按 Cmd + Shift + . 切换显示隐藏文件
  • 终端打开: open ~/.openclaw

4.3 启用托管模式

# 启用托管模式(隔离、无需插件) openclaw config set browser.defaultProfile "openclaw"# 重启网关生效 openclaw gateway restart 

五、安装 QQBot 插件

5.1 安装插件

openclaw plugins install @sliverp/qqbot@latest 

5.2 绑定 QQ 机器人

访问 QQ机器人官方页面 获取 AppId 和 AppSecret。

openclaw channels add--channel qqbot --token"AppId:AppSecret"

5.3 重启服务

openclaw gateway restart 

六、编译 QQBot 插件(重点)

6.1 为什么需要手工编译

QQBot 插件使用 TypeScript 编写,安装后需要进行编译才能正常运行。由于插件依赖的类型定义可能不完整,编译过程中常会遇到各种错误,需要手工处理。

6.2 进入插件目录

重要:以下所有命令都需要在 QQBot 插件目录下执行

cd /Users/yijian/.openclaw/extensions/qqbot/ 

6.3 尝试编译并识别错误

首先尝试编译,查看具体错误:

npm run build 

6.4 常见编译错误及解决方案

错误 1:找不到 ‘ws’ 模块的声明文件

错误信息:

src/gateway.ts:1:23 - error TS7016: Could not find a declaration file for module 'ws'. Try `npm i --save-dev @types/ws` if it exists 

解决方案:
在 QQBot 插件目录下执行:

npminstall --save-dev @types/ws --registry=https://registry.npmmirror.com 
错误 2:参数隐式具有 ‘any’ 类型

错误信息:

src/gateway.ts:2029:31 - error TS7006: Parameter 'data' implicitly has an 'any' type. src/gateway.ts:2247:23 - error TS7006: Parameter 'code' implicitly has an 'any' type. src/gateway.ts:2247:29 - error TS7006: Parameter 'reason' implicitly has an 'any' type. src/gateway.ts:2342:23 - error TS7006: Parameter 'err' implicitly has an 'any' type. 

解决方案:
修改 tsconfig.json,关闭隐式 any 类型检查:

{"compilerOptions":{"noImplicitAny":false}}
错误 3:找不到名称 ‘process’

错误信息:

src/channel.ts:315:32 - error TS2580: Cannot find name 'process'. Try `npm i --save-dev @types/node`. src/config.ts:96:14 - error TS2580: Cannot find name 'process'. 

解决方案:
在 QQBot 插件目录下执行:

npminstall --save-dev @types/node --force

如果安装失败,尝试清除缓存后重新安装:

# 清除 npm 缓存npm cache clean --force# 重新安装npminstall --save-dev @types/node --registry=https://registry.npmmirror.com 

6.5 完整的 TypeScript 配置

编辑 tsconfig.json,使用以下配置可以避免大多数编译错误:

{"compilerOptions":{"noImplicitAny":false,"skipLibCheck":true}}

配置说明:

  • noImplicitAny: false - 关闭隐式 any 类型报错
  • skipLibCheck: true - 跳过第三方库的类型检查,加快编译速度

6.6 完整的编译流程

按照以下顺序执行,可以解决大多数编译问题:

# 1. 进入插件目录cd /Users/yijian/.openclaw/extensions/qqbot/ # 2. 安装必要的类型定义npminstall --save-dev @types/node @types/ws --registry=https://registry.npmmirror.com # 3. 如果安装失败,清除缓存npm cache clean --force# 4. 重新安装类型定义npminstall --save-dev @types/node @types/ws --registry=https://registry.npmmirror.com # 5. 修改 TypeScript 配置# 编辑 tsconfig.json,添加或修改以下内容:# {# "compilerOptions": {# "noImplicitAny": false,# "skipLibCheck": true# }# }# 6. 执行编译npm run build 

6.7 验证编译结果

编译成功后,应该看到类似以下输出:

$ npm run build > @sliverp/[email protected] build > tsc ||true

如果没有任何错误信息,说明编译成功。

6.8 编译失败的处理

如果编译仍然失败:

  1. 检查 Node.js 版本:确保使用较新的 Node.js 版本(建议 v18+)
  2. 检查 npm 版本:确保 npm 版本较新
  3. 查看详细错误信息:仔细阅读错误信息,根据具体错误类型搜索解决方案
  4. 检查插件版本:确认使用的是最新版本的 QQBot 插件

删除 node_modules 重新安装

rm-rf node_modules package-lock.json npminstall

6.9 编译成功后的操作

编译成功后,重启 OpenClaw 网关使插件生效:

openclaw gateway restart 

七、配置工具权限

7.1 了解 tools.profile

OpenClaw 2026.3.2 版本中,tools.profile 控制工具权限范围:

取值权限范围说明
minimal仅开放会话状态(session_status)权限
coding开放文件系统、运行时、会话、内存、图片相关权限
messaging(默认)仅开放消息相关权限
full无权限限制,支持执行命令、发送消息等所有操作

7.2 修改配置文件

编辑 ~/.openclaw/openclaw.json,修改 tools 配置:

{"tools":{"profile":"full"}}

7.3 生效方式

配置修改后,重启 OpenClaw 服务使配置生效:

openclaw gateway restart 

八、注意事项

  1. 权限最小化原则: 若非必要,不建议直接使用 full,可根据需求选择 coding 等精细化取值
  2. 配置格式校验: 修改 openclaw.json 时需确保 JSON 格式规范
  3. 官方文档: 更多配置规则可查阅 OpenClaw 官方文档

九、常用命令

# 查看版本 openclaw --version# 启动向导配置 openclaw onboard # 重启网关 openclaw gateway restart # 列出设备 openclaw devices list # 批准设备 openclaw devices approve <RequestId># 安装插件 openclaw plugins install<plugin-name># 添加通道 openclaw channels add--channel<channel>--token"<token>"# 配置浏览器 openclaw browser extension install openclaw config set browser.defaultProfile "openclaw"

十、故障排查

编译错误

如果遇到 TypeScript 编译错误,确保已安装必要的类型定义:

npminstall --save-dev @types/node @types/ws --registry=https://registry.npmmirror.com 

权限问题

如果无法执行命令,检查 tools.profile 配置是否设置为 fullcoding

配置不生效

修改配置后,确保重启 OpenClaw 网关服务:

openclaw gateway restart 

Read more

【Linux】Linux 地址空间 + 页表映射的概念解析

【Linux】Linux 地址空间 + 页表映射的概念解析

前言:欢迎各位光临本博客,这里小编带你直接手撕**,文章并不复杂,愿诸君**耐其心性,忘却杂尘,道有所长!!!! IF’Maxue:个人主页  🔥 个人专栏: 《C语言》 《C++深度学习》 《Linux》 《数据结构》 《数学建模》 ⛺️生活是默默的坚持,毅力是永久的享受。不破不立! 文章目录 * Linux线程解析 * 一、进程与线程的核心区别 * 二、地址空间:线程共享的“窗口” * 三、线程的本质:多执行流并行 * 四、Linux为什么用进程模拟线程? * 五、其他平台的线程实现 * 六、Linux线程的调度与称呼 * 七、资源划分:共享与独占 * 八、物理内存管理:4KB页框 * 页框的地址计算 * 申请物理内存的本质 * 九、虚拟地址与页表映射 * 32位虚拟地址的划分(经典两级页表)

By Ne0inhk
【Linux】网络基础(一)

【Linux】网络基础(一)

文章目录 * 网络发展 * 认识协议 * 🚩网络协议 * 🚩协议分层 * OSI七层协议 * 🚩TCP/IP五层(四层)协议 * 🚩网络传输基本流程 * 🚩数据包的封装和解包 * MAC地址 网络发展 起初计算机是用在军事上的 独立模式: 计算机之间相互独立 网络互联:多台计算机连接在一起实现网络互联 局域网LAN:计算机数量越来越多了,通过交换机和路由器连接在一起 广域网WAN:将远隔千里之外的的计算机连接在一起 所谓局域网广域网是相对概念,我们家庭路由器就可以看作局域网,把家家户户连接的社区就是广域网。社区看作局域网,把社区连接的就是广域网,中国网络看作局域网,连接世界就是广域网 认识协议 协议是一种约定 计算机之间通过光信号电信号交流,通过频率强弱来代表0和1,要想传递不同信息,就要约定好数据格式,比如000代表什么信息 要想多台计算机之间相互通信,就要约定共同的标准,这就是网络协议 🚩网络协议 🚩协议分层 打电话的例子,语言层汉语有协议,通信设备层也有协议 英语之间交流

By Ne0inhk
Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换

Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 jao 的鸿蒙化适配指南 - 实现极简的对象映射(Object Mapping)逻辑、支持数据传输对象(DTO)与领域实体的高效转换 前言 在进行 Flutter for OpenHarmony 的分层架构开发时,我们经常需要在 API 响应模型(DTO)与业务领域实体(Domain Entity)之间进行数据转换。虽然手动编写转换逻辑可以胜任,但随着业务复杂度增加,代码中会充斥大量重复的赋值语句。jao 是一个主打极简风格的对象映射库。本文将探讨如何在鸿蒙端利用该库提升模型转换的效率。 一、原理解析 / 概念介绍 1.1 基础原理 jao 的核心思想是通过定义声明式的映射规则,利用 Dart 的扩展方法(Extension Methods)

By Ne0inhk
Flutter 组件 cron_parser 的适配 鸿蒙Harmony 实战 - 驾驭 Cron 表达式解析、实现鸿蒙端高精度定时任务调度与触发逻辑预判方案

Flutter 组件 cron_parser 的适配 鸿蒙Harmony 实战 - 驾驭 Cron 表达式解析、实现鸿蒙端高精度定时任务调度与触发逻辑预判方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 cron_parser 的适配 鸿蒙Harmony 实战 - 驾驭 Cron 表达式解析、实现鸿蒙端高精度定时任务调度与触发逻辑预判方案 前言 在构建具备高度自动化能力的鸿蒙(OpenHarmony)应用时,“定时触发”是一个绕不开的核心需求。无论是每天凌晨三点的数据库自动化维护,还是每隔五分钟的环境温湿度同步录入,一套稳定、标准的定时规则描述符(Cron Expression)是支撑这些后台逻辑的核心心脏。 虽然简单的 Timer 能够处理定时的延时,但对于诸如“每个月最后一个周五的 14:00 运行”这种复杂的业务逻辑,手动编写判断代码将是维护者的噩梦。 cron_parser 是一款专为 Dart 设计的高性能 Cron 表达式解析器。它不仅支持标准的五段式、六段式语法,更提供了极低延迟的“

By Ne0inhk