news 2026/6/24 4:59:00

OpenClaw彻底卸载指南:PowerShell四步连根拔起

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenClaw彻底卸载指南:PowerShell四步连根拔起

1. OpenClaw 是什么,为什么卸载它会变成“拔河比赛”

OpenClaw 这个名字在最近半年的开发者工具圈里出现频率陡增,但它的公开资料却异常稀疏——没有官网、没有 GitHub 官方组织页、没有明确的开源许可证声明。从大量用户反馈和安装包结构反向分析来看,它本质上是一个基于 Electron + Node.js 构建的本地化 AI 工具聚合前端,核心功能是封装调用本地部署的大模型(如 Ollama、LM Studio 启动的服务)、集成 Claude Code 插件逻辑、提供类 VS Code 的轻量编辑器界面,并通过 npm 包管理方式分发 CLI 命令(如openclaw startopenclaw skill)。它不是 Autodesk 或 SolidWorks 官方产品,也与 Motorola RDP Connection 协议无关(后者是完全独立的工业设备通信协议,热词混入纯属搜索噪声);所谓 “autodesk uninstall tool”“solidworks clean uninstall utility” 等关键词,是用户在系统级卸载失败后病急乱投医式关联搜索的结果,属于典型的“症状误判”。

真正让 OpenClaw 卸载变得棘手的,是它刻意模仿了专业开发工具的安装范式,却又未遵循 Windows Installer(MSI)或现代 Windows AppX 的标准注册机制。它不走“控制面板 → 程序和功能”这一条正路,而是采用三段式野蛮植入:

  • 第一层:通过npm install -g openclaw注册全局 CLI 命令,把可执行文件链到%APPDATA%\npm\%APPDATA%\npm\node_modules\openclaw\bin\
  • 第二层:运行时自动创建%LOCALAPPDATA%\OpenClaw\目录,存放用户配置、缓存模型路径、技能插件(.ocl文件)、Electron 主进程日志;
  • 第三层:静默注册 Windows 启动项(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run下新增OpenClawAutoStart),并可能修改PATH环境变量追加C:\Users\<user>\AppData\Roaming\npm

这三层结构彼此解耦、无主从依赖关系,导致常规卸载手段失效:

  • 你删了node_modules,CLI 命令仍能响应(因为%APPDATA%\npm\openclaw.cmd还在);
  • 你清空%LOCALAPPDATA%\OpenClaw\,下次启动又自动生成,且残留的注册表项会强制拉起进程;
  • 你禁用启动项,它可能通过npm run dev脚本或 Electron 的app.setLoginItemSettings()API 重新激活。

提示:很多用户反馈“卸载后 CMD 还能识别openclaw命令”,根本原因就是%APPDATA%\npm\目录下的.cmd.ps1代理文件未被清除,而该目录默认被加入系统PATH—— 这不是病毒行为,而是 npm 全局安装机制的固有设计,只是 OpenClaw 利用了这一点。

我第一次处理这个问题时,在 PowerShell 里执行npm uninstall -g openclaw,终端返回removed 1 package,满心欢喜关掉窗口,结果两小时后发现任务管理器里electron.exe进程又占着 800MB 内存。翻日志才发现,它早把自身启动逻辑写进了shell:startup启动文件夹,还顺手在HKCU\Software\Classes\Directory\Background\shell\OpenClaw注册了右键菜单。这不是卸载不干净,这是它压根就没打算让你“干净”地卸载。

2. 为什么 PowerShell 是唯一可信的“手术刀”,而非 CMD

面对 OpenClaw 这种多层嵌套、跨权限域(用户级 vs 系统级)、混合脚本(PowerShell + Batch + Node.js)的卸载场景,CMD 和图形化工具全部失效,根本原因在于权限粒度、执行上下文和对象模型的代差。这不是“哪个命令更熟”的问题,而是底层能力的硬性门槛。

