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

资讯详情

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

Mac上如何只卸载OpenClaw的Companion App并保留核心Agent服务

Mac上如何只卸载OpenClaw的Companion App并保留核心Agent服务 用了大半天把OpenClaw部署到Mac上Agent已经能正常跑起来了。结果折腾完才发现菜单栏那个小龙虾图标Companion App越看越碍眼而且它占着dock和菜单栏的位置还时不时跳通知。我当时的诉求很简单——只把菜单栏这个壳子干掉核心Agent服务继续留着跑还得能正常访问。这个问题网上没什么现成答案热门搜索里全是OpenClaw安装、部署、接入各种平台的教程几乎没有一篇讲“怎么把Companion App摘干净”。我翻了GitHub的issue、官方文档和一个多小时的命令行日志堂而皇之地踩了几个坑之后终于理清了一条完整的路子在不碰Agent核心的情况下把小龙虾图标连壳带肉卸掉。这篇就是把我的整个操作过程、架构判断逻辑和踩坑记录整理出来。包括了为什么要拆、怎么判断核心Agent和Companion的关系、不同安装方式下怎么只删App、卸载后如何用命令行和浏览器继续管理Agent以及几个最典型的“卸载翻车”现场。1. 为什么要拆菜单栏小龙虾但核心Agent还得继续跑先聊清楚需求免得后面走弯路。很多人装完OpenClaw之后会遇到一个非常实际的困扰菜单栏的小龙虾图标只是一个“遥控器”不是Agent本体。它负责的东西看起来很轻量——显示运行状态、给个快速会话入口、调几个菜单选项——但只要你不用它它就在那占着菜单栏空间偶尔还弹个更新提示。1.1 Companion App到底干了什么活我拆解了一下Companion App的实际功能就那么几件事菜单栏常驻图标显示OpenClaw核心服务是否在线点击可以展开一个小面板快速启动/停止Agent本质上是在给后台核心服务发信号日志预览窗口塞给你几行最近的Agent运行输出会话快速入口点开可以直接进入Agent对话界面这些功能在终端里都能完成甚至更方便。也就是说Companion App是可选的UI层而不是Agent运行的必要条件。想明白这一点就已经成功一半——你删除的只是UI服务本身还活得好好的。重要如果你的Agent核心服务是通过Companion App拉起的比如你每次都是点小龙虾图标里“启动Agent”那直接把App删掉核心服务会跟着挂掉。后面第5章我会专门写这个坑以及怎么让它独立常驻。1.2 哪种使用模式适合拆掉它我自己归纳了三种典型使用场景你们可以对号入座使用模式核心服务跑在哪需不需要Companion App卸载后影响纯本地测试本机后台进程或Docker容器用命令行就能跑无影响服务器/远程部署云服务器或Docker根本不用App远程访问无影响Desktop模式由Companion App自动管理依赖它拉起进程需要改启动方式见第5章如果你属于前两类这篇文章的卸载流程对你来说几乎是无痛的。如果是第三类需要多看第5章的坑先把核心服务改成独立常驻再卸载UI。1.3 卸掉之后你还能做什么明确一点卸载Companion App之后你的OpenClaw Agent还能继续做所有事——接对话、调工具、连外部服务、跑定时任务。只不过入口方式从“点菜单栏小龙虾”变成终端里敲openclaw命令浏览器直接访问Agent自带的Web控制台如果部署时启用了通过API接口调用用curl发消息给Agent跑一次任务这些方式我会在第4章展开讲。总之核心能力一条没少只是少了块GUI皮肤。2. 卸载前先认清OpenClaw的架构Companion和核心是两个东西动手之前我强烈建议你花五分钟确认一下自己机器上OpenClaw的架构。这一步做对了后面所有操作都能避免瞎猜。2.1 两条进程线你得看清楚是哪条OpenClaw装上之后机器里至少会存在两类可执行的东西Companion App一个GUI程序通常位于/Applications/OpenClaw Companion.app进程名一般是OpenClaw CompanionAgent核心服务一个后台服务通过Node.js跑起来的进程命令行通常能看到openclaw或者node .../agent.js之类的进程名在没有GUI的情况下Agent核心服务照样能独立运行。它监听一个本地端口默认通常是127.0.0.1:6789这类负责Agent逻辑、工具调用、LLM通信。Companion App只是把菜单栏UI和这个服务对接起来而已。2.2 不同部署方式对应的卸载位置不一样我见过的OpenClaw安装方式大概有三种不同方式卸载Companion App的路径完全不同。先写个对照表帮大家理清楚安装方式Companion App的位置核心Agent位置卸载难度Homebrew Cask/Applications/OpenClaw Companion.appopenclaw命令全局可用简单手动拖入Applications/Applications/OpenClaw Companion.app看你怎么装的一般也是全局/本地命令简单源码/CLI安装没有GUI App可能是npm包里的一个companion组件在当前目录下跑稍微绕一点2.3 卸载前先做这三件审查工作不要一上来就拖进废纸篓。花几分钟做三个检查能省掉后面一堆麻烦检查核心进程是否在跑打开终端执行下面命令。看到有openclaw相关的进程说明核心Agent在独立运行卸App很安全ps aux | grep -i openclaw | grep -v grep确认本地API端口是否在监听这会直接告诉你核心服务是否对外可用lsof -iTCP -sTCP:LISTEN | grep -i node # 或者 lsof -iTCP -sTCP:LISTEN | grep -i openclaw定位配置目录OpenClaw的配置、会话数据、连接器配置通常都在~/.openclaw目录下。这个目录千万别手滑删了后面重启Agent、找回所有配置全靠它ls -la ~/.openclaw提示如果你的配置目录位置不同可以用openclaw config path或阅读官方文档确认。不同版本之间略有差异但思路一致。2.4 备份清单防止手滑在动手卸载前我习惯做一次快速备份。不用全量备份只要把这几样东西复制到一个安全目录就行~/.openclaw/整个目录配置和会话都在里面环境变量配置文件比如~/.zshrc里的OpenClaw相关export如果用了Docker部署把docker-compose.yml或Dockerfile也存一份我当时的备份命令很简单mkdir -p ~/openclaw-backup cp -R ~/.openclaw ~/openclaw-backup/确认备份没问题之后才做下一步操作。整个卸载过程最怕的不是删了App而是把配置一起删了回头核心Agent起不来你还得从头配置。3. 只卸载Companion App的完整操作流程架构摸清、备份做好就可以进入正题了。把Companion App卸干净同时确保核心Agent的进程和配置分毫不动。3.1 第一步先优雅退出Companion App而不是直接删直接拖App进废纸篓是最大的错误做法。系统可能在App运行状态下删除导致残留进程和锁文件。正确顺序是点击菜单栏小龙虾图标查看菜单里有没有“Quit”或“退出”选项如果有先退出App如果菜单里没有退出选项直接右键Dock栏图标选择退出或者强行结束进程osascript -e quit app OpenClaw Companion # 如果没反应用以下命令强制退出 killall OpenClaw Companion执行完killall之后再确认一下进程是否还在ps aux | grep -i OpenClaw Companion | grep -v grep正常情况下应该没有任何输出。此时核心Agent进程应该还在你可以顺手再验证一次ps aux | grep -i openclaw | grep -v grep如果这个命令还能看到openclaw相关的进程恭喜你的Agent活得很好。3.2 第二步按安装方式删除App本体不同安装方式删除方式不同。方式是Homebrew Cask安装的用Homebrew卸载是最干净的brew uninstall --cask openclaw-companion执行完brew list --cask确认一下是否还列着这个包。手动拖入/Applications的把App拖到废纸篓rm -rf /Applications/OpenClaw Companion.app如果系统提示权限不足用sudo rm -rf或者先解锁文件权限再删。通过npm装的companion组件需要找到安装路径并移除npm uninstall -g openclaw-companion不确定是哪一种可以先运行brew list --cask | grep openclaw如果有输出就是Homebrew装的再which openclaw-companion看有没有全局命令。至于npm方式装的npm ls -g --depth0 | grep openclaw就能确认。3.3 第三步清理配套的偏好设置和缓存但别碰配置目录删掉App本体只是第一步Companion App还可能在~/Library里留下偏好设置、缓存和日志。这些文件不影响Agent运行但留着膈应人最好一起清掉。只清理App相关的这些文件# 偏好设置 rm -rf ~/Library/Preferences/com.openclaw.companion.plist # 应用支持文件 rm -rf ~/Library/Application\ Support/OpenClaw\ Companion # 缓存 rm -rf ~/Library/Caches/OpenClaw\ Companion # 日志 rm -rf ~/Library/Logs/OpenClaw\ Companion重点来了千万别碰~/.openclaw目录。这个目录是Agent核心服务的家里面装着连接器配置、密钥、会话记录。你删了它核心Agent直接变“裸奔”所有配置都得重来。可以用find快速找出所有和Companion相关的遗留文件find ~/Library -maxdepth 3 -iname *openclaw*companion* 2/dev/null把搜索结果里明确带Companion字样的清理掉就行。3.4 第四步检查开机启动项有没有残留Companion App通常会把自己注册成LaunchAgent实现开机自启。删除App之后这个LaunchAgent可能还挂在系统里。检查并清理launchctl list | grep -i openclaw ls ~/Library/LaunchAgents/ | grep -i openclaw如果看到了com.openclaw.companion之类的文件把它从LaunchAgents里删掉并停止服务launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.openclaw.companion.plist rm ~/Library/LaunchAgents/com.openclaw.companion.plist这里要注意这一步骤只清理的是Companion App的自启项。如果看到OpenClaw核心服务的自启项比如com.openclaw.agent不要删那正是让Agent开机自启的关键。3.5 第五步完整验证——确认Agent独立活着卸载完成后做一轮完整验证# 1. 核心进程还在 ps aux | grep -i openclaw | grep -v grep # 2. 端口还在监听 lsof -iTCP -sTCP:LISTEN | grep -i node # 3. 命令还能跑 openclaw --version我自己跑完第三步的时候看到终端输出版本号心才放下来。这基本可以确认核心Agent一切正常和卸载前没有任何差别。4. 卸载之后的核心Agent管理方案App卸了之后你就会面临一个现实问题以后怎么和Agent“交流”答案比你想的简单而且用几天你就会发现命令行操作其实比点菜单栏高效得多。4.1 用openclaw命令接管一切Companion App最大的价值是把Agent包装成了GUI应用。去掉它之后打开终端直接敲命令就行。常用命令大概长这样# 查看Agent状态 openclaw status # 启动Agent服务 openclaw start # 停止Agent服务 openclaw stop # 重启Agent服务 openclaw restart # 查看运行日志 openclaw logs -f不同版本具体子命令可能不太一样openclaw --help永远是最好用的学习方式。4.2 浏览器访问Agent的Web控制台多数部署方式下OpenClaw起飞的时候会同时启动一个本地Web控制台。你只需要在浏览器里访问默认地址我记得通常是http://localhost:6789或类似端口一样能开对话框、看日志、做配置调整。这个界面比菜单栏面板完整得多以前用Companion看不完的信息在这里都能看到。不记得端口也没关系两种方式确认# 方式一从日志里找监听地址 openclaw logs | grep -i listening\|http:// # 方式二看所有本地监听端口 lsof -iTCP -sTCP:LISTEN | grep -i node4.3 日志和配置在哪里看GUI卸掉之后看日志就需要知道日志文件的位置。通常的路径是~/.openclaw/logs/Agent的核心运行日志~/Library/Logs/可能会有一份通用日志核心配置都在~/.openclaw/config.json或settings.json主配置~/.openclaw/connectors/各类连接器配置比如接入Teams、Obsidian、Slack等~/.openclaw/sessions/历史会话记录建议把~/.openclaw目录设置一个别名或者直接用下面这段代码快速进入alias oc-configcd ~/.openclaw ls -la4.4 开机自启的替代方案以前是Companion App帮你把Agent在登录时拉起来。现在没了它你有两个选择选择A手动启动——适合不常使用Agent的情况用的时候终端敲openclaw start即可。选择B注册成LaunchAgent实现自启——适合希望Agent一直在后台常驻的场景。在~/Library/LaunchAgents/目录下创建com.openclaw.agent.plist文件内容参考?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyLabel/key stringcom.openclaw.agent/string keyProgramArguments/key array string/usr/local/bin/openclaw/string stringstart/string /array keyRunAtLoad/key true/ keyKeepAlive/key true/ /dict /plist然后执行launchctl load ~/Library/LaunchAgents/com.openclaw.agent.plist如果你用的是Docker部署那就更简单了在容器上配置restart: always策略即可。无论用哪种方式启动之后都可以杀掉终端窗口让它自己跑验证一下是否常驻# 终端关掉再开新终端 ps aux | grep -i openclaw能看到进程还在就说明自启配置生效了。4.5 用API远程调Agent高级一点的做法是直接用API。如果你把OpenClaw核心服务暴露在本地端口上完全可以用curl发指令给它。这种方法在写自动化脚本的时候尤其好用curl -X POST http://localhost:6789/api/chat \ -H Content-Type: application/json \ -d {message: 帮我查一下今天的天气}具体接口字段取决于你使用的OpenClaw版本openclaw api --help能看到细节。但思路是这个思路Agent核心就是个服务谁都能调GUI只是入口之一。5. 我踩过的坑卸完发现Agent也挂了怎么办这章是全文最值钱的部分。我实际卸载过程中踩了四个坑前两个差点以为得重装系统。5.1 坑一卸载时勾了“删除相关文件”把配置目录一起删了这是最阴的坑。某些App在拖动到废纸篓之后系统会弹窗问“是否删除该App的关联数据”。如果你图省事点了“删除”它可能把~/.openclaw连同里面的连接器配置、API key、会话记录全删干净。解决方案我在动手前就做了备份。如果没备份网上确实没有能找回已删除文件的好办法只能重新配置。这也是我为什么反复强调先备份。5.2 坑二核心Agent从来就不是独立运行的是Companion拉起的这是最典型的“翻车现场”。如果你的Agent一直是靠点小龙虾图标“启动Agent”才跑起来的那它其实没有独立的守护进程。一旦Companion被删除Agent直接“消失”ps查不到任何进程openclaw stop也提示没有服务在跑。解决方案卸载前检查一遍如果发现核心Agent是Companion拉起的先强制执行一次独立后台启动nohup openclaw start ~/.openclaw/logs/agent.log 21 等到进程稳定了再继续卸载App。这样即便没了CompanionAgent照样是独立进程在跑。5.3 坑三端口被占用新起服务一启动就崩有些场景下卸载完App重新启动Agent时会报端口被占用。大多数时候是残留进程或者之前的SOCKET没有释放干净。排查方式lsof -iTCP -sTCP:LISTEN | grep 6789 kill -9 PID openclaw restart如果你用的是127.0.0.1一般没有大问题如果是ESM/重生的环境变量问题按日志提示处理就行。5.4 坑四删了App之后系统还是会在登录时尝试拉起它这是残留LaunchAgent导致的“幽灵自启”。我遇到过删完重启系统菜单栏又出现了一个小龙虾图标检查发现是~/Library/LaunchAgents里的配置没有被清理掉。解决方案卸载前先检查launchctl list | grep openclaw把所有Companion相关的LaunchAgent都清干净保留Agent核心相关的即可。具体命令我第3章写过。写在最后经过这次“只卸载UI不拆核心”的整活我最大的体会是OpenClaw这类Agent框架的设计思路确实很模块化——核心服务是核心服务菜单栏壳子是壳子两者之间只是UI层与后端的配合关系。只要认清楚架构任何一层都可以随意拆装不会伤筋动骨。如果你和我一样喜欢用终端操作、想把菜单栏留给真正需要的App那这套方案很适合你。卸载完Companion App之后我唯一需要适应的就是操作入口变了另外觉得系统干净了不少。
返回列表