【2026实测】闲置 Windows 笔记本部署 OpenClaw AI员工:WSL2 踩坑全记录

【2026实测】闲置 Windows 笔记本部署 OpenClaw AI员工:WSL2 踩坑全记录

【2026实测】闲置 Windows 笔记本部署 OpenClaw AI员工:WSL2 踩坑全记录

最近刷到好几篇openclaw的文章,清一色的操作是:买一台 Mac Mini,装上 OpenClaw,接上飞书,完事(甚至买来就是装配好的)。

说句大实话,这些文章 90% 的作者自己都没搞清楚 OpenClaw 的配置到底在干什么。买个 Mac Mini 跟着教程抄就是了,出了问题换个教程再抄。

我的做法不一样——翻出抽屉里吃灰两年的 Win10 笔记本,装个 WSL2,从 systemd 配置到模型注册表到 OAuth 凭证克隆,每一步都是自己趟出来的。两天时间,4 个让人想砸键盘的大坑,最后跑通了 DeepSeek + Gemini 双模型、飞书 + Telegram 双通道的 24/7 AI 同事。

看完这篇你能拿到:一台闲置 Windows 笔记本变成 AI 同事的完整路径(约 2 小时,前提是你不踩我已经踩过的坑)。


为什么用闲置 Windows 笔记本,而不是 Mac Mini 或云服务器

compare-plans

我看了一圈"AI 同事"的部署方案,主流就三种:Mac Mini、云服务器、闲置电脑。把关键指标摆出来:

方案硬件成本月运行成本环境你可能已经有了吗
Mac Mini M4XXXX 元电费 ≈ 3 元macOS 原生大概率没有,得买
云服务器 4C8G038~80 元/月Linux 原生不适用,持续付费
闲置 Win 笔记本0电费 ≈ 5 元Windows+WSL2抽屉里大概率有一台

第一,核心问题是"你已经有了"。 大多数开发者家里都有一台闲置笔记本——换了新电脑后老的扔抽屉里吃灰。它的硬件成本对你来说是零,因为钱已经花过了。Mac Mini 的 钱 是一笔新支出,而云服务器每月 38~80 元是持续支出。功耗差距算下来每月也就几块钱电费的事。

第二,Windows中的WSL2 原生支持 Linux。 OpenClaw 的 Gateway 跑在 Node.js + systemd 上,本质上需要一个 Linux 环境。WSL2 给你的不是模拟器,是一个跑在 Hyper-V 上的真实 Linux 内核,而且你不需要学习linux,就像操作Windows上的一个命令行窗口一样简单。我实测 Ubuntu 24.04 + systemd 完全能撑住 24/7 常驻。

第三,本地数据不经过任何第三方。 云服务器的数据存在别人的机房里,你的 API Key、聊天记录、知识库全在云端。自己的笔记本上这些东西不出家门,飞书用长连接不需要公网域名,安全感完全不一样。


环境搭建:WSL2 + systemd,两个命令但有一个隐藏陷阱

wsl2-architecture

装 WSL2 本身没什么好说的

PowerShell 管理员运行:

wsl --install -d Ubuntu-24.04 

重启电脑,设置 Ubuntu 用户名密码,结束。

wsl-welcome

隐藏陷阱:systemd 默认是关的

OpenClaw 的 Gateway 需要 systemd 做进程托管。但 WSL2 默认不启动 systemd——这意味着 systemctl 命令全部报错,Gateway 根本起不来。

修复只需要两步,但第二步很多人会忘:

# 在 WSL 内部sudobash-c'cat > /etc/wsl.conf << EOF [boot] systemd=true EOF'

然后必须回到 Windows PowerShell 执行:

wsl --shutdown 

重新打开 WSL 终端,systemctl 才能用。只关终端窗口是不够的,必须 wsl --shutdown 彻底关掉虚拟机再重新进入。

防爆内存:给 WSL2 上个紧箍咒

WSL2 默认会吃掉宿主机 50%~80% 的内存。闲置笔记本跑 24/7,不限制的话迟早卡死宿主机。

在 Windows 侧创建 C:\Users\你的用户名\.wslconfig

[wsl2] memory=6GB processors=6 swap=0 

