- Node v22.14.0 → v22.16.0 in all install scripts - Config: remove deprecated agent.* format, use minimal gateway-only config - OpenClaw auto-migrates agent config on first run
80 lines
3.3 KiB
PowerShell
80 lines
3.3 KiB
PowerShell
# U-Claw 快速完成安装(Node已装好,只需下载bundle+配置)
|
||
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
||
$ErrorActionPreference = "Continue"
|
||
|
||
$UCLAW = "$env:USERPROFILE\.uclaw"
|
||
$NODE = "$UCLAW\runtime\node-win-x64\node.exe"
|
||
$CORE = "$UCLAW\core"
|
||
$DATA = "$UCLAW\data"
|
||
|
||
# 确保目录存在
|
||
@("$UCLAW\runtime","$CORE","$DATA\.openclaw","$DATA\memory","$DATA\backups") | ForEach-Object {
|
||
New-Item -ItemType Directory -Force -Path $_ -ErrorAction SilentlyContinue | Out-Null
|
||
}
|
||
|
||
# Step 1: Node
|
||
if (-not (Test-Path $NODE)) {
|
||
Write-Host "下载 Node.js..."
|
||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||
$ProgressPreference = 'SilentlyContinue'
|
||
Invoke-WebRequest -Uri "https://npmmirror.com/mirrors/node/v22.14.0/node-v22.16.0-win-x64.zip" -OutFile "$env:TEMP\node.zip" -UseBasicParsing
|
||
Expand-Archive "$env:TEMP\node.zip" "$env:TEMP\node-ext" -Force
|
||
Move-Item "$env:TEMP\node-ext\node-v22.16.0-win-x64" "$UCLAW\runtime\node-win-x64" -Force
|
||
Remove-Item "$env:TEMP\node.zip","$env:TEMP\node-ext" -Recurse -Force -ErrorAction SilentlyContinue
|
||
}
|
||
Write-Host "[OK] Node: $(& $NODE --version)"
|
||
|
||
# Step 2: OpenClaw bundle
|
||
if (-not (Test-Path "$CORE\node_modules\openclaw\openclaw.mjs")) {
|
||
Write-Host "下载 OpenClaw..."
|
||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||
$ProgressPreference = 'SilentlyContinue'
|
||
$url = "https://ghfast.top/https://github.com/dongsheng123132/u-claw/releases/download/v1.0.0-bundle/openclaw-bundle.zip"
|
||
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\oc.zip" -UseBasicParsing -TimeoutSec 300
|
||
Write-Host "解压中..."
|
||
Expand-Archive "$env:TEMP\oc.zip" "$CORE" -Force
|
||
Remove-Item "$env:TEMP\oc.zip" -Force -ErrorAction SilentlyContinue
|
||
}
|
||
Write-Host "[OK] OpenClaw: $(Test-Path "$CORE\node_modules\openclaw\openclaw.mjs")"
|
||
|
||
# Step 3: 默认配置 (DeepSeek)
|
||
$cfg = "$DATA\.openclaw\openclaw.json"
|
||
if (-not (Test-Path $cfg)) {
|
||
$json = '{"gateway":{"mode":"local","auth":{"token":"uclaw"}}}'
|
||
[IO.File]::WriteAllText($cfg, $json, (New-Object System.Text.UTF8Encoding $false))
|
||
}
|
||
Write-Host "[OK] Config"
|
||
|
||
# Step 4: 启动脚本
|
||
$bat = @"
|
||
@echo off
|
||
setlocal EnableDelayedExpansion
|
||
chcp 65001 >nul 2>&1
|
||
title U-Claw
|
||
set "DIR=%~dp0"
|
||
set "NODE_BIN=%DIR%runtime\node-win-x64\node.exe"
|
||
if not exist "%NODE_BIN%" set "NODE_BIN=node"
|
||
set "OPENCLAW_MJS=%DIR%core\node_modules\openclaw\openclaw.mjs"
|
||
set "OPENCLAW_HOME=%DIR%data"
|
||
set "OPENCLAW_STATE_DIR=%DIR%data\.openclaw"
|
||
set "OPENCLAW_CONFIG_PATH=%DIR%data\.openclaw\openclaw.json"
|
||
set PORT=18789
|
||
:check_port
|
||
netstat -an | findstr ":%PORT% " | findstr "LISTENING" >nul 2>&1
|
||
if %errorlevel%==0 (set /a PORT+=1 & if !PORT! gtr 18799 (echo No port & pause & exit /b 1) & goto :check_port)
|
||
cd /d "%DIR%core"
|
||
start /B "" cmd /c "timeout /t 3 /nobreak >nul && start http://127.0.0.1:!PORT!/#token=uclaw"
|
||
"%NODE_BIN%" "%OPENCLAW_MJS%" gateway run --allow-unconfigured --force --port !PORT!
|
||
pause
|
||
"@
|
||
[IO.File]::WriteAllText("$UCLAW\start.bat", $bat, (New-Object System.Text.ASCIIEncoding))
|
||
Write-Host "[OK] start.bat"
|
||
|
||
# Step 5: 验证
|
||
Write-Host ""
|
||
Write-Host "===== 安装完成 ====="
|
||
Write-Host "Node: $(& $NODE --version)"
|
||
Write-Host "OpenClaw: $(if(Test-Path "$CORE\node_modules\openclaw\openclaw.mjs"){'OK'}else{'FAIL'})"
|
||
Write-Host "启动: 双击 $UCLAW\start.bat"
|
||
Write-Host "====="
|