1. 写在前面:为什么我建议你在Windows上折腾OpenClaw
OpenClaw这个项目,最近在AI自动化和个人助理圈子里热度一直没降过。简单说,它是一个开源的个人AI助理框架,能够把大模型接到微信、飞书、Telegram、Discord这些聊天渠道里,还能让AI调用浏览器、执行命令、操作文件,干一些真正“动手”的活儿。比起那种只能聊天的机器人,OpenClaw更强调Agent的能力——你告诉它目标,它自己拆解任务、调工具、再反馈结果。
我之前在Linux服务器上跑过一段时间的OpenClaw,稳定性和自由度都很满意。但问题来了,很多朋友不是每个人都有云服务器,大部分人的主力机器就是一台Windows电脑。大家就想在本地Windows上装一个OpenClaw,拿来做日常自动化、接微信小号、跑一些定时任务。这需求完全合理,但Windows下的安装和卸载比Linux要麻烦一些,坑也多一些。
这篇东西把我最近在Windows上装OpenClaw、跑通微信渠道、再把它卸干净的整个过程,全部摊开来讲。包括环境怎么准备、一键脚本到底帮你干了什么、装完之后怎么配千问或者其他模型、怎么接微信、遇到“session file locked”“could not safely verify the WSL2 environment”这类报错怎么定位、最后怎么彻底卸载不留垃圾。全程基于我自己实际操作过的流程,每个步骤都是可以照着做的。
1.1 先搞清楚OpenClaw到底依赖哪些东西
在Windows上装OpenClaw,本质上不是在Windows系统里直接跑,而是借助WSL2(Windows Subsystem for Linux)开一个Linux环境。OpenClaw本身需要Node.js运行时、Linux的进程管理、网络端口监听,这些在纯Windows环境下运行会有各种兼容问题,官方也不推荐。WSL2相当于在Windows里嵌了一个轻量虚拟机,跑起来几乎无感,文件系统互通,命令行直接能用bash——这是Windows用户跑OpenClaw最平滑的路径。
所以整个安装链条就是:Windows系统 -> 启用WSL2 -> 安装Ubuntu发行版 -> 在Ubuntu里装OpenClaw -> 配置模型API和渠道 -> 启动服务。你可能会问,那热搜里提到的“openclaw windowshub安装”是什么情况?WindowHub是Windows上的一个应用分发/管理组件,OpenClaw的Windows安装脚本会通过它来补一些运行库和依赖,但核心运行环境还是WSL2那一套。
1.2 谁适合看这篇,谁可以划走
如果你只是听说过OpenClaw,想试试看,手里有一台Windows 10或Windows 11的电脑,愿意折腾二十分钟到半小时,那这篇就是给你准备的。如果你已经跑通过OpenClaw,只是想找一个卸载干净的方法,也可以直接跳到第四节看完整的卸载流程。但如果你完全不知道OpenClaw能干嘛,也没想好要用它接哪个渠道、跑什么任务,那我建议你先想清楚用途再动手,因为装完之后如果你不配置模型API,它只是一个空壳。
下面所有内容,我都假设你用的是Windows 10 22H2以上或者Windows 11,建议内存不低于8G,磁盘剩余空间不少于10G。WSL2会占几个G,Node模块和OpenClaw本体再加渠道依赖,空间太紧容易出幺蛾子。
2. Windows环境准备:WSL2与前置依赖一次搞定
2.1 启用WSL2:不只是装个Ubuntu那么简单
很多教程会让你直接去Microsoft Store搜Ubuntu装一个,但这其实有一个大前提:Windows的“适用于Linux的Windows子系统”功能必须已经打开,而且WSL版本要设置为2。否则你装完Ubuntu打开,很可能卡在创建用户那一步,或者启动的时候直接报“WSL2 environment”相关错误——热搜里那个“openclaw could not safely verify the WSL2 environment”就是这么来的。
正确顺序是:
- 按
Win + X选择“终端(管理员)”或“Windows PowerShell(管理员)”。 - 运行这条命令启用WSL功能:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart - 接着启用在Windows中嵌入虚拟机的平台功能:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart - 重启电脑。
- 重启后,打开PowerShell,把WSL默认版本设置为2:
wsl --set-default-version 2 - 再运行
wsl --install -d Ubuntu-22.04让系统自动下载并安装Ubuntu发行版。
这里有个细节:wsl --install这条命令在较新的Windows版本里可以直接安装默认发行版,但如果你之前装过WSL1或者其他发行版,建议先运行wsl --list --verbose查看当前状态。像我自己就是装过WSL1的旧机器,折腾了大半天才发现是版本不匹配。务必确认STATE显示的是Running 2。
2.2 在Ubuntu里把基础依赖铺好
Ubuntu装好后,第一次启动会让你设置UNIX用户名和密码。注意,这个用户名不一定非要和Windows用户名一致,但密码一定要记牢,因为后面所有sudo操作和WSL内服务管理都要用到。
进入Ubuntu终端(在Windows终端里输入wsl就能进去),先做常规更新:
sudo apt update && sudo apt upgrade -y然后安装基础工具链。OpenClaw在WSL里跑的时候,经常需要curl下载资源、git拉取代码、vim或者nano改配置文件,这些一次性装齐比较省事:
sudo apt install -y curl git vim build-essential接下来装Node.js。OpenClaw对Node版本有要求,实测用Node 18或20都正常,建议直接装20 LTS。用NodeSource源安装最干净:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs装完验证一下版本:
node -v npm -v如果你之前已经在Windows里装过Node.js,那也没关系,WSL2里的Ubuntu是一个独立环境,和Windows的程序互不干扰。OpenClaw在WSL里跑,用的就是Ubuntu内部的Node,这点在排查问题时特别重要——很多新手在Windows命令行里看到node -v有版本,就以为环境OK了,结果进WSL发现根本没有,这就是环境没对齐。
2.3 为什么我建议不要直接用Windows版Docker来跑
OpenClaw官方其实也提供Docker镜像的安装方式。很多朋友看到Docker就兴奋,觉得自己Windows上装个Docker Desktop跑容器多干净。这个思路在Linux服务器上确实好使,但在Windows上,Docker Desktop本身就是跑在WSL2里的——等于你再用Docker在WSL里套一层容器,层层嵌套,网络模式和文件挂载都非常容易出问题。我试过在Windows Docker Desktop里跑OpenClaw容器,经常遇到端口映射失效、微信登录时文件权限错乱的情况,排查起来头大。
所以我的建议是:新手第一次装OpenClaw,直接走WSL2 + 本机跑Node进程这条路,等Passenger(之后细讲)跑起来以后,再用服务管理的方式去维护进程。Docker方案留给已经熟悉容器概念的朋友二次研究。
3. OpenClaw安装全流程:从一键脚本到自定义配置
3.1 一键安装脚本到底做了什么
OpenClaw官方文档里给了一条很吸引人的命令,号称一键安装。我实际跑通之后,帮你拆一下这条脚本背后做了哪些事,你别真的以为它只是“点一下就行”。
在WSL2的Ubuntu终端里执行:
curl -fsSL https://openclaw.ai/install.sh | bash脚本执行过程中会依次完成以下动作:
- 检查环境—— 确认你是在Linux环境(WSL2的bash环境会被识别为Linux),Node版本是否满足要求,npm是否可用。
- 下载OpenClaw核心包—— 从npm源或者GitHub Release拉取OpenClaw本体包,存放到用户目录的
.openclaw目录下。 - 安装Passenger——
@openclaw/passenger是OpenClaw的依赖进程,它负责代理大模型API请求、管理会话状态、处理多渠道消息路由。你可以把它理解成OpenClaw的“接电话总机”,所有进出的消息都要经过它。 - 安装CLI工具—— 全局注册
openclaw命令,让你能在终端里直接操作。 - 初始化配置目录—— 在
~/.openclaw/下生成openclaw.json配置文件和默认目录结构。
脚本跑完后,在WSL里敲openclaw --version能看到版本号,就说明核心装好了。但这时候它还干不了活,因为没有模型API配置,也没有渠道接入。
3.2 配置大模型API:以千问为例
OpenClaw本身不内置模型,它需要你去对接一个大模型的API。热搜里那个“openclaw 配置千问”指的就是这个环节。千问(通义千问)的API在国内调用方便,注册就有免费额度,对新手比较友好,所以我这里拿千问举例。
进入配置目录:
cd ~/.openclaw然后用vim编辑openclaw.json:
vim openclaw.json打开后你会看到类似这样的默认结构。需要手动添加模型供应商配置。以阿里云百炼平台的千问API为例,对应的配置大致是:
{ "models": { "providers": { "qwen": { "baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1", "apiKey": "你的千问APIKey", "models": [ { "name": "qwen-plus", "contextWindow": 131072, "maxOutputTokens": 8192 } ] } }, "defaultProvider": "qwen", "defaultModel": "qwen-plus" } }APIKey需要你到阿里云百炼控制台去申请,创建API-KEY之后复制粘贴进来。这里的baseUrl用的是DashScope兼容OpenAI格式的地址,OpenClaw走的是OpenAI兼容协议,所以可以这样直接对接。
填好之后保存退出(vim里按Esc,输入:wq回车)。然后重启OpenClaw服务让配置生效:
openclaw restart这时候可以做一个快速验证——在WSL里用CLI直接发一条消息给OpenClaw,看它能不能正常调用千问回复:
openclaw chat "你好,简单介绍一下自己"如果返回正常,说明模型链路已经通了。如果报错提示api error: the model has reached its context window limit,那就是你选的模型上下文长度太小,或者你在配置里给的contextWindow参数和实际模型不一致,换成qwen-plus这类长上下文模型就能解决。
3.3 接入微信渠道:踩坑最集中的地方
模型通了以后,OpenClaw还是一台没有“手脚”的孤岛,消息渠道才是它连接世界的桥梁。国内用户最常用的渠道就是微信个人号。OpenClaw对微信的支持是通过接管微信的Web/本地接口来实现的。
配置通道的入口在openclaw.json的channels部分。最简单的配置方式是先启动OpenClaw,然后用内置命令添加渠道:
openclaw channel add wechat执行这条命令后,控制台大概率会提示你需要进行微信扫码登录。OpenClaw会起一个本地登录服务,弹出一个二维码,你用微信扫码确认登录,它会尝试接管这个微信账号的消息收发能力。
这里必须说清楚几个大坑。
第一,微信扫码登录不是你拿主号去扫。OpenClaw接管微信账号之后,这个账号的所有消息都会被它拦截处理,你再用手机微信登录同一个号会直接把另一端的登录挤掉。所以务必用一个小号、副号去对接,不要拿工作号或者生活大号去试,否则好友给你发消息却半天不回,人设就崩了。
第二,登录态不是永久有效的。微信的登录凭证有时效,过几天可能失效。如果发现OpenClaw突然不回微信消息了,去WSL里查看OpenClaw日志,大概率会看到登录过期或者token失效的提示。这时候需要重新执行openclaw channel add wechat再扫一次码。
第三,消息回复有被截断的风险。热搜里有条“openclaw在飞书输出容易被截断”,飞书是这样,微信其实也有类似问题。OpenClaw生成的回答如果太长,发送时会被微信侧截断。解决办法是在配置里给回执消息加上分段规则:
"channels": { "wechat": { "enabled": true, "maxMessageLength": 1800, "splitLongMessages": true } }我实测maxMessageLength设置在1500到2000字符之间比较安全,超过这个长度会自动拆成多条发送,每条之间加一个分割提示。这样既能保证内容完整,又不会因为一条消息过长触发微信风控或者截断。
3.4 验证OpenClaw是否活着的几个方法
配置完成并重启之后,别急着疯聊,先做几项基本验证:
- 看进程状态—— 在WSL里执行
openclaw status,确认passenger和主进程都是running状态。 - 看日志输出——
openclaw logs --tail 50实时查看日志,如果出现类似channel wechat started或者listening on port 8080之类的信息,说明渠道接入成功了。 - 发消息测试—— 用另一个微信账号给被接管的账号发一句“在吗”,几秒内应该收到OpenClaw的回复。
- 浏览器控制测试—— OpenClaw还内置了浏览器控制能力,你可以在聊天里让它“打开摄像头并截图保存到本地”,如果它能执行并返回文件路径,说明Agent的完整链路已经通透了。
注意,如果在这一步发现OpenClaw能发消息给微信,但微信发消息没回复,这就有点棘手了。我在排查这类问题时发现,往往是消息总线的回调地址没有正确配置——OpenClaw需要能收到微信侧推送的消息事件,才能触发AI回复。看看日志里有没有msg received这种关键信息,如果没有,十有八九是消息接收链路没通。
4. 常见安装与运行问题排查实录
4.1 “could not safely verify the WSL2 environment”的原因与对策
这个报错是Windows下安装OpenClaw时非常典型的。它出现的时机一般是安装脚本执行到环境检测阶段,脚本会校验当前运行环境是不是真正的WSL2,而不仅仅是WSL1或者其他虚拟环境。
我做过的排查路径是这样的:
- 在PowerShell里执行
wsl --list --verbose查看Ubuntu的版本列,确认VERSION那一栏是2而不是1。 - 如果显示版本是1,执行
wsl --set-version Ubuntu-22.04 2升级到WSL2。注意这个过程可能要几分钟,且需要机器开启虚拟化。 - 如果已经是2,还是报这个错,检查Windows功能里“虚拟机平台”是不是开着。这个功能和WSL2是绑定的,关掉会直接导致WSL2无法正常运行。
- 最后检查一下是不是在WSL里跑的bash。有那种在Windows命令行直接执行
bash进入的Git Bash环境,OpenClaw脚本识别不了,也会报类似错误。务必从Windows Terminal里启动WSL,而不是在CMD里敲bash。
4.2 启动报错 “session file locked” 怎么办
热搜里有一条很精准:“agent failed before reply: session file locked (timeout 60000ms)”。我第一次在Windows上跑OpenClaw就遇到过这个问题,具体表现就是消息发过去之后,过了一分钟才报错,内容大致是“agent failed before reply,session file locked”。
先说原因:OpenClaw为每个对话会话维护一个session文件,文件里存了上下文、状态和锁定标识。上一个请求处理完之后,如果锁没有被正常释放,下一个请求就会卡住,直到超时。
触发这个问题的常见场景有三个:
- 上一次请求异常中断—— Agent在处理消息时,如果你强行停掉OpenClaw进程或者WSL重启,锁文件来不及清理。
- 同一会话并发请求—— 你同时用两个终端或者两个渠道给同一个session发消息,OpenClaw不允许同一session并行写入,第二个请求就会等锁。
- 文件系统权限问题—— WSL和Windows文件系统之间的权限继承偶尔抽风,导致OpenClaw进程无法删除或更新session文件。
解决办法分几步走。先尝试彻底重启OpenClaw服务:
openclaw stop openclaw start如果重启后还是不行,那就是锁文件本身残留了,直接找到会话目录删掉lock文件:
ls ~/.openclaw/sessions/ rm -f ~/.openclaw/sessions/*.lock注意,不会是你正在进行的那些会话的上下文全没了,只是把锁定态清掉。删掉之后重新发消息就正常了。
如果你遇到的是频繁地锁死,建议检查一下是不是并发问题——给OpenClaw接多个渠道时,消息进入同一个session就会打架。可以在配置里给不同渠道划分独立的sessionId前缀,比如微信渠道的session用wechat_开头,飞书渠道用feishu_开头,避免互相锁。
4.3 模型上下文超限与API超时
“api error: the model has reached its context window limit” 这个我在第二节提到过一次,这里展开说一说。大模型每次会话都有上下文长度限制,也就是它能“记住”的token数是有限的。qwen-plus的上下文窗口有131072个token,虽然很长,但如果你让Agent连续处理大量文本,或者让它循环调用工具、来回传数据,很快就能把上下文填满。
碰上这个问题的常规解法有三个方向:
- 换更大上下文窗口的模型—— 千问系列的qwen-max上下文更长,或者直接选择支持超长上下文的模型。
- 开启OpenClaw的上下文压缩—— 在模型配置里加上自动摘要和裁剪策略,让Agent在长度接近上限时,把早期对话摘要成一段短文本再继续。
- 手动开新会话—— 把当前会话的内容清掉,重新起一个topic。虽然粗暴,但很多时候最有效。
而“api error”类的超时问题,多半是网络或者并发导致的。国内直连某些海外模型服务时延迟很高,OpenClaw默认的请求超时时间是60秒,如果模型侧需要更长的思考时间,就得手动调大超时。在模型配置里加:
"requestTimeoutMs": 120000实测对复杂任务的效果非常明显。
5. OpenClaw彻底卸载:Windows环境下的完整清理方案
5.1 什么叫“彻底卸载”
OpenClaw的卸载,比一般的Windows软件卸载麻烦不少,原因是它横跨了Windows和WSL2两个环境。如果你只是把Windows上装的那个安装包删了,WSL2里的Ubuntu发行版、OpenClaw的Node模块、配置目录、session数据全都在,一启动wsl进去,OpenClaw还在。所以“彻底卸载”意味着你要做三件事:停服务、删配置、清理WSL环境(或者整个Ubuntu发行版)。
5.2 卸载前的最重要一步:备份
动手之前,务必先备份你现有的配置和数据。因为在删除配置目录的那一刻,你就再也找不回历史会话记录了。备份很简单,把WSL里的.openclaw目录整个复制出来:
cp -r ~/.openclaw ~/openclaw-backup这一步绝对不要省。我见过不止一个朋友卸载OpenClaw之后后悔,想把之前的会话、配置、渠道设置找回来,结果干干净净什么都没有,只能重新配一遍。备份文件放在WSL的home目录下,之后即使你把Ubuntu删了,也可以先用wsl --export备份整个发行版,之后想恢复再wsl --import回去。
5.3 三步式卸载流程
卸载第一步,停掉OpenClaw所有服务。进入WSL,执行:
openclaw stop确认进程全部停止:
openclaw status这里要注意,如果openclaw命令本身是通过npm全局安装的,直接用npm卸载掉CLI:
sudo npm uninstall -g @openclaw/cli第二步,删除配置目录和所有数据:
rm -rf ~/.openclaw rm -rf ~/.openclaw-passenger配置目录删掉之后,这个用户下就没有OpenClaw的任何运行痕迹了。
第三步,清理WSL环境。这里有两个选择。如果你以后还要用WSL做别的开发,那就不删Ubuntu,只是把OpenClaw相关的东西删干净就可以了。如果你打算连WSL环境一起移除,在PowerShell里执行:
wsl --unregister Ubuntu-22.04这条命令会删掉整个Ubuntu发行版,相当于格式化了一个虚拟机。执行前系统会提示确认,输入y。注意,这个操作是无情的——你在这个发行版里装的所有东西都会消失。
5.4 核心要素速查表
为了方便你对照操作,我列了一张完整的卸载要素表:
| 清理对象 | 位置 | 操作方式 |
|---|---|---|
| OpenClaw数据目录 | WSL内~/.openclaw/ | rm -rf ~/.openclaw |
| Passenger依赖数据 | WSL内~/.openclaw-passenger/ | rm -rf ~/.openclaw-passenger |
| 全局CLI命令 | WSL内npm全局目录 | sudo npm uninstall -g @openclaw/cli |
| WSL发行版 | Windows侧 | PowerShell执行wsl --unregister Ubuntu-22.04 |
| WSL功能组件 | Windows侧 | 可选,PowerShell执行wsl --shutdown后通过控制面板关闭 |
如果不删WSL,只想验证OpenClaw清理是否彻底,就在WSL里执行:
which openclaw ls ~/.openclaw如果两条命令都提示找不到或者目录为空,那就说明干净了。
6. 从安装到卸载,我的几点实际感受
最后说说我在这几轮安装、使用、卸载OpenClaw过程中积累的个人判断。
OpenClaw在Windows上的体验,说句实话,现在已经比一年前成熟太多了。以前你要自己在WSL里从源码编译、手动装一堆依赖,稍有闪失就得重来。现在有了一键安装脚本,有相对完善的服务管理命令,有清晰的配置格式,普通用户照着文档走一遍是能跑通的。但它的定位终究不是一个“双击安装、打开即用”的Windows原生软件,它骨子里还是Linux生态的东西,Windows只是提供了一个托管环境。所以你心态上要做好“这是一个需要命令行操作的服务”的准备,遇到问题会看日志、会查配置文件,就成功了一大半。
我用OpenClaw跑了大概一个月,最舒服的用法是把它当作一个可以对话的自动化管家——日常让我它定时抓取网页信息、帮我管理RSS订阅、把关注的动态汇总发到微信。那些“让AI操作浏览器”的复杂任务,比如自动填表、自动下单之类,受限于页面结构和风控,稳定性还不够理想,适合折腾但不适合当作核心依赖。
如果你决定卸载,那就按照上面的步骤做完,别留尾巴。如果你还打算继续用,那就在第一次跑通之后,好好研究一下它的配置文件,把模型参数、渠道参数、权限边界都调到适合自己的状态——这个东西调好了,是真的能变成一个很顺手的个人助理。
每个人的需求不一样,OpenClaw也不是什么人什么时候都需要。但如果你恰好需要一个能接微信、能调用模型、还带点自动化能力的Agent框架,那它值得你在Windows上好好折腾一回。