乐于分享
好东西不私藏

我把OpenClaw做成了"U盘版",全过程记录,细节全公开

我把OpenClaw做成了"U盘版",全过程记录,细节全公开

前两天我又帮人装了一次OpenClaw。

整个过程花了快一个小时。对方是个电脑小白,全程坐在我旁边看我敲命令,一边看一边问:

"这个是什么?" "为什么要输这个?" "为什么报错?" "你刚才那个是什么意思?"

说实话,装完之后我自己都疲惫了。

回来路上我就想,有没有一种办法,能让一个完全不懂技术的人,也能在三分钟内用上OpenClaw?

答案是:有。


01 怎么让"安装"这件事消失?

OpenClaw为什么装起来麻烦?

说白了就三个原因:

  • Node.js要单独装
  • npm依赖动不动报错
  • GitHub访问不稳定

这三个问题但凡碰到一个,小白就卡住了。

我的思路是:不解决这三个问题,而是让用户根本接触不到这三个问题。

怎么做?把整个OpenClaw打包进U盘。

用户不需要装Node.js,不需要跑npm,不需要访问GitHub。他只需要做一件事:

插上U盘,双击运行。

就像当年用Ghost装机盘重装系统,不需要懂BIOS,不需要懂分区,点几下下一步,系统就装好了。

好的工具,应该让人感受不到门槛。


02 先想清楚架构再动手

动手之前,我花了点时间想清楚这个U盘版应该长什么样。

核心需求就三条:

1. 可移植 换一台电脑,插上U盘,配置还在,不用重新装。

2. 零安装 双击就能跑,不需要管理员权限,不改本机环境。

3. 好更新 新版本出来,只需要替换一个目录,用户的配置不丢失。

基于这三条,我定了这个结构:

U-Claw/├── Windows-Start.bat        # Windows免安装运行├── Windows-Install.bat     # Windows安装到本机├── Mac-Start.command       # Mac免安装运行├── Mac-Install.command     # Mac安装到本机├── Config.html             # 首次配置页面├── setup.sh                # 补齐依赖(开发者用)├── app/                    # 大依赖(Node.js + OpenClaw本体)│   ├── core/               # OpenClaw核心 + 渠道插件│   └── runtime/            # 各平台Node.js运行时└── data/                   # 用户数据(配置/记忆/备份)    ├── .openclaw/          # 配置文件    ├── memory/             # AI记忆    └── backups/            # 配置备份

关键设计点:用户数据单独放data目录,升级时只替换app目录,data不动,配置和记忆全保留。


03 走通最难的一步:制作setup.sh

这个脚本是整个项目的核心。它的任务只有一个:

把GitHub上的仓库,变成一个能直接在U盘运行的完整包。

说起来简单,做起来有坑。

首先,OpenClaw的依赖里有大文件(主要是Node.js运行时),如果每次都从GitHub拉,速度很慢,用户体验很差。

我的处理方式是:分离大小文件。

小文件(代码、配置、脚本)正常放GitHub仓库,用户git clone拉下来。

大文件(Node.js、node_modules)不传GitHub,而是用setup.sh脚本在本地下载,下载源走国内镜像。

这样一来,仓库本身只有几百KB,任何人拉取都是秒速。大依赖在国内镜像站下载,速度有保障。

具体到这个脚本,核心逻辑就三步:

第一步:检测系统,下载对应平台的Node.js运行时

# 识别系统if [[ "$OSTYPE" == "darwin"* ]]; thenif [[ $(uname -m) == "arm64" ]]; then    NODE_DIR="node-mac-arm64"else    NODE_DIR="node-mac-x64"fielse  NODE_DIR="node-win-x64"fi# 下载(走国内镜像)curl -L "https://npmmirror.com/mirrors/node/v20.10.0/${NODE_DIR}.zip" -o runtime.zip

第二步:解压Node.js到app/runtime/目录

unzip -q runtime.zip -d app/runtime/

