想过没有?你那台24小时开机的Ubuntu,其实可以变成一个能免费调用DeepSeek、Claude、ChatGPT等主流大模型的“AI指挥中心”,全天候为你提供AI服务。这不再是科幻场景,我花了两三个晚上,在本地电脑上成功跑通了免费OpenClaw——也就是OpenClaw Zero Token项目。今天就来和你分享这份手把手的安装OpenClaw教程,希望能帮你绕开我踩过的那些坑。

一、为什么你需要这个“零成本”方案?

如果你曾为大模型的API费用头疼,或担心Token泄露,那么这个方案就是为你准备的。简单说,OpenClaw Zero Token相当于一个智能“中间人”。它在你电脑后台打开一个专用的浏览器,让你登录各大AI网站(如DeepSeek、千问等),然后巧妙地“捕获”并保存你的登录凭证(Cookie)。之后,你就能通过它统一的界面或API,免费调用这些模型了。整个过程,凭证都存储在本地,相当安全。

  • 零成本:完全免费,告别按token计费的焦虑。
  • 模型丰富:目前已测试支持Claude、DeepSeek、Kimi、智谱清言等十多个平台。
  • 工具调用:支持让AI执行搜索、读取文件等操作,实用性很强。

二、环境准备:把你的Ubuntu变成“准系统”

其实项目硬件要求并不高,我的主力机是一台饱经沧桑的Intel NUC,运行Ubuntu 24.04桌面版,完全胜任。软件方面,需要保证以下条件就绪:

  1. Node.js >= 22.12.0:直接用官方源安装可能版本偏老。建议用nvm (Node Version Manager) 管理,能轻松安装和切换版本。本测试采用版本为22.22.2。
  2. pnpm >= 9.0.0:比npm更快,是项目指定的包管理器。本测试采用10.33.2。
  3. Chrome 浏览器:必需的,这是自动化操作的基础。本测试采用147.0.7727.116。

三、零基础实战:六步安装OpenClaw Zero Token

下面就是核心步骤,按部就班走起就行。

1、克隆项目与编译

用终端进入你打算存放项目的目录,然后执行:

git clone https://github.com/linuxhsj/openclaw-zero-token.git
cd openclaw-zero-token
npm install
npm run build
pnpm ui:build

以上步骤完成后,需要验证编译是否成功。

ls dist/index.js  #文档中提到是index.mjs,实际测试中发现是index.js
ls dist/control-ui/index.html

2、启动Chrome调试模式(保持运行)

编译成功后,需要在当前终端启动一个带调试端口的Chrome实例。这个终端窗口在后续操作中必须一直开着。

./start-chrome-debug.sh

执行后,会自动弹出一个Chrome浏览器窗口。地址栏旁应该能看到一个“remote debugging”的提示。

3、登录各大AI平台

在这个刚弹出的Chrome窗口里,应该会自动弹出所支持的AI平台登录页面。如果没有,可以手动访问并登录你想要使用的所有AI平台,比如:

  • chat.deepseek.com
  • chat.qwen.ai
  • kimi.moonshot.cn
  • claude.ai
  • 等等…

只需要完成一次网页登录,OpenClaw后续会依赖这些登录状态。

4、运行授权向导,捕获凭证

这是打通任督二脉的关键一步。另开一个新的终端窗口,进入项目目录,运行:

./onboard.sh webauth

这个脚本会启动一个命令行交互界面。你需要根据提示,一个一个地选择刚才登录过的平台(比如 deepseek-web、qwen-web等)。它会连接到上一步保持打开的那个Chrome窗口,自动抓取你的登录凭证并保存。

避坑指南:授权失败的多种可能
这一步最容易出问题。如果你遇到No browser found的连接错误,先检查第一步的start-chrome-debug.sh是否还在正常运行。如果抓取某个平台凭证失败,比如提示“capture failed”,大概率是浏览器没登录好或网络有波动。可以关闭并重新执行start-chrome-debug.sh,然后在弹出的新浏览器窗口里重新登录一次该平台,再执行./onboard.sh webauth只选这个平台重试。

5、启动服务,尽情体验

凭证都抓取成功后,就可以启动主服务了。同样在项目目录下执行:

./server.sh start

看到输出里出现Web UI available at http://127.0.0.1:3001/...之类的信息时,就表示启动成功了。此时会自动弹出主界面,如果没有,可以用浏览器打开那个地址,就能看到一个清爽的聊天界面。你可以直接在这里切换各种模型提问了。

