乐于分享
好东西不私藏

极客·别再把所有工作都塞进一个OpenClaw:我用一台Mac拆出了3个独立的实例 | 从零部署到跑通

极客·别再把所有工作都塞进一个OpenClaw:我用一台Mac拆出了3个独立的实例 | 从零部署到跑通

>_点击上方蓝字MG的注疏与方关注                提取专属 TruthFormula_

  • 不是每个人都需要多实例,正如不是每个人都需要多agents。单一OpenClaw实例随业务扩张逐渐失控,多实例才成为一个真实需求

  • 多agents解决的是同一套业务里的角色分工协作,多实例适合不同业务相互隔离

  • 在一台Mac上拆出三个彼此独立的服务节点,各自占用独立端口、独立workspace目录和独立配置状态,实质是让「不同业务之间的边界,重新变得清晰」

当一个OpenClaw同时承载几类不同业务而开始变乱时,多实例才成为一个真实需求。

OpenClaw的出现,让AI智能体的真正上手与普及开始加速。它帮你写商品文案、整理客服话术、沉淀FAQ。后来内容团队也把选题、脚本和素材放了进去;再往后,你又想把项目文档、内部SOP和研究备忘也塞进来。刚开始图省事,一个实例好像什么都能装,时间一长才发现,真正麻烦的从来不是”功能不够”,而是”边界不清”:电商资料和内容素材混到一起,研究文件和运营文档共用同一个工作区,配置和状态也共用一套,越想省事,越容易串。

很多人这时候会想到多建几个agents。这个思路没错,OpenClaw本身支持单个Gateway承载多个agents,但它解决的是分工,不是隔离。而当你想把不同业务的工作区、配置、状态和端口真正拆开时,才需要多实例。换句话说,多agent适合同一套业务里的角色协作,多实例适合不同业务之间不要互相打架

这篇文章要聊的就是后者。以上面的场景需求为例,我们会在同一台macOS电脑上,拆出三个彼此独立的实例:ShopOps,用于电商运营;ContentLab,用于内容创作;ResearchHub,用于内部资料和研究整理。整篇从环境准备开始,使用OpenClaw当前推荐的首次上手路径,默认第一次部署,代码不多,按顺序往下做就行。

01. 几个名词/概念简单了解

CLI,命令行工具。在终端里输入的openclaw onboardopenclaw configureopenclaw gateway install,都属于CLI命令。它本质上就是”在终端里操作OpenClaw的入口”。

API key,这是连接模型服务时用的”钥匙”。首次完整跑通时,需要模型提供商API key,onboarding也会提示完成这一步。本文重点是多实例部署与隔离,不展开申请流程,但在向导里会遇到它。

Gateway,可以理解成OpenClaw在本机上持续运行的”总控进程”。本地控制界面、HTTP API、WebSocket和一些运行管理能力,都是它在承接。

WSL2,是Windows里的Linux运行环境。OpenClaw支持macOS、Linux和Windows,官方说明Windows原生和WSL2都支持,但WSL2更稳定,也更推荐。

02. 为什么用Mac

MacOS拥有原生的Unix环境,在处理依赖项、环境变量和Python辅助脚本时,比Windows (WSL2) 的路径转换更加直观,减少OpenClaw在调用本地编译器或处理文件系统时的报错概率。对于本地部署,macOS链路更短:终端现成可用,Homebrew装工具,Node跑CLI,launchd管理后台服务,变量少、岔路少。而很多Windows用户在真正开始安装OpenClaw之前,往往还要先把WSL2这层准备好。

在主要依赖云端模型服务、不在本机硬跑大模型的前提下,本机主要承担的是Gateway、本地控制界面、状态管理,以及开启的工具或浏览器能力,一台Mac跑两到三个OpenClaw实例完全不在话下;但如果同时开很多浏览器自动化、很多渠道和很多工具,资源占用还是会上去,所以”能跑多个”不等于”可以无限多开”。

03. 最容易混淆的地方:workspace和state/config不是一回事

这部分提前说清楚,后面不容易踩坑。

state/config是后台机房。默认配置文件是~/.openclaw/openclaw.json,这里放的是配置、凭证、会话、缓存这类内容。CLI全局参数加上--profile <name>会把状态隔离到~/.openclaw-<name>。也就是说,一旦使用具名profile,OpenClaw就会把对应实例的状态和配置切到那套独立目录里

workspace是真正干活的地方,它是agent的home,是文件工具和workspace context使用的唯一工作目录。以后让某个实例沉淀资料、放素材、存项目文件,它默认都应该在自己的workspace里完成。默认workspace是~/.openclaw/workspace;如果设置了具体的profile,默认workspace会变成~/.openclaw/workspace-<profile>

可以把它们记成一句话:workspace是办公桌,state/config是后台机房。前者放业务文件,后者放系统状态。两者不是同一个东西,也不该混在一起。

顺便回答一个很容易提到的问题:当我们只创建了三个--profile的实例,那不带--profile去敲openclaw configure,到底是谁会响应?答案是:默认实例。即使没有专门去初始化它,OpenClaw仍然有一套默认槽位,默认配置文件位置是~/.openclaw/openclaw.json,默认workspace是~/.openclaw/workspace。所以在多实例环境里一定要养成习惯:凡是针对某个实例做配置、查看状态、重启服务,都显式带上--profile,或者给它设置alias(命令别名)。