wsl --shutdown 一次生效。这个文件只需要创建一次,以后每次启动 WSL 自动读取。


安装 OpenClaw + 启动守护进程

install-flow

进入 WSL Ubuntu 终端:

sudoapt update &&sudoapt upgrade -ycurl-fsSL https://openclaw.ai/install.sh |bash openclaw --version# 确认版本号 openclaw doctor # 环境体检

然后跑 Onboarding 向导:

openclaw onboard --install-daemon --no-interactive-defaults 

向导里先选 DeepSeek 做默认模型,Daemon 选启用 systemd 服务。通道先随便选一个,后面单独配。

systemctl --userenable--now openclaw-gateway.service openclaw status --deep# 这条命令后面会救你的命

写到这可能有人想问,为什么我用 DeepSeek?其实单纯是因为我 DeepSeek API Key 早都充过值了,想利用一下。如果你本身有其他更好的多模态大模型 API 可选(比如支持视觉的),完全可以用别的。


踩坑实录:4 个让人想砸键盘的致命问题

这才是这篇文章的核心价值。网上那些 Mac Mini 教程之所以"看起来简单",是因为 macOS 环境天然规避了这些坑。在 WSL 上你躲不掉,但我已经替你趟过了。

每个坑我都给出原始报错 → 根因分析 → 解法,直接抄就行。

坑 1:环境变量死锁 —— CLI 被自己的配置文件锁死

按文档在 openclaw.json 里写了模板变量:

"botToken":"${TELEGRAM_BOT_TOKEN}"

然后所有openclaw 命令都废了:

MissingEnvVarError: Missing env var "TELEGRAM_BOT_TOKEN" referenced at config path: channels.telegram.accounts.default.botToken 

这个报错看起来像是"你还没填 Token",但真正的问题比这狠得多:OpenClaw CLI 在执行任何命令之前——包括 openclaw doctoropenclaw config set——都会全量解析 openclaw.json。环境变量不存在?CLI 直接拒绝启动。你想用 CLI 设置环境变量?CLI 都启动不了。

经典的死锁。

解法:别跟 CLI 较劲,直接手动编辑 ~/.openclaw/openclaw.json,把所有 ${...} 替换成空字符串或者直接填上真实值。等 CLI 复活后再用命令行注入:

openclaw config set env.DEEPSEEK_API_KEY "sk-你的key"

坑 2:升级后"幽灵进程" —— 前台新版本,后台旧版本

执行了 npm i -g openclaw@latest --forceopenclaw --version 确认 2026.3.1。配置了 DeepSeek,信心满满发条消息,Telegram 秒回:

Agent failed before reply: Unknown model: deepseek/deepseek-chat 

我在这个报错上卡了将近两个小时。模型名对了,Provider 也注册了,openclaw doctor 也没报错。

最后是 openclaw status --deep 救了我。这条命令的输出暴露了致命矛盾:

  • CLI 版本:2026.3.1
  • Gateway 版本:2026.2.26

前台升级了,后台 systemd 服务还指着旧版本的路径。旧版物理源码里根本没有 DeepSeek 的驱动——当然报 Unknown model。

解法——“换芯手术”

# 1. 停掉旧进程 systemctl --user stop openclaw-gateway.service pkill-9node# 2. 找到新版本的真实路径which openclaw # 假设返回 /home/hdev/.npm-global/bin/openclawREAL_INDEX="/home/hdev/.npm-global/lib/node_modules/openclaw/dist/index.js"# 3. 把 systemd 服务指向新版本sed-i"s|ExecStart=.*|ExecStart=/usr/bin/node $REAL_INDEX gateway --port 18789|"\ ~/.config/systemd/user/openclaw-gateway.service # 4. 重载并启动 systemctl --user daemon-reload systemctl --user start openclaw-gateway.service 

做完再跑一次 openclaw status --deep,确认两边版本一致。

坑 3:模型注册表的"名分"问题

我还试过一个骚操作:把 model ID 写成 openai/gpt-4o,但 baseUrl 指向 DeepSeek——想"借壳上市"。

不行。2026.3.1 会原封不动地向远端发送 {"model": "gpt-4o"},DeepSeek 收到一个不属于自己的模型名,直接拒绝。