先说 CMD:它本质是 16 位 DOS 的遗产,连 Unicode 支持都靠chcp 65001临时切换,对现代 Windows 的注册表操作仅支持reg add/delete/query这种字符串级粗暴匹配,无法区分HKEY_CURRENT_USERHKEY_LOCAL_MACHINE下同名键值,更无法遍历HKCU\Software\Classes\*这类动态注册表分支。当你执行reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v OpenClawAutoStart /f,CMD 只能删除键值,但 OpenClaw 很可能在HKCU\Software\Classes\Directory\shell\OpenClaw\command下埋了另一条启动路径,CMD 根本看不到这个路径的存在。

PowerShell 则完全不同。它是 .NET Framework/.NET Core 原生构建的,直接调用 Windows Management Instrumentation(WMI)和 Registry Provider API。以删除注册表项为例,CMD 的reg delete是黑盒命令,而 PowerShell 的Remove-ItemProperty可以精确到属性级别:

# 删除启动项(精准定位,不伤及其他键值) Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "OpenClawAutoStart" -ErrorAction SilentlyContinue # 批量清理所有 OpenClaw 相关右键菜单(递归扫描 Classes 树) Get-ChildItem "HKCU:\Software\Classes\" -Recurse | Where-Object { $_.PSChildName -like "*OpenClaw*" } | ForEach-Object { Remove-Item $_.PSPath -Recurse -Force -ErrorAction SilentlyContinue }

这段代码的价值在于:它不是靠字符串匹配“猜”哪里有残留,而是用Get-ChildItem -Recurse主动遍历整个HKCU\Software\Classes\树,再用Where-Object做模式匹配,最后Remove-Item强制递归删除。CMD 永远做不到这种主动发现+精准清除的组合。

再看文件系统操作。OpenClaw 的%LOCALAPPDATA%\OpenClaw\目录下常有logs\子目录,里面塞满带时间戳的.log文件(如2024-05-22T14:32:18.123Z-main.log),这些文件被electron.exe进程独占锁定。CMD 的del /s /q遇到独占文件会直接报错退出,而 PowerShell 的Remove-Item可配合-Force参数强制解除句柄:

# 强制删除被占用的日志文件(需管理员权限) Get-Process | Where-Object { $_.ProcessName -eq "electron" } | Stop-Process -Force -ErrorAction SilentlyContinue Remove-Item "$env:LOCALAPPDATA\OpenClaw\logs\*" -Force -Recurse -ErrorAction SilentlyContinue

这里的关键是Stop-Process -Force—— 它调用的是 Windows API 的TerminateProcess,比 CMD 的taskkill /f /im electron.exe更底层、更可靠。我实测过,在 Win11 22H2 上,taskkill有时会因 UAC 提权延迟失败,而Stop-Process -Force在当前 PowerShell 会话已提权的前提下,秒级终止。

最后是环境变量清理。OpenClaw 可能悄悄把C:\Users\<user>\AppData\Roaming\npm加进PATH,CMD 的setx PATH "%PATH%;newpath"会覆盖整个变量,极大概率破坏其他 npm 全局包路径。PowerShell 则可用数组操作安全增删:

# 安全移除 PATH 中特定路径(不破坏其他项) $env:Path = ($env:Path -split ';' | Where-Object { $_ -notmatch "AppData\\Roaming\\npm" }) -join ';' [Environment]::SetEnvironmentVariable("Path", $env:Path, "User")

这段代码把PATH拆成数组,过滤掉含AppData\Roaming\npm的项,再拼回去。它不会像setx那样因长度超限截断,也不会误删C:\Windows\System32这类关键路径。

注意:PowerShell 脚本执行策略(Execution Policy)是最大拦路虎。用户搜索中高频出现的npm.ps1 无法加载错误,根源就是默认策略Restricted禁止所有脚本运行。这不是安全风险,而是微软为防宏病毒设的保守锁。解决方案不是永久禁用策略(危险!),而是对本次会话临时提权:在管理员 PowerShell 中执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force,该命令只影响当前用户,且仅允许本地签名脚本,完美平衡安全与可用性。

3. “连根拔起”四步法:从进程终结到注册表刮骨

卸载 OpenClaw 不是执行一条命令,而是一场需要按顺序推进的外科手术。任何步骤跳过或颠倒,都会导致残留再生。我将整个过程拆解为四个不可逆阶段,每步都附带原理说明和实操验证点,确保你能亲手确认效果。

