如果你试过卸载 OpenClaw 后重新安装大概率会碰到下面这些诡异症状装回来的版本还是旧配置登录面板直接跳过初始化后台服务莫名其妙起了两个翻日志还能看到半年前的会话记录。我最初也以为是新版的问题后来才发现所有坑都指向同一件事——OpenClaw 的服务、配置和缓存这三类残留根本没有被卸载机制清掉。这篇文章会把残留位置和清理方法一次讲清楚适合所有用 systemd、Docker、Windows 服务或者 macOS launchd 跑过 OpenClaw 的朋友照着做三分钟内能把一台机器恢复到“从未装过”的状态。1. 为什么 OpenClaw 总是“卸不干净”1.1 它到底在系统里放了什么OpenClaw 不是单文件工具它是一套自托管的 agent 网关。安装脚本往往不只放一个可执行文件而是把运行环境拆成几块主程序二进制通常落在/usr/local/bin/openclawWindows 下可能在%LOCALAPPDATA%\Programs\OpenClaw配置和数据目录默认在用户目录里像~/.openclaw、~/.config/openclaw、~/.local/share/openclaw运行日志和缓存又会写到~/.cache/openclaw、/var/log/openclaw如果你用 systemd 把它拉起来它还会注册一个openclaw.service或者openclaw-agent.serviceWindows 上可能是计划任务macOS 上则是 LaunchAgent。这种多目录、多注册项的结构设计初衷是好的配置和运行数据分离升级时不用动用户数据渠道凭据也可以单独管理。但对于卸载来说它就是一个“拆墙容易补墙难”的局面。你删除主程序只是拆掉了最外面的墙配置、缓存和系统服务注册还好好地躺在原地。这也是很多人卸载后用which openclaw已经找不到命令但 8080 端口依然被占用、重装后旧配置自动出现的原因。1.2 卸载器为什么只管“软件本体”OpenClaw 的官方卸载器或者包管理器的移除命令大部分只覆盖安装器“知道”的路径比如二进制文件、默认服务文件、启动脚本。但有一类目录是运行时才创建的比如缓存、会话数据库、令牌缓存安装器根本不知道它们存在。更麻烦的是如果你在.bashrc或环境变量里改过OPENCLAW_HOME那么配置目录可能落在任意自定义路径卸载器无从下手。换句话说卸载器做的事是“移除软件本体”而不是“恢复系统原状”。真正需要人工处理的残留其实就三类服务注册、配置文件、缓存数据。这三类不清理重装八次也一样踩坑。下面直接进入实操但动手之前先花三十秒做两件准备工作。2. 清理前先备份再停服2.1 备份真正有用的数据清理前备份这一步很多人会跳过但我建议至少花 30 秒做一次。OpenClaw 的配置目录里可能包含模型厂商的 API Key、channel 的接入 token、自定义技能文件这些不是缓存删了就真没了。备份时可以执行mkdir -p ~/openclaw-backup cp -r ~/.openclaw ~/openclaw-backup/ 2/dev/null || true cp -r ~/.config/openclaw ~/openclaw-backup/config 2/dev/null || trueWindows 下可以打开%USERPROFILE%\.openclaw把里面的config*、skills、channels几个目录手动复制到备份文件夹。不用备份cache、logs、sessions这些重装后会重新生成而且旧会话文件反而可能给新版本带来说不清的 Bug。顺便提醒一句备份完成后记得检查备份文件夹里的 token 文件权限。我见过有人把~/.openclaw整个压缩后发到网盘结果密钥泄露。备份是给自己应急用的不是用来分享的。2.2 停掉服务、杀掉残留进程删文件之前必须先停服务。如果不先停Linux 上虽然也能删掉文件但旧进程会继续持有锁和文件句柄重装后日志甚至会写回旧路径让你误以为“系统里还有个幽灵”。Windows 上更直接文件被占用时rmdir会报“另一个程序正在使用此文件”然后整个清理流程卡住。先停 systemd 服务sudo systemctl stop openclaw sudo systemctl disable openclawWindows 服务net stop OpenClawmacOS LaunchAgentlaunchctl unload ~/Library/LaunchAgents/com.openclaw.plist停完之后别急着删先确认没有漏网进程。用ps aux | grep openclaw查一下如果还有残留直接 kill。这里有一个我踩过的坑systemctl stop openclaw提示Unit openclaw.service not loaded但端口明明被占着。后来发现用户部署时用的服务名是openclaw-agent.service而不是openclaw.service。所以检查服务时不要只看一个名字用systemctl list-units | grep -i claw或service --status-all | grep -i claw全量扫一遍更稳妥。3. 三分钟清理实操服务、配置、缓存逐个击破3.1 第一步删除服务注册以 Linux systemd 为例先查一下服务文件到底在哪systemctl list-unit-files | grep -i openclaw systemctl cat openclaw 2/dev/null || systemctl cat openclaw-agent 2/dev/null查到 service 文件位置后直接删除文件并刷新 systemd。注意系统级和用户级路径不一样分开处理即可sudo rm /etc/systemd/system/openclaw.service # 如果是用户级服务 rm -f ~/.config/systemd/user/openclaw.service sudo systemctl daemon-reload sudo systemctl reset-failedreset-failed很多人会漏掉。service 文件删掉之后systemd 可能还保留着失败状态记录下次启动时会出现奇怪的报错残留顺手执行一下能避免后续干扰。Windows 下除了常规服务还要查计划任务。部分 OpenClaw 部署方式会通过schtasks注册开机启动项而不是注册 Windows Service。清理命令schtasks /Query | findstr /i OpenClaw schtasks /Delete /TN OpenClaw /FmacOS 下删除 LaunchAgent 后执行launchctl remove com.openclaw确保从 launchd 数据库中移除然后删除 plist 文件。如果服务是通过 Homebrew services 安装的先执行brew services stop openclaw再删对应 plist。这一步做完系统和“服务”相关的残留基本清空。3.2 第二步清扫配置目录配置目录是残留重灾区。常见位置有~/.openclaw/、~/.config/openclaw/、/etc/openclaw/如果你设置过OPENCLAW_HOME指向自定义目录还要带上那个目录。清理命令rm -rf ~/.openclaw rm -rf ~/.config/openclaw sudo rm -rf /etc/openclawWindows 下对应rmdir /s /q %USERPROFILE%\.openclaw rmdir /s /q %APPDATA%\OpenClaw这里需要特别说明一个现象很多用户只删了~/.openclaw但~/.config/openclaw是独立的导致重装后界面主题、默认 channel、模型参数还保留着旧值。两个目录都在就都要删。提示在确认要彻底卸载的情况下再执行rm -rf尤其是带着 root 权限的时候先确认路径没有拼错。rm -rf ~/.openclaw和rm -rf / .openclaw的差异非常大动手前多看一眼。如果你之前配置过 Microsoft Teams、Slack 这类渠道OAuth token 可能被写进系统 keyring钥匙串配置目录删除并不会清掉它。遇到重装后“登录旧账号”“权限异常”这类问题需要去系统密钥管理器里搜索 OpenClaw 相关条目手动删除。同样如果你在 OpenClaw 里配过多个 agent channel每个 channel 的凭据和身份信息都独立存储清理时不彻底重装后 agent 可能会自动选择旧 channel导致消息发到已经废弃的频道。3.3 第三步清空缓存与临时文件缓存和日志这类运行时数据卸载器基本不会碰。常见位置rm -rf ~/.cache/openclaw sudo rm -rf /var/log/openclaw rm -rf ~/.local/share/openclaw~/.local/share/openclaw里不只有缓存还有 sqlite 会话数据库和 session 锁文件。如果你要的是“彻底清除”这个目录必须删。另外OpenClaw 为了降低大模型调用成本会在本地做响应缓存这些缓存存在~/.cache/openclaw下。旧缓存不删重装后可能出现“明明换了新模型回复还是旧答案”的怪现象本质是缓存命中覆盖了你的新配置。日志清理同理。macOS 下日志目录一般在~/Library/Logs/OpenClaw缓存目录在~/Library/Caches/OpenClaw。这些目录删除后不会影响新版本重新生成放心删。如果你在 Windows 上把缓存目录改到过 D 盘比如设置过OPENCLAW_CACHE_DIRD:\openclaw_cache那清理时就别只盯着 C 盘D 盘下的对应文件夹也要删。很多人说“明明删了 C 盘C 盘空间还是没回来”十有八九就是缓存被重定向到其他盘了。3.4 环境变量与开机启动项也不能漏开篇说的“配置残留”还有一层容易被忽略就是环境变量。OpenClaw 安装时可能往你的 shell 配置里写入了OPENCLAW_HOME、OPENCLAW_CONFIG_DIR等变量。打开~/.bashrc、~/.zshrc、~/.profile搜一下OPENCLAW把这些 export 行删掉。Windows 用户去“系统属性 - 环境变量”里删掉用户变量中的 OpenClaw 相关项。如果不删重装后新版本会默认读取旧的环境变量指向的目录相当于你清干净了默认目录新程序又从旧路径把残留拉回来了。开机启动项也要检查Linux 的 crontab、Windows 的启动文件夹、macOS 的登录项搜一下有没有 openclaw 相关的自启动命令。这一步做完才算真正把“服务”层面清干净。4. 清理后的验证与残留排查4.1 三分钟验证清单清理完别急着装新的先验证一下。Linux 下依次执行which openclaw systemctl status openclaw ps aux | grep openclaw ls ~/.openclawwhich没有输出、systemctl status提示服务不存在、ps没有任何进程、ls报“没有那个文件或目录”基本就干净了。再检查一下常用端口ss -tlnp | grep :8080 lsof -i :8080Windows 下用where openclaw、sc query OpenClaw、tasklist | findstr openclaw做同样的事。端口检查用netstat -ano | findstr :8080。没有结果即正常。4.2 常见残留问题速查表这里把我在实际处理中遇到最多的残留问题整理成一张表方便你对照排查。症状大概率原因处理方式重装后旧配置和旧主题还在~/.openclaw或~/.config/openclaw没删干净备份后删除两个配置目录服务自动启动端口被占用后台残留进程或 systemd unit 没删ps找到 PID 强杀删除 unit 后daemon-reload重新安装时提示 sessions 目录被锁旧进程 / 锁文件仍然存在停止进程删除~/.local/share/openclaw下的 lock 文件重装后登录 token 失效或账号冲突系统 keyring 里的 OpenClaw 凭据残留在干扰删除钥匙串中的 OpenClaw 条目磁盘空间没释放缓存目录被重定向到其他盘检查OPENCLAW_CACHE_DIR清理对应目录Docker 重装后还是旧数据named volume 没有被删除单独查看和删除 OpenClaw 相关 volume这张表里每一行我都实际撞到过尤其是第一行几乎占了卸载问题的一半。原因很简单大多数人只删了安装目录没删用户目录。4.3 踩过的坑session file locked 和端口占用有一次我在一台 Linux 服务器上卸载后重装启动时直接报agent failed before reply: session file locked (timeout 60000ms)。第一反应是版本冲突排了很久才发现旧进程其实没有死——之前是在终端里用nohup起的终端关了进程还在后台。它锁住了旧的 session 文件新进程写不进去于是等锁等到超时。解决方式很直接pgrep -fl openclaw kill PID rm -rf ~/.local/share/openclaw/sessions/*.lock之后重新启动就正常了。这个案例给我的教训是卸载前一定要确认所有 openclaw 相关进程都退出而不只是停掉主服务。因为主服务可能是 systemd 托管的但你自己手动拉起的辅助进程、stub 进程并不会随服务停止而退出。另一个常见的坑是服务删干净了端口还占用。用ss -tlnp一看PID 指向一个被 systemd 遗弃的 socket 目录实际上进程已经被杀但 socket 文件没有清理。这种情况重启一下系统即可或者耐心等超时但如果是孤儿进程直接 kill 是更快的办法。5. 重装前按部署方式确认清理范围5.1 不同安装方式残留位置不一样清理方式要结合安装方式微调。如果你是脚本安装重点查 systemd 服务和/usr/local/bin下的二进制如果你是 Docker 部署重点查容器、镜像和命名的 volumedocker rm根本不会清理数据卷必须单独执行docker ps -a | grep openclaw docker volume ls | grep openclaw docker volume rm volume_name docker images | grep openclaw docker rmi image_idWindows Hub 安装方式则要额外去“控制面板 - 程序和功能”卸载一遍再检查%LOCALAPPDATA%\Programs\OpenClaw和%APPDATA%\OpenClaw是否残留。源码方式部署还要删除 clone 下来的项目目录和虚拟环境.venv另外检查 Python 的pip是否有全局包装脚本。理论上清理范围可以按安装方式快速划分脚本和源码清理用户目录系统服务Docker 清理 volume 和镜像Windows 清理安装目录注册表卸载项。5.2 哪些数据值得留哪些必须扔最后一个建议关于重装前留什么。值得保留的只有三样配置文件、API Key 备份、自定义技能目录。这些是可以帮助你快速恢复工作环境的。必须删除的是旧会话数据库、锁文件、日志、模型响应缓存。这些东西留在新环境里轻则让界面出现脏数据重则触发各种奇怪报错。我自己的处理习惯是不直接rm -rf ~/.openclaw而是先把它改成~/.openclaw.bak。重装后先跑一天确认新环境没问题再把.bak删掉。这个折中方案能避免在清理过程中误删还想要的配置。如果你确实不太确定某个目录里有什么先改名永远比先删除安全。清理服务、配置和缓存这件事不复杂关键是别漏项也别手快。
