OpenClaw 彻底卸载指南从服务治理到残留清理的完整架构实践标签 #OpenClaw #AIAgent #系统清理 #架构治理 #DevOps一、为什么卸载 OpenClaw 不是删文件夹这么简单作为本地 AI Agent 运行时OpenClaw 的架构设计遵循了持久化服务模式而非普通桌面应用。它在你系统中埋设了多层钩子网关守护进程Gateway以 launchd/systemd/计划任务形式常驻后台状态目录State Dir~/.openclaw 存储配置、凭证、会话缓存工作区Workspace~/.openclaw/workspace 存放 Agent 生成的记忆文件与技能数据CLI 工具链通过 npm/pnpm/bun 全局安装的二进制文件直接 rm -rf 删除安装目录或执行 npm uninstall 会导致服务僵尸化——网关进程仍在后台持有端口重启后自动复活甚至造成后续版本冲突。本文基于官方卸载文档 提供两条互补的清理路径。二、卸载路径决策架构根据 CLI 工具是否可用选择不同的治理策略┌─────────────────────────────────────────────────────────────┐ │ 开始卸载流程 │ └────────────────────┬────────────────────────────────────────┘ │ ▼ ┌──────────────────────┐ │ 执行 which openclaw │ └──────────┬───────────┘ │ ┌───────────┴───────────┐ │ │ 返回路径 无返回 (CLI可用) (CLI已删) │ │ ▼ ▼ ┌──────────────┐ ┌──────────────────┐ │ 简单路径 │ │ 手动清理路径 │ │ 官方卸载命令 │ │ 服务单元手动移除 │ └──────┬───────┘ └────────┬─────────┘ │ │ └───────────┬───────────┘ ▼ ┌──────────────────────┐ │ 清理状态目录与 │ │ 工作区残留文件 │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ 验证清理完整性 │ │ 吊销API密钥 │ └──────────────────────┘三、路径一官方优雅卸载CLI 可用状态若 openclaw 命令仍可响应优先使用内置卸载器这是最安全的声明式清理方案。3.1 一键非交互卸载推荐用于 CI/CD 与自动化脚本openclaw uninstall--all--yes--non-interactive或通过 npx 直接调用最新版本执行卸载避免本地 CLI 损坏npx-yopenclaw uninstall--all--yes--non-interactive参数解析–all连带删除网关服务、本地数据库、配置文件而非仅移除二进制–yes自动确认所有危险操作避免交互阻塞–non-interactive禁用 TTY 依赖适合脚本化执行3.2 分步精细化卸载适合排查问题若需观察每步执行细节按以下顺序操作Step 1停止网关服务openclaw gateway stop确保无进程持有 ~/.openclaw 目录句柄避免后续删除出现 Device or resource busy。Step 2卸载系统服务单元openclaw gateway uninstall此命令自动识别操作系统执行反向注册macOS移除 ~/Library/LaunchAgents/ai.openclaw.gateway.plistLinux禁用并删除 ~/.config/systemd/user/openclaw-gateway.serviceWindows删除任务计划程序中的 “OpenClaw Gateway” 任务Step 3清理状态与配置目录rm-rf${OPENCLAW_STATE_DIR:-$HOME/.openclaw}若曾设置自定义配置路径 OPENCLAW_CONFIG_PATH需同步删除rm-f$OPENCLAW_CONFIG_PATHStep 4清理 Agent 工作区可选但建议rm-rf~/.openclaw/workspace此目录包含 AGENTS.md、MEMORY.md 等 Agent 记忆文件若需保留历史对话数据可跳过。Step 5移除全局 CLI根据安装方式选择对应命令# npm 用户npmrm-gopenclaw# pnpm 用户pnpmremove-gopenclaw# bun 用户bun remove-gopenclawStep 6移除 macOS 原生应用如安装过rm-rf/Applications/OpenClaw.app3.3 多 Profile 环境的特殊处理若使用过 --profile 参数或 OPENCLAW_PROFILE 环境变量创建多隔离环境每个 Profile 拥有独立状态目录 ~/.openclaw-。需对每个 Profile 重复执行 Step 3# 清理默认环境rm-rf~/.openclaw# 清理生产环境 Profilerm-rf~/.openclaw-production# 清理测试环境 Profilerm-rf~/.openclaw-staging四、路径二手动清理CLI 已丢失但服务残留常见于先执行了 npm rm -g openclaw 但未清理服务导致网关仍在后台运行。此时需手动干预系统服务层。┌──────────────────────────────────────────────────┐ │ 手动清理路径架构图 │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌────────┐ │ │ │ macOS │ │ Linux │ │Windows│ │ │ │ launchd │ │ systemd │ │Task │ │ │ │ │ │ │ │Sch │ │ │ └──────┬──────┘ └──────┬──────┘ └───┬────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ bootout gui/UID/ disable --now /Delete /F │ │ ai.openclaw.gateway openclaw-gateway OpenClaw│ │ .service Gateway │ │ │ │ │ │ │ └──────────────────┼───────────────┘ │ │ │ │ │ ▼ │ │ 删除 plist/service/ │ │ 脚本文件 │ └──────────────────────────────────────────────────┘4.1 macOS 平台launchd# 停止并卸载服务默认标签为 ai.openclaw.gatewaylaunchctl bootout gui/$UID/ai.openclaw.gateway# 删除 plist 文件rm-f~/Library/LaunchAgents/ai.openclaw.gateway.plist# 若使用自定义 Profile替换标签名launchctl bootout gui/$UID/ai.openclaw.productionrm-f~/Library/LaunchAgents/ai.openclaw.production.plist# 检查遗留的旧版命名com.openclaw.*launchctl list|grepopenclawrm-f~/Library/LaunchAgents/com.openclaw.*.plist4.2 Linux 平台systemd 用户级服务# 停止并禁用服务systemctl--userdisable--nowopenclaw-gateway.service# 删除服务单元文件rm-f~/.config/systemd/user/openclaw-gateway.service# 重载 systemd 配置systemctl--userdaemon-reload# 多 Profile 情况处理systemctl--userdisable--nowopenclaw-gateway-production.servicerm-f~/.config/systemd/user/openclaw-gateway-production.service4.3 Windows 平台任务计划程序以管理员身份执行 PowerShell# 强制删除计划任务schtasks/Delete/F/TNOpenClaw Gateway# 删除启动脚本Remove-Item-Force$env:USERPROFILE\.openclaw\gateway.cmd-ErrorAction SilentlyContinue# 多 Profile 处理schtasks/Delete/F/TNOpenClaw Gateway (production)Remove-Item-Force$env:USERPROFILE\.openclaw-production\gateway.cmd五、源码安装的特殊卸载顺序若通过 git clone 源码运行顺序至关重要┌──────────────────────────────────────────┐ │ 源码卸载执行顺序 │ │ │ │ 1. 卸载网关服务按路径一或二执行 │ │ ↓ │ │ 2. 删除源码目录 (rm -rf openclaw/) │ │ ↓ │ │ 3. 清理状态目录与 Workspace │ └──────────────────────────────────────────┘严禁在网关服务仍在运行时直接删除源码目录这将导致 systemd/launchd 指向不存在的二进制文件产生顽固的服务错误日志。六、验证检查清单执行完卸载后通过以下命令验证系统洁净度检查项命令预期结果CLI 移除which openclawcommand not found服务状态 (macOS)launchctl list | grep openclaw无返回服务状态 (Linux)systemctl --user status openclaw-gatewayUnit could not be found服务状态 (Win)schtasks /Query /TN OpenClaw GatewayERROR: The specified task does not exist状态目录ls ~/.openclawNo such file or directoryProfile 残留ls ~/.openclaw-*No such file or directory七、安全后处理密钥吊销OpenClaw 会在 ~/.openclaw 中缓存 LLM Provider 的 API KeyOpenAI、Claude、Gemini 等。即便目-录已删除若曾提交到代码仓库或备份建议执行密钥轮换登录对应 LLM Provider 控制台吊销旧 Key标注为 openclaw- 前缀的密钥检查 .bash_history 或 .zsh_history 中是否残留 export OPENCLAW_API_KEY 明文执行 history -c 清理当前会话历史八、结语OpenClaw 的卸载过程体现了云原生本地服务的治理复杂度——它并非简单的二进制文件而是渗透在进程管理、用户目录、系统服务中的分布式组件集合。遵循官方推荐的声明式卸载流程比暴力删除更能保持系统环境的纯净。对于频繁切换 Agent 框架的开发者建议将 OpenClaw 状态目录通过 OPENCLAW_STATE_DIR 环境变量重定向到独立分区或 Docker Volume未来清理时仅需卸载容器或格式化卷即可实现零残留卸载。仅供学习参考请勿用于商业用途。
OpenClaw 彻底卸载指南:从服务治理到残留清理的完整架构实践
OpenClaw 彻底卸载指南从服务治理到残留清理的完整架构实践标签 #OpenClaw #AIAgent #系统清理 #架构治理 #DevOps一、为什么卸载 OpenClaw 不是删文件夹这么简单作为本地 AI Agent 运行时OpenClaw 的架构设计遵循了持久化服务模式而非普通桌面应用。它在你系统中埋设了多层钩子网关守护进程Gateway以 launchd/systemd/计划任务形式常驻后台状态目录State Dir~/.openclaw 存储配置、凭证、会话缓存工作区Workspace~/.openclaw/workspace 存放 Agent 生成的记忆文件与技能数据CLI 工具链通过 npm/pnpm/bun 全局安装的二进制文件直接 rm -rf 删除安装目录或执行 npm uninstall 会导致服务僵尸化——网关进程仍在后台持有端口重启后自动复活甚至造成后续版本冲突。本文基于官方卸载文档 提供两条互补的清理路径。二、卸载路径决策架构根据 CLI 工具是否可用选择不同的治理策略┌─────────────────────────────────────────────────────────────┐ │ 开始卸载流程 │ └────────────────────┬────────────────────────────────────────┘ │ ▼ ┌──────────────────────┐ │ 执行 which openclaw │ └──────────┬───────────┘ │ ┌───────────┴───────────┐ │ │ 返回路径 无返回 (CLI可用) (CLI已删) │ │ ▼ ▼ ┌──────────────┐ ┌──────────────────┐ │ 简单路径 │ │ 手动清理路径 │ │ 官方卸载命令 │ │ 服务单元手动移除 │ └──────┬───────┘ └────────┬─────────┘ │ │ └───────────┬───────────┘ ▼ ┌──────────────────────┐ │ 清理状态目录与 │ │ 工作区残留文件 │ └──────────┬───────────┘ │ ▼ ┌──────────────────────┐ │ 验证清理完整性 │ │ 吊销API密钥 │ └──────────────────────┘三、路径一官方优雅卸载CLI 可用状态若 openclaw 命令仍可响应优先使用内置卸载器这是最安全的声明式清理方案。3.1 一键非交互卸载推荐用于 CI/CD 与自动化脚本openclaw uninstall--all--yes--non-interactive或通过 npx 直接调用最新版本执行卸载避免本地 CLI 损坏npx-yopenclaw uninstall--all--yes--non-interactive参数解析–all连带删除网关服务、本地数据库、配置文件而非仅移除二进制–yes自动确认所有危险操作避免交互阻塞–non-interactive禁用 TTY 依赖适合脚本化执行3.2 分步精细化卸载适合排查问题若需观察每步执行细节按以下顺序操作Step 1停止网关服务openclaw gateway stop确保无进程持有 ~/.openclaw 目录句柄避免后续删除出现 Device or resource busy。Step 2卸载系统服务单元openclaw gateway uninstall此命令自动识别操作系统执行反向注册macOS移除 ~/Library/LaunchAgents/ai.openclaw.gateway.plistLinux禁用并删除 ~/.config/systemd/user/openclaw-gateway.serviceWindows删除任务计划程序中的 “OpenClaw Gateway” 任务Step 3清理状态与配置目录rm-rf${OPENCLAW_STATE_DIR:-$HOME/.openclaw}若曾设置自定义配置路径 OPENCLAW_CONFIG_PATH需同步删除rm-f$OPENCLAW_CONFIG_PATHStep 4清理 Agent 工作区可选但建议rm-rf~/.openclaw/workspace此目录包含 AGENTS.md、MEMORY.md 等 Agent 记忆文件若需保留历史对话数据可跳过。Step 5移除全局 CLI根据安装方式选择对应命令# npm 用户npmrm-gopenclaw# pnpm 用户pnpmremove-gopenclaw# bun 用户bun remove-gopenclawStep 6移除 macOS 原生应用如安装过rm-rf/Applications/OpenClaw.app3.3 多 Profile 环境的特殊处理若使用过 --profile 参数或 OPENCLAW_PROFILE 环境变量创建多隔离环境每个 Profile 拥有独立状态目录 ~/.openclaw-。需对每个 Profile 重复执行 Step 3# 清理默认环境rm-rf~/.openclaw# 清理生产环境 Profilerm-rf~/.openclaw-production# 清理测试环境 Profilerm-rf~/.openclaw-staging四、路径二手动清理CLI 已丢失但服务残留常见于先执行了 npm rm -g openclaw 但未清理服务导致网关仍在后台运行。此时需手动干预系统服务层。┌──────────────────────────────────────────────────┐ │ 手动清理路径架构图 │ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌────────┐ │ │ │ macOS │ │ Linux │ │Windows│ │ │ │ launchd │ │ systemd │ │Task │ │ │ │ │ │ │ │Sch │ │ │ └──────┬──────┘ └──────┬──────┘ └───┬────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ bootout gui/UID/ disable --now /Delete /F │ │ ai.openclaw.gateway openclaw-gateway OpenClaw│ │ .service Gateway │ │ │ │ │ │ │ └──────────────────┼───────────────┘ │ │ │ │ │ ▼ │ │ 删除 plist/service/ │ │ 脚本文件 │ └──────────────────────────────────────────────────┘4.1 macOS 平台launchd# 停止并卸载服务默认标签为 ai.openclaw.gatewaylaunchctl bootout gui/$UID/ai.openclaw.gateway# 删除 plist 文件rm-f~/Library/LaunchAgents/ai.openclaw.gateway.plist# 若使用自定义 Profile替换标签名launchctl bootout gui/$UID/ai.openclaw.productionrm-f~/Library/LaunchAgents/ai.openclaw.production.plist# 检查遗留的旧版命名com.openclaw.*launchctl list|grepopenclawrm-f~/Library/LaunchAgents/com.openclaw.*.plist4.2 Linux 平台systemd 用户级服务# 停止并禁用服务systemctl--userdisable--nowopenclaw-gateway.service# 删除服务单元文件rm-f~/.config/systemd/user/openclaw-gateway.service# 重载 systemd 配置systemctl--userdaemon-reload# 多 Profile 情况处理systemctl--userdisable--nowopenclaw-gateway-production.servicerm-f~/.config/systemd/user/openclaw-gateway-production.service4.3 Windows 平台任务计划程序以管理员身份执行 PowerShell# 强制删除计划任务schtasks/Delete/F/TNOpenClaw Gateway# 删除启动脚本Remove-Item-Force$env:USERPROFILE\.openclaw\gateway.cmd-ErrorAction SilentlyContinue# 多 Profile 处理schtasks/Delete/F/TNOpenClaw Gateway (production)Remove-Item-Force$env:USERPROFILE\.openclaw-production\gateway.cmd五、源码安装的特殊卸载顺序若通过 git clone 源码运行顺序至关重要┌──────────────────────────────────────────┐ │ 源码卸载执行顺序 │ │ │ │ 1. 卸载网关服务按路径一或二执行 │ │ ↓ │ │ 2. 删除源码目录 (rm -rf openclaw/) │ │ ↓ │ │ 3. 清理状态目录与 Workspace │ └──────────────────────────────────────────┘严禁在网关服务仍在运行时直接删除源码目录这将导致 systemd/launchd 指向不存在的二进制文件产生顽固的服务错误日志。六、验证检查清单执行完卸载后通过以下命令验证系统洁净度检查项命令预期结果CLI 移除which openclawcommand not found服务状态 (macOS)launchctl list | grep openclaw无返回服务状态 (Linux)systemctl --user status openclaw-gatewayUnit could not be found服务状态 (Win)schtasks /Query /TN OpenClaw GatewayERROR: The specified task does not exist状态目录ls ~/.openclawNo such file or directoryProfile 残留ls ~/.openclaw-*No such file or directory七、安全后处理密钥吊销OpenClaw 会在 ~/.openclaw 中缓存 LLM Provider 的 API KeyOpenAI、Claude、Gemini 等。即便目-录已删除若曾提交到代码仓库或备份建议执行密钥轮换登录对应 LLM Provider 控制台吊销旧 Key标注为 openclaw- 前缀的密钥检查 .bash_history 或 .zsh_history 中是否残留 export OPENCLAW_API_KEY 明文执行 history -c 清理当前会话历史八、结语OpenClaw 的卸载过程体现了云原生本地服务的治理复杂度——它并非简单的二进制文件而是渗透在进程管理、用户目录、系统服务中的分布式组件集合。遵循官方推荐的声明式卸载流程比暴力删除更能保持系统环境的纯净。对于频繁切换 Agent 框架的开发者建议将 OpenClaw 状态目录通过 OPENCLAW_STATE_DIR 环境变量重定向到独立分区或 Docker Volume未来清理时仅需卸载容器或格式化卷即可实现零残留卸载。仅供学习参考请勿用于商业用途。