04. 先把三套实例规划好

正式安装之前,先把名字、用途、工作区和端口定清楚,后面就不会边装边改。当然这些名字可以自定义修改,在后面的命令中相应替换即可。

ShopOps用于电商运营,负责商品文案、客服话术、FAQ、活动复盘和商品资料归档。profile用shopops,workspace用~/OpenClawWorkspaces/ShopOps,端口用18789

ContentLab用于内容创作,负责选题库、脚本改写、素材整理、排期和爆款拆解。profile用contentlab,workspace用~/OpenClawWorkspaces/ContentLab,端口用19789

ResearchHub用于内部资料和研究整理,负责项目文档、SOP、专题资料、内部备忘和长文素材沉淀。profile用researchhub,workspace用~/OpenClawWorkspaces/ResearchHub,端口用20789

多实例文档建议不同实例的端口最好至少相差20,避免派生出来的browser、canvas或CDP端口碰撞,因此建议把端口拉开。

05. 环境准备:把Homebrew、Node和OpenClaw装好

先检查有没有Homebrew。Homebrew是macOS上最常用的命令行包管理器,后面我们会用它来安装Node。

brew -v

如果终端提示command not found: brew,执行下面这段安装命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后,把Homebrew加到当前shell环境里。下面这段同时兼容不同芯片版本的mac:

if [ -x /opt/homebrew/bin/brew ]; then  echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile  eval "$(/opt/homebrew/bin/brew shellenv)"elif [ -x /usr/local/bin/brew ]; then  echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofile  eval "$(/usr/local/bin/brew shellenv)"fi

再次运行这行命令应该就会出现正确的版本号:

brew -v

接着安装Node 24。Node是一个让JavaScript可以在浏览器外面运行的环境,OpenClaw这类CLI工具要先有Node,后面的命令才能正常运行。OpenClaw当前的入门文档写的是:Node 24推荐,Node 22.14+也支持。为了少踩坑,本文直接按Node 24来走。

brew install node@24

然后把Node 24放到PATH前面:

if [ -d /opt/homebrew/opt/node@24/bin ]; then  echo 'export PATH="/opt/homebrew/opt/node@24/bin:$PATH"' >> ~/.zshrc  export PATH="/opt/homebrew/opt/node@24/bin:$PATH"elif [ -d /usr/local/opt/node@24/bin ]; then  echo 'export PATH="/usr/local/opt/node@24/bin:$PATH"' >> ~/.zshrc  export PATH="/usr/local/opt/node@24/bin:$PATH"fihash -rnode -vnpm -v

执行完以后,终端应该会输出两行版本号,类似:

v24.x.x10.x.x

最后安装OpenClaw CLI。CLI装好后,后面的

onboardconfiguregateway install才能直接在终端里运行。

npm install -g openclaw@latest

装完之后,顺手检查一下OpenClaw的版本号和帮助信息是否可以正常输出了:

openclaw --version
openclaw help

06. 创建三个业务工作区

这里创建的是工作区,不是配置目录。它们的作用,是让每个实例后面都有自己的”办公桌”。workspace和~/.openclaw那套后台状态目录是分开的。输入三条命令行(创建好后可以在当前用户目录下找到这三个文件夹):

mkdir -p "$HOME/OpenClawWorkspaces/ShopOps"mkdir -p "$HOME/OpenClawWorkspaces/ContentLab"mkdir -p "$HOME/OpenClawWorkspaces/ResearchHub"

07. 创建三套实例

OpenClaw官方推荐的首次初始化入口是onboard。它会用一个向导带你完成模型提供商、API key、workspace和Gateway等基础设置;后面如果要改配置,可以再用configure。QuickStart和Advanced的区别也写得很清楚:QuickStart走默认值,Advanced给你完整控制。

首先配置ShopOps:电商运营实例

先运行:

openclaw --profile shopops onboard

第一次部署,建议直接选QuickStart先把本地Gateway和基础配置跑起来。QuickStart会直接用一套适合本地机器的默认配置:本地Gateway、默认工作区、默认端口、自动生成的Gateway token,以及常用的默认策略;在provider和API key这一步,按你自己的模型提供商情况填写。

像channels、skills、web search这些不必第一次就全部配完,等实例能正常启动以后,可以通过openclaw --profile shopops configure做细化。向导文档还说明了,web search提供商里有些需要API key,有些不需要,也可以以后再通过configure补配。

然后把ShopOps安装成后台服务,并固定到18789端口:

openclaw --profile shopops gateway install --port 18789

检查状态:

openclaw --profile shopops gateway status --deep

打开本地控制面板:

open http://127.0.0.1:18789/

或者用dashboard命令打开

openclaw --profile shopops dashboard

到这里,第一个实例就配置好了。

接着配置ContentLab:内容创作实例

ContentLab的配置逻辑一样,只是profile、workspace和端口变了。

openclaw --profile contentlab onboard