新版 OpenClaw 必须在 JSON 顶层显式建立 providers 注册表,给每个模型上正式"户口":

"models":{"providers":{"deepseek":{"baseUrl":"https://api.deepseek.com/v1","apiKey":"${DEEPSEEK_API_KEY}","api":"openai-completions","models":[{"id":"deepseek-chat","name":"DeepSeek V3"},{"id":"deepseek-reasoner","name":"DeepSeek R1"}]}}}

这里有两个细节卡了我很久:

  1. baseUrl必须/v1,写成 https://api.deepseek.com 直接 404
  2. api 字段必须openai-completions,不能只写 openai——少写半截就是另一个协议

坑 4:WSL 里的 OAuth 回调黑洞

这个坑只有 WSL 环境才会遇到。Google Gemini 的 OAuth 登录需要浏览器回调到 127.0.0.1。但 WSL 里没有浏览器,Windows 侧浏览器的回调又穿不透 WSL 的网络隔离——登录流程无限挂起,没有任何报错,就是卡住不动。

解法——暴力克隆凭证

如果你之前在 WSL 里用 gemini 命令登录过 Google 账号(即 @google/gemini-cli),那 OAuth Token 已经存在本地了,直接提取给 OpenClaw 用:

第一步,从 ~/.gemini/oauth_creds.json 提取 refresh_token

第二步,写入 OpenClaw 能读懂的格式。创建 ~/.openclaw/credentials/auth-profiles.json

{"version":1,"profiles":{"google-gemini-cli:[email protected]":{"provider":"google-gemini-cli","type":"oauth","email":"[email protected]","tokens":{"access_token":"...","refresh_token":"1//0gtqXi...","token_type":"Bearer"}}},"order":{"google-gemini-cli":["google-gemini-cli:[email protected]"],"google":["google-gemini-cli:[email protected]"]}}

第三步,也是最容易漏的:order 映射表。没有它,系统依然报 No API key found。这个字段的作用是把 google 这个别名强制解析到你刚定义的 profile 上。


补充:三大 Agent CLI,接入难度差距很大

agent-cli-compare

说完四个坑,顺便对比一下 OpenClaw 支持的三大 Agent CLI(Codex、Gemini CLI、Claude Code)各自的接入体感。

Codex:耗不费力,也没什么顾虑。ChatGPT 用户直接通过 openclaw onboard --auth-choice openai-codex 走官方 OAuth,一步到位,认证自动写入 auth-profiles.json,主脑切换即可用。

Gemini CLI:OpenClaw 2026.3.1 已内置插件式接入,加上坑 4 里的凭证克隆方案,总体也算顺滑。最大阻力就是 WSL 无头环境那个 OAuth 黑洞,但克隆 Token 完全解决了。

Claude Code:要谨慎。它的认证深度绑定 Anthropic 生态,与 OpenClaw ACP 协议的整合目前还不够完整,贸然接入容易出现权限混用或 Token 冲突。除非你明确知道自己在做什么,否则建议等官方支持成熟后再动。


接通飞书 + Telegram 双通道

dual-channel

OpenClaw 支持多种 IM 通道同时接入。我的配置是飞书为主、Telegram 为辅。

飞书:国内首选,权限配置是重点

飞书是我推荐的首选通道。原因很实际:国内网络直连、注册零门槛、长连接模式不需要公网域名,而且飞书在国内职场的普及率摆在那里。

飞书开放平台 创建企业自建应用后,权限配置必须到位,这里很多人会踩坑——权限少勾一个,消息就收不到或发不出去,但不会有明确报错。

必须开启的 3 个权限(缺一个都不能正常收发消息):

权限标识干什么用的
im:message:send_as_bot让机器人能发消息——没有这个,你的 AI 同事是个哑巴
im:message.p2p_msg:readonly读私聊消息——没有这个,私聊给机器人它收不到
im:message.group_at_msg:readonly读群里 @ 机器人的消息——没有这个,群里 @ 它没反应

建议加上的 2 个权限(不加也能跑,但加了更稳):

权限标识干什么用的
im:chat.members:bot_access读群成员和会话信息,很多 bot 场景会用到
im:resource发图片、文件、富媒体时需要,不发可以先不加

