news 2026/9/24 21:40:33

Windows上OpenClaw安装、配置与彻底卸载实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows上OpenClaw安装、配置与彻底卸载实战指南

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”就是这么来的。

正确顺序是:

  1. Win + X选择“终端(管理员)”或“Windows PowerShell(管理员)”。
  2. 运行这条命令启用WSL功能:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  3. 接着启用在Windows中嵌入虚拟机的平台功能:
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  4. 重启电脑。
  5. 重启后,打开PowerShell,把WSL默认版本设置为2:
    wsl --set-default-version 2
  6. 再运行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

脚本执行过程中会依次完成以下动作:

  1. 检查环境—— 确认你是在Linux环境(WSL2的bash环境会被识别为Linux),Node版本是否满足要求,npm是否可用。
  2. 下载OpenClaw核心包—— 从npm源或者GitHub Release拉取OpenClaw本体包,存放到用户目录的.openclaw目录下。
  3. 安装Passenger——@openclaw/passenger是OpenClaw的依赖进程,它负责代理大模型API请求、管理会话状态、处理多渠道消息路由。你可以把它理解成OpenClaw的“接电话总机”,所有进出的消息都要经过它。
  4. 安装CLI工具—— 全局注册openclaw命令,让你能在终端里直接操作。
  5. 初始化配置目录—— 在~/.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.jsonchannels部分。最简单的配置方式是先启动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是否活着的几个方法

配置完成并重启之后,别急着疯聊,先做几项基本验证:

  1. 看进程状态—— 在WSL里执行openclaw status,确认passenger和主进程都是running状态。
  2. 看日志输出——openclaw logs --tail 50实时查看日志,如果出现类似channel wechat started或者listening on port 8080之类的信息,说明渠道接入成功了。
  3. 发消息测试—— 用另一个微信账号给被接管的账号发一句“在吗”,几秒内应该收到OpenClaw的回复。
  4. 浏览器控制测试—— OpenClaw还内置了浏览器控制能力,你可以在聊天里让它“打开摄像头并截图保存到本地”,如果它能执行并返回文件路径,说明Agent的完整链路已经通透了。

注意,如果在这一步发现OpenClaw能发消息给微信,但微信发消息没回复,这就有点棘手了。我在排查这类问题时发现,往往是消息总线的回调地址没有正确配置——OpenClaw需要能收到微信侧推送的消息事件,才能触发AI回复。看看日志里有没有msg received这种关键信息,如果没有,十有八九是消息接收链路没通。

4. 常见安装与运行问题排查实录

4.1 “could not safely verify the WSL2 environment”的原因与对策

这个报错是Windows下安装OpenClaw时非常典型的。它出现的时机一般是安装脚本执行到环境检测阶段,脚本会校验当前运行环境是不是真正的WSL2,而不仅仅是WSL1或者其他虚拟环境。

我做过的排查路径是这样的:

  1. 在PowerShell里执行wsl --list --verbose查看Ubuntu的版本列,确认VERSION那一栏是2而不是1。
  2. 如果显示版本是1,执行wsl --set-version Ubuntu-22.04 2升级到WSL2。注意这个过程可能要几分钟,且需要机器开启虚拟化。
  3. 如果已经是2,还是报这个错,检查Windows功能里“虚拟机平台”是不是开着。这个功能和WSL2是绑定的,关掉会直接导致WSL2无法正常运行。
  4. 最后检查一下是不是在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文件,文件里存了上下文、状态和锁定标识。上一个请求处理完之后,如果锁没有被正常释放,下一个请求就会卡住,直到超时。

触发这个问题的常见场景有三个:

  1. 上一次请求异常中断—— Agent在处理消息时,如果你强行停掉OpenClaw进程或者WSL重启,锁文件来不及清理。
  2. 同一会话并发请求—— 你同时用两个终端或者两个渠道给同一个session发消息,OpenClaw不允许同一session并行写入,第二个请求就会等锁。
  3. 文件系统权限问题—— 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连续处理大量文本,或者让它循环调用工具、来回传数据,很快就能把上下文填满。

碰上这个问题的常规解法有三个方向:

  1. 换更大上下文窗口的模型—— 千问系列的qwen-max上下文更长,或者直接选择支持超长上下文的模型。
  2. 开启OpenClaw的上下文压缩—— 在模型配置里加上自动摘要和裁剪策略,让Agent在长度接近上限时,把早期对话摘要成一段短文本再继续。
  3. 手动开新会话—— 把当前会话的内容清掉,重新起一个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上好好折腾一回。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 21:39:26

本地图库语义搜索实战:用多模态大模型和向量检索找照片

你有没有过这种经历:本地图库里堆了上万张照片,某天突然想找一张“傍晚的海边”,你记得它的画面——橙红的晚霞、翻卷的浪花、远处模糊的灯塔剪影——但你在电脑里翻遍了文件夹、试遍了文件名搜索,最后只能对着IMG_4821.jpg这种命…

作者头像 李华
网站建设 2026/9/24 21:39:18

家政预约系统从0到1:订单状态机与派单调度实战解析

做家政O2O这类项目,最难的不是写代码,而是把服务流程沉淀成系统逻辑。家政预约系统,它的本质就是把传统家政公司的“电话接单、手写台本、人工派单”搬到线上,让用户、阿姨、运营后台三方在一个平台里协同。很多人以为这种系统就是…

作者头像 李华
网站建设 2026/9/24 21:39:02

提示词检验卡:用测试用例稳定AI输出质量

1. 为什么“提示词谁都会写,检验卡才是门槛”我见过太多这样的场景:群里有人丢出一张截图,说“我这条提示词太强了,一步出效果”,然后一堆人跟着复制,回头在自己电脑上一跑,完全不是那么回事。也…

作者头像 李华
网站建设 2026/9/24 21:36:50

Qwen Coder本地部署实战:从模型选型到Mac工作流

1. AI Coder的现状:代码生成已经到了什么段位过去这一年,如果你还停留在"AI只会补全个括号、写个if判断"的印象,那确实落后了。我自己的开发流里,AI写代码已经从"偶尔玩一下"变成了"每天离不开"的状…

作者头像 李华
网站建设 2026/9/24 21:36:33

安卓应用版本更新完整实战:从下载到安装的全流程适配指南

做安卓开发这些年,我接手过不少老项目,几乎每个项目迭代到中后期都会被同一个需求找上门:要在应用里加一个“安卓应用版本更新”功能。这个需求看着简单——后台返回个新版本号,用户点一下下载安装,完事。但真要是顺着…

作者头像 李华
网站建设 2026/9/24 21:35:57

并查集实战:从“村村通”到连通分量统计

1. 题目到底在说什么:从生活场景到图论模型1.1 一读题面,先别急着写代码题目给出了两个整数n和m,n表示村庄数量,m表示现有道路数量。接下来的m行,每行给出两个整数a和b,表示村庄a和村庄b之间已经有一条路了…

作者头像 李华