QuickStart同样先把本地Gateway和基础配置跑起来;provider和API key按你自己的模型提供商情况填写,channels、skills、web search这些都可以后面再细化。

openclaw --profile contentlab gateway install --port 19789
openclaw --profile contentlab gateway status --deep
open http://127.0.0.1:19789/

最后配置ResearchHub:内部资料与研究实例

也是同一套逻辑。

openclaw --profile researchhub onboard

第一次仍然建议选QuickStart,先把本地Gateway和基础配置跑起来,后面再用openclaw --profile researchhub configure慢慢补细项。

openclaw --profile researchhub gateway install --port 20789
openclaw --profile researchhub gateway status --deep
open http://127.0.0.1:20789/

到这一步,你手里已经有三套彼此分开的OpenClaw:电商有电商的工作区,内容有内容的工作区,内部资料也有自己的工作区;每一套都有自己的profile、自己的状态和自己的端口。多实例文档要求隔离的也正是这些项:gateway.portOPENCLAW_CONFIG_PATHOPENCLAW_STATE_DIRagents.defaults.workspace

08. 给长命令起别名,后面会轻松很多

等你真的开始日常使用时,就会发现openclaw --profile ...敲多了还是很烦。最简单的办法,就是给三个实例加alias,这样后面看状态、改配置、重启服务都会更顺手。

echo "alias shop='openclaw --profile shopops'" >> ~/.zshrc
echo "alias content='openclaw --profile contentlab'" >> ~/.zshrc
echo "alias research='openclaw --profile researchhub'" >> ~/.zshrc

上面的代码会依次把别命规则加入~/.zshrc文件,执行下面这句让当前终端重新加载配置,之后每次打开终端则会自动加载。

source ~/.zshrc

以后就可以这样用:

shop gateway status --deepcontent gateway status --deepresearch gateway status --deep

如果想改某个实例的配置,也可以直接写:

shop configurecontent configureresearch configure

09. 怎么判断三套实例真的分开了

最简单的检查方法有三个。

第一,三个端口能不能分别打开:187891978920789

第二,三个实例能不能分别返回自己的gateway status --deep

第三,三个workspace目录是不是各放各的业务文件。因为按照OpenClaw的定义,workspace就是文件工具和workspace context唯一使用的工作目录;而Gateway运行时读取的是当前激活的配置路径,所以profile、workspace和端口只要都拆开,运行层面的隔离就成立了。

10. 最后一句实话:多实例不是炫技,而是收纳

如果你只是想给同一套业务做几个不同角色,一个实例通常就够了。多实例真正有价值的时候,往往是你的工作已经开始互相干扰了:一个实例里既有电商资料,又有内容素材,还夹着内部文档,时间一长肯定会乱。等你把电商放回电商,把内容放回内容,把研究资料放回研究资料,很多混乱其实会自己消失。

所以,多实例不是为了”看起来更专业”,而是为了让你的工作系统重新变干净。

附录:速查版命令行

安装环境

brew -v
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
if [ -x /opt/homebrew/bin/brew ]; then  echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile  eval "$(/opt/homebrew/bin/brew shellenv)"elif [ -x /usr/local/bin/brew ]; then  echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofile  eval "$(/usr/local/bin/brew shellenv)"fi
brew install node@24
if [ -d /opt/homebrew/opt/node@24/bin ]; then  echo 'export PATH="/opt/homebrew/opt/node@24/bin:$PATH"' >> ~/.zshrc  export PATH="/opt/homebrew/opt/node@24/bin:$PATH"elif [ -d /usr/local/opt/node@24/bin ]; then  echo 'export PATH="/usr/local/opt/node@24/bin:$PATH"' >> ~/.zshrc  export PATH="/usr/local/opt/node@24/bin:$PATH"fihash -rnode -vnpm -v
npm install -g openclaw@latest

创建三个workspace

mkdir -p "$HOME/OpenClawWorkspaces/ShopOps"mkdir -p "$HOME/OpenClawWorkspaces/ContentLab"mkdir -p "$HOME/OpenClawWorkspaces/ResearchHub"

ShopOps实例配置

openclaw --profile shopops onboard
openclaw --profile shopops gateway install --port 18789
openclaw --profile shopops gateway status --deep
open http://127.0.0.1:18789/

ContentLab实例配置

openclaw --profile contentlab onboard
openclaw --profile contentlab gateway install --port 19789
openclaw --profile contentlab gateway status --deep
open http://127.0.0.1:19789/

ResearchHub实例配置

openclaw --profile researchhub onboard
openclaw --profile researchhub gateway install --port 20789
openclaw --profile researchhub gateway status --deep
open http://127.0.0.1:20789/

alias命令行别名

echo "alias shop='openclaw --profile shopops'" >> ~/.zshrcecho "alias content='openclaw --profile contentlab'" >> ~/.zshrcecho "alias research='openclaw --profile researchhub'" >> ~/.zshrcsource ~/.zshrc

本文根据公开资料整理撰写,旨在交流技术知识,传递效率工具与使用理念。如有疑问欢迎在评论区留言讨论。

OpenClaw官方文档地址:https://docs.openclaw.ai/

— END —