6、日常使用与维护

  • 日常启动:以后每次想用,只需运行./server.sh start即可。
  • 会话过期:网页登录有时效,如果发现模型无法回复,需要重新在调试模式的浏览器里登录对应的网页,即再次执行第2、3、4步。
  • 服务管理./server.sh restart(重启)、./server.sh stop(停止)、./server.sh status(看状态)。
  • 列出Pairing devices并允许
# 替换为真实token
npx openclaw devices list --url ws://127.0.0.1:3001 --token 123456
# 替换为真实token
npx openclaw devices approve XXX --url ws://127.0.0.1:3001 --token 123456
  • 查看openclaw.json
cat /.openclaw-upstream-state/openclaw.json

当然,安装过程中可能会有些意外情况,比如网络问题、兼容问题等,以下分享我所踩过的坑,仅供参考。

四、踩坑手记

1、运行npm install依赖版本错误

root@NUC:/home/nuc/openclaw-zero-token# npm install

npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: oxlint@1.61.0
npm error Found: oxlint-tsgolint@0.16.0
npm error node_modules/oxlint-tsgolint
npm error   dev oxlint-tsgolint@"^0.16.0" from the root project
npm error
npm error Could not resolve dependency:
npm error peerOptional oxlint-tsgolint@">=0.18.0" from oxlint@1.61.0
npm error node_modules/oxlint
npm error   dev oxlint@"^1.53.0" from the root project
npm error
npm error Conflicting peer dependency: oxlint-tsgolint@0.22.0
npm error node_modules/oxlint-tsgolint
npm error   peerOptional oxlint-tsgolint@">=0.18.0" from oxlint@1.61.0
npm error   node_modules/oxlint
npm error     dev oxlint@"^1.53.0" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /root/.npm/_logs/2026-04-26T01_28_28_756Z-eresolve-report.txt
npm error A complete log of this run can be found in: /root/.npm/_logs/2026-04-26T01_28_28_756Z-debug-0.log

这个错误是由于依赖版本冲突引起的,项目中的 oxlint-tsgolint 版本是 0.16.0,但oxlint@1.61.0需要oxlint-tsgolint@>=0.18.0。

解决方法:使用 –legacy-peer-deps

npm install --legacy-peer-deps

2、运行npm install –legacy-peer-deps权限报错

root@NUC:/home/nuc/openclaw-zero-token# npm install --legacy-peer-deps

npm error code 128
npm error An unknown git error occurred
npm error command git --no-replace-objects ls-remote ssh://git@github.com/whiskeysockets/libsignal-node.git
npm error git@github.com: Permission denied (publickey).
npm error fatal: Could not read from remote repository.
npm error
npm error Please make sure you have the correct access rights
npm error and the repository exists.
npm error A complete log of this run can be found in: /root/.npm/_logs/2026-04-26T01_35_55_814Z-debug-0.log

这个错误是因为项目尝试通过SSH协议克隆私有仓库,但你的系统没有配置 SSH 密钥,或者该仓库是私有的。

解决方法:将 SSH 改为 HTTPS

git config --global url."https://github.com/".insteadOf ssh://git@github.com/
git config --global url."https://github.com/".insteadOf git@github.com:

3、运行npm run build由于缺少必要的依赖包而构建失败

root@NUC:/home/nuc/openclaw-zero-token# npm run build

openclaw@2026.3.28 build
pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/copy-plugin-sdk-root-alias.mjs && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts

openclaw@2026.3.28 canvas:a2ui:bundle /home/nuc/openclaw-zero-token
bash scripts/bundle-a2ui.sh

<DIR>/a2ui.bundle.js  chunk │ size: 457.10 kB

✔ rolldown v1.0.0-rc.9 Finished in 121.95 ms

extensions/diagnostics-otel/src/service.ts (1:47) [UNRESOLVED_IMPORT] Warning: Could not resolve '@opentelemetry/api' in extensions/diagnostics-otel/src/service.ts
   ╭─[ extensions/diagnostics-otel/src/service.ts:1:48 ]
   │
 1 │ import { metrics, trace, SpanStatusCode } from "@opentelemetry/api";
   │                                                ──────────┬─────────
   │                                                          ╰─────────── Module not found, treating it as an external dependency
───╯

extensions/diagnostics-otel/src/service.ts (3:32) [UNRESOLVED_IMPORT] Warning: Could not resolve '@opentelemetry/exporter-logs-otlp-proto' in extensions/diagnostics-otel/src/service.ts
   ╭─[ extensions/diagnostics-otel/src/service.ts:3:33 ]
   │
 3 │ import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-proto";
   │                                 ────────────────────┬────────────────────
   │                                                     ╰────────────────────── Module not found, treating it as an external dependency
