ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OpenClaw 彻底卸载指南:Linux、Windows、Docker 残留清理与验证

OpenClaw 彻底卸载指南:Linux、Windows、Docker 残留清理与验证 圈子里管 OpenClaw 叫“龙虾”不是因为它和海鲜有什么关系纯粹是那个大钳子 Logo 太有辨识度了。跑 AI Agent 的人应该都懂它的分量挂上 Telegram、Discord、飞书、Teams 这些聊天平台配一个千问或者任意 OpenAI 兼容接口的模型本地一键部署完它就是一个 7x24 小时待命的私人助理。但跑过的人也清楚这东西用起来有多爽卸载时就有多痛。我见过不止一个人卸载“龙虾”的动机千奇百怪有人是受不了飞书输出老被截断有人是反复撞上agent failed before reply: session file locked (timeout 60000ms)这个诡异报错也有人只是对比了 WorkBuddy 这类工具之后觉得没必要继续养着了。但不管出于什么原因如果你以为把它装进去的那个目录删掉就算完事后面大概率会被各种残留折腾到崩溃。我写这份指南就是把 OpenClaw 在 Linux、Windows、Docker含飞牛 NAS三类部署方式下应该怎么彻底、安全地卸载一次讲透带验证、带排错直接照着抄作业就行。1. 卸载前先看清“龙虾”的完整家底1.1 为什么“删个文件夹”不等于卸载OpenClaw 是典型的“看起来是一个程序实际上是一套系统”。它的最小运行单位由一个常驻 Agent 进程Node.js 运行时、一个 Web 控制面板、一组 channel 连接器组成而这些只是“运行时”。真正让卸载变难的是散落在系统里的那几类东西安装目录程序本体、依赖的 node_modules、MCP 服务定义文件。配置与数据目录config.json、service-registry.json、会话记录、消息历史、附件。服务与自启项Linux 下的 systemd unit、Windows 下的计划任务或服务项、Docker 里的容器和命名卷。外部授权机器人的 Token、开放平台的回调地址、大模型 API Key。环境残留PATH 写入、环境变量、npm 全局包、日志和锁文件。类比一下普通软件是背包客卸载就是背起包走人OpenClaw 是租房客退租之后还要交钥匙、清家具、销户、解绑水电。它既然要挂接在各种 IM 平台上替你收发消息就必须持有平台的会话凭证既然要 7x24 常驻就必须注册系统级自启既然要处理多轮对话就必须在本地落盘会话和锁。这些设计在安装时是能力在卸载时全是债。所以要彻底告别龙虾第一步不是急着敲 rm 命令而是先把这份家底盘清楚。路径因部署方式而异但绕不开这几个位置记住它们后面每一步都会轻松很多。1.2 卸载前必做的三件事备份、停服、撤授权我自己的经验是新手卸载最容易犯两个错误一个是删得太急删完发现还要里面的历史会话一个是删得太慢服务还活着就开始删文件导致“删不干净”或者中途报锁错误。正确顺序是三板斧。第一备份。把~/.openclaw整个目录打包一份放进别的位置。如果你是从早期版本升级上来的可能还残留一个~/.clawd老目录也一并打包。命令很简单tar -czf openclaw-backup-$(date %F).tar.gz ~/.openclaw。不要嫌它大几 MB 到几百 MB 都是正常的。会话记录里可能存了你跟联系人的历史消息这些删了就真没了。哪怕后面重装有这份备份也能把配置和会话原样捞回来。第二停服。手工部署的 Linux 版先执行systemctl --user stop openclaw或系统级sudo systemctl stop openclawDocker 版执行docker compose downWindows 版先在任务管理器里结束 node 进程或者从包管理工具的管理界面执行卸载。停服的意义在于释放会话文件锁避免后面删锁文件时进程还在写。第三撤授权。这一步最容易被忽略也最体现“安全版”的价值。OpenClaw 的配置文件里存放的都是明文密钥大模型 API Key你配置千问或 OpenAI 兼容接口时填的那个、Telegram Bot Token、飞书机器人凭证、Teams 应用密钥。卸载后这些凭证还躺在硬盘上如果这个目录被同步盘同步、被备份工具上传等于把密钥交出去了。所以卸载前建议去各平台把不再使用的令牌 revoke 掉API Key 能重新生成的重新生成。宁可麻烦不要赌。提示备份文件本身也含密钥打包完记得chmod 600或者放进加密容器别随手丢在下载目录。2. 不同安装方式的卸载实操Linux / Windows / Docker这一节按安装方式拆开讲。判断自己属于哪种看两个线索一是当初用哪条命令装的二是现在系统里有什么痕迹。不确定的话先把下面三个命令都跑一遍靠结果对号入座which openclaw # 找 CLI systemctl list-units --all | grep -i claw # 找服务 docker ps -a | grep -i claw # 找容器2.1 Linux 一键部署版先拆 systemd 服务再删目录一键脚本curl 管道安装是目前 Linux 上最常见的部署方式它把 OpenClaw 装进用户目录同时注册一个 systemd 用户级服务。卸载分四步走。第一步找到并停掉服务。服务名一般是 openclaw 或 openclaw-agent具体以systemctl --user status openclaw或ps aux | grep -i openclaw的结果为准。先停再禁systemctl --user stop openclaw systemctl --user disable openclaw如果当初装成了系统级服务安装脚本里加了 sudo那就用sudo systemctl stop openclaw sudo systemctl disable openclaw。为什么要先 disable因为服务如果注册了开机自启你这一步不禁掉重启后它会自己爬起来跟你的删除操作“赛跑”。第二步移除 service 文件并重载。用户级服务文件在~/.config/systemd/user/openclaw.service系统级在/etc/systemd/system/openclaw.service。删掉后必须执行systemctl --user daemon-reload或sudo systemctl daemon-reload否则 systemd 还记着旧状态日志里会残留一堆错误提醒。第三步删除程序和配置数据。这一步可以一把清干净rm -rf ~/.openclaw rm -rf ~/.clawd有人会问能不能只删程序保留会话可以但后果是残留了一个“没有程序、只有数据”的目录下次重装时它又会被当作旧配置加载等于没卸干净。既然决定告别就整目录删。第四步清掉 PATH 和环境变量残留。一键脚本通常会在~/.bashrc或~/.profile末尾追加一行export PATH$HOME/.openclaw/bin:$PATH之类的内容卸载脚本不会自动移除。编辑这两个文件手工删掉和 openclaw 相关的行。顺手用npm ls -g --depth0 2/dev/null | grep -i claw看看有没有全局 npm 包有就npm uninstall -g 包名移除。2.2 Windows 版与 Windowshub 渠道的残留处理Windows 上安装 OpenClaw 常见两条路官方脚本手动装以及通过 Windowshub 这类第三方包管理渠道装。先说结论无论哪条路卸载都别只依赖管理工具必须人工复查三轮。第一轮进程与自启。打开任务管理器——详细信息——按名称排序把命令行里带 openclaw 字样的 node.exe 进程全部结束。然后按 WinR 输入services.msc搜 openclaw 相关服务再打开任务计划程序WinR 输 taskschd.msc翻任务列表里名字含 claw 的计划任务。这两处是 Windows 上最常见的自启藏身处漏掉任何一个都会导致“删完又复活”。第二轮文件和配置。OpenClaw 在 Windows 上的数据目录通常也在用户主目录下%USERPROFILE%\.openclaw部分版本把日志放进%LOCALAPPDATA%\openclaw或者把服务配置放在C:\ProgramData\openclaw。卸载时全选删除。如果通过 Windowshub 装的先回它的管理界面执行卸载让它把注册表里的卸载项和快捷方式清掉再由人工补刀上面这些目录。第三轮环境变量。右键“此电脑”——属性——高级系统设置——环境变量在用户变量和系统变量里检查 PATH把指向 openclaw 安装目录的条目删掉。别忘了检查%USERPROFILE%\.bashrc如果你在 Windows 上开了 Git Bash 或 WSL 映射里面可能也有类似的追加行。2.3 Docker 与飞牛 NAS 版容器、镜像、卷逐个清Docker 部署是现在最“体面”的安装方式因为它把数据都圈进了命名卷卸载思路非常清晰容器、镜像、卷三层清空。先找到容器。docker ps -a | grep -i openclaw看容器名假设叫 openclaw。停止并删除容器docker rm -f openclaw然后删镜像。docker images | grep -i openclaw拿到镜像 ID 或仓库名执行docker rmi 镜像ID。接下来看卷docker volume ls | grep -i openclaw docker volume rm 卷名卷这一步最容易漏。很多人删了容器就不管了结果数据还占着磁盘下次docker run只要卷名一致全部数据立马复活。如果你当初是用 compose 部署的在 compose 文件所在目录执行docker compose down --rmi all -v可以一把清掉容器、镜像和卷省心很多。飞牛 NASfnOS上部署的逻辑一样只是多了界面操作路径在 Docker 应用管理里找到 openclaw 容器先停止再删除再到镜像管理删镜像最后到存储或卷管理删除对应数据卷。如果当初是通过 SSH 命令行部署的直接按上面的命令处理。注意飞牛 NAS 的数据卷通常挂在指定的存储路径下删除前先看清这个卷里有没有你要留的备份文件。3. 配置、会话与锁文件的深度清理3.1 配置文件里藏着哪些密钥卸载“干净”和卸载“安全”是两回事。把服务和目录删了是干净把里面记录的凭证处理好才是安全。这一节专门讲后者。~/.openclaw/config.json部分版本叫 openclaw.json里至少包含这几类敏感信息大模型 API Key配置千问、通义、OpenAI 兼容端点时填的密钥明文存放Channel TokenTelegram Bot Token、飞书机器人密钥、Teams 应用的 client secret会话恢复信息部分部署会把 channel 的 session 字符串相当于登录态写进配置或独立文件服务注册信息service-registry.json 里可能记录了 MCP 服务的访问凭证。这些信息在卸载后不会自动消失。就算你把目录删了它们也可能出现在备份压缩包里、vim 的交换文件里比如.config.json.swp、shell 历史里如果你曾经用命令行传过 key、以及系统日志里如果跑过 debug 模式。所以“2026 安全版”卸载的额外一步是卸载完成后去对应平台重新生成或吊销这些密钥。具体动作进入大模型开放平台把旧的 API Key 删除并重新创建去 Telegram BotFather 或飞书开放平台停用对应机器人Teams 的话去相应应用管理后台删除应用注册同时把回调地址配置清掉。不要嫌麻烦一次泄露事故的成本远高于这几个操作。3.2 会话锁文件与“agent failed before reply”的关联聊一个很多人问过的报错agent failed before reply: session file locked (timeout 60000ms)。这个报错的机制其实很简单。OpenClaw 用文件锁来保证同一个会话同一时间只能被一个 Agent 实例处理。Agent 启动、回复用户前会先尝试对会话文件加锁如果锁被别的进程持有它就死等默认 60 秒超时后放弃并回报这个错误。你在什么情况下会撞到它最常见三种上一次进程没有正常退出残留了 stale lock 文件同时开了两个实例比如 Docker 里一个、宿主机手动装的一个两个进程抢同一个会话目录systemd 服务还活着你又手动启动了一个 CLI 实例。卸载过程中撞到它的概率不低尤其是你“边删边试”的时候。处理方法pkill -9 -f openclaw # 强制结束所有相关进程 ps aux | grep -i openclaw # 确认没有残留 find ~/.openclaw -name *.lock -delete # 删除锁文件注意find -delete前最好先find ~/.openclaw -name *.lock列出来看一眼确认这些确实是锁文件而不是重要数据。反正你已经做过备份这一步胆子可以大一点。3.3 日志、缓存与全局依赖残留最后一个容易忽略的区域日志和缓存。OpenClaw 运行期间的日志默认写在~/.openclaw/logs/下包含每个 channel 的收发记录、每次对话的请求耗时、偶尔还有调试模式下的完整请求内容——这些都是隐私数据别留着。卸载时连目录一起删掉即可。如果它跑在 Docker 里宿主机的/var/lib/docker/containers/容器ID/下的日志文件不会被卷删除带走但一般也不需要手动清docker system prune -f可以顺带回收。不过要注意docker system prune会把所有未使用的镜像和缓存都清掉如果机器上还跑着别的容器先评估好再执行。另外如果当初用 npm 全局安装过 CLI记得npm uninstall -g对应包用 yarn 或 pnpm 同理。最后查一下which openclaw和echo $PATH确认命令行入口已经彻底消失。4. 卸载完成后如何验证“真的干净了”4.1 进程、端口、自启项核查清单删完之后不要马上宣布胜利跑一遍体检。下面是一份可以直接照抄的核查清单检查项Linux 命令期望结果进程ps aux | grep -i openclaw无输出端口ss -tlnp按你配置的端口查无对应监听systemd 服务systemctl --user list-units --all | grep -i claw无记录Docker 容器docker ps -a | grep -i claw无输出Docker 镜像docker images | grep -i claw无输出Docker 卷docker volume ls | grep -i claw无输出文件目录ls -la ~/.openclaw ~/.clawd 2/dev/null提示不存在全局命令which openclaw找不到命令自启项crontab -l | grep -i claw无输出Windows 上的对应项进程管理器里无 openclaw 进程services.msc 无相关服务任务计划程序无相关任务环境变量 PATH 无相关条目。端口这一项值得多说两句。OpenClaw 的 Web 控制面板默认端口不是固定值取决于部署时的配置常见 3000 或 3001。体检时别死记数字直接看监听列表凡是可执行文件路径还指向 openclaw 安装目录的都是漏网之鱼。4.2 文件系统与 Docker 残留扫描除了上面清单里的固定目录还要扫一遍“散装残留”。先执行文件扫描sudo find /home /opt /usr/local/bin /etc/systemd/system /var/log -iname *openclaw* 2/dev/null sudo find /home /opt /usr/local/bin /etc/systemd/system /var/log -iname *clawd* 2/dev/null不建议直接sudo find /全盘扫机器上文件多的话会慢到怀疑人生。扫出/tmp下的临时文件顺手删掉如果扫出/etc/sudoers.d/或/etc/security/limits.conf里的相关配置个别安装脚本会改系统参数按原格式移除。Docker 侧扫描docker ps -a | grep -i claw docker images -a | grep -i claw docker volume ls | grep -i claw docker network ls | grep -i claw # 极少数部署会自建网络网络这一行是我后来才加进去的。早期给别人收尾时总漏看自定义网络容器删了、网络还在虽然不影响使用但docker network ls里留着一条 openclaw 相关网络看着就难受。验证通过后docker network rm 网络名顺手清掉。5. 高频问题与排查技巧实录5.1 “session file locked”反复出现先找第二个实例这个报错如果在你卸载过程中反复出现大概率不是锁文件的问题而是还有第二个实例在跑。我踩过的典型场景Docker 容器没停宿主机上手动装的进程又开着两边共享同一个挂载目录互相抢锁。出现这种情况先docker ps看容器再ps aux | grep -i openclaw看进程把不同来源的实例全部停掉再谈删锁文件。如果是系统异常断电导致锁文件残留但进程列表是空的直接删锁文件就行。少数情况锁文件藏在会话子目录里多查一种后缀更保险find ~/.openclaw -name *.lock -o -name *.pidpid 文件同样要删。删完再启动一次验证如果还报超时八成是配置目录本身被多个实例共享检查一下是不是有 NFS 或软链接指向了同一处。5.2 服务被反复拉起和端口占用删完目录、停掉服务一刷新端口又被占——这种诡异现象多数是两类原因。一类是 systemd 的 timer 或别名。有的安装脚本会把服务注册成openclaw-restart.timer你只删了.service忘了.timer它会按计划把服务重新拉起来。卸载时把名字带 claw 的 unit 全部列一遍systemctl --user list-unit-files | grep -i clawservice、timer、socket 一个都别留全部 stop、disable然后删文件、重载 daemon。另一类是 Windows 上的计划任务比如“开机启动 OpenClaw”或“每 10 分钟重启 openclaw”。删完进程后计划任务又把它拉起来等你发现时它已经又跑了几轮。所以在任务计划程序里必须同时删“启动”和“守护”两类任务只删启动类守护类会在几分钟后打一个措手不及。5.3 卸载后想重装如何避免旧配置干扰有些人是卸载后要装回某个更早的稳定版本或者顺便换到 WorkBuddy 一类的替代工具。这时候最容易踩的坑是“旧目录复辟”。只要你备份过~/.openclaw重装前把解压出来的目录拷回去老配置就会原样生效——听起来是好事但这些旧配置里往往带着过时的 channel 凭证和会话锁。轻则启动报错重则直接复用旧的机器人 Token而你已经在平台侧吊销了它。所以重装前的新习惯是只恢复“配置模板”级别的内容别整目录覆盖。比如先装好新版本再把老的 config.json 拿到新目录外面对照着把模型、channel、密钥一项一项填进去。历史会话该放下就放下Agent 的会话连续性本来就不是它最值钱的部分。还有一个细节如果重装后发现飞书输出截断之类的老问题又回来了别急着怪新版本——先确认 channel 配置里是不是沿用了旧的输出限制参数。这类问题通常是配置沿革不是版本回归。最后说点个人经验。现在再让我部署龙虾我只会选 Docker 方式不是因为 Docker 多高级而是卸的时候一个docker compose down -v就能回到原点。手动装的那一套 systemd、环境变量、日志、锁文件真的能把人逼疯。如果你正在卸载的路上遇到session file locked别慌——把进程全杀掉、锁文件删掉再回来按这份清单查一遍基本都能收拾干净。还有个小技巧卸载那天顺便把定期备份任务里涉及 openclaw 目录的条目也清掉不然你删得再干净备份脚本过几天又会把它“复活”到新的备份里那才是真正的阴魂不散。
返回列表