windowswslOpenClaw 安装指南四自动化安装脚本完全解析 —— PowerShell 与 Bash 实战作者技术实践派标签PowerShell | Bash | 自动化脚本 | DevOps | 安装部署难度⭐⭐⭐⭐☆中高级阅读时间20分钟一、前言前两篇文章我们了解了 OpenClaw 的快速安装和环境准备。但知其然更要知其所以然—— 自动化脚本到底做了什么如何根据自己的需求修改脚本本文将逐行解析 577 行的 PowerShell 主脚本和 176 行的 Bash 脚本帮助你理解自动化部署的完整流程学会修改脚本适配自己的环境掌握 Windows WSL 混合脚本编写技巧二、脚本架构总览2.1 脚本分工auto-install.bat (入口) ↓ 调用 auto-install-openclaw.ps1 (Windows 端主控) ├── WSL 环境检查 ├── 端口转发配置 ├── 生成 WSL 内部脚本并执行 │ └── wsl-install.sh (WSL 端执行) │ ├── 安装系统依赖 │ ├── 安装 Node.js 24 │ ├── 安装 OpenClaw │ └── 配置模型和飞书 └── 验证安装结果2.2 核心设计思想配置驱动所有可变参数集中在config.env脚本只读取执行幂等性重复执行不会出错检查已安装则跳过错误处理每个关键步骤都有错误检查和日志记录跨环境Windows 负责网络层WSL 负责应用层三、PowerShell 主脚本详解3.1 脚本头部与参数# OpenClaw 全自动安装脚本 v3.0# 以管理员身份运行# 配置: 腾讯混元大模型 飞书集成param([string]$ConfigFileauto-install.config.env)$ErrorActionPreferenceContinue# 遇到错误继续执行$ProgressPreferenceContinue# 显示进度条关键点param允许外部传入配置文件路径方便多环境部署$ErrorActionPreference Continue确保单步失败不会中断整体流程3.2 日志系统$LogFile$PSScriptRoot\auto-install-log.txtfunctionWrite-Log($Message,$LevelINFO){$timestampGet-Date-Formatyyyy-MM-dd HH:mm:ss$logEntry[$timestamp] [$Level]$MessageAdd-Content-Path$LogFile-Value$logEntry# 根据级别输出不同颜色switch($Level){ERROR{Write-Host$logEntry-ForegroundColor Red}WARN{Write-Host$logEntry-ForegroundColor Yellow}OK{Write-Host$logEntry-ForegroundColor Green}default{Write-Host$logEntry-ForegroundColor Cyan}}}技巧统一的日志函数同时输出到文件和终端颜色区分级别便于快速定位问题时间戳方便事后追溯3.3 配置文件解析$config {}Get-Content$configPath|ForEach-Object{if($_-match^([^#][^]*)(.*)$){$config[$matches[1].Trim()]$matches[2].Trim()}}正则解析 env 文件^([^#][^]*)不以#开头且包含非字符的键(.*)$等号后的所有内容作为值.Trim()去除首尾空格3.4 WSL 环境准备# 检查 WSL 发行版是否存在$wslStatus wsl-l-v|Select-String$WslDistroif(-not$wslStatus){Write-LogWSL 发行版$WslDistro未找到ERRORexit1}# 配置 WSL NAT 模式$wslConfigContent [wsl2] networkingModeNAT localhostForwardingtrue Set-Content-Path$wslConfigPath-Value$wslConfigContent-Encoding UTF8-Force3.5 端口转发自动化# 获取 WSL IP使用 awk 确保只取第一个 IP$wslIp wsl-d$WslDistro-e bash-chostname -I | cut -d -f1$wslIp$wslIp.Trim()# 先删除旧规则避免重复添加报错netsh interface portproxy delete v4tov4 listenport$GatewayPortlistenaddress127.0.0.1 2$null# 添加新规则netsh interface portproxy add v4tov4 listenport$GatewayPort listenaddress127.0.0.1 connectport$GatewayPort connectaddress$wslIp关键技巧2$null将错误输出丢弃旧规则不存在时的报错cut -d -f1确保只取第一个 IPhostname -I 可能返回多个3.6 WSL 内部脚本注入这是整个脚本最精彩的部分 —— PowerShell 生成 Bash 脚本并传给 WSL 执行$depsScript #!/bin/bash set -e export DEBIAN_FRONTENDnoninteractive export TERMxterm echo [$(date%Y-%m-%d %H:%M:%S)]更新软件包列表... sudo apt-get update -qq echo [$(date%Y-%m-%d %H:%M:%S)]安装基础依赖... sudo apt-get install -y -qq curl wget python3 python3-pip build-essential echo [OK]系统依赖安装完成 # 写入临时文件$depsPath$env:TEMP\wsl-deps.sh$depsScript|Out-File-FilePath$depsPath-Encoding UTF8# 通过管道传给 WSL bash 执行Get-Content$depsPath|wsl-d$WslDistro-e bash为什么不用wsl -e bash -c xxx因为复杂的 Bash 脚本包含特殊字符引号、换行等通过管道传递可以避免转义地狱。四、WSL Bash 脚本详解4.1 环境变量设置#!/bin/bashset-e# 遇到错误立即退出exportTERMxterm# 确保有终端输出exportDEBIAN_FRONTENDnoninteractive# apt 不交互exportNPM_CONFIG_REGISTRYhttps://registry.npmmirror.com# 国内镜像4.2 幂等性设计# 检查是否已安装 Node.js且版本正确ifcommand-vnode/dev/null;thenNODE_VERSION$(node-v)if[[$NODE_VERSIONv24*]];thenecho[OK] Node.js 版本正确跳过安装exit0fifi**幂等性的好处**脚本可以安全地重复执行不会重复安装。4.3 OpenClaw 安装# 配置国内 npm 镜像加速npmconfigsetregistry https://registry.npmmirror.com# 全局安装npminstall-gopenclawlatest# 创建全局命令链接确保在 PATH 中sudoln-sf/usr/local/node/bin/openclaw /usr/local/bin/openclawsudoln-sf/usr/local/node/bin/clawhub /usr/local/bin/clawhubsudoln-sf/usr/local/node/bin/openclaw-gateway /usr/local/bin/openclaw-gateway4.4 初始化配置非交互模式if[!-d$HOME/.openclaw];then# -e y\n1 自动回答 yes 和选择模式 1echo-ey\n1|openclaw onboardfi# 启用 lingering确保用户服务登录后持续运行sudologinctl enable-linger$USER4.5 JSON 配置生成PythonOpenClaw 的配置文件是 JSON 格式使用 Python 处理最方便python3PYTHON_EOF import json import os config_path /home/$USER/.openclaw/openclaw.json # 读取现有配置 with open(config_path, r) as f: config json.load(f) # 添加腾讯混元提供商 config[models] { providers: { tencent-coding-plan: { baseUrl: https://api.lkeap.cloud.tencent.com/coding/v3, apiKey: $TENCENT_API_KEY, api: openai-completions, models: [ { id: hunyuan-turbos, name: Hunyuan TurboS, contextWindow: 32000, maxTokens: 16000 } ] } } } # 设置默认模型 config[agents][defaults] { model: {primary: tencent-coding-plan/hunyuan-turbos} } # 写入配置 with open(config_path, w) as f: json.dump(config, f, indent2) print(配置完成) PYTHON_EOF4.6 Systemd 用户服务创建mkdir-p$HOME/.config/systemd/usercat$HOME/.config/systemd/user/openclaw-gateway.serviceEOF [Unit] DescriptionOpenClaw Gateway Afternetwork.target [Service] Typesimple EnvironmentPATH/usr/local/node/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin EnvironmentOPENCLAW_NO_RESPAWN1 ExecStart/usr/local/node/bin/openclaw gateway --port 18789 Restartalways RestartSec5 [Install] WantedBydefault.target EOF# 重载 systemd 配置systemctl--userdaemon-reload systemctl--userenableopenclaw-gateway.service关键配置Restartalways服务崩溃后自动重启OPENCLAW_NO_RESPAWN1避免与 systemd 重启冲突五、脚本执行流程图开始 │ ▼ 检查管理员权限 ──► 失败 ──► 退出 │ ▼ 加载配置文件 │ ▼ WSL 环境准备 ──► 失败 ──► 退出 │ ▼ 重启 WSL │ ▼ 配置端口转发 │ ▼ 安装系统依赖 ──► 失败 ──► 退出 │ ▼ 安装 Node.js 24 │ ▼ 安装 OpenClaw │ ▼ 初始化配置 │ ▼ 配置大模型 │ ├─► 腾讯混元 ──► 生成 JSON 配置 └─► Ollama ──► 设置 baseUrl │ ▼ 配置飞书可选 │ ▼ 配置 Gateway Token │ ▼ 创建 Systemd 服务 │ ▼ 启动 Gateway │ ▼ 验证安装 ──► 失败 ──► 查看日志 │ ▼ 完成输出访问信息六、如何修改脚本适配你的环境6.1 修改默认端口需求将默认端口从 18789 改为 8080修改位置config.envGATEWAY_PORT8080wsl-install.sh中的--port参数防火墙规则中的端口6.2 添加代理支持如果网络需要代理在 WSL 脚本中添加exporthttp_proxyhttp://your-proxy:portexporthttps_proxyhttp://your-proxy:port6.3 更换模型提供商除了腾讯混元还支持其他 OpenAI 兼容接口config[models][providers][custom]{baseUrl:https://api.your-provider.com/v1,apiKey:your-key,api:openai-completions,models:[{id:your-model,name:Custom Model,contextWindow:32000}]}七、完整脚本附件由于篇幅限制完整脚本内容已整理为下载文件文件名代码行数下载auto-install-openclaw.ps1577行下载wsl-install.sh176行下载auto-install.bat303行下载八、总结通过本篇文章我们深入理解了 OpenClaw 自动化安装的完整流程知识点应用场景PowerShell 调用 WSLWindows Linux 混合环境管理管道传递脚本避免 shell 转义地狱Python 嵌入 Bash处理 JSON 配置文件Systemd 用户服务用户级守护进程管理幂等性设计可重复执行的安装脚本下篇预告《windowswslOpenClaw 安装指南五大模型配置实战》—— 详细讲解 Ollama 本地部署和腾讯混元 API 配置包括 RTX 4060 显卡优化参数。附录脚本调试技巧1. 查看详细日志# PowerShell 端Get-Contentauto-install-log.txt-Wait# WSL 端wsl-d Ubuntu-24.04-e tail-f/tmp/openclaw-install.log2. 分步执行调试# 只执行到某一步骤添加参数.\auto-install-openclaw.ps1-StepLimit 53. 保留临时脚本修改脚本注释掉清理临时文件的代码# Remove-Item $depsPath # 注释掉这行保留临时脚本用于检查参考文献PowerShell 脚本编程[1] Microsoft. PowerShell 官方文档. https://docs.microsoft.com/zh-cn/powershell/ [EB/OL]. 2024.[2] Microsoft. PowerShell 脚本编写指南. https://docs.microsoft.com/zh-cn/powershell/scripting/developer/cmdlet/cmdlet-overview [EB/OL]. 2024.[3] Microsoft. PowerShell 错误处理. https://docs.microsoft.com/zh-cn/powershell/scripting/learn/deep-dives/everything-about-exceptions [EB/OL]. 2024.[4] Microsoft. about_Preference_Variables. https://docs.microsoft.com/zh-cn/powershell/module/microsoft.powershell.core/about/about_preference_variables [EB/OL]. 2024.Bash Shell 编程[5] GNU Bash 参考手册. https://www.gnu.org/software/bash/manual/ [EB/OL]. 2024.[6] Linux Documentation Project. Advanced Bash-Scripting Guide. https://tldp.org/LDP/abs/html/ [EB/OL]. 2024.[7] Bash Hackers Wiki. https://wiki.bash-hackers.org/ [EB/OL]. 2024.Windows 与 WSL 集成[8] Microsoft. WSL 命令参考. https://docs.microsoft.com/zh-cn/windows/wsl/basic-commands [EB/OL]. 2024.[9] Microsoft. 从 PowerShell 调用 WSL. https://docs.microsoft.com/zh-cn/windows/wsl/interop [EB/OL]. 2024.配置管理与部署[10] Mozilla. 12-Factor App 方法论中文. https://12factor.net/zh_cn/ [EB/OL]. 2024.[11] Martin Fowler. Infrastructure as Code. https://martinfowler.com/bliki/InfrastructureAsCode.html [EB/OL]. 2016.Systemd 服务管理[12] Red Hat. systemd 服务单元配置. https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_basic_system_settings/assembly_working-with-systemd-unit-files_configuring-basic-system-settings [EB/OL]. 2024.[13] DigitalOcean. Understanding Systemd Units and Unit Files. https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files [EB/OL]. 2024.JSON 与配置处理[14] JSON 官方规范. https://www.json.org/json-zh.html [EB/OL]. 2024.[15] Python Software Foundation. Python JSON 库文档. https://docs.python.org/3/library/json.html [EB/OL]. 2024.DevOps 与自动化[16] GitLab. CI/CD 最佳实践. https://docs.gitlab.com/ee/ci/best_practices/ [EB/OL]. 2024.[17] Humble, J., Farley, D. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley, 2010.本文完敬请期待下篇。系列文章导航 上一篇03-环境准备深度指南-WSL网络与依赖配置待上传后添加链接 下一篇05-大模型配置实战-Ollama本地部署与腾讯混元API待上传后添加链接 系列目录windowswslOpenClaw 安装指南觉得有帮助 点个赞支持一下⭐ 收藏备用✅ 关注博主不错过后续更新 有问题欢迎在评论区留言