
最近后台好几个朋友在问同一件事OpenClaw也就是圈里人常说的“小龙虾”到底怎么才能卸载干净。这玩意儿装的时候挺爽一个命令拉起来就能跑可真到了要删的时候配置文件、缓存、会话记录散落一地手动清能把人逼疯。我花了大半天时间把自己的 Ubuntu 和 Windows 两台机器上装过的 OpenClaw 彻底清了一遍同时把踩过的坑都记了下来整理成这份攻略。无论你是用源码部署、pip 安装还是 Docker 跑容器这篇文章都能让你把 OpenClaw 卸得干干净净不留一个文件、一条环境变量、一个后台进程。1. 为什么要专门写卸载攻略先弄懂“小龙虾”把东西藏哪儿了1.1 什么是 OpenClaw为什么大家叫它小龙虾OpenClaw 是一个开源的 AI Agent 自动化工具核心能力是让你通过自然语言让它在本地执行任务比如操作终端、读写文件、调用各种 API、做定时任务等等。你可以把它理解成一个陪你折腾电脑的智能助手。至于“小龙虾”这个外号由来有很多说法。我自己更倾向于这个解释OpenClaw 的 Claw 是“钳子”的意思而小龙虾最有辨识度的也是那对大钳子。再加上这工具部署起来麻烦、配置复杂、吃内存用完之后想甩掉还甩不干净整个过程就跟嗦小龙虾一样上瘾的时候是真香收尾的时候是真狼狈。所以圈子里就“小龙虾”这么叫开了。1.2 为什么 OpenClaw 卸载普遍不干净这个问题得从 OpenClaw 的设计说起。作为一个现代 AI Agent 框架它不像普通软件那样装完只生成一个目录它的运行依赖横跨了好几个层程序本体可能通过 pip 装在 Python 环境里也可能通过 npm 装在 Node 环境里还可能直接以源码方式 clone 到某个目录。配置目录默认都放在用户主目录下也就是~/.openclaw/Windows 下是C:\Users\你的用户名\.openclaw\里面包含 config 配置文件、会话状态、数据库文件。缓存目录操作系统级的缓存目录Linux/macOS 是~/.cache/openclaw/Windows 是C:\Users\你的用户名\AppData\Local\openclaw。日志目录通常在~/.openclaw/logs/下跑得越久积得越多。环境变量与启动项安装时很可能会往.bashrc、.zshrc、Windows 环境变量、系统服务或者计划任务里写入路径。很多人卸载时只删了主程序剩下的配置、缓存、环境变量、服务项全部留在原地。等你哪天重新安装或者排查端口冲突时就会发现这些残留竟然还在悄悄运行这才是“卸不干净”的真正原因。1.3 卸载前必做的三件事备份、停服、盘家底在动手之前我强烈建议你先完成三个准备工作否则反悔了真没处哭去。第一备份配置和数据。如果你的 OpenClaw 里配置了模型 API Key、Agent 角色设定、会话历史这些东西删了就真没了。把~/.openclaw/整个目录复制一份到 U 盘或者别的磁盘里成本很低但能救命。第二停掉所有相关进程。OpenClaw 通常有后台常驻进程Windows 下会驻留在系统托盘或后台服务里Linux 下可能是 systemd 服务不先停掉的话文件被占用删都删不掉。第三确认你的部署方式。是源码 clone 的还是pip install openclaw或者是 Docker 镜像跑的这决定了后面每一步的操作命令一定不能搞混。2. 卸载前准备备份、停服务、锁定安装方式2.1 数据备份怎么做才彻底很多人备份配置只是把文件夹复制走但 OpenClaw 的会话数据不一定全在~/.openclaw/下还有一部分数据库和临时缓存可能在系统缓存目录里。我建议你执行这四条命令把数据完整捞出来# Linux/macOS 系统 mkdir -p ~/openclaw-backup cp -r ~/.openclaw ~/openclaw-backup/config cp -r ~/.cache/openclaw ~/openclaw-backup/cache cp -r ~/.local/share/openclaw ~/openclaw-backup/share # Windows PowerShell New-Item -ItemType Directory -Path $HOME\openclaw-backup Copy-Item -Recurse $HOME\.openclaw $HOME\openclaw-backup\config Copy-Item -Recurse $HOME\AppData\Local\openclaw $HOME\openclaw-backup\cache备份完之后检查一下是否真的有数据被复制进去。我当时遇到过一个情况因为~/.openclaw下有个 SQLite 数据库文件被进程占用复制出来的文件大小是 0KB当时没发现恢复的时候才知道数据丢了。所以不要迷信命令执行成功一定要看文件大小。2.2 停进程、停服务、断自启备份完成后就要把所有和 OpenClaw 有关的进程和服务杀掉。这一步不能省否则 Windows 会提示“文件正在使用”Linux 会提示“Text file busy”。先看进程# Linux/macOS ps aux | grep -i openclaw # 如果能匹配到 PID用 kill 结束杀不掉的用 kill -9 强制结束 kill -9 $(pgrep -f openclaw) # Windows PowerShell Get-Process | Where-Object { $_.ProcessName -like *openclaw* } | Stop-Process -Force进程杀干净后再看看有没有注册成服务的# Linux systemd systemctl --typeservice | grep -i openclaw # 如果存在 openclaw.service执行 systemctl stop openclaw.service systemctl disable openclaw.service # macOS launchd launchctl list | grep -i openclaw # 如果有用以下命令卸载 launchctl unload ~/Library/LaunchAgents/openclaw.plist # Windows 计划任务和服务 Get-Service | Where-Object { $_.Name -like *openclaw* } schtasks /query | findstr -i openclaw如果你用的是 Windows还要格外注意系统托盘和右下角的后台图标。OpenClaw 在 Windows 上有时会驻留常驻进程任务管理器里不细看根本发现不了。2.3 确认部署方式三种情况三条路线我把常见部署方式整理成了表格你可以对照自己的情况选路线部署方式判断特征卸载主程序方式pip 安装pip show openclaw能看到包信息pip uninstall openclawnpm 安装npm list -g openclaw能看到包信息npm uninstall -g openclaw源码 clone有一个包含main.py或package.json的 openclaw 目录直接删除源码目录Docker 部署docker ps -a能看到 openclaw 容器先删容器再删镜像如果你已经忘了当初是怎么装的最快的办法是执行which openclawWindows 用where openclaw看看可执行文件到底在哪大概就能推断出安装方式。比如路径在 Python 环境的 bin 目录下大概率就是 pip 装的路径在/opt/openclaw/或用户自建目录下大概率是源码部署。3. Windows 平台完整卸载流程一步一步来3.1 先卸载程序本体Windows 上我遇到过最麻烦的情况是同一个机器上既有 Python 的openclaw包又有 npm 的openclaw/cli包两个同时存在卸载的时候只删一个根本不够。建议先用 PowerShell 执行以下检查pip show openclaw npm list -g --depth0有哪个就卸哪个pip uninstall -y openclaw npm uninstall -g openclaw/cli # 如果还有用 conda 装的 conda uninstall -y openclaw程序本体卸载完成之后再检查一遍where openclaw是否还有输出。如果有说明残留了可执行文件手动把输出路径对应的 .exe 或脚本文件删除。3.2 清理隐藏目录配置、缓存、会话数据Windows 下 OpenClaw 的残留无外乎这几个地方逐个检查# 主配置目录 Remove-Item -Recurse -Force $HOME\.openclaw # 本地缓存目录 Remove-Item -Recurse -Force $HOME\.cache\openclaw # AppData 下的数据目录 Remove-Item -Recurse -Force $HOME\AppData\Local\openclaw Remove-Item -Recurse -Force $HOME\AppData\Roaming\openclaw # 临时文件 Remove-Item -Recurse -Force $HOME\AppData\Local\Temp\openclaw*我重点强调一下AppData\Roaming\openclaw这个目录很多小伙伴只删了.openclaw就以为完事了结果重启之后系统托盘又冒出了 OpenClaw 的图标一查才发现是 Roaming 目录下的残留程序在作怪。删除时如果遇到“文件被占用”的提示先用任务管理器把 OpenClaw 相关进程全部结束然后再删一次。还不行的话重启电脑之后再删Windows 的文件占用锁在重启后基本都会释放。3.3 清环境变量、计划任务、注册表残留这是 Windows 卸载最容易遗漏的部分。OpenClaw 安装器可能会修改用户级环境变量把它的 bin 目录加进 PATH。打开 PowerShell检查当前 PATH 里是否还有 openclaw 字样$env:Path -split ; | Select-String -Pattern openclaw如果有输出到“高级系统设置 - 环境变量”里手动编辑 PATH删掉对应的条目。同时检查用户环境变量里是否有单独的OPENCLAW_HOME或OPENCLAW_CONFIG一并删除。计划任务也很重要schtasks /query /fo LIST /v | findstr -i openclaw如果有匹配项记下任务名称比如 OpenClawAutoStart然后删除schtasks /delete /tn 任务名 /f注册表方面不建议大家去手动搜删注册表风险比较大。如果确实有残留可以打开注册表编辑器在HKEY_CURRENT_USER\Software下找找有没有openclaw或相关厂商名的项有的话右键删除。没有就算了注册表清理不是必须的只要程序本体、配置、缓存、环境变量清干净效果已经足够好。4. Linux/macOS 平台的完整卸载流程一条命令一条命令来4.1 移除程序本体和 Python/Node 依赖Linux 和 macOS 的卸载逻辑很接近核心区别只在服务管理方式上。先卸载主程序# pip 方式 pip uninstall -y openclaw # conda 方式 conda uninstall -y openclaw # npm 方式 npm uninstall -g openclaw # Homebrew 方式macOS 如果用了 brew 安装 brew uninstall openclaw源码部署的直接删目录rm -rf /opt/openclaw rm -rf ~/openclaw还有一种情况容易被忽略OpenClaw 在 Linux 上为了跑后台任务可能会创建一个专门的虚拟环境比如~/.openclaw-venv或~/openclaw-env如果你当初是这么干的这个虚拟环境目录也要一并删除rm -rf ~/.openclaw-venv rm -rf ~/openclaw-env4.2 清除 .openclaw 目录、缓存、日志的全部残留Linux 和 macOS 下OpenClaw 的残留目录主要有四个我建议用 find 命令先扫一遍看有哪些符合特征的目录find ~ -maxdepth 4 -iname *openclaw* 2/dev/null扫出来的结果通常包含以下几种路径内容是否必须删除~/.openclaw/配置文件、会话数据、SQLite 数据库必须删~/.cache/openclaw/临时缓存、下游模型缓存必须删~/.local/share/openclaw/应用数据、历史记录必须删~/.config/openclaw/部分版本的配置文件新版本可能迁移到这里必须删~/.local/state/openclaw/日志与状态数据必须删确定后全部删除rm -rf ~/.openclaw ~/.cache/openclaw ~/.local/share/openclaw ~/.config/openclaw ~/.local/state/openclaw这里有个注意事项~/.config/openclaw和~/.openclaw可能是通过软链接连接的。删除前先执行ls -la ~/.openclaw确认它是不是软链接。如果是软链接删软链接本身不会删除目标目录需要顺着链接地址把真实目录也删掉否则数据依然残留在磁盘上。我自己的机器上就遇到过这种情况之前为了方便备份把~/.openclaw软链接到了另一块数据盘结果删了半天数据盘上的原目录纹丝不动排查了好久才找到原因。4.3 清理 systemd 服务、LaunchAgent 和 shell 配置如果你的 OpenClaw 是长期跑后台任务的那八成注册了系统服务。在 Linux 上systemctl stop openclaw systemctl disable openclaw rm -f /etc/systemd/system/openclaw.service rm -f /etc/systemd/system/openclaw-agent.service systemctl daemon-reload在 macOS 上launchctl unload ~/Library/LaunchAgents/com.openclaw.plist rm -f ~/Library/LaunchAgents/com.openclaw.plist接着处理 shell 配置。OpenClaw 安装时可能会往.bashrc、.zshrc、.profile里写入初始化代码比如添加 PATH、source 自动补全脚本等。用 grep 检查grep -n openclaw ~/.bashrc ~/.zshrc ~/.profile 2/dev/null有匹配的行就手动编辑文件删掉。如果当初安装时启用了 shell 自动补全bash 的补全脚本可能在/etc/bash_completion.d/或~/.local/share/bash-completion/completions/zsh 的补全在~/.oh-my-zsh/completions/或/usr/local/share/zsh/site-functions/一样用 grep 搜 openclaw搜到就删。最后别忘了清除 PATH 环境变量里的 openclaw 路径在 Linux 上一般通过/etc/profile.d/openclaw.sh或/etc/environment注入有就一起删掉。5. Docker 部署方式的专项清理容器、镜像、数据卷一个不剩5.1 停容器、删容器、删镜像如果你是用 Docker 跑的 OpenClaw那情况就又不一样了。Docker 的好处是隔离性好坏处是数据量和镜像体积都很大不清理的话白白占掉好几个 G 磁盘空间。先用一条命令把所有 openclaw 相关容器找出来docker ps -a --format table {{.Names}}\t{{.Image}}\t{{.Status}} | grep -i openclaw找到容器名后先停止再删除docker stop openclaw docker rm openclaw容器删完镜像还留着docker images | grep -i openclaw docker rmi [镜像ID]如果当初用的是 docker-compose 部署的在部署目录执行docker-compose down --rmi all --volumes这个命令会把容器、网络、命名卷和镜像一次性清理掉是 Docker 场景下最彻底的清理方式。5.2 清理数据卷和日志卷这是最容易被忽略的一步。docker rm 只删除容器本身数据卷是单独存在宿主机上的哪怕容器删了数据卷依然占着磁盘空间。执行docker volume ls | grep -i openclaw docker volume rm [卷名]如果没有单独命名卷OpenClaw 容器可能用 bind mount 方式挂载了宿主机目录比如-v /data/openclaw:/app/data。检查容器目录时你可以在启动命令历史里翻一下history | grep docker run | grep openclaw如果有这个挂载宿主机上的/data/openclaw目录需要手动删除。日志方面Docker 的日志默认存在/var/lib/docker/containers/下容器删除后一般会跟着清理。但如果当初手动挂载了/var/log/openclaw之类的目录也得手动删除rm -rf /var/log/openclawDocker 部署方式最大的坑就是你删了容器以为万事大吉结果数据卷还在把它重新 run 起来所有 Agent 历史记录、配置全部原地复活。我在测试时亲眼见过这种情况所以数据卷清理一定要放到最后单独执行。6. 验证是否卸载干净一套行云流水的排查命令6.1 检查进程、端口和命令是否残留卸载完别急着收工先执行一遍验证流程确认真的没有残留。# 1. 检查命令是否还存在 which openclaw # 期望结果无输出或者提示找不到该命令 # 2. 检查进程是否还存在 ps aux | grep -i openclaw # 期望结果无匹配行 # 3. 检查默认端口是否被占用 # OpenClaw 常见的端口是 4317、8080 或 3000具体看你当初的配置 ss -tlnp | grep -E 4317|8080|3000 # 期望结果无监听进程Windows 用户可以执行where openclaw Get-Process | Where-Object { $_.ProcessName -like *openclaw* } Get-NetTCPConnection -LocalPort 4317 -ErrorAction SilentlyContinue如果以上命令都没有输出说明进程、命令、端口层面的残留已经清干净了。6.2 扫描残留目录和配置文件用 find 命令全盘扫描 openclaw 相关目录find ~ -iname *openclaw* 2/dev/null find /tmp -iname *openclaw* 2/dev/null正常结果应该是空或者只有你刚备份的~/openclaw-backup目录。不要只搜用户目录/opt和/usr/local下也要搜一下find /opt /usr/local -iname *openclaw* 2/dev/null我遇到过一种特殊情况pip 卸载 openclaw 之后在/usr/local/lib/python3.10/site-packages/下还残留了一个openclaw.egg-link文件这文件很小但会影响重新安装。遇到这种情况直接删掉对应的.egg-link、__pycache__目录即可。6.3 一个典型残留信号会话锁文件 session locked清理是否干净的另一个标志性检验点是看看 OpenClaw 的会话锁文件还在不在。OpenClaw 在运行时会在配置目录里创建一个锁文件用来保证同一时间只有一个 Agent 能操作会话数据。如果你卸载时没停进程就直接删目录这个锁文件可能因为你操作太慢被重新创建或者留在半删除状态。常见的报错格式是agent failed before reply: session file locked (timeout 60000ms)这就是典型的锁文件残留。当你下次重装 OpenClaw 或者用旧备份恢复时如果还看到这个报错说明~/.openclaw/里有一个.lock结尾的文件没删干净比如session.lock或agent.lock。手动进去把锁文件删掉或者把整个~/.openclaw/目录再删一次就能解决。7. 常见问题与避坑心得7.1 遇到“文件被占用”怎么办Windows 上删除AppData下的 openclaw 文件时十有八九会遇到“操作无法完成因为文件已在另一个程序中打开”。最有效的顺序是先杀进程再删缓存再删配置最后删程序目录。如果杀完进程还是提示占用用 PowerShell 强制删除Remove-Item -Recurse -Force -ErrorAction SilentlyContinue $HOME\.openclaw如果还是删不掉说明有隐藏的 DLL 驻留建议重启电脑后再删。不要觉得重启麻烦Windows 下很多文件锁重启一次就全部释放了。7.2 为什么卸载后命令还能用我经常收到类似的反馈“我都 pip uninstall 了为什么执行 openclaw 还能弹出帮助信息”这种情况多半是系统里存在多个安装副本。比如 pip 装了一个npm 又装了一个或者用户目录下还有一个虚拟环境也装了一份。卸载时只卸了其中一个另一个还留着。排查方法很简单执行which -a openclawWindows 执行where openclaw把所有输出的路径全部列出来逐一删除对应的可执行文件或卸载对应的包。还有一种情况是 shell 的 hash 缓存bash 会把命令路径缓存到内存里即使文件已经删除hash 表还是指向旧路径。这时执行hash -r刷新一下缓存即可。7.3 我的几条实用建议最后一次劝大家卸载 OpenClaw 之前先想一想自己是不是真的不用它了。如果是模型 API Key 配错了想重装其实不用大动干戈清空配置目录重配一次就行没必要把整个环境全拆了。如果确实要卸载那请一定按照“备份 - 停服 - 删程序 - 删配置 - 删缓存 - 清环境变量 - 验证”这个顺序不然遗漏的概率非常高。另外如果卸载后短期内可能还要装回来我建议不要删除~/.openclaw-backup这个备份目录哪怕整个系统清干净了只要有这份备份重新安装后把配置还原回去就能无缝衔接之前的数据。如果确定这辈子不再用了再把这个备份目录删掉。我自己这次清理完后顺手把.bashrc里 OpenClaw 相关的 PATH 也清掉了重启终端执行openclaw确实提示命令不存在磁盘上也只剩一个备份目录。实测下来整个过程沿着这套流程走没有遇到任何卡壳的地方。以后再折腾新工具记得多看一眼它往系统里塞了哪些东西不然卸载时流的泪都是安装时脑子进的水。