2026/10/8 6:27:42

OpenClaw 卸载指南:停止服务、删除目录、清理环境变量与 TaoToken 配置残留

OpenClaw 卸载指南:停止服务、删除目录、清理环境变量与 TaoToken 配置残留 1. 为什么 OpenClaw 卸载后总感觉没卸干净OpenClaw 这类带后台守护进程的工具安装时往往不止写一个目录。它会注册系统服务、往 PATH 里塞 bin 路径、在用户目录生成配置和缓存如果你之前还接过 TaoToken 这类模型网关配置里会额外留下 Base URL、API Key 引用和模型 ID 记录。只删主程序目录服务还在后台跑环境变量还指向一个已经不存在的路径下次开终端就报 command not found 或者服务启动失败。我见过最常见的三种残留一是 systemd 或 launchd 里还挂着 openclaw.service开机自启照常触发二是~/.openclaw和~/.config/openclaw两个目录没删里面存着旧 token 和会话缓存三是 shell 配置文件里那行export PATH$PATH:/opt/openclaw/bin还在每次 source 都往 PATH 里加一个死路径。这三样不处理重装新版本时会出现端口占用、配置串味、鉴权失败。这篇按四个阶段走停服务、删目录、清环境变量、验证残留。每一步都给可复制命令Windows 用 PowerShellmacOS 和 Linux 用 bash。如果你之前用 OpenClaw 接过 TaoToken 的模型对话或 Coding Plan第五部分专门讲配置残留怎么清避免旧 Key 引用留在文件里。适合谁看装过 OpenClaw 想彻底移除的、重装前要清环境的、以及排查「服务起不来但进程还在」的人。全程不需要图形界面终端里就能完成。先说一个判断标准卸载完成的标志不是「命令找不到」而是服务列表为空、目录不存在、环境变量里搜不到 openclaw 字样、端口没被占用。四个条件同时满足才算干净。2. 卸载前先认清 OpenClaw 的安装足迹与 TaoToken 配置位置动手删之前先花两分钟把 OpenClaw 在你系统上留下的东西列出来。不同安装方式脚本安装、包管理器、手动解压落点不一样盲目删容易漏。Linux 下典型足迹/opt/openclaw是主程序/etc/openclaw放系统级配置/var/log/openclaw是日志/var/lib/openclaw存数据~/.openclaw是当前用户配置。如果用 systemd 管理服务文件在/etc/systemd/system/openclaw.service。macOS 多一层 LaunchDaemon 和 LaunchAgentplist 分别在/Library/LaunchDaemons/和~/Library/LaunchAgents/。Windows 则是C:\Program Files\OpenClaw、C:\ProgramData\OpenClaw、%USERPROFILE%\.openclaw三处为主。TaoToken 相关配置通常不在 OpenClaw 主目录而是写在 OpenClaw 的配置文件里或者独立的环境变量中。常见形式是配置文件里有一段base_url指向https://taotoken.net/api加一个api_key字段和model字段。如果你用的是 Claude Code 或 Cline 这类编辑器插件接 TaoToken配置可能落在~/.claude/settings.json、~/.codex/auth.json或 VS Code 的 settings 里。卸载 OpenClaw 时这些引用要一并清掉否则下次别的工具读到会报鉴权错误。先跑一遍盘点命令把存在的路径记下来。Linux / macOS 盘点echo 检查 OpenClaw 相关目录 for p in /opt/openclaw /usr/share/openclaw /etc/openclaw /var/log/openclaw /var/lib/openclaw /var/cache/openclaw $HOME/.openclaw $HOME/.config/openclaw $HOME/.cache/openclaw; do [ -e $p ] echo 存在: $p || echo 不存在: $p done echo 检查服务文件 ls -la /etc/systemd/system/ 2/dev/null | grep -i claw ls -la /Library/LaunchDaemons/ 2/dev/null | grep -i claw ls -la ~/Library/LaunchAgents/ 2/dev/null | grep -i claw echo 检查环境变量引用 grep -ri openclaw\|claw ~/.bashrc ~/.zshrc ~/.profile ~/.bash_profile 2/dev/nullWindows 盘点Write-Host 检查 OpenClaw 相关目录 $paths ( C:\Program Files\OpenClaw, C:\Program Files (x86)\OpenClaw, C:\ProgramData\OpenClaw, $env:LOCALAPPDATA\OpenClaw, $env:APPDATA\OpenClaw, $env:USERPROFILE\.openclaw ) foreach ($p in $paths) { if (Test-Path $p) { Write-Host 存在: $p } else { Write-Host 不存在: $p } } Write-Host 检查服务 Get-Service | Where-Object {$_.Name -like *claw* -or $_.DisplayName -like *OpenClaw*} Write-Host 检查环境变量 [Environment]::GetEnvironmentVariable(Path,Machine) -split ; | Select-String -Pattern claw [Environment]::GetEnvironmentVariable(Path,User) -split ; | Select-String -Pattern claw盘点完你会得到一张清单。接下来按清单逐项处理不要跳步。特别注意如果 OpenClaw 正在运行先别删目录否则文件被占用会删不干净先做第三部分的停服务。3. 停止服务并清理 TaoToken 配置残留的可复制操作这一部分是核心分两步先停服务再清配置。顺序不能反服务没停就删目录Linux 下会报 Device or resource busyWindows 下会报文件被占用。3.1 停止并禁用 OpenClaw 服务Linux systemd# 停止服务 sudo systemctl stop openclaw sudo systemctl stop openclaw-agent 2/dev/null # 禁用开机自启 sudo systemctl disable openclaw sudo systemctl disable openclaw-agent 2/dev/null # 删除服务文件 sudo rm -f /etc/systemd/system/openclaw.service sudo rm -f /etc/systemd/system/openclaw-agent.service # 重载 systemd sudo systemctl daemon-reload sudo systemctl reset-failedmacOS launchd# 卸载 LaunchDaemon sudo launchctl unload /Library/LaunchDaemons/com.openclaw.daemon.plist 2/dev/null sudo launchctl remove com.openclaw.daemon 2/dev/null # 卸载 LaunchAgent launchctl unload ~/Library/LaunchAgents/com.openclaw.agent.plist 2/dev/null # 删除 plist sudo rm -f /Library/LaunchDaemons/com.openclaw.*.plist rm -f ~/Library/LaunchAgents/com.openclaw.*.plistWindows PowerShell# 停止服务 Stop-Service -Name OpenClaw -Force -ErrorAction SilentlyContinue Stop-Service -Name OpenClawAgent -Force -ErrorAction SilentlyContinue # 禁用并删除 Set-Service -Name OpenClaw -StartupType Disabled -ErrorAction SilentlyContinue sc.exe delete OpenClaw sc.exe delete OpenClawAgent # 杀掉残留进程 Get-Process | Where-Object {$_.Name -like *claw*} | Stop-Process -Force停完确认一下没有进程还在跑# Linux / macOS pgrep -i claw echo 还有进程 || echo 进程已清空# Windows Get-Process | Where-Object {$_.Name -like *claw*}3.2 清理 TaoToken 配置残留如果你之前用 OpenClaw 接过 TaoToken配置里会有 Base URL、API Key、Model ID 三件套。这些可能写在 OpenClaw 自己的配置文件里也可能写在编辑器插件配置里。先搜出来再删。搜索命令# Linux / macOS 搜索所有可能位置 grep -rl taotoken ~/.openclaw ~/.config ~/.claude ~/.codex 2/dev/null grep -rl taotoken.net /etc/openclaw /opt/openclaw 2/dev/null# Windows Get-ChildItem -Path $env:USERPROFILE\.openclaw,$env:APPDATA,$env:LOCALAPPDATA -Recurse -ErrorAction SilentlyContinue | Select-String -Pattern taotoken -List | Select-Object Path找到后如果是 OpenClaw 自己的配置文件直接随目录一起删。如果是编辑器插件的配置比如 Claude Code 的 settings.json需要手动编辑移除对应字段。以 Claude Code 的~/.claude/settings.json为例配置结构长这样{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的key, ANTHROPIC_MODEL: claude-sonnet-4-20250514 } }卸载 OpenClaw 时如果不再用这个网关把env里这三行删掉或者整个文件按需清理。如果你还要继续用 TaoToken 接别的工具就保留只删 OpenClaw 自己的配置目录。Cline 的 MCP 配置通常在 VS Code 的settings.json里搜mcpServers字段找到 openclaw 相关的条目删掉。Codex 的~/.codex/auth.json里如果有base_url指向 taotoken同样处理。这里提醒一句删配置前先备份一份万一删错还能恢复。cp ~/.claude/settings.json ~/.claude/settings.json.bak4. 删除目录并验证服务已终止、环境变量已移除服务停了配置清了现在删目录。按盘点清单逐个删删完立刻验证。4.1 删除目录Linux / macOS#!/bin/bash system_dirs( /opt/openclaw /usr/share/openclaw /etc/openclaw /var/log/openclaw /var/lib/openclaw /var/cache/openclaw /Applications/OpenClaw.app ) user_dirs( $HOME/.openclaw $HOME/.config/openclaw $HOME/.cache/openclaw ) for dir in ${system_dirs[]}; do if [ -e $dir ]; then sudo rm -rf $dir echo 已删除: $dir || echo 删除失败: $dir fi done for dir in ${user_dirs[]}; do if [ -e $dir ]; then rm -rf $dir echo 已删除: $dir || echo 删除失败: $dir fi done # 删除命令行工具 sudo rm -f /usr/local/bin/openclaw /usr/local/bin/clawctlWindows$dirs ( C:\Program Files\OpenClaw, C:\Program Files (x86)\OpenClaw, C:\ProgramData\OpenClaw, $env:LOCALAPPDATA\OpenClaw, $env:APPDATA\OpenClaw, $env:USERPROFILE\.openclaw ) foreach ($d in $dirs) { if (Test-Path $d) { Remove-Item -Path $d -Recurse -Force -ErrorAction SilentlyContinue if (Test-Path $d) { Write-Host 删除失败: $d } else { Write-Host 已删除: $d } } }4.2 清理环境变量Linux / macOS 清理 shell 配置# 删除 profile.d 里的脚本 sudo rm -f /etc/profile.d/openclaw.sh /etc/profile.d/openclaw.csh # 从 /etc/environment 删除 sudo sed -i /OPENCLAW/d /etc/environment 2/dev/null # 从用户 shell 配置删除 for cfg in ~/.bashrc ~/.bash_profile ~/.zshrc ~/.profile; do [ -f $cfg ] sed -i /openclaw/d; /OPENCLAW/d $cfg echo 已清理: $cfg done # 重新加载 source ~/.bashrc 2/dev/null || source ~/.zshrc 2/dev/nullWindows 清理环境变量# 清理系统 PATH $machinePath [Environment]::GetEnvironmentVariable(Path,Machine) $cleanMachine ($machinePath -split ; | Where-Object { $_ -notmatch openclaw }) -join ; [Environment]::SetEnvironmentVariable(Path, $cleanMachine, Machine) # 清理用户 PATH $userPath [Environment]::GetEnvironmentVariable(Path,User) $cleanUser ($userPath -split ; | Where-Object { $_ -notmatch openclaw }) -join ; [Environment]::SetEnvironmentVariable(Path, $cleanUser, User) # 删除独立变量 [Environment]::SetEnvironmentVariable(OPENCLAW_HOME, $null, Machine) [Environment]::SetEnvironmentVariable(OPENCLAW_HOME, $null, User) [Environment]::SetEnvironmentVariable(CLAW_CONFIG, $null, Machine) [Environment]::SetEnvironmentVariable(CLAW_CONFIG, $null, User)4.3 验证清理结果Linux / macOS 验证脚本echo 验证服务 systemctl list-units --typeservice 2/dev/null | grep -i claw echo 有残留服务 || echo 服务已清空 echo 验证进程 pgrep -i claw echo 有残留进程 || echo 进程已清空 echo 验证目录 for p in /opt/openclaw /etc/openclaw ~/.openclaw; do [ -e $p ] echo 残留: $p || echo 已清: $p done echo 验证环境变量 echo $PATH | grep -i claw echo PATH 有残留 || echo PATH 已清 echo 验证端口 lsof -i 2/dev/null | grep -i claw echo 端口被占用 || echo 端口已释放Windows 验证脚本Write-Host 验证服务 $svc Get-Service | Where-Object {$_.Name -like *claw*} if ($svc) { Write-Host 残留服务:; $svc } else { Write-Host 服务已清空 } Write-Host 验证进程 $proc Get-Process | Where-Object {$_.Name -like *claw*} if ($proc) { Write-Host 残留进程:; $proc } else { Write-Host 进程已清空 } Write-Host 验证目录 $paths (C:\Program Files\OpenClaw,C:\ProgramData\OpenClaw,$env:USERPROFILE\.openclaw) foreach ($p in $paths) { if (Test-Path $p) { Write-Host 残留: $p } else { Write-Host 已清: $p } } Write-Host 验证环境变量 $path [Environment]::GetEnvironmentVariable(Path,Machine) if ($path -match claw) { Write-Host PATH 有残留 } else { Write-Host PATH 已清 }四个验证项全部通过卸载才算完成。如果某一项还有残留回到对应阶段重做。5. 卸载 OpenClaw 常见报错与残留排查卸载过程中最容易卡在几个地方这里按真实报错逐个说。报错一systemctl stop openclaw返回Unit openclaw.service not loaded说明服务名不对或者服务已经不存在。先列出所有含 claw 的 unitsystemctl list-unit-files | grep -i claw找到真实服务名再停。如果确实没有说明服务文件已经被删过直接跳到删目录。报错二rm -rf /opt/openclaw报Device or resource busy有进程还在占用目录。先确认lsof D /opt/openclaw 2/dev/null fuser -v /opt/openclaw 2/dev/null找到 PID 后 kill 掉再删。如果是挂载点先umount。报错三Windows 下Remove-Item报Access to the path is denied服务没停干净或者文件被其他进程锁定。用管理员权限开 PowerShell先停服务再删。如果还不行用handle.exe查占用进程或者重启后进安全模式删。报错四清理 PATH 后新开终端报command not found: openclaw这是预期结果说明 PATH 清理成功。如果你还想保留 openclaw 命令说明不该删回退备份。报错五TaoToken 配置删了但别的工具报 401说明配置没删干净或者删错了文件。搜一下还有哪里引用了旧 Keygrep -rl taotoken\|sk- ~/.config ~/.claude ~/.codex 2/dev/null找到后统一清理。如果是要继续用 TaoToken 接其他工具去控制台重新生成 Key旧 Key 作废。报错六local proxy failed或reading choices错误这类报错通常出现在 OpenClaw 卸载后其他工具还引用着旧网关地址。检查~/.claude/settings.json或~/.codex/auth.json里的base_url是否还指向已失效的地址。如果要用 TaoToken确认 Base URL 是https://taotoken.net/apiKey 和 Model ID 三件套齐全。报错七OAuth 相关报错如果 OpenClaw 之前配过 OAuth 登录卸载后 token 缓存可能还在~/.openclaw/credentials或系统钥匙串里。macOS 用security delete-generic-password -s openclaw清理Windows 在凭据管理器里删。排查原则先看服务再看进程再看文件最后看环境变量。顺序对了问题定位很快。6. 卸载完成后的收尾与后续接入建议四个阶段走完验证脚本全绿OpenClaw 就算彻底清干净了。最后做三件收尾事。第一重启一次终端或重新登录让环境变量变更生效。Windows 下环境变量改动需要新开 PowerShell 窗口才生效老窗口读的还是旧值。第二检查一下系统启动项。Linux 用systemctl list-unit-files --stateenabled | grep -i clawmacOS 看launchctl list | grep -i clawWindows 看任务计划程序里有没有 OpenClaw 相关项。有就删掉。第三如果你卸载 OpenClaw 是为了换工具TaoToken 的接入配置可以复用。模型对话场景直接去控制台生成新 KeyCoding Plan 适合长期编码和 Agent 场景接入文档里有各工具的完整配置示例。Claude Code 接入时记得 Base URL 填https://taotoken.net/apiKey 和 Model ID 三件套配齐避免再出现reading choices这类报错。如果你只是暂时不用 OpenClaw配置想留着那就别删~/.openclaw只停服务禁用自启即可。下次要用直接启回来。彻底卸载和临时停用是两回事按需选择。最后提醒删目录前一定确认服务已停删配置前一定备份。这两条做到卸载过程不会出大问题。