第三步:用npm安装OpenClaw核心和渠道插件

cd app/corenpm installnpm install openclawnpm install openclaw-plugin-qqnpm install openclaw-plugin-feishu# ……其他渠道插件

整个脚本在正常网速下,大概一分钟跑完。跑完之后,portable目录就是完整的U盘内容。


04 第一个坑:Windows路径问题

脚本写完,在Mac上测试没问题,一拿到Windows上跑,报错。

问题是路径里有空格。

Windows默认把程序装在 C:\Program Files\ 下,路径里有空格,Node.js的某些脚本执行会出问题。

解法有两个:

方案一: 强制要求用户把U盘插到没有空格的路径下(比如 D:\U-Claw)

方案二: 所有涉及路径的地方,用引号包起来

我选了方案二,因为更用户友好。

另一个Windows坑是批处理文件的编码

Windows的bat文件默认用GBK编码,Mac写出来是UTF-8。在Windows上跑中文注释会乱码。

解法:所有bat文件统一用UTF-8 BOM格式保存,Windows CMD能正确识别。


05 第二个坑:数据目录的优先级

OpenClaw默认会把配置存在用户目录 ~/.openclaw/

问题来了:U盘模式下,用户没有管理员权限,~/.openclaw/会写到系统盘去。换一台电脑,配置就读不到了。

我需要让OpenClaw在U盘模式下,优先读U盘上的data目录,而不是去读系统盘。

查了一下OpenClaw的配置方式,发现它支持通过环境变量指定数据目录:

OPENCLAW_DATA_DIR="D:/U-Claw/data"

所以在Windows-Start.bat里,我加了这样一行:

set OPENCLAW_DATA_DIR=%~dp0dataset PATH=%~dp0app\runtime\node-win-x64;%PATH%start "" "%~dp0app\runtime\node-win-x64\node.exe" "%~dp0app\core\openclaw"

%~dp0是Windows批处理里获取当前脚本所在目录的方法。这样无论U盘插到哪个盘符,数据目录都指向U盘本身。


06 做配置中心:让人人都会配置

光有运行脚本还不够。配置AI模型、填聊天渠道的ID和Secret,这些操作对小白来说还是有门槛。

我写了一个 Config.html,双击它会打开浏览器,进入本地配置页面。

页面里预置了常用平台的配置模板:

  • 硅基流动:BaseURL和模型名都填好了,用户只需要填一个Key
  • OpenAI:同理,填Key就行
  • 自定义:高级用户可以自己填BaseURL、模型ID和Key

聊天渠道那边也做了简化。每个渠道下面都写了当前平台ID/Secret怎么获取的步骤指引,点开就能看到。

这一步花了比较多的时间,但效果很好。配置页面出来后,我自己测试了一遍,从拿到U盘到跑起来聊天,全程不超过三分钟。


07 让人直接用,不需要理解原理

到这里,U盘版的核心功能就跑通了。

最后一步,也是最重要的一步:测试。

我找了三个不同背景的人来试:

  • 同事A:日常只用Word和Excel,完全不懂命令行
  • 朋友B:程序员,用Mac,偶尔折腾Docker
  • 邻居C:30多岁,用电脑主要是看视频和炒股

三个人里,前两个人测完反馈都挺好。邻居C遇到了一点问题——他电脑的USB口供电不足,U盘里的程序跑不起来。

后来我加了说明,建议用USB 3.0的口,或者用带外接供电的USB Hub。

这也提醒我:工具做出来不难,难的是想到所有用户的实际使用场景。


用U盘装OpenClaw,只需三步:

第一步:在GitHub下载最新版的U-Claw压缩包

第二步:解压后拷贝到U盘根目录

第三步:双击 Windows-Start.bat(Mac点 Mac-Start.command),等浏览器自动打开配置页面,填入AI模型的Key

就这么简单。

项目地址:https://github.com/dongsheng123132/u-claw

官网地址:https://www.u-claw.org