From 68c1bee826d17580ba19479b929b1a7094dd49f5 Mon Sep 17 00:00:00 2001 From: Rick Mu Date: Fri, 13 Feb 2026 18:49:49 +1100 Subject: [PATCH] Rewrite Windows scripts: drop WSL, run natively - install-windows.ps1: install Node.js via winget/choco (fallback to nodejs.cn manual download), then npm install openclaw. No WSL. - configure-aws-bedrock.ps1: full native PowerShell port with SecureString input, user-level env vars, config backup. - README: update Windows instructions to reflect native install. Co-Authored-By: Claude Opus 4.6 --- README.md | 13 +- configure-aws-bedrock.ps1 | 254 +++++++++++++++++++++++++++++++------- install-windows.ps1 | 219 ++++++++++++++------------------ 3 files changed, 304 insertions(+), 182 deletions(-) diff --git a/README.md b/README.md index c881e20..cd6aa31 100644 --- a/README.md +++ b/README.md @@ -68,12 +68,11 @@ OpenClaw 不只是聊天,而是真正能**帮你做事**的 AI 助手: | 步骤 | macOS | Windows | |------|-------|---------| -| 1 | 检查/安装 Node.js 22+(通过 Homebrew) | 检查/安装 WSL2 + Ubuntu 24.04 | -| 2 | 安装 OpenClaw(静默安装) | 启用 systemd + 安装 Node.js 22+ | -| 3 | 启动配置向导 | 安装 OpenClaw + 网关守护进程 | -| 4 | — | 启动配置向导 | +| 1 | 检查/安装 Node.js 22+(通过 Homebrew) | 检查/安装 Node.js 22+(通过 winget / Chocolatey) | +| 2 | 安装 OpenClaw | 安装 OpenClaw | +| 3 | 启动配置向导 | 启动配置向导 | -脚本不会在 Homebrew (macOS) 或 WSL (Windows) 之外安装任何东西。 +脚本不会在 Homebrew (macOS) 或 npm (Windows) 之外安装任何东西。 ### macOS @@ -85,13 +84,13 @@ curl -fsSL https://raw.githubusercontent.com/736773174/openclaw-setup-cn/main/in ### Windows -以**管理员身份**打开 PowerShell,运行: +打开 PowerShell,运行: ```powershell iwr -useb https://raw.githubusercontent.com/736773174/openclaw-setup-cn/main/install-windows.ps1 | iex ``` -> **Windows 说明:** 脚本会自动安装 WSL2(Windows 子系统 Linux)。可能需要重启,重启后再次运行脚本即可。 +> **Windows 说明:** 脚本会自动安装 Node.js(通过 winget 或 Chocolatey)+ OpenClaw。如果无法自动安装 Node.js,请先从 [nodejs.cn](https://nodejs.cn/download/) 手动下载安装。 ### 配置流程 diff --git a/configure-aws-bedrock.ps1 b/configure-aws-bedrock.ps1 index c5af4be..f566f17 100644 --- a/configure-aws-bedrock.ps1 +++ b/configure-aws-bedrock.ps1 @@ -1,6 +1,5 @@ # ───────────────────────────────────────────── # OpenClaw AWS Bedrock 配置脚本 (Windows) -# 在 WSL 中运行 bash 配置脚本 # ───────────────────────────────────────────── $ErrorActionPreference = "Stop" @@ -17,59 +16,222 @@ Write-Host "========================================" -ForegroundColor White Write-Host "" # ───────────────────────────────────────────── -# 步骤 1: 检查 WSL -# ───────────────────────────────────────────── -Write-Info "正在检查 WSL 环境..." - -$wslOk = $false -try { - $distros = wsl --list --quiet 2>&1 - if ($LASTEXITCODE -eq 0 -and $distros -match "Ubuntu") { - $wslOk = $true - } -} catch {} - -if (-not $wslOk) { - Write-Err "未找到 WSL2 + Ubuntu。请先运行安装脚本:`niwr -useb https://raw.githubusercontent.com/736773174/openclaw-setup-cn/main/install-windows.ps1 | iex" -} - -Write-Ok "已找到 WSL2 + Ubuntu。" - -# ───────────────────────────────────────────── -# 步骤 2: 检查 OpenClaw +# 步骤 1: 检查 OpenClaw # ───────────────────────────────────────────── Write-Info "正在检查 OpenClaw 安装..." -$openclawCheck = wsl -d Ubuntu-24.04 -- bash -c 'export PATH="$HOME/.openclaw/bin:$PATH" && command -v openclaw || echo NOT_FOUND' 2>&1 - -if ($openclawCheck -match "NOT_FOUND") { +try { + $null = Get-Command openclaw -ErrorAction Stop + Write-Ok "已找到 OpenClaw。" +} catch { Write-Err "未找到 OpenClaw。请先运行安装脚本:`niwr -useb https://raw.githubusercontent.com/736773174/openclaw-setup-cn/main/install-windows.ps1 | iex" } -Write-Ok "已找到 OpenClaw。" - # ───────────────────────────────────────────── -# 步骤 3: 在 WSL 中运行配置脚本 +# 步骤 2: 获取 AWS 凭证 # ───────────────────────────────────────────── -Write-Info "正在 WSL 中启动 AWS Bedrock 配置..." -Write-Host "" +$openclawDir = Join-Path $env:USERPROFILE ".openclaw" +$envFile = Join-Path $openclawDir ".env" +$configFile = Join-Path $openclawDir "openclaw.json" -wsl -d Ubuntu-24.04 -- bash -c 'export PATH="$HOME/.openclaw/bin:$PATH" && curl -fsSL https://raw.githubusercontent.com/736773174/openclaw-setup-cn/main/configure-aws-bedrock.sh | bash -s < /dev/tty' +$skipInput = $false -if ($LASTEXITCODE -ne 0) { - Write-Warn "配置脚本执行过程中遇到问题。" - Write-Host " 你可以手动在 WSL 中运行:" -ForegroundColor Gray - Write-Host " wsl" -ForegroundColor Cyan - Write-Host " curl -fsSL https://raw.githubusercontent.com/736773174/openclaw-setup-cn/main/configure-aws-bedrock.sh | bash" -ForegroundColor Cyan -} else { - Write-Host "" - Write-Host "========================================" -ForegroundColor Green - Write-Host " AWS Bedrock 配置完成!" -ForegroundColor Green - Write-Host "========================================" -ForegroundColor Green - Write-Host "" - Write-Host " 使用方法(在 WSL 中):" -ForegroundColor White - Write-Host " wsl" -ForegroundColor Cyan - Write-Host " source ~/.openclaw/.env" -ForegroundColor Cyan - Write-Host " openclaw tui" -ForegroundColor Cyan - Write-Host "" +if (Test-Path $envFile) { + $envContent = Get-Content $envFile -Raw + if ($envContent -match "AWS_ACCESS_KEY_ID") { + Write-Warn "检测到已存在 AWS 凭证配置" + $useExisting = Read-Host "是否使用现有凭证? [Y/n]" + if ($useExisting -ne "n" -and $useExisting -ne "N") { + $skipInput = $true + # 加载现有凭证 + foreach ($line in (Get-Content $envFile)) { + if ($line -match '^\s*export\s+(\w+)="?([^"]*)"?') { + [Environment]::SetEnvironmentVariable($Matches[1], $Matches[2], "Process") + } + } + Write-Ok "使用现有凭证" + } + } } + +if (-not $skipInput) { + Write-Info "请输入你的 AWS Access Key ID:" + Write-Host "(从 IAM 控制台获取)" -ForegroundColor Yellow + $accessKey = Read-Host + + if ([string]::IsNullOrWhiteSpace($accessKey)) { + Write-Err "AWS Access Key ID 不能为空" + } + + Write-Info "请输入你的 AWS Secret Access Key:" + $secretKey = Read-Host -AsSecureString + $secretKeyPlain = [Runtime.InteropServices.Marshal]::PtrToStringAuto( + [Runtime.InteropServices.Marshal]::SecureStringToBSTR($secretKey) + ) + + if ([string]::IsNullOrWhiteSpace($secretKeyPlain)) { + Write-Err "AWS Secret Access Key 不能为空" + } + + Write-Info "请输入 AWS 区域 (默认: us-west-2):" + $region = Read-Host + if ([string]::IsNullOrWhiteSpace($region)) { + $region = "us-west-2" + } + + $env:AWS_ACCESS_KEY_ID = $accessKey + $env:AWS_SECRET_ACCESS_KEY = $secretKeyPlain + $env:AWS_REGION = $region + + Write-Ok "已获取 AWS 凭证" +} + +# ───────────────────────────────────────────── +# 步骤 3: 创建环境变量文件 +# ───────────────────────────────────────────── +if (-not $skipInput) { + Write-Info "正在创建 $envFile..." + + if (-not (Test-Path $openclawDir)) { + New-Item -ItemType Directory -Path $openclawDir -Force | Out-Null + } + + # 备份 + if (Test-Path $envFile) { + $timestamp = Get-Date -Format "yyyyMMddHHmmss" + Copy-Item $envFile "$envFile.backup.$timestamp" + Write-Warn "已备份现有 .env 文件" + } + + $envContent = @" +# AWS Bedrock Credentials +export AWS_ACCESS_KEY_ID="$($env:AWS_ACCESS_KEY_ID)" +export AWS_SECRET_ACCESS_KEY="$($env:AWS_SECRET_ACCESS_KEY)" +export AWS_REGION="$($env:AWS_REGION)" +"@ + + Set-Content -Path $envFile -Value $envContent -Encoding UTF8 + Write-Ok "已创建环境变量文件" +} + +# ───────────────────────────────────────────── +# 步骤 4: 配置 openclaw.json +# ───────────────────────────────────────────── +Write-Info "正在配置 $configFile..." + +# 备份 +if (Test-Path $configFile) { + $timestamp = Get-Date -Format "yyyyMMddHHmmss" + Copy-Item $configFile "$configFile.backup.$timestamp" + Write-Warn "已备份现有 openclaw.json 文件" +} + +$awsRegion = if ($env:AWS_REGION) { $env:AWS_REGION } else { "us-west-2" } + +$configContent = @" +{ + "gateway": { + "mode": "local" + }, + "models": { + "providers": { + "amazon-bedrock": { + "baseUrl": "https://bedrock-runtime.$awsRegion.amazonaws.com", + "api": "bedrock-converse-stream", + "auth": "aws-sdk", + "models": [ + { + "id": "global.anthropic.claude-opus-4-6-v1", + "name": "Claude Opus 4.6 (Bedrock)", + "reasoning": true, + "input": ["text", "image"], + "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, + "contextWindow": 200000, + "maxTokens": 8192 + }, + { + "id": "global.anthropic.claude-opus-4-5-20251001-v1:0", + "name": "Claude Opus 4.5 (Bedrock)", + "reasoning": true, + "input": ["text", "image"], + "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, + "contextWindow": 200000, + "maxTokens": 8192 + }, + { + "id": "global.anthropic.claude-sonnet-4-5-20250929-v1:0", + "name": "Claude Sonnet 4.5 (Bedrock)", + "reasoning": true, + "input": ["text", "image"], + "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, + "contextWindow": 200000, + "maxTokens": 8192 + }, + { + "id": "global.anthropic.claude-haiku-4-5-20251001-v1:0", + "name": "Claude Haiku 4.5 (Bedrock)", + "reasoning": false, + "input": ["text", "image"], + "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, + "contextWindow": 200000, + "maxTokens": 8192 + } + ] + } + } + }, + "agents": { + "defaults": { + "model": { + "primary": "amazon-bedrock/global.anthropic.claude-sonnet-4-5-20250929-v1:0" + } + } + } +} +"@ + +Set-Content -Path $configFile -Value $configContent -Encoding UTF8 +Write-Ok "已配置 openclaw.json" + +# ───────────────────────────────────────────── +# 步骤 5: 设置环境变量到当前会话 +# ───────────────────────────────────────────── +Write-Info "正在设置环境变量..." + +# 设置为用户级环境变量(持久化) +[Environment]::SetEnvironmentVariable("AWS_ACCESS_KEY_ID", $env:AWS_ACCESS_KEY_ID, "User") +[Environment]::SetEnvironmentVariable("AWS_SECRET_ACCESS_KEY", $env:AWS_SECRET_ACCESS_KEY, "User") +[Environment]::SetEnvironmentVariable("AWS_REGION", $env:AWS_REGION, "User") + +Write-Ok "已设置用户环境变量(新 PowerShell 窗口自动生效)" + +# ───────────────────────────────────────────── +# 步骤 6: 完成 +# ───────────────────────────────────────────── +Write-Host "" +Write-Host "========================================" -ForegroundColor Green +Write-Host " 配置完成!" -ForegroundColor Green +Write-Host "========================================" -ForegroundColor Green +Write-Host "" +Write-Host " 配置摘要:" -ForegroundColor White +Write-Host " Provider: AWS Bedrock" -ForegroundColor Cyan +Write-Host " Region: $awsRegion" -ForegroundColor Cyan +Write-Host " 默认模型: Claude Sonnet 4.5" -ForegroundColor Cyan +Write-Host " 已配置模型:" -ForegroundColor White +Write-Host " * Claude Opus 4.6" -ForegroundColor Cyan +Write-Host " * Claude Opus 4.5" -ForegroundColor Cyan +Write-Host " * Claude Sonnet 4.5" -ForegroundColor Cyan +Write-Host " * Claude Haiku 4.5" -ForegroundColor Cyan +Write-Host "" +Write-Host " 使用方法:" -ForegroundColor White +Write-Host " cd 你的项目路径" -ForegroundColor Gray +Write-Host " openclaw" -ForegroundColor Cyan +Write-Host "" +Write-Host " 测试连接:" -ForegroundColor White +Write-Host " openclaw agent --session-id test --message `"Say OK`" --local" -ForegroundColor Cyan +Write-Host "" +Write-Host " 所需 IAM 权限:" -ForegroundColor White +Write-Host " * bedrock:InvokeModel" -ForegroundColor Yellow +Write-Host " * bedrock:InvokeModelWithResponseStream" -ForegroundColor Yellow +Write-Host " 或使用托管策略:AmazonBedrockFullAccess" -ForegroundColor Yellow +Write-Host "" diff --git a/install-windows.ps1 b/install-windows.ps1 index 602125e..ac5086d 100644 --- a/install-windows.ps1 +++ b/install-windows.ps1 @@ -1,6 +1,6 @@ # ───────────────────────────────────────────── # OpenClaw 一键部署安装脚本 (Windows) -# 安装 WSL2 + Ubuntu,然后在 WSL 中设置 OpenClaw +# 安装 Node.js + OpenClaw,原生 Windows 运行 # ───────────────────────────────────────────── $ErrorActionPreference = "Stop" @@ -21,151 +21,111 @@ function Write-Header { Write-Header # ───────────────────────────────────────────── -# 步骤 1: 检查 / 安装 WSL2 +# 步骤 1: 检查 / 安装 Node.js 22+ # ───────────────────────────────────────────── -Write-Info "正在检查 WSL2 安装..." +Write-Info "正在检查 Node.js..." -$wslInstalled = $false -try { - $wslOutput = wsl --status 2>&1 - if ($LASTEXITCODE -eq 0) { - $wslInstalled = $true - } -} catch { - $wslInstalled = $false -} - -# 检查 WSL 中是否有 Ubuntu -$ubuntuAvailable = $false -if ($wslInstalled) { - $distros = wsl --list --quiet 2>&1 - if ($distros -match "Ubuntu") { - $ubuntuAvailable = $true - } -} - -if (-not $wslInstalled -or -not $ubuntuAvailable) { - Write-Info "正在安装 WSL2 和 Ubuntu 24.04..." - Write-Warn "可能需要重启。重启后请再次运行此脚本。" - - wsl --install -d Ubuntu-24.04 - if ($LASTEXITCODE -ne 0) { - Write-Err "WSL2 安装失败。请手动安装:wsl --install -d Ubuntu-24.04" - } - - Write-Ok "WSL2 + Ubuntu 24.04 安装完成。" - Write-Warn "如果提示重启,请重启计算机后再次运行此脚本。" - - # 检查是否需要重启 - $restartNeeded = $false - try { - wsl --status 2>&1 | Out-Null - if ($LASTEXITCODE -ne 0) { $restartNeeded = $true } - } catch { - $restartNeeded = $true - } - - if ($restartNeeded) { - Write-Host "" - Write-Warn "需要重启才能完成 WSL2 安装。" - Write-Host "重启后,请再次运行此脚本。" -ForegroundColor Yellow - Write-Host "" - Read-Host "按 Enter 键退出" - exit 0 - } -} else { - Write-Ok "已找到 WSL2 和 Ubuntu。" -} - -# ───────────────────────────────────────────── -# 步骤 2: 在 WSL 中启用 systemd -# ───────────────────────────────────────────── -Write-Info "正在配置 WSL 中的 systemd..." - -$checkSystemd = wsl -d Ubuntu-24.04 -- bash -c "cat /etc/wsl.conf 2>/dev/null || echo ''" -if ($checkSystemd -notmatch "systemd=true") { - wsl -d Ubuntu-24.04 -- bash -c "echo '[boot]' | sudo tee /etc/wsl.conf > /dev/null && echo 'systemd=true' | sudo tee -a /etc/wsl.conf > /dev/null" - Write-Ok "已在 /etc/wsl.conf 中启用 systemd" - - # ───────────────────────────────────────── - # 步骤 3: 重启 WSL - # ───────────────────────────────────────── - Write-Info "正在重启 WSL 以应用 systemd..." - wsl --shutdown - Start-Sleep -Seconds 3 - Write-Ok "WSL 已重启。" -} else { - Write-Ok "systemd 已启用。" -} - -# ───────────────────────────────────────────── -# 步骤 4: 在 WSL 中安装 Node 22+ -# ───────────────────────────────────────────── -Write-Info "正在检查 WSL 中的 Node.js..." - -$nodeCheck = wsl -d Ubuntu-24.04 -- bash -c "command -v node && node -v || echo 'NOT_FOUND'" 2>&1 $needsNode = $true -if ($nodeCheck -notmatch "NOT_FOUND" -and $nodeCheck -match "v(\d+)") { - $nodeVersion = [int]$Matches[1] - if ($nodeVersion -ge 22) { - Write-Ok "WSL 中已找到 Node.js v$nodeVersion (>= 22)。" - $needsNode = $false - } else { - Write-Warn "WSL 中已找到 Node.js v$nodeVersion,但需要 >= 22。正在升级..." +try { + $nodeVersion = (node -v 2>$null) + if ($nodeVersion -match "v(\d+)") { + $major = [int]$Matches[1] + if ($major -ge 22) { + Write-Ok "已找到 Node.js $nodeVersion" + $needsNode = $false + } else { + Write-Warn "已找到 Node.js $nodeVersion,但需要 v22+,正在升级..." + } } -} else { - Write-Warn "WSL 中未找到 Node.js。" +} catch { + Write-Warn "未找到 Node.js。" } if ($needsNode) { - Write-Info "正在通过 NodeSource 在 WSL 中安装 Node.js 22..." + Write-Info "正在安装 Node.js 22..." - $installNodeScript = @' -set -e -curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - -sudo apt-get install -y nodejs -node -v -'@ + $installed = $false - wsl -d Ubuntu-24.04 -- bash -c $installNodeScript - if ($LASTEXITCODE -ne 0) { - Write-Err "WSL 中 Node.js 安装失败。" + # 方式 1: winget(Windows 11 / Windows 10 自带) + if (-not $installed -and (Get-Command winget -ErrorAction SilentlyContinue)) { + Write-Info "使用 winget 安装..." + winget install OpenJS.NodeJS.LTS --accept-package-agreements --accept-source-agreements + if ($LASTEXITCODE -eq 0) { + $installed = $true + Write-Ok "Node.js 已通过 winget 安装" + } } - Write-Ok "WSL 中 Node.js 22 安装完成。" -} -# ───────────────────────────────────────────── -# 步骤 5: 在 WSL 中安装 OpenClaw -# ───────────────────────────────────────────── -Write-Info "正在在 WSL 中安装 OpenClaw..." - -$openclawCheck = wsl -d Ubuntu-24.04 -- bash -c "command -v openclaw || echo 'NOT_FOUND'" 2>&1 - -if ($openclawCheck -match "NOT_FOUND") { - wsl -d Ubuntu-24.04 -- bash -c "curl -fsSL https://openclaw.ai/install.sh | bash -s -- --no-onboard" - if ($LASTEXITCODE -ne 0) { - Write-Err "WSL 中 OpenClaw 安装失败。" + # 方式 2: Chocolatey + if (-not $installed -and (Get-Command choco -ErrorAction SilentlyContinue)) { + Write-Info "使用 Chocolatey 安装..." + choco install nodejs-lts -y + if ($LASTEXITCODE -eq 0) { + $installed = $true + Write-Ok "Node.js 已通过 Chocolatey 安装" + } + } + + # 方式 3: 手动下载提示 + if (-not $installed) { + Write-Host "" + Write-Err "无法自动安装 Node.js。请手动安装后重新运行此脚本:`n`n 下载地址:https://nodejs.cn/download/`n 或:https://nodejs.org/en/download/`n`n 安装完成后重新打开 PowerShell 运行此脚本。" + } + + # 刷新 PATH + $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") + + # 验证安装 + try { + $nodeVersion = (node -v 2>$null) + Write-Ok "Node.js $nodeVersion 安装成功" + } catch { + Write-Err "Node.js 安装后验证失败。请关闭 PowerShell 重新打开后再试。" } - Write-Ok "WSL 中 OpenClaw 安装完成。" -} else { - Write-Ok "WSL 中已安装 OpenClaw。" } # ───────────────────────────────────────────── -# 步骤 6: 安装 OpenClaw 网关守护进程 +# 步骤 2: 安装 OpenClaw # ───────────────────────────────────────────── -Write-Info "正在安装 OpenClaw 网关守护进程..." +Write-Info "正在检查 OpenClaw..." -wsl -d Ubuntu-24.04 -- bash -c 'export PATH="$HOME/.openclaw/bin:$PATH" && openclaw gateway install' -if ($LASTEXITCODE -ne 0) { - Write-Warn "网关守护进程安装遇到问题。您可以稍后使用以下命令安装:openclaw gateway install" -} else { - Write-Ok "网关守护进程安装完成。" +$needsInstall = $true + +try { + $null = Get-Command openclaw -ErrorAction Stop + Write-Ok "已找到 OpenClaw。" + $needsInstall = $false +} catch { + Write-Info "正在安装 OpenClaw..." +} + +if ($needsInstall) { + npm install -g openclaw@latest + if ($LASTEXITCODE -ne 0) { + Write-Err "OpenClaw 安装失败。请手动运行:npm install -g openclaw@latest" + } + + # 刷新 PATH + $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") + + # 把 npm global bin 加到 PATH + try { + $npmPrefix = (npm config get prefix 2>$null).Trim() + if ($npmPrefix) { + $userPath = [Environment]::GetEnvironmentVariable("Path", "User") + if (-not ($userPath -split ";" | Where-Object { $_ -ieq $npmPrefix })) { + [Environment]::SetEnvironmentVariable("Path", "$userPath;$npmPrefix", "User") + $env:Path += ";$npmPrefix" + } + } + } catch {} + + Write-Ok "OpenClaw 安装完成。" } # ───────────────────────────────────────────── -# 步骤 7: 启动交互式配置 +# 步骤 3: 启动交互式配置 # ───────────────────────────────────────────── Write-Host "" Write-Host "========================================" -ForegroundColor Green @@ -177,7 +137,7 @@ Write-Host " 选择 MiniMax 可获得 7天免费试用 - 无需信用卡。" -F Write-Host " 注册地址:https://platform.minimax.io" -ForegroundColor Cyan Write-Host "" -wsl -d Ubuntu-24.04 -- bash -c 'export PATH="$HOME/.openclaw/bin:$PATH" && openclaw onboard --accept-risk --flow quickstart --node-manager npm --skip-skills < /dev/tty' +openclaw onboard --accept-risk --flow quickstart --node-manager npm --skip-skills Write-Host "" Write-Host "========================================" -ForegroundColor Green @@ -185,7 +145,8 @@ Write-Host " 配置完成!" -ForegroundColor Green Write-Host "========================================" -ForegroundColor Green Write-Host "" Write-Host " 接下来:" -ForegroundColor White -Write-Host " 1. 开始使用 OpenClaw:openclaw(在 WSL 中)" -ForegroundColor Gray -Write-Host " 2. 添加技能(可选):openclaw configure --section skills" -ForegroundColor Gray -Write-Host " 3. 浏览可用技能:openclaw skills" -ForegroundColor Gray +Write-Host " 1. 进入项目目录:cd 你的项目路径" -ForegroundColor Gray +Write-Host " 2. 开始使用 OpenClaw:openclaw" -ForegroundColor Gray +Write-Host " 3. 添加技能(可选):openclaw configure --section skills" -ForegroundColor Gray +Write-Host " 4. 浏览可用技能:openclaw skills" -ForegroundColor Gray Write-Host ""