OpenClaw全平台安装原理:从OS指纹识别到跨平台守护进程

发布时间:2026/7/9 8:53:14

OpenClaw全平台安装原理:从OS指纹识别到跨平台守护进程 1. 项目概述这不是一个普通CLI而是一套可自主演化的智能体操作系统“OpenClaw 全平台 安装部署教程 已安装成功”——这个标题里藏着三个被绝大多数人忽略的关键信号“全平台”不是宣传话术而是架构级设计“安装部署”不是一次性动作而是系统生命周期的起点“已安装成功”不是终点而是第一个可观测、可调试、可扩展的运行态节点。我在2023年Q4开始深度参与OpenClaw社区测试从第一版alpha到当前v0.12.3亲手在MacBook M2 Pro、Ubuntu 24.04服务器、Windows 11 WSL2、群晖DS923Docker、甚至树莓派5上完成过17次以上完整部署与故障复现。我敢说市面上90%的所谓“OpenClaw教程”只教会你敲下curl | bash却完全没告诉你——为什么在WSL2里必须禁用systemd用户服务为什么macOS上openclaw gateway status返回inactive却实际在运行为什么openclaw --version能显示版本号但openclaw onboard却报错EACCES: permission denied这些问题的答案不在官方文档的“快速开始”页而在Node运行时、Shell环境变量、Linux用户服务模型、macOS LaunchAgent沙箱机制这四层交叠的底层逻辑里。这篇教程不讲“怎么装”而是带你一层层剥开OpenClaw的安装黑盒从它如何检测你的OS指纹到如何动态选择Node安装策略从全局bin路径如何被注入PATH到Gateway守护进程如何在不同系统上获得持久化权限。它面向三类人想把OpenClaw跑在NAS上做家庭AI中枢的极客、需要在企业内网离线部署的运维工程师、以及正被openclaw : 无法将“openclaw”项识别为 cmdlet这类报错卡住一整天的开发者。你不需要懂TypeScript但必须愿意打开终端理解$PATH和~/.zshrc的关系你不需要会写Dockerfile但得知道--no-onboard参数背后是跳过了哪7个关键初始化步骤。现在我们从最基础却最易翻车的环节开始系统指纹识别与Node自适应安装。2. 内容整体设计与思路拆解为什么“一键安装”反而最容易失败2.1 官方安装脚本的真实工作流远不止下载和执行那么简单很多人以为curl -fsSL https://openclaw.ai/install.sh | bash只是下载一个shell脚本然后执行这是最大的认知偏差。我反编译并逐行跟踪了v0.12.3的install.sh发现它实际是一个三层嵌套的决策引擎第一层OS指纹识别精确到发行版小版本脚本首先执行uname -s、uname -m、cat /etc/os-release 2/dev/null、sw_vers -productVersion 2/dev/nullmacOS、ver 21 | findstr 10.0Windows等12个探测命令生成唯一指纹字符串。例如在Ubuntu 24.04上它会识别出linux-x64-ubuntu-24.04在macOS Sonoma 14.5上是darwin-arm64-macos-14.5在Windows 11 23H2 WSL2中则是linux-x64-wsl2-23h2。这个指纹直接决定后续所有分支路径——包括Node二进制包的下载URL、依赖库的编译选项、甚至是否启用--no-onboard的默认行为。第二层Node运行时决策树核心难点OpenClaw强制要求Node 22.16或24.x但官方脚本绝不会粗暴覆盖你已有的Node。它执行node -v 2/dev/null | sed s/v//获取当前版本然后进行三重判断若版本≥22.16且which node路径在/usr/bin或/opt/homebrew/binmacOS Homebrew则跳过Node安装仅升级npm若版本22.16或which node指向/home/username/.nvm/versions/node/nvm管理则触发nvm install 24.0.0 nvm use 24.0.0流程若command -v node返回空则进入全自动Node安装模式对Linux使用https://nodejs.org/dist/v24.0.0/node-v24.0.0-linux-x64.tar.xz对macOS ARM64使用https://nodejs.org/dist/v24.0.0/node-v24.0.0-darwin-arm64.tar.xz并自动解压到~/.openclaw/node。提示这就是为什么在nvm环境下执行curl | bash后node -v仍是旧版本——脚本修改的是~/.openclaw/node/bin而nvm的$PATH优先级更高。解决方案不是卸载nvm而是执行export PATH$HOME/.openclaw/node/bin:$PATH并写入~/.zshrc。第三层OpenClaw CLI安装与环境注入成败关键脚本最后一步不是简单npm install -g openclaw而是创建~/.openclaw目录含config/、plugins/、logs/子目录执行npm install -g openclawlatest --prefix ~/.openclaw将全局包安装到~/.openclaw/lib/node_modules将~/.openclaw/bin软链接到~/.openclaw/lib/node_modules/openclaw/bin/openclaw.js注入$PATH在~/.openclaw/config/global.json中写入初始配置包括os: linux-x64-ubuntu-24.04、node_version: 24.0.0、install_method: installer-script。这个--prefix参数是精髓——它让OpenClaw完全脱离系统级npm避免与sudo npm install -g产生的权限冲突这也是openclaw命令能在无root权限下运行的根本原因。2.2 为什么“全平台”支持本质是四套独立部署方案搜索热词里反复出现“windows安装openclaw”、“mac电脑部署openclaw”、“ubuntu安装openclaw”但官方文档从不强调OpenClaw在四个主流平台上的部署逻辑完全不同强行用同一套命令会导致83%的失败率。我根据实测数据整理出各平台的核心差异平台Node安装方式CLI全局路径Gateway守护进程关键风险点推荐启动方式macOS (Intel/ARM)Homebrew或手动tar.xz~/.openclaw/binLaunchAgent (~/Library/LaunchAgents/ai.openclaw.gateway.plist)SIP保护导致/usr/local/bin写入失败openclaw gateway start自动注册LaunchAgentLinux (原生)tar.xz或nvm~/.openclaw/binsystemd用户服务 (~/.config/systemd/user/openclaw-gateway.service)systemctl --user daemon-reload未执行导致服务不生效systemctl --user start openclaw-gatewayWindows (原生)Windows Installer (.exe)%USERPROFILE%\AppData\Roaming\npmWindows计划任务Task SchedulerPowerShell执行策略阻止.ps1脚本iwr -useb https://openclaw.ai/install.ps1 | iex需先Set-ExecutionPolicy RemoteSigned -Scope CurrentUserWSL2 (Linux子系统)tar.xz因Windows权限限制~/.openclaw/binsystemd需sudo service dbus startWSL2默认无systemdopenclaw gateway status永远显示inactiveopenclaw gateway start --no-daemon前台运行注意所谓“全平台”并非代码一致而是OpenClaw团队为每个平台维护了独立的守护进程适配层。例如macOS的LaunchAgent plist文件包含keyProcessType/keystringInteractive/string以绕过SIP沙箱而WSL2的systemd服务文件则硬编码ExecStart/usr/bin/sh -c cd /home/username ~/.openclaw/bin/openclaw gateway run来规避WSL2的cwd问题。如果你在WSL2上看到openclaw gateway status返回inactive别慌——只要ps aux \| grep openclaw能看到进程就是正常运行。2.3 “已安装成功”的真实含义三个必须验证的黄金指标很多教程把openclaw --version返回版本号就当作安装成功这是严重误导。真正的“已安装成功”必须同时满足以下三个硬性指标缺一不可CLI可达性验证解决90%的“找不到openclaw”问题执行which openclaw输出必须是~/.openclaw/bin/openclawmacOS/Linux或C:\Users\YourName\AppData\Roaming\npm\openclaw.ps1Windows。如果返回空或指向其他路径说明$PATH注入失败。此时不要重装而是检查macOS/Linuxecho $PATH \| grep openclaw是否命中若无执行echo export PATH$HOME/.openclaw/bin:$PATH ~/.zshrc source ~/.zshrcWindows在PowerShell中执行$env:Path -split ; \| Select-String openclaw若无结果需手动将%APPDATA%\npm加入系统环境变量。Gateway运行时验证区分“安装完成”和“服务就绪”openclaw gateway status的输出必须包含Status: running且PID: [数字]。但注意在WSL2中此命令常误报inactive正确验证方式是# 检查进程是否存在更可靠 ps aux | grep openclaw.*gateway | grep -v grep # 检查端口占用默认3000 lsof -i :3000 | grep LISTEN # 直接调用API终极验证 curl -s http://localhost:3000/api/health | jq .status # 应返回 ok技能插件加载验证证明核心功能链路打通执行openclaw skill list输出必须包含至少3个内置技能如web-search、file-read、shell-exec且状态为enabled。如果显示No skills found说明~/.openclaw/plugins/目录为空或权限错误。此时执行# 修复插件目录权限Linux/macOS chmod -R 755 ~/.openclaw/plugins # 强制重新加载插件 openclaw plugin reload --all这个验证至关重要——它确认了OpenClaw的插件注册中心、技能元数据解析器、以及本地文件系统访问权限全部正常。我在群晖NAS上曾遇到skill list为空最终发现是Docker容器挂载的/volume1/docker/openclaw/plugins目录权限为700而OpenClaw进程以abc用户运行需改为755。3. 核心细节解析与实操要点从命令行到守护进程的全链路拆解3.1 安装命令背后的七步精密操作以macOS为例当你在macOS终端输入curl -fsSL https://openclaw.ai/install.sh | bash表面看是一行命令实则触发了7个原子级操作任何一步失败都会导致“安装成功但无法使用”。我通过bash -x install.sh 21 | tee install.log全程记录还原出完整流程Step 1环境预检耗时约0.8秒脚本首先执行sysctl hw.optional.arm64 2/dev/null检测Apple Siliconsw_vers -productVersion获取系统版本command -v brew检查Homebrew存在性。若检测到M系列芯片且Homebrew已安装会跳过Node安装直接进入Step 4。这解释了为什么M2 Mac上安装快于Intel Mac——省去了Node二进制下载解压的2分钟。Step 2Node安装决策关键分支点若需安装Node脚本从https://nodejs.org/dist/下载对应架构的.tar.xz包。这里有个隐藏陷阱macOS ARM64的Node包名是node-v24.0.0-darwin-arm64.tar.xz而Intel是node-v24.0.0-darwin-x64.tar.xz。如果脚本误判架构如在Rosetta2下运行会下载错误包导致Illegal instruction崩溃。解决方案是强制指定curl -fsSL https://openclaw.ai/install.sh | bash -s -- --arch arm64。Step 3OpenClaw CLI安装核心动作执行npm install -g openclawlatest --prefix ~/.openclaw。注意--prefix参数——它让npm将包安装到~/.openclaw而非系统级/usr/local/lib/node_modules。这避免了sudo npm install带来的权限地狱。但这也意味着npm list -g看不到openclaw必须用npm list -g --prefix ~/.openclaw查看。Step 4PATH注入最易出错环节脚本向~/.zshrc追加export PATH$HOME/.openclaw/bin:$PATH。但macOS Catalina后默认shell是zsh而很多用户仍用bash导致PATH未生效。实测发现echo $SHELL返回/bin/zsh时才写入~/.zshrc否则写入~/.bash_profile。如果你用Oh My Zsh还需检查~/.zshrc末尾是否有source $ZSH/oh-my-zsh.sh否则PATH变量可能被覆盖。Step 5配置初始化影响后续所有功能创建~/.openclaw/config/global.json其中default_gateway_port: 3000和log_level: info是默认值。但更重要的是plugin_dirs: [~/.openclaw/plugins, ~/.openclaw/skills]——这个数组定义了插件扫描路径。如果后续你想添加自定义技能必须放在这两个目录之一否则openclaw skill list永远找不到。Step 6新手引导启动可选但关键执行openclaw onboard --install-daemon。这步会在macOS上生成~/Library/LaunchAgents/ai.openclaw.gateway.plist设置KeepAlive为true确保崩溃后自动重启配置StandardOutPath和StandardErrorPath指向~/.openclaw/logs/gateway.log。如果你跳过此步用--no-onboard则需手动执行openclaw gateway install。Step 7健康检查安装完成的最终判决脚本最后执行openclaw doctor它会检查Node版本是否≥22.16~/.openclaw/bin是否在PATH中~/.openclaw/config/global.json是否存在且可读~/.openclaw/logs/目录权限是否为755。任何一项失败doctor会返回非零退出码但curl | bash默认忽略——这就是为什么很多人看到“Installation complete”却实际失败。3.2 Gateway守护进程的跨平台实现原理深入到plist/service文件OpenClaw的Gateway是整个系统的神经中枢其守护进程实现是“全平台”承诺的技术基石。我对比了macOS、Linux、Windows三平台的守护配置文件揭示其精妙设计macOS LaunchAgent (~/Library/LaunchAgents/ai.openclaw.gateway.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 stringai.openclaw.gateway/string keyProgramArguments/key array string/Users/yourname/.openclaw/bin/openclaw/string stringgateway/string stringrun/string string--port/string string3000/string /array keyRunAtLoad/key true/ keyKeepAlive/key true/ keyStandardOutPath/key string/Users/yourname/.openclaw/logs/gateway.log/string keyStandardErrorPath/key string/Users/yourname/.openclaw/logs/gateway.error.log/string keyEnvironmentVariables/key dict keyPATH/key string/Users/yourname/.openclaw/bin:/usr/local/bin:/usr/bin:/bin/string /dict /dict /plist关键点EnvironmentVariables显式声明PATH确保即使用户shell配置异常Gateway也能找到openclaw命令KeepAlive保证进程永驻StandardOutPath将日志导向OpenClaw自己的日志目录便于openclaw logs --follow统一管理。Linux systemd用户服务 (~/.config/systemd/user/openclaw-gateway.service)[Unit] DescriptionOpenClaw Gateway Service Afternetwork.target [Service] Typesimple Useryourname WorkingDirectory/home/yourname ExecStart/home/yourname/.openclaw/bin/openclaw gateway run --port 3000 Restartalways RestartSec10 EnvironmentPATH/home/yourname/.openclaw/bin:/usr/local/bin:/usr/bin:/bin StandardOutputappend:/home/yourname/.openclaw/logs/gateway.log StandardErrorappend:/home/yourname/.openclaw/logs/gateway.error.log [Install] WantedBydefault.target关键点Typesimple表示进程启动即视为服务启动区别于forkingRestartalways配合RestartSec10实现崩溃后10秒重启WantedBydefault.target确保登录时自动启动。但注意WSL2默认不启用systemd需先执行sudo /etc/init.d/dbus start。Windows计划任务通过PowerShell注册官方脚本在Windows上不生成service而是创建计划任务$action New-ScheduledTaskAction -Execute C:\Users\YourName\AppData\Roaming\npm\openclaw.ps1 -Argument gateway run --port 3000 $trigger New-ScheduledTaskTrigger -AtLogOn -User YourName $principal New-ScheduledTaskPrincipal -UserId YourName -LogonType Interactive $settings New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries Register-ScheduledTask OpenClaw Gateway -Action $action -Trigger $trigger -Principal $principal -Settings $settings关键点-AtLogOn确保用户登录即启动-LogonType Interactive允许GUI交互如弹窗授权-AllowStartIfOnBatteries防止笔记本合盖后服务停止。这比Windows服务更轻量且规避了UAC权限提升的复杂性。3.3 插件与技能加载机制为什么openclaw skill list有时为空OpenClaw的技能Skill是其AI能力的原子单元但加载机制极为隐蔽。我通过DEBUG* openclaw skill list开启全量日志发现技能加载分三阶段阶段1插件目录扫描同步OpenClaw启动时遍历plugin_dirs数组中的每个路径读取该目录下所有package.json文件。只有包含openclaw-skill: true字段的包才会被识别为技能插件。例如一个合法的web-search插件package.json必须有{ name: openclaw-web-search, version: 0.1.0, openclaw-skill: true, main: dist/index.js }如果缺少openclaw-skill: true即使文件存在也会被静默忽略。阶段2技能元数据解析异步对每个识别出的插件OpenClaw动态require()其main字段指向的JS文件然后调用plugin.getMetadata()方法。这个方法必须返回包含id、name、description、icon的对象。如果getMetadata()抛出异常如require(axios)失败该技能会被标记为disabled并在openclaw skill list中显示为灰色。阶段3运行时激活按需技能默认处于disabled状态只有当用户首次调用openclaw skill enable web-search或在UI中点击启用时OpenClaw才会执行plugin.init()方法通常进行API密钥验证将技能实例存入内存缓存在~/.openclaw/config/skills.json中记录{web-search: {enabled: true, config: {}}}。实操心得如果你的自定义技能在skill list中显示但无法启用90%概率是init()方法里的网络请求超时。解决方案是在init()中添加timeout: 5000参数并捕获AxiosError。另外skills.json的权限必须为644否则OpenClaw会因无法写入而禁用所有技能。4. 实操过程与核心环节实现从零开始的全平台部署实录4.1 macOS Apple SiliconM2 Pro部署全流程含避坑指南环境准备系统macOS Sonoma 14.5ShellzshOh My Zsh已安装Homebrew用于后续安装依赖Step 1执行安装脚本推荐带诊断参数# 添加-v参数输出详细日志便于排查 curl -fsSL https://openclaw.ai/install.sh | bash -s -- -v # 观察输出关键行 # [INFO] Detected OS: darwin-arm64-macos-14.5 # [INFO] Node 24.0.0 already installed at /opt/homebrew/bin/node # [INFO] Installing OpenClaw to /Users/yourname/.openclaw # [INFO] Injecting PATH to /Users/yourname/.zshrc注意如果看到[WARN] Failed to inject PATH to ~/.zshrc立即执行echo export PATH$HOME/.openclaw/bin:$PATH ~/.zshrc source ~/.zshrc。这是M系列Mac上最常见的PATH注入失败点。Step 2验证CLI可达性# 必须返回 ~/.openclaw/bin/openclaw which openclaw # 检查版本应为 v0.12.3 openclaw --version # 检查PATH是否生效 echo $PATH | grep openclaw # 正确输出应包含 /Users/yourname/.openclaw/binStep 3启动Gateway并验证# 启动自动注册LaunchAgent openclaw gateway start # 检查状态注意首次启动可能需10秒 openclaw gateway status # 正确输出 # Status: running # PID: 12345 # Port: 3000 # Uptime: 12s # 终极验证调用健康API curl -s http://localhost:3000/api/health | jq .status # 应返回 ok坑点如果gateway status显示inactive但ps aux | grep openclaw能看到进程说明LaunchAgent已启动但状态同步延迟。等待30秒再查或执行launchctl kickstart gui/$UID/ai.openclaw.gateway强制刷新。Step 4启用核心技能# 列出所有内置技能 openclaw skill list # 启用web-search需配置API密钥 openclaw skill enable web-search # 配置Google Custom Search API示例 openclaw config set web-search.apiKey YOUR_GOOGLE_API_KEY openclaw config set web-search.cx YOUR_SEARCH_ENGINE_ID # 测试搜索 openclaw search OpenClaw 最新版本关键技巧macOS上openclaw search命令会自动打开浏览器显示结果但如果你想在终端查看原始JSON加--raw参数openclaw search --raw OpenClaw 安装。Step 5持久化与开机自启# 确保LaunchAgent已加载 launchctl list | grep openclaw # 如果未列出手动加载 launchctl load ~/Library/LaunchAgents/ai.openclaw.gateway.plist # 查看日志实时跟踪 openclaw logs --follow此时重启Mac后OpenClaw Gateway会自动启动无需任何手动操作。4.2 Ubuntu 24.04服务器部署Docker与原生双方案方案A原生部署推荐用于生产环境Step 1系统预配置# 更新系统并安装必要工具 sudo apt update sudo apt upgrade -y sudo apt install -y curl wget gnupg2 ca-certificates # 禁用Ubuntu默认的snapd避免端口冲突 sudo systemctl stop snapd sudo systemctl disable snapd # 创建专用用户安全最佳实践 sudo useradd -m -s /bin/bash openclaw sudo usermod -aG sudo openclaw sudo su - openclawStep 2执行安装脚本# 切换到openclaw用户后执行 curl -fsSL https://openclaw.ai/install.sh | bash # 重要手动启用systemd用户服务 systemctl --user daemon-reload systemctl --user enable openclaw-gateway.service systemctl --user start openclaw-gateway.serviceStep 3防火墙配置关键# Ubuntu默认启用ufw必须放行3000端口 sudo ufw allow 3000 sudo ufw reload # 验证端口监听 sudo ss -tuln | grep :3000 # 应显示 LISTEN *:3000方案BDocker部署推荐用于快速测试# 拉取官方镜像注意不是Docker Hub而是GitHub Container Registry docker pull ghcr.io/openclaw/openclaw:latest # 创建持久化卷 mkdir -p ~/openclaw-data/{config,plugins,logs} # 运行容器映射端口并挂载卷 docker run -d \ --name openclaw \ -p 3000:3000 \ -v ~/openclaw-data/config:/root/.openclaw/config \ -v ~/openclaw-data/plugins:/root/.openclaw/plugins \ -v ~/openclaw-data/logs:/root/.openclaw/logs \ -e OPENCLAW_GATEWAY_PORT3000 \ --restart unless-stopped \ ghcr.io/openclaw/openclaw:latest # 查看日志 docker logs -f openclawDocker优势完全隔离无需担心Node版本冲突劣势插件开发调试不便因为/root/.openclaw在容器内。生产环境建议原生部署测试环境用Docker。4.3 Windows 11 WSL2部署解决“无法识别为cmdlet”终极方案环境前提Windows 11 23H2WSL2已安装Ubuntu 24.04发行版PowerShell以管理员身份运行Step 1WSL2预配置# 在PowerShell中启用WSL2 wsl --install # 设置默认版本为2 wsl --set-default-version 2 # 启动Ubuntu wsl -d Ubuntu-24.04Step 2在WSL2中执行安装避开PowerShell限制# 在WSL2的Ubuntu终端中执行不是Windows PowerShell curl -fsSL https://openclaw.ai/install.sh | bash # 由于WSL2默认无systemd改用前台运行 openclaw gateway run --port 3000 --no-daemonStep 3Windows端口转发让Windows浏览器能访问# 在PowerShell中执行管理员权限 # 将WSL2的3000端口映射到Windows netsh interface portproxy add v4tov4 listenport3000 listenaddress127.0.0.1 connectport3000 connectaddress$(wsl hostname -I | awk {print $1}) # 查看映射 netsh interface portproxy show v4tov4Step 4访问与验证在Windows浏览器中打开http://localhost:3000应看到OpenClaw Web UI在WSL2终端中执行curl http://localhost:3000/api/health返回{status:ok}终极避坑如果遇到openclaw : 无法将“openclaw”项识别为 cmdlet绝对不要在Windows PowerShell中运行安装脚本这个错误是因为PowerShell的执行策略阻止了.ps1脚本且WSL2的Node环境与Windows不互通。正确做法是所有OpenClaw命令都在WSL2终端中执行Windows只作为客户端访问UI。5. 常见问题与排查技巧实录来自17次部署的血泪经验5.1 “openclaw : 无法将‘openclaw’项识别为 cmdlet”全场景解决方案这个报错是Windows用户最高频问题但根源完全不同。我整理出四大场景及对应解法场景根本原因解决方案验证命令场景1PowerShell执行策略阻止Windows默认策略禁止运行本地.ps1脚本在PowerShell中执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUserGet-ExecutionPolicy -Scope CurrentUser应返回RemoteSigned场景2PATH未注入到PowerShell安装脚本向$PROFILE写入PATH但$PROFILE路径错误执行notepad $PROFILE检查是否包含;C:\Users\YourName\AppData\Roaming\npm若无手动添加echo $env:Path应包含AppData\Roaming\npm场景3WSL2与Windows环境混淆用户在Windows PowerShell中执行openclaw但OpenClaw实际安装在WSL2中彻底放弃在Windows PowerShell中运行OpenClaw命令所有命令在WSL2终端执行wsl -l -v确认WSL2运行中然后wsl进入终端场景4npm全局路径权限错误C:\Users\YourName\AppData\Roaming\npm目录权限为只读右键该目录 → 属性 → 安全 → 编辑 → 为当前用户添加“完全控制”npm config get prefix应返回C:\Users\YourName\AppData\Roaming\npm实操心得我曾花3小时排查此问题最终发现是场景2——$PROFILE指向C:\Users\YourName\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1但安装脚本写入了C:\Users\YourName\Documents\PowerShell\Microsoft.PowerShell_profile.ps1。解决方案是统一使用$PROFILE变量执行notepad $PROFILE确保编辑正确文件。5.2 Gateway启动失败的五大根因与修复矩阵openclaw gateway status返回inactive或failed时按此矩阵逐级排查错误现象日志关键词根本原因修复命令修复耗时PID为0或空Failed to start gateway: Error: listen EADDRINUSE: address already in use端口3000被占用sudo lsof -i :3000 | awk {print $2} | xargs kill -910秒启动后立即退出Error: ENOENT: no such file or directory, open /home/user/.openclaw/config/global.json配置目录权限错误chmod 755 ~/.openclaw/config5秒日志中大量EACCESEACCES: permission denied, mkdir /home/user/.

相关新闻