事件回调选**"长连接"模式**——这是关键选择。长连接不需要公网域名和 HTTPS 证书,WSL 内网环境完美适配。如果你选了"HTTP 推送"模式,那就得自己搞定公网回调地址,纯属给自己找麻烦。

添加事件 im.message.receive_v1,创建版本,提审,发布。然后回到 WSL 配置 OpenClaw:

openclaw channels add feishu # 输入 App ID 和 App Secret openclaw gateway restart openclaw logs --follow# 看到 feishu connected 就成功了

Telegram:可选,适合有代理条件的用户

Telegram 在技术圈很流行,OpenClaw 社区的教程也基本都以 Telegram 为例。但坦白说,对国内用户来说它不是最优选。

两个现实问题

  1. 注册门槛:Telegram 需要用海外手机号或通过代理注册,BotFather 创建 Bot 本身也需要在 Telegram 里操作。如果你之前没用过 Telegram,光注册这一步就可能卡住。
  2. 代理依赖:OpenClaw Gateway 连接 Telegram Bot API 需要走代理。代理一旦挂了,你的 AI 同事就彻底失联——偏偏你最需要远程找它帮忙的时候,往往就是网络不稳定的时候。

如果你已经有 Telegram 账号和稳定代理,接入倒是很简单:

openclaw channels add telegram # 输入 BotFather 给你的 token,dmPolicy 选 pairing

我个人的策略是飞书做主通道保证可用性,Telegram 做备用通道。两个通道可以同时接入同一个 Agent,不冲突。


最终效果:在手机上随时召唤不同"大脑"

跑通之后是什么体验?直接看截图:

feishu-desktop
feishu-mobile

部署完成后,在飞书或 Telegram 里通过 /model 命令即时切换不同模型:

命令调用谁适合干什么
/model dsDeepSeek V3日常聊天、快速任务,便宜
/model dsrDeepSeek R1深度推理,死磕复杂问题
/model g3pGemini 3.1 Pro200 万上下文,读大型项目源码
/model g3fGemini 3 Flash看图、快速摘要
/model cdxCodex 5.3写代码专职

整台闲置笔记本跑 WSL + OpenClaw 的待机功耗大约 10~20W,一天不到半度电。我目前配置的主大脑是 Gemini 3 Flash,效果很好,反应速度很快,而且是原生多模态有视觉能力。日常也随时切换 DeepSeek,API 对话成本很低。具体任务再按需指派其他模型。


给想动手的人:一份最小可行清单

你只需要准备这些:

  1. 一台能开机的 Windows 笔记本(8G+ 内存)
  2. 一个大模型 API Key(DeepSeek 注册即送额度,或者你已有的其他 API 都行)
  3. 飞书自建应用的 App ID + Secret(5 分钟创建)
  4. 一个 Telegram Bot Token(可选,需要代理环境)
  5. 大约 2 小时的时间

不需要买任何硬件。不需要云服务器。不需要懂 Linux——WSL 给你兜底了。

如果你也有一台吃灰的笔记本,不妨试试。比花几千块买个 Mac Mini 然后跟着教程抄,踏实多了。


作者简介: 10年+码农,曾任某互联网大厂技术专家。常年专注于原生应用和高性能服务器开发、视频传输和处理技术以及AI编程工具和AI赋能应用。

个人主页:haibindev.github.io

交流请加文章下方微信名片:hbstream个人主页:https://haibindev.github.io/),转载请注明作者和出处**


相关推荐

Read more

CH347使用笔记:CH347作为FPGA下载器的几种方式

CH347使用笔记:CH347作为FPGA下载器的几种方式

CH347简介 CH347是一款高速USB总线转接芯片,通过USB总线提供异步串口、I2C同步串行接口、SPI同步串行接口和JTAG接口等。JTAG接口最高支持60Mhz。 详细介绍: CH347-高速USB转串口、JTAG/SWD、SPI、I2C芯片介绍 CH347下载FPGA程序的三种方式 使用OpenOCD OpenOCD(Open On-Chip Debugger)作为开源的硬件调试器,除了可以对嵌入式芯片进行下载和调试,其实还支持一些型号的FPGA下载。 在OpenOCD目录中的share\openocd\scrips目录中可以看到支持的FPGA型号。 具体使用可参考 CH347应用–USB TO JTAG进行FPGA调试下载 2. 使用OpenFPGALoader 类似于成熟的openOCD项目,openFPGALoader主要专注于对FPGA的固件下载,支持Xilinx, Altera/Intel, Lattice, Gowin等常见FPGA。 项目链接:https://github.com/ZhiyuanYuanNJ/openFPG