3.1 第一步:进程终结与服务冻结(5分钟)

目标不是简单关掉electron.exe,而是切断所有可能的复活通道。OpenClaw 的 Electron 主进程常伪装成node.exechrome.exe,且可能派生子进程监听端口(如http://localhost:3000)。必须用 PowerShell 的 WMI 接口做全维度扫描。

首先,以管理员身份打开 PowerShell(Win+X → Windows PowerShell (Admin)),执行:

# 1. 终止所有疑似 OpenClaw 的进程(含子进程) Get-CimInstance -ClassName Win32_Process | Where-Object { $_.Name -in "electron.exe", "node.exe", "chrome.exe" -and ($_.CommandLine -match "openclaw" -or $_.CommandLine -match "main\.js" -or $_.CommandLine -match "dist") } | ForEach-Object { Write-Host "正在终止进程: $($_.Name) (PID $($_.ProcessId))" -ForegroundColor Yellow Stop-Process -Id $_.ProcessId -Force -ErrorAction SilentlyContinue } # 2. 检查 3000/3001 端口是否被占用(OpenClaw 默认 Dev Server 端口) $ports = @("3000", "3001") foreach ($port in $ports) { $listener = Get-NetTCPConnection -LocalPort $port -ErrorAction SilentlyContinue if ($listener) { $proc = Get-Process -Id $listener.OwningProcess -ErrorAction SilentlyContinue if ($proc) { Write-Host "端口 $port 被 $($proc.ProcessName) (PID $($proc.Id)) 占用,正在终止" -ForegroundColor Red Stop-Process -Id $proc.Id -Force -ErrorAction SilentlyContinue } } }

这段代码的价值在于:它不依赖进程名判断,而是结合CommandLine字段内容(即启动命令的完整参数)做双重校验。比如node.exe进程若启动参数含main.js,基本可判定为 OpenClaw 主进程。我曾遇到一个案例,用户手动改了进程名为myapp.exe来绕过杀软,但CommandLine里仍明晃晃写着C:\Users\Alice\AppData\Roaming\npm\node_modules\openclaw\dist\main.js,这就是最可靠的指纹。

验证点:执行后,打开任务管理器 → 详细信息页,按映像名称排序,确认electron.exenode.exechrome.exe是否彻底消失;再用浏览器访问http://localhost:3000,应返回This site can’t be reached

3.2 第二步:全局 npm 包与 CLI 清理(3分钟)

这步针对 OpenClaw 的“命令入口”。很多人以为npm uninstall -g openclaw就完事,但 npm 的全局安装机制会在%APPDATA%\npm\目录下生成.cmd.ps1代理文件,这些文件才是 CMD/PowerShell 能识别openclaw命令的真正原因。

执行以下命令:

# 1. 卸载全局 npm 包(标准流程) npm uninstall -g openclaw # 2. 手动删除残留的 CLI 代理文件(关键!) $npmDir = "$env:APPDATA\npm" Remove-Item "$npmDir\openclaw.cmd" -Force -ErrorAction SilentlyContinue Remove-Item "$npmDir\openclaw.ps1" -Force -ErrorAction SilentlyContinue Remove-Item "$npmDir\openclaw" -Force -Recurse -ErrorAction SilentlyContinue # 3. 清理 npm 缓存中的 OpenClaw 包(防止重装时秒恢复) npm cache clean --force

为什么必须手动删.cmd.ps1?因为npm uninstall -g只清理node_modules目录,而 npm 为了兼容 CMD,会把全局包的bin目录下可执行文件(如openclaw.cmd)复制到%APPDATA%\npm\。这个目录不在node_modules范围内,所以uninstall不管它。我测试过,不删这两个文件,哪怕你删光node_modules,CMD 里敲openclaw --version依然返回v1.2.3

验证点:在新打开的 CMD 窗口中输入openclaw --version,应返回'openclaw' 不是内部或外部命令;在 PowerShell 中输入Get-Command openclaw,应返回The term 'openclaw' is not recognized

3.3 第三步:用户数据与配置目录物理清除(2分钟)

OpenClaw 的%LOCALAPPDATA%\OpenClaw\是它的“大脑”,存放所有用户态数据。但直接rm -r会失败,因为 Electron 日志文件常被独占。必须先释放句柄再删除。

# 1. 强制释放 OpenClaw 目录下所有文件句柄(核心技巧) $openclawPath = "$env:LOCALAPPDATA\OpenClaw" if (Test-Path $openclawPath) { # 关闭所有对该目录的句柄(需管理员权限) Handle.exe -accepteula -p electron.exe -u | Select-String $openclawPath | ForEach-Object { $handleId = ($_ -split '\s+')[2] if ($handleId -match '^[0-9A-Fa-f]{8}$') { & "Handle.exe" -accepteula -p electron.exe -c $handleId -y | Out-Null } } # 安全删除目录(-Force 强制解除只读/隐藏属性) Remove-Item $openclawPath -Force -Recurse -ErrorAction SilentlyContinue Write-Host "已清除用户数据目录: $openclawPath" -ForegroundColor Green }

这里用到了 Sysinternals 的Handle.exe工具(微软官方出品,安全可靠)。它能列出进程打开的所有句柄,我们用Select-String精准匹配路径,再用-c参数关闭指定句柄 ID。这是比Stop-Process更精细的操作——它不杀进程,只释放文件锁,避免进程异常退出导致数据损坏。

验证点:打开文件资源管理器,导航至%LOCALAPPDATA%,确认OpenClaw文件夹已不存在;在 PowerShell 中执行Test-Path "$env:LOCALAPPDATA\OpenClaw",应返回False

3.4 第四步:注册表深度刮骨(8分钟)

这是最易被忽略、也最致命的一步。OpenClaw 的注册表残留集中在三个区域:启动项、文件关联、Shell 扩展。必须用 PowerShell 的Get-ChildItem -Recurse主动发现,而非凭经验猜测。

# 1. 清理启动项(HKCU Run 键) $runKeys = @( "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run", "HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce" ) foreach ($key in $runKeys) { if (Test-Path $key) { Get-ItemProperty $key | Get-Member -MemberType NoteProperty | ForEach-Object { if ($_.Name -match "OpenClaw|ocl|claw") { Remove-ItemProperty -Path $key -Name $_.Name -ErrorAction SilentlyContinue Write-Host "已删除启动项: $($_.Name) from $key" -ForegroundColor Cyan } } } } # 2. 清理 Shell 右键菜单(深度递归扫描) $shellPaths = @( "HKCU:\Software\Classes\Directory\shell", "HKCU:\Software\Classes\Directory\Background\shell", "HKCU:\Software\Classes\*\shell" ) foreach ($path in $shellPaths) { if (Test-Path $path) { Get-ChildItem $path -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.PSChildName -match "OpenClaw|ocl|claw" } | ForEach-Object { Remove-Item $_.PSPath -Recurse -Force -ErrorAction SilentlyContinue Write-Host "已删除右键菜单项: $($_.PSChildName) at $($_.PSPath)" -ForegroundColor Cyan } } } # 3. 清理文件类型关联(防止 .ocl 文件双击复活) $oclExt = "HKCU:\Software\Classes\.ocl" if (Test-Path $oclExt) { Remove-Item $oclExt -Recurse -Force -ErrorAction SilentlyContinue Write-Host "已删除 .ocl 文件关联" -ForegroundColor Cyan }

这段代码的威力在于Get-ChildItem -Recurse。它会像探地雷达一样扫过HKCU:\Software\Classes\Directory\shell\下所有子键,包括OpenClaw\commandOpenClaw\iconOpenClaw\DropTarget等深层节点。CMD 的reg query只能查一级,而 PowerShell 能直达末梢。

验证点:重启电脑后,右键桌面或文件夹空白处,确认没有 “OpenClaw” 菜单项;在注册表编辑器中手动导航至HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,确认无相关键值;新建一个文本文件,重命名为test.ocl,双击应提示“选择打开方式”,而非自动启动 OpenClaw。

4. 验证清单与终极自检:如何确认真的“连根拔起”

卸载完成不等于成功,必须通过一套可量化的验证清单,逐项打钩。这套清单是我从 37 个真实用户案例中提炼出的“残留复活高发点”,漏掉任意一项,OpenClaw 都可能在 24 小时内悄然回归。

4.1 命令行层面验证(必做,2分钟)

这是最快速的初筛。打开全新的 CMD 和 PowerShell 窗口(非之前执行卸载的会话),逐项测试:

测试项正确响应错误响应(说明未清干净)原因定位
openclaw --version(CMD)'openclaw' 不是内部或外部命令返回版本号如v1.2.3%APPDATA%\npm\openclaw.cmd未删
Get-Command openclaw(PowerShell)The term 'openclaw' is not recognized返回ApplicationInfo对象%APPDATA%\npm\openclaw.ps1node_modules仍在
npm list -g --depth=0输出中无openclaw显示openclaw@1.2.3npm uninstall -g未执行或失败
where openclaw(CMD)INFO: Could not find files for the given pattern(s)返回路径如C:\Users\Alice\AppData\Roaming\npm\openclaw.cmdCLI 代理文件残留

提示:where命令是 CMD 的“真相探测器”,它会扫描PATH中所有目录查找可执行文件,比which更严格。如果where openclaw有输出,说明PATH里某目录还藏着代理文件。

4.2 文件系统层面验证(必做,3分钟)

重点检查三个“黄金目录”,它们是 OpenClaw 的命脉所在:

目录路径应状态检查命令(PowerShell)残留后果
%APPDATA%\npm\node_modules\openclaw不存在Test-Path "$env:APPDATA\npm\node_modules\openclaw"全局包未卸载,npm list -g会显示它
%APPDATA%\npm\openclaw.*不存在Get-ChildItem "$env:APPDATA\npm\openclaw.*" -ErrorAction SilentlyContinueCLI 命令仍可用,openclaw命令未失效
%LOCALAPPDATA%\OpenClaw\不存在Test-Path "$env:LOCALAPPDATA\OpenClaw"用户配置、缓存、日志全在,重启即复活

我见过最顽固的残留案例:用户删了node_modules,但忘了%APPDATA%\npm\下的openclaw.ps1,结果每次打开 PowerShell,openclaw命令都正常响应,他以为卸载成功,直到某天发现%LOCALAPPDATA%\OpenClaw\logs\里多了 2GB 日志文件。

4.3 注册表与启动项验证(必做,5分钟)

这是“隐形杀手”藏身之处。必须用注册表编辑器(regedit)手动确认,不能只信脚本输出。

  • 启动项检查:打开regedit,导航至HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run,右侧窗格查看所有字符串值(Value name),确认无OpenClawAutoStartocl_launcherclaw_boot等变体名称。注意:有些恶意变体会用OCLauncher这种缩写,务必用 Ctrl+F 全局搜索oclclawopen等关键词。

  • 右键菜单检查:在regedit中依次展开HKEY_CURRENT_USER\Software\Classes\Directory\shellHKEY_CURRENT_USER\Software\Classes\Directory\Background\shell,观察子键列表。正常情况下,这里只有cmdpowershell7zip等合法软件键。如果看到OpenClawSend to OpenClaw等键,说明第四步的注册表刮骨未到位。

  • 文件关联检查:导航至HKEY_CURRENT_USER\Software\Classes\.ocl,如果该键存在,双击右侧(默认)值,查看其数据是否为OpenClaw.File或类似字符串。存在即代表.ocl技能文件双击会触发 OpenClaw,这是最隐蔽的复活入口。

4.4 进程与网络层面验证(终审,3分钟)

最后一步,用系统原生工具做压力测试,模拟 OpenClaw 最可能的复活场景。

  • 进程监控:打开任务管理器 → 性能页 → 打开资源监视器(Resource Monitor),切换到“CPU”选项卡,在“关联的句柄”搜索框中输入openclawoclclaw。如果搜到任何结果,说明仍有进程在后台加载 OpenClaw 相关 DLL 或读取其配置文件。

  • 网络监听:在资源监视器的“网络”选项卡中,查看“监听端口”列表,确认300030018080(OpenClaw 常用端口)是否为空。如果electron.exenode.exe正在监听这些端口,说明它的 Dev Server 或 API 服务已被静默启动。

  • 计划任务检查:以管理员身份运行taskschd.msc,在任务计划程序库中,用右上角搜索框输入openclawocl。OpenClaw 有时会创建计划任务(如每天凌晨启动更新检查),这种残留 CMD 和 PowerShell 脚本都难以触及。

终极自检口诀:命令找不到、文件不存在、注册表无痕、进程不复活。四项全满足,才算真正“连根拔起”。我在客户现场做过压力测试:执行完四步法后,连续监控 72 小时,用 Process Explorer 实时抓取所有新创建进程的父进程链,确认无任何 OpenClaw 相关模块加载。这才是交付标准。

5. 预防复发:给你的系统装上“免疫补丁”

卸载只是止损,预防才是长久之计。OpenClaw 类工具的安装逻辑高度相似,掌握以下三招,未来同类工具将再难扎根。

5.1 npm 全局安装的“沙盒化”实践(一劳永逸)

根本矛盾在于:npm install -g把包装进%APPDATA%\npm\,而该目录默认在PATH中,导致全局污染。解决方案是重定向 npm 全局目录到隔离区,并显式管理PATH

执行以下命令(需管理员 PowerShell):

# 1. 创建隔离的全局目录(不在用户主目录下,避免被误删) $globalNpmPath = "C:\Tools\npm-global" New-Item -ItemType Directory -Path $globalNpmPath -Force | Out-Null # 2. 配置 npm 使用新目录 npm config set prefix "$globalNpmPath" # 3. 将新目录加入 PATH(仅当前用户,安全可控) $currentPath = [Environment]::GetEnvironmentVariable("Path", "User") if ($currentPath -notmatch [regex]::Escape($globalNpmPath)) { $newPath = "$currentPath;$globalNpmPath" [Environment]::SetEnvironmentVariable("Path", $newPath, "User") } # 4. 验证(重启 PowerShell 后执行) npm config get prefix # 应返回 C:\Tools\npm-global

从此,所有npm install -g的包都装进C:\Tools\npm-global\,与%APPDATA%\npm\彻底解耦。卸载时只需删C:\Tools\npm-global\node_modules\openclaw,再从PATH中移除C:\Tools\npm-global即可,零残留。

5.2 PowerShell 执行策略的“最小权限”配置(安全基石)

ExecutionPolicy不是障碍,而是安全护栏。永久设为Unrestricted等于拆掉防火墙,而RemoteSigned是最佳平衡点。

# 为当前用户设置 RemoteSigned(推荐) Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force # 查看当前策略(确认生效) Get-ExecutionPolicy -List

RemoteSigned的含义是:本地脚本(如你写的cleanup-openclaw.ps1)无需签名即可运行,而从互联网下载的脚本(如 GitHub 上的.ps1)必须有有效数字签名。这既保障了你的运维自由,又堵死了恶意脚本注入漏洞。我所有客户的生产环境都采用此策略,零安全事故。

5.3 建立“卸载快照”习惯(主动防御)

每次安装新工具前,用 PowerShell 记录系统状态,为未来卸载提供基线对比。

# 安装前执行(保存为 before-install.csv) Get-ChildItem "$env:APPDATA\npm\node_modules" | Select-Object Name, LastWriteTime | Export-Csv "C:\backup\before-openclaw.csv" -NoTypeInformation # 安装后执行(保存为 after-install.csv) Get-ChildItem "$env:APPDATA\npm\node_modules" | Select-Object Name, LastWriteTime | Export-Csv "C:\backup\after-openclaw.csv" -NoTypeInformation # 卸载时对比(找出新增项,即 OpenClaw 及其依赖) $before = Import-Csv "C:\backup\before-openclaw.csv" $after = Import-Csv "C:\backup\after-openclaw.csv" Compare-Object $before $after -Property Name | Where-Object {$_.SideIndicator -eq "=>"} | ForEach-Object { Write-Host "新增包: $($_.Name)" -ForegroundColor Green # 自动执行卸载 npm uninstall -g $_.Name }

这套快照机制,让我在帮客户处理motorolardpconnection等混淆词问题时,3 分钟内就定位到真正的罪魁祸首——一个叫rdp-proxy-cli的 npm 包,而非 Motorola 官方软件。它不靠猜测,靠证据链。

我在实际操作中发现,90% 的“卸载不干净”问题,根源不是技术难度,而是缺乏系统性思维。人们总想找个一键卸载工具,却不愿花 10 分钟理解 OpenClaw 的安装逻辑。当你把npmPowerShell注册表视为同一套系统的不同接口,而非割裂的工具,卸载就从玄学变成了可推演的工程。最后再分享一个小技巧:把本文的四步法保存为cleanup-openclaw.ps1,放在C:\Tools\下,以后遇到类似工具(如claude-codeollama-ui),只需替换脚本中的关键词,就能复用整套逻辑——这才是真正的“连根拔起”能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 4:57:58

WSL2下配置生产级C++开发环境的完整指南

1. 为什么非得在WSL2里配Cpp环境——不是图新鲜&#xff0c;是绕不开的现实约束 我第一次在Windows上写C项目时&#xff0c;用的是Visual Studio 2019自带的MSVC工具链。编译一个带 <filesystem> 的简单程序&#xff0c;光配置 /std:c17 和启用 /experimental:file…

作者头像 李华
网站建设 2026/6/24 4:52:46

Spring AI Alibaba:构建可扩展AI智能体的生产级基建范式

1. 为什么“从零构建可扩展AI智能体”这件事&#xff0c;90%的人一上来就做错了我去年在给一家做教育SaaS的客户做技术咨询时&#xff0c;他们团队花了三周时间&#xff0c;用Spring Boot LangChain Java版搭出了一个“能回答学生问题”的AI助手原型。上线测试当天&#xff0c…

作者头像 李华
网站建设 2026/6/24 4:49:02

Claude Code不是产品,而是Computer Use+Subagents+Kairos工程体系

1. 标题里的“字节/腾讯内部流出”到底指什么&#xff1f;先破除三个常见误解看到这个标题&#xff0c;我第一反应是皱眉——不是因为内容假&#xff0c;而是因为太多人被这种表述带偏了方向。过去两年我帮二十多家公司做AI工具链落地咨询&#xff0c;接触过大量内部技术文档和…

作者头像 李华
网站建设 2026/6/24 4:42:08

Subfinder与HTTPX联动:自动化资产发现与指纹识别实战指南

1. 项目概述&#xff1a;为什么我们需要联动HTTPX与Subfinder&#xff1f;在安全研究、渗透测试甚至是日常的资产梳理工作中&#xff0c;我们常常面临一个核心问题&#xff1a;如何高效、准确且自动化地发现并识别一个目标&#xff08;可能是一个公司、一个域名或一个IP段&…

作者头像 李华
网站建设 2026/6/24 4:40:08

AI Agent落地三道生死线:业务切片、数据可用性与组织承接力

1. 为什么管理者不该只盯着“AI Agent能做什么”&#xff0c;而要先问“它该在哪儿扎根”最近三个月&#xff0c;我帮六家不同行业的企业做过AI Agent落地咨询&#xff0c;从制造业的设备巡检系统&#xff0c;到连锁药店的处方合规审核流程&#xff0c;再到外贸公司的多语言合同…

作者头像 李华
网站建设 2026/6/24 4:39:13

BEVDet与BEVDet4D:纯视觉BEV感知的工业级落地实践

1. 项目概述&#xff1a;BEVDet与BEVDet4D到底在解决什么问题&#xff1f;BEVDet和BEVDet4D是黄骏杰团队提出的、面向自动驾驶感知任务的两代核心算法框架&#xff0c;它们不是实验室里的概念玩具&#xff0c;而是真正跑在车端嵌入式平台上的工业级方案。如果你正在做多摄像头3…

作者头像 李华