Files
u-claw/portable/Windows-Diagnose.bat
hfshfg 3f6f960ffc fix: 修复 bat 编码乱码、Config.html 打不开、missing scope 问题
- fix(bat): 所有 Windows .bat 文件加 UTF-8 BOM,修复中文乱码
  (portable 和 usb-release 共 7 个文件,close #3)
- fix(usb-release/Windows-Start.bat): 首次启动打开 Config.html
  时补加 file:/// 前缀,修复浏览器无法打开本地文件的问题
  (close #12)
- fix(Config.html): gateway.auth 加入 scopes: ['operator.admin'],
  修复配置模型时报 missing scope: operator.admin 错误
  (portable / usb-release / u-claw-app 三个版本同步,close #11)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01 09:31:16 +08:00

187 lines
6.1 KiB
Batchfile

@echo off
setlocal EnableDelayedExpansion
chcp 65001 >nul 2>&1
title U-Claw - Diagnostic Tool
set "UCLAW_DIR=%~dp0"
set "LOG_FILE=%UCLAW_DIR%diagnostic-log.txt"
echo.
echo ========================================
echo U-Claw Diagnostic Tool
echo ========================================
echo.
echo Checking system...
echo.
REM Clear old log
echo U-Claw Diagnostic Report > "%LOG_FILE%"
echo Generated: %date% %time% >> "%LOG_FILE%"
echo ======================================== >> "%LOG_FILE%"
echo. >> "%LOG_FILE%"
REM System info
echo System Info: >> "%LOG_FILE%"
for /f "tokens=2 delims==" %%v in ('wmic os get Version /format:list 2^>nul ^| findstr "="') do echo Windows Version: %%v >> "%LOG_FILE%"
for /f "tokens=2 delims==" %%v in ('wmic os get OSArchitecture /format:list 2^>nul ^| findstr "="') do echo Architecture: %%v >> "%LOG_FILE%"
echo. >> "%LOG_FILE%"
REM 1. Check Node.js
echo [1/7] 检查 Node.js 运行环境...
set "NODE_BIN=%UCLAW_DIR%app\runtime\node-win-x64\node.exe"
set "ERROR_COUNT=0"
if exist "%NODE_BIN%" (
echo [OK] Node.js found >> "%LOG_FILE%"
for /f "tokens=*" %%v in ('"%NODE_BIN%" --version 2^>^&1') do (
echo Version: %%v >> "%LOG_FILE%"
echo ✓ Node.js 运行环境: %%v
)
) else (
echo [ERROR] Node.js not found >> "%LOG_FILE%"
echo ✗ Node.js 运行环境: 缺失
echo Path: %NODE_BIN% >> "%LOG_FILE%"
set /a ERROR_COUNT+=1
)
REM Migration shim: rename old core-win to core for existing USB users
if exist "%UCLAW_DIR%app\core-win" if not exist "%UCLAW_DIR%app\core" ren "%UCLAW_DIR%app\core-win" core
REM 2. Check core directory
echo [2/7] 检查依赖目录...
set "CORE_DIR=%UCLAW_DIR%app\core"
if exist "%CORE_DIR%" (
echo [OK] core directory exists >> "%LOG_FILE%"
echo ✓ 依赖目录: 正常
) else (
echo [ERROR] core directory not found >> "%LOG_FILE%"
echo ✗ 依赖目录: 缺失
set /a ERROR_COUNT+=1
)
REM 3. Check node_modules
echo [3/7] 检查 npm 依赖包...
if exist "%CORE_DIR%\node_modules" (
echo [OK] node_modules exists >> "%LOG_FILE%"
echo ✓ npm 依赖包: 已安装
) else (
echo [ERROR] node_modules not found >> "%LOG_FILE%"
echo ✗ npm 依赖包: 未安装
set /a ERROR_COUNT+=1
)
REM 4. Check OpenClaw
echo [4/7] 检查 OpenClaw 核心文件...
set "OPENCLAW_MJS=%CORE_DIR%\node_modules\openclaw\openclaw.mjs"
if exist "%OPENCLAW_MJS%" (
echo [OK] openclaw.mjs found >> "%LOG_FILE%"
echo ✓ OpenClaw 核心: 正常
) else (
echo [ERROR] openclaw.mjs not found >> "%LOG_FILE%"
echo ✗ OpenClaw 核心: 缺失
echo Path: %OPENCLAW_MJS% >> "%LOG_FILE%"
set /a ERROR_COUNT+=1
)
REM 5. Check config
echo [5/7] 检查配置文件...
set "STATE_DIR=%UCLAW_DIR%data\.openclaw"
if exist "%STATE_DIR%\openclaw.json" (
echo [OK] Config file exists >> "%LOG_FILE%"
echo ✓ 配置文件: 正常
REM Check if model is configured
findstr /c:"model" "%STATE_DIR%\openclaw.json" >nul 2>&1
if !errorlevel!==0 (
echo ✓ AI 模型: 已配置
) else (
echo ⚠ AI 模型: 未配置(首次使用请先配置)
)
) else (
echo [WARNING] Config not found >> "%LOG_FILE%"
echo ⚠ 配置文件: 未创建(首次启动会自动创建)
)
REM 6. Check port availability
echo [6/7] 检查端口占用...
set "PORT_ISSUE=0"
for /l %%p in (18789,1,18799) do (
netstat -an | findstr ":%%p " | findstr "LISTENING" >nul 2>&1
if !errorlevel!==0 (
echo [WARNING] Port %%p is in use >> "%LOG_FILE%"
echo ⚠ 端口 %%p: 已被占用
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%%p " ^| findstr "LISTENING"') do (
echo PID: %%a >> "%LOG_FILE%"
)
set "PORT_ISSUE=1"
)
)
if "!PORT_ISSUE!"=="0" (
echo [OK] Ports 18789-18799 available >> "%LOG_FILE%"
echo ✓ 端口 18789-18799: 全部可用
)
REM 7. Test OpenClaw startup
echo [7/7] 测试 OpenClaw 启动...
echo. >> "%LOG_FILE%"
echo Testing OpenClaw startup: >> "%LOG_FILE%"
echo ---------------------------------------- >> "%LOG_FILE%"
set "OPENCLAW_HOME=%UCLAW_DIR%data"
set "OPENCLAW_STATE_DIR=%UCLAW_DIR%data\.openclaw"
set "OPENCLAW_CONFIG_PATH=%OPENCLAW_STATE_DIR%\openclaw.json"
if exist "%NODE_BIN%" if exist "%OPENCLAW_MJS%" (
cd /d "%CORE_DIR%"
for /f "tokens=*" %%v in ('"%NODE_BIN%" "%OPENCLAW_MJS%" --version 2^>^&1') do (
echo %%v >> "%LOG_FILE%"
echo ✓ OpenClaw 启动测试: 通过 (%%v^)
)
if !errorlevel! neq 0 (
echo ✗ OpenClaw 启动测试: 失败
echo [ERROR] OpenClaw failed to start >> "%LOG_FILE%"
set /a ERROR_COUNT+=1
)
) else (
echo ⚠ OpenClaw 启动测试: 跳过(文件缺失)
echo [SKIP] Cannot test - required files missing >> "%LOG_FILE%"
)
REM Disk space check
echo. >> "%LOG_FILE%"
echo Disk Space: >> "%LOG_FILE%"
for /f "tokens=*" %%s in ('powershell -command "(Get-ChildItem '%UCLAW_DIR%' -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum / 1MB" 2^>nul') do (
echo Total size: %%s MB >> "%LOG_FILE%"
)
echo.
echo. >> "%LOG_FILE%"
echo ======================================== >> "%LOG_FILE%"
echo Diagnostic complete. >> "%LOG_FILE%"
echo Error count: !ERROR_COUNT! >> "%LOG_FILE%"
echo ========================================
echo 诊断完成
echo ========================================
echo.
if !ERROR_COUNT!==0 (
echo ✅ 检查结果: 全部正常!
echo 所有必需的组件都已就绪,可以正常使用。
echo.
echo 下一步:
echo - 双击 Windows-Start.bat 启动服务
echo - 或双击 Config.html 配置 AI 模型
) else (
echo ❌ 检查结果: 发现 !ERROR_COUNT! 个问题
echo.
echo 解决方案:
echo 1. 查看 diagnostic-log.txt 了解详细错误
echo 2. 尝试重新运行 Windows-Start.bat
echo (会自动安装缺失的依赖)
echo 3. 如问题仍然存在,访问:
echo github.com/dongsheng123132/u-claw
)
echo.
echo 诊断日志已保存: diagnostic-log.txt
echo.
pause