───╯
... ...

Found 24 errors in 10 files.

Errors  Files
     9  extensions/matrix/src/matrix/client/file-sync-store.ts:11
     1  extensions/matrix/src/matrix/client/logging.ts:1
     5  extensions/matrix/src/matrix/sdk.ts:11
     1  extensions/matrix/src/matrix/sdk/crypto-bootstrap.ts:1
     1  extensions/matrix/src/matrix/sdk/crypto-node.runtime.ts:7
     2  extensions/matrix/src/matrix/sdk/decrypt-bridge.ts:1
     1  extensions/matrix/src/matrix/sdk/event-helpers.ts:1
     1  extensions/matrix/src/matrix/sdk/idb-persistence.ts:3
     1  extensions/matrix/src/matrix/sdk/recovery-key-store.ts:3
     2  extensions/matrix/src/matrix/sdk/verification-manager.ts:5
 ELIFECYCLE  Command failed with exit code 1.

构建失败是因为缺少必要的依赖包。项目需要安装很多扩展依赖才能成功构建,先安装所有必需的依赖。

# 安装 OpenTelemetry 相关依赖
npm install --legacy-peer-deps @opentelemetry/api @opentelemetry/exporter-logs-otlp-proto @opentelemetry/exporter-metrics-otlp-proto @opentelemetry/exporter-trace-otlp-proto @opentelemetry/resources @opentelemetry/sdk-logs @opentelemetry/sdk-metrics @opentelemetry/sdk-node @opentelemetry/sdk-trace-base @opentelemetry/semantic-conventions

# 安装 Twitch 相关依赖
npm install --legacy-peer-deps @twurple/auth @twurple/chat @twurple/api

# 安装 Nostr 相关依赖
npm install --legacy-peer-deps nostr-tools

# 安装 Matrix 相关依赖
npm install --legacy-peer-deps matrix-js-sdk fake-indexeddb @matrix-org/matrix-sdk-crypto-nodejs

# 安装其他缺失依赖
npm install --legacy-peer-deps @pierre/diffs zca-js @microsoft/teams.apps @microsoft/teams.api @urbit/aura @aws-sdk/client-s3 @aws-sdk/s3-request-presigner

4、无法启动 Chrome 调试模式

系统: linux
Chrome: /opt/google/chrome/google-chrome
用户数据目录: /root/.config/chrome-openclaw-debug

正在启动 Chrome 调试模式...
端口: 9222

Chrome 日志: /tmp/chrome-debug.log
等待 Chrome 启动...
✗ Chrome 启动失败

请检查:
  1. Chrome 路径: /opt/google/chrome/google-chrome
  2. 端口 9222 是否被占用: lsof -i:9222
  3. 用户数据目录权限: /root/.config/chrome-openclaw-debug
  4. 启动日志: /tmp/chrome-debug.log

尝试手动启动:
  "/opt/google/chrome/google-chrome" --remote-debugging-port=9222 --user-data-dir="/root/.config/chrome-openclaw-debug"
root@NUC:/home/nuc/openclaw-zero-token# "/opt/google/chrome/google-chrome" --remote-debugging-port=9222 --user-data-dir="/root/.config/chrome-openclaw-debug"

问题是 Chrome 不允许以 root 用户运行,除非加上 –no-sandbox 参数。

解决方法:退出root用户,以普通用户运行。或者,对于root用户使用 –no-sandbox 参数,在新终端窗口中运行。

"/opt/google/chrome/google-chrome" --remote-debugging-port=9222 --user-data-dir="/root/.config/chrome-openclaw-debug" --no-sandbox

5、检测到nodejs版本较低

可以使用 NodeSource 仓库安装最新nodejs:

# 更新系统并安装必要的依赖
sudo apt update
sudo apt install -y curl ca-certificates gnupg

# 添加 NodeSource 仓库(22.x 版本)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -

# 安装 Node.js(npm 会一并安装)
sudo apt install -y nodejs

走到这里,你的本地免费OpenClaw就已经搭建好了。这个安装OpenClaw教程虽然步骤不少,但每一步都很清晰。整个过程更像是在搭建一个你的专属AI工作台。之后无论是批量处理文档,还是对比不同模型的回答,都会顺手很多。更为关键的是,无需算计着使用,瞬间实现Token自由。