尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

OpenClaw 完全卸载手册:备份、停止、删除、验证四步走(TaoToken 统一 Key 通道版)

OpenClaw 完全卸载手册:备份、停止、删除、验证四步走(TaoToken 统一 Key 通道版) 1. 卸载 OpenClaw 前先想清楚为什么“删不干净”是常态OpenClaw 这类本地 Agent 工具和普通桌面软件不太一样。它通常由三部分组成一个常驻后台的服务进程、一份放在用户目录下的配置与凭据文件、以及若干注册到系统里的自启动项。你从控制面板点“卸载”往往只删掉了主程序目录服务注册、环境变量、~/.openclaw里的密钥缓存全都留着。下次重装时旧配置和新版本打架就会出现“明明卸载了却还报端口占用”的怪现象。我试过在一台测试机上反复装删 OpenClaw第一次偷懒只跑了官方卸载器结果netstat里 8080 端口一直被占排查半天才发现是残留的守护进程。从那以后我就固定用“备份 → 停止 → 删除 → 验证”四步走每一步都有明确的产出物卸载完能拿到一份验证报告环境干净可复现。这篇手册面向已经部署过 OpenClaw、现在要彻底清理的开发者。你会拿到可直接复制的备份命令、跨平台的停止与删除脚本、一份验证清单以及卸载后如何用 TaoToken 统一 Key 通道接管后续工具接入的思路。核心检索词就三个OpenClaw 卸载、OpenClaw 备份配置、OpenClaw 残留验证。适合谁适合那些不想在系统里留垃圾、又希望后续换工具时密钥管理不乱的人。先说清楚一个前提卸载是不可逆操作备份永远排在第一位。下面每一步我都给出 Windows PowerShell 和 macOS/Linux Shell 两套写法你按自己的系统挑着用。整个流程建议在管理员/root 权限下执行否则删注册表和系统服务会失败。2. TaoToken 统一 Key 通道卸载前先把凭据收拢在动手删 OpenClaw 之前有个容易被忽略的动作把它里面配置的模型 API Key 先归拢出来。OpenClaw 的config.yml里通常写着某个模型的 Base URL 和 Key如果你直接删目录这些凭据就跟着没了后面想复用还得重新申请。我的做法是卸载前把 OpenClaw 用到的 Key 统一迁到 TaoToken 的 Key 管理里。TaoToken 是一个统一 Key/API 通道官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。它的价值在于你后续无论接 Claude Code、Cline、Codex 还是别的编码工具都可以共用同一套 Key 和 Base URL不用每个工具单独配一遍。具体怎么收拢打开 OpenClaw 的配置文件找到类似下面的字段# ~/.openclaw/config.yml 片段示例 model: provider: custom base_url: https://taotoken.net/api api_key: sk-你的Key model_id: claude-sonnet-4-5把api_key记下来登录 TaoToken 控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 在 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 确认这个 Key 还在、额度还够。如果 OpenClaw 里用的是临时 Key建议在这里重新生成一个长期 Key记到你的密码管理器里。为什么要强调这一步因为卸载 OpenClaw 之后你大概率还会用别的 Agent 工具。与其每次换工具都重新折腾 Key不如借这次卸载把凭据管理统一到一处。TaoToken 的接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里面有各工具的 Base URL 填法卸载完可以直接照着接新工具。这里要提醒一句不要把生产环境的数据库连接串、内部服务地址写进任何第三方通道的配置里。TaoToken 只用来管模型调用的 Key业务凭据该放本地密钥库就放本地。卸载 OpenClaw 时config.yml里如果有业务相关的敏感字段备份后要单独加密存放别随手丢桌面。收拢完凭据你就可以放心进入备份环节了。记住顺序先确认 Key 有备份或已迁移再动删除命令。这样即使卸载过程中出了岔子你的模型调用能力也不会断。3. 可复制配置备份、停止、删除三段脚本这一节是整篇的核心三段脚本分别对应前三步。每段都可以单独跑也可以串起来。我按“先备份、再停止、后删除”的顺序给你复制到本地.ps1或.sh文件里执行即可。3.1 备份脚本配置、环境变量、任务清单一网打尽Windows PowerShell 版本# backup_openclaw.ps1 $stamp Get-Date -Format yyyyMMdd_HHmmss $backupDir $env:USERPROFILE\Desktop\OpenClaw_Backup_$stamp New-Item -ItemType Directory -Path $backupDir -Force | Out-Null # 1. 备份配置目录 if (Test-Path $env:USERPROFILE\.openclaw) { Copy-Item -Recurse $env:USERPROFILE\.openclaw $backupDir\openclaw_config -Force Write-Host [OK] 配置目录已备份 } # 2. 备份环境变量 Get-ChildItem Env: | Where-Object { $_.Name -like *CLAW* -or $_.Value -like *openclaw* } | Export-Csv $backupDir\env_vars.csv -NoTypeInformation -Encoding UTF8 Write-Host [OK] 环境变量已备份 # 3. 记录卸载前状态 $statusFile $backupDir\status_before.txt OpenClaw 卸载前状态 $stamp | Out-File $statusFile -Encoding UTF8 --- 服务 --- | Out-File $statusFile -Append -Encoding UTF8 Get-Service | Where-Object {$_.Name -like *claw*} | Out-File $statusFile -Append -Encoding UTF8 --- 进程 --- | Out-File $statusFile -Append -Encoding UTF8 Get-Process | Where-Object {$_.Name -like *claw*} | Select-Object Name,Id,Path | Out-File $statusFile -Append -Encoding UTF8 --- 安装路径 --- | Out-File $statusFile -Append -Encoding UTF8 Get-Command openclaw -ErrorAction SilentlyContinue | Select-Object Source | Out-File $statusFile -Append -Encoding UTF8 Write-Host [OK] 状态记录已保存到 $statusFile Write-Host 备份完成$backupDirmacOS/Linux 版本#!/bin/bash # backup_openclaw.sh STAMP$(date %Y%m%d_%H%M%S) BACKUP_DIR$HOME/OpenClaw_Backup_$STAMP mkdir -p $BACKUP_DIR # 1. 备份配置目录 if [ -d $HOME/.openclaw ]; then cp -r $HOME/.openclaw $BACKUP_DIR/openclaw_config echo [OK] 配置目录已备份 fi # 2. 备份 shell 里的相关环境变量 grep -E (CLAW|claw) $HOME/.bashrc $HOME/.bash_profile $HOME/.zshrc 2/dev/null \ $BACKUP_DIR/env_vars.txt || true echo [OK] 环境变量已备份 # 3. 导出任务列表如果 CLI 还在 if command -v openclaw /dev/null 21; then openclaw task list $BACKUP_DIR/task_list.txt 2/dev/null || true echo [OK] 任务列表已导出 fi # 4. 记录卸载前状态 { echo OpenClaw 卸载前状态 $STAMP echo --- 进程 --- ps aux | grep -i claw | grep -v grep || echo 无 echo --- 监听端口 --- (lsof -i -P 2/dev/null | grep -i claw) || echo 无 } $BACKUP_DIR/status_before.txt echo [OK] 状态记录已保存 echo 备份完成$BACKUP_DIR跑完这段桌面上会多出一个带时间戳的备份目录。里面openclaw_config是完整配置env_vars是环境变量快照status_before.txt是卸载前的服务/进程/端口状态。这份状态文件在第四步验证时能直接对照非常有用。3.2 停止脚本服务、进程、端口三连清Windows PowerShell 版本# stop_openclaw.ps1 Write-Host 停止 OpenClaw 服务 $services (OpenClaw,OpenClawAgent,ClawScheduler,ClawDaemon,ClawService) foreach ($name in $services) { $svc Get-Service -Name $name -ErrorAction SilentlyContinue if ($svc -and $svc.Status -eq Running) { Stop-Service -Name $name -Force Write-Host [OK] 已停止服务 $name } } Start-Sleep -Seconds 3 Write-Host 结束 OpenClaw 进程 Get-Process | Where-Object { $_.Name -like *claw* -or $_.Name -like *openclaw* } | ForEach-Object { Write-Host 结束进程 $($_.Name) (PID $($_.Id)) Stop-Process -Id $_.Id -Force } Start-Sleep -Seconds 2 Write-Host 检查残留 $left Get-Process | Where-Object {$_.Name -like *claw*} if ($left) { Write-Host [警告] 仍有进程$($left.Name) -ForegroundColor Red } else { Write-Host [OK] 无残留进程 -ForegroundColor Green }macOS/Linux 版本#!/bin/bash # stop_openclaw.sh echo 停止 systemd 服务 for svc in $(systemctl list-units --typeservice --staterunning 2/dev/null | grep -i claw | awk {print $1}); do sudo systemctl stop $svc echo [OK] 已停止 $svc done echo 停止 LaunchAgent/Daemon (macOS) for plist in /Library/LaunchDaemons/com.openclaw.* ~/Library/LaunchAgents/com.openclaw.*; do [ -f $plist ] || continue name$(basename $plist .plist) sudo launchctl unload $plist 2/dev/null sudo launchctl remove $name 2/dev/null echo [OK] 已卸载 $name done echo 结束进程 pkill -TERM -f openclaw 2/dev/null sleep 2 pkill -KILL -f openclaw 2/dev/null echo 检查残留 if pgrep -f openclaw /dev/null; then echo [警告] 仍有进程 ps aux | grep -i claw | grep -v grep else echo [OK] 无残留进程 fi停止这一步的关键是“先服务后进程”。服务不先停进程杀了也会被守护进程拉起来。脚本里Start-Sleep那几秒别省给系统一点时间释放端口和文件句柄。3.3 删除脚本文件、注册表、环境变量Windows PowerShell 版本# delete_openclaw.ps1 Write-Host 删除程序文件 $paths ( C:\Program Files\OpenClaw, C:\Program Files (x86)\OpenClaw, C:\ProgramData\OpenClaw, $env:USERPROFILE\.openclaw, $env:LOCALAPPDATA\OpenClaw, $env:APPDATA\OpenClaw ) foreach ($p in $paths) { if (Test-Path $p) { Remove-Item -Path $p -Recurse -Force -ErrorAction SilentlyContinue if (Test-Path $p) { Write-Host [警告] 未能完全删除 $p可能被占用 -ForegroundColor Yellow } else { Write-Host [OK] 已删除 $p } } } Write-Host 清理注册表 $regs ( HKLM:\SOFTWARE\OpenClaw, HKLM:\SOFTWARE\WOW6432Node\OpenClaw, HKCU:\SOFTWARE\OpenClaw, HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\OpenClaw ) foreach ($r in $regs) { if (Test-Path $r) { Remove-Item -Path $r -Recurse -Force -ErrorAction SilentlyContinue Write-Host [OK] 已删除注册表项 $r } } Write-Host 清理 PATH 环境变量 $machinePath [Environment]::GetEnvironmentVariable(Path, Machine) $clean ($machinePath -split ; | Where-Object { $_ -notlike *OpenClaw* }) -join ; [Environment]::SetEnvironmentVariable(Path, $clean, Machine) Write-Host [OK] PATH 已清理macOS/Linux 版本#!/bin/bash # delete_openclaw.sh echo 删除程序与配置目录 TARGETS( $HOME/.openclaw $HOME/.config/openclaw $HOME/Library/Application Support/OpenClaw /usr/local/bin/openclaw /opt/openclaw /etc/openclaw ) for t in ${TARGETS[]}; do if [ -e $t ]; then sudo rm -rf $t echo [OK] 已删除 $t fi done echo 清理 shell 配置里的相关行 for rc in $HOME/.bashrc $HOME/.bash_profile $HOME/.zshrc; do [ -f $rc ] || continue cp $rc $rc.bak_openclaw grep -v -i openclaw\|CLAW $rc.bak_openclaw $rc echo [OK] 已清理 $rc备份为 $rc.bak_openclaw done echo 刷新 systemd sudo systemctl daemon-reload 2/dev/null || true echo 删除完成删除脚本里我特意保留了$rc.bak_openclaw备份。改 shell 配置文件有风险万一 grep 误删了别的行还能从备份恢复。Windows 那边删注册表前也建议先导出reg export HKLM\SOFTWARE\OpenClaw openclaw_reg_backup.reg出问题能还原。4. 验证请求确认无残留并跑通一次模型调用删完不代表结束第四步验证才是“卸载干净”的证明。验证分两层系统层确认无残留应用层确认你的 Key 通道还能正常用。4.1 系统层验证清单Windows PowerShell# verify_openclaw.ps1 Write-Host 验证服务 $svc Get-Service | Where-Object {$_.Name -like *claw*} if ($svc) { Write-Host [残留] $($svc.Name) -ForegroundColor Red } else { Write-Host [OK] 无残留服务 -ForegroundColor Green } Write-Host 验证进程 $proc Get-Process | Where-Object {$_.Name -like *claw*} if ($proc) { Write-Host [残留] $($proc.Name) -ForegroundColor Red } else { Write-Host [OK] 无残留进程 -ForegroundColor Green } Write-Host 验证文件 $check (C:\Program Files\OpenClaw,C:\ProgramData\OpenClaw,$env:USERPROFILE\.openclaw) $found $false foreach ($c in $check) { if (Test-Path $c) { Write-Host [残留] $c -ForegroundColor Red; $found $true } } if (-not $found) { Write-Host [OK] 无残留文件 -ForegroundColor Green } Write-Host 验证端口 $ports netstat -ano | Select-String :8080|:9090 if ($ports) { Write-Host [注意] 端口仍被占用检查是否其他程序 -ForegroundColor Yellow; $ports } else { Write-Host [OK] 相关端口已释放 -ForegroundColor Green }macOS/Linux#!/bin/bash # verify_openclaw.sh echo 验证进程 pgrep -f openclaw /dev/null echo [残留] 仍有进程 || echo [OK] 无残留进程 echo 验证文件 for p in $HOME/.openclaw /usr/local/bin/openclaw /opt/openclaw; do [ -e $p ] echo [残留] $p || true done echo [OK] 文件检查完成 echo 验证端口 ss -tulpn 2/dev/null | grep -E :8080|:9090 echo [注意] 端口占用 || echo [OK] 端口已释放 echo 验证命令 command -v openclaw /dev/null echo [残留] openclaw 命令仍可用 || echo [OK] 命令已移除对照第 3.1 节备份的status_before.txt逐项打勾。如果服务、进程、文件、端口、命令五项全过系统层就算干净了。4.2 应用层验证用 TaoToken 跑一次模型调用系统干净了还得确认你的 Key 通道没被卸载动作影响。用 curl 直接打一次 TaoToken 的 API验证 Key 有效curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 回复 OK 两个字母即可}], max_tokens: 16 }正常返回里会有choices数组message.content是模型回复。如果返回 401说明 Key 无效或已过期去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 重新生成。如果返回local proxy failed之类检查你的网络出口是否正常别把本地代理配置残留带进来。这一步的意义在于卸载 OpenClaw 后你的模型调用能力应该无缝转移到新工具上。TaoToken 的模型对话入口在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 你也可以直接在网页上试一句确认通道通畅。验证通过后建议把验证报告存一份# 生成验证报告 $report $env:USERPROFILE\Desktop\openclaw_uninstall_report.txt OpenClaw 卸载验证报告 $(Get-Date) | Out-File $report -Encoding UTF8 服务: $(if($svc){残留}else{干净}) | Out-File $report -Append -Encoding UTF8 进程: $(if($proc){残留}else{干净}) | Out-File $report -Append -Encoding UTF8 文件: $(if($found){残留}else{干净}) | Out-File $report -Append -Encoding UTF8 Write-Host 报告已保存$report5. 本篇常见错排查401、local proxy failed、OAuth 报错卸载和验证过程中最容易撞上这几类报错。我按真实遇到的顺序列出来附上定位思路。401 Unauthorizedcurl 验证时返回 401八成是 Key 写错了或已失效。先确认Authorization: Bearer后面没有多余空格再登录 TaoToken 控制台看 Key 状态。如果 Key 是在 OpenClaw 里用的旧 Key可能已经随配置删除而失效重新生成一个即可。注意别把 Key 硬编码进脚本提交到 Git用环境变量TAOTOKEN_API_KEY传。local proxy failed / connection refused这个报错通常出现在你本机还残留代理配置时。卸载 OpenClaw 后检查~/.bashrc或系统环境变量里有没有HTTP_PROXY、HTTPS_PROXY指向一个已经关掉的本地端口。有的话清掉重新开终端再试。TaoToken 的 API 端点 https://taotoken.net/api 直连即可不需要额外代理层。reading choices 报错 / 返回体解析失败如果你用脚本解析返回报cannot read property choices of undefined说明返回的不是预期 JSON。先curl -i看 HTTP 状态码和原始 body。常见原因是请求体 JSON 格式错误比如messages写成了字符串。用jq校验一下echo {model:...,messages:[...]} | jq .。OAuth 相关报错如果你之前用 Claude Code 或 Codex 的 OAuth 登录方式接过 OpenClaw卸载后这些工具的auth.json或凭据缓存可能还在。检查~/.claude/、~/.codex/目录确认里面的 Base URL 指向的是 https://taotoken.net/api 而不是已失效的旧地址。需要重配的话三件套是Base URL 填https://taotoken.net/apiKey 填 TaoToken 生成的 KeyModel ID 填你要用的模型名如claude-sonnet-4-5。这三项在 TaoToken 接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里有各工具的对照表。文件删不掉 / 提示被占用Windows 上常见于C:\ProgramData\OpenClaw下的日志文件被句柄占用。先跑停止脚本再不行就重启进安全模式删。macOS/Linux 上用lsof D ~/.openclaw看哪个进程占着杀掉再删。服务删了又回来说明有守护进程或计划任务在拉起它。Windows 检查任务计划程序里有没有 OpenClaw 相关任务Linux 检查crontab -l和/etc/cron.d/。这些不在主目录里容易漏。排查完这些你的环境基本就干净了。如果后续要接新工具长期编码或 Agent 场景可以直接看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 把 Key 和 Base URL 填进去就能跑不用再折腾一遍配置。6. 卸载之后用统一 Key 通道接管后续工具接入OpenClaw 卸载完你的机器上少了一个 Agent但模型调用需求还在。这时候最省事的做法是让所有后续工具都走同一套 Key 通道而不是每个工具单独配一遍。具体操作路径是这样的先去 TaoToken 控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 确认你的 Key 和额度然后在 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 生成或复制 Key。接着按你要用的工具在接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 里找对应的配置片段。以 Claude Code 为例配置通常写在~/.claude/settings.json或环境变量里核心三项{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的Key, ANTHROPIC_MODEL: claude-sonnet-4-5 } }Cline 这类 VS Code 插件则在设置里填 Base URL、API Key、Model ID 三项。Codex 的auth.json同理。三件套填对基本就能跑通。如果你只是想在网页上快速验证模型是否可用直接开模型对话 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 发一句话就行。我自己的习惯是卸载任何 Agent 工具前先把 Key 迁到 TaoToken卸载后用 curl 验证一次再按新工具的文档填三件套。这样整个流程是可复现的换机器、换工具都不用重新申请凭据。卸载 OpenClaw 只是清理动作真正的价值在于借这次机会把凭据管理理顺后面接什么工具都省事。
返回列表