【读点论文】Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot MD and SNE坐标系变换

【读点论文】Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot MD and SNE坐标系变换

Metric3D v2: A Versatile Monocular Geometric Foundation Model for Zero-shot Metric Depth and Surface Normal Estimation Abstract * Metric3D v2是一个几何基础模型,用于从一幅图像中进行零样本深度和表面法线估计,这对度量3D恢复至关重要。虽然深度和法线在几何上是相关的,并且高度互补,但它们存在不同的挑战。最先进的(SoTA)单目深度方法通过学习仿射不变深度来实现零样本泛化,同时,由于缺乏大规模标记数据,SoTA法线估计方法的零样本性能有限。为了解决这些问题,我们提出了度量深度估计和表面法线估计的解决方案。对于度量深度估计,我们指出,零样本单视图模型的关键在于解决各种相机模型和大规模数据训练的度量模糊性。我们提出了一个规范的相机空间转换模块,它明确地解决了模糊性问题,可以毫不费力地插入到现有的单目模型中。 * 对于表面法向估计,我们提出了一个联合深度-法向优化模块,从度量深度中提取多样化的数据知识,使法向估计器能够超越法向标签进行学习。配备了这

一文讲清楚RAG 四大模式:Naive RAG、Advanced RAG、Modular RAG 与 Agentic RAG

一文讲清楚RAG 四大模式:Naive RAG、Advanced RAG、Modular RAG 与 Agentic RAG

随着技术迭代,RAG 已从最初的简单架构发展出多种进阶形态。本文将系统解析 RAG 的四大主流模式 ——Naive RAG、Advanced RAG、Modular RAG 与 Agentic RAG,从工作原理、技术特点到适用场景进行全方位对比,为技术选型提供参考。 一、RAG 基础:检索增强生成的核心逻辑 在深入模式解析前,需先明确 RAG 的核心逻辑。简单来说,RAG 由检索(Retrieval) 与生成(Generation) 两大模块构成: 检索模块:从预设知识库中精准定位与用户问题相关的信息片段(如文档、段落、句子); 生成模块:基于检索到的信息,结合大语言模型生成符合上下文、逻辑连贯的答案。 这种 “先检索再生成” 的模式,既保留了 LLM 的语言理解与生成能力,又通过外部知识的引入弥补了模型训练数据过时、事实准确性不足的缺陷。

机器人坐标系详解

机器人坐标系详解

笔者虽然从事自动化工作十几年,但是对于机器人坐标系的理解始终是一知半解,最近认为吃透了坐标系的事,和广大同仁分享一下。 工业机器人的坐标系的五个坐标系:1、世界坐标系;2、机器人足部坐标系;3、基坐标系;4、法兰坐标系;5、工具坐标系 这五个坐标系是工业机器人空间位置和姿态的数学基础。可以把它们想象成一套从宏观到微观的定位系统。 为了让你更直观地理解,可以把整个机器人工作站想象成一个房间,把机器人想象成人的手臂。以下是详细的解释: 1. 世界坐标系 —— 房间的地标 * 定义:这是一个固定不变的绝对坐标系,通常定义在整个工作站(房间)的某个角落。 * 用途:用来描述房间里所有东西的绝对位置。比如:机器人站在哪里、传送带放在哪里、工件放在哪里,都是相对于世界坐标系的。 * 理解:它相当于你房间里的经纬度或者墙角。无论你怎么移动,这个点的位置是固定不变的。 2. 机器人足部坐标系 —— 机器人脚下的地 * 定义:这是一个位于机器人安装底座正下方的坐标系。通常Z轴垂直向上,指向机器人的身体。 * 用途:在安装机器人时,我们需要把机器人足部坐标系校准到世界坐标系中去。