feat: v1.1 - simplified menus, pre-installed QQ plugin, updated README
- Simplify menus from 17 to 8 options (config, dashboard, QQ, platforms, diagnostics, backup, restore, sysinfo) - Pre-install QQ bot plugin (@sliverp/qqbot) - users only need AppID + Secret - Install scripts now extract next to themselves (works on USB or computer) - Rename all scripts to English (Mac-Install, Windows-Install, Mac-Start, etc.) - Add README.txt for USB drive with bilingual instructions - Rewrite README.md to match current v1.1 structure - Remove old Chinese-named scripts, build script, test files, QR images - Add Toolkit/ and U-Claw-CN/ to .gitignore
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
chcp 65001 >/dev/null 2>&1
|
||||
title U-Claw - Full Menu
|
||||
title U-Claw Menu
|
||||
|
||||
set "UCLAW_DIR=%~dp0"
|
||||
set "CORE_DIR=%UCLAW_DIR%app\core"
|
||||
@@ -8,12 +8,11 @@ set "DATA_DIR=%UCLAW_DIR%data"
|
||||
set "STATE_DIR=%DATA_DIR%\.openclaw"
|
||||
set "NODE_DIR=%UCLAW_DIR%app\runtime\node-win-x64"
|
||||
set "NODE_BIN=%NODE_DIR%\node.exe"
|
||||
set "NPM_BIN=%NODE_DIR%\npm.cmd"
|
||||
|
||||
set "OPENCLAW_HOME=%DATA_DIR%"
|
||||
set "OPENCLAW_STATE_DIR=%STATE_DIR%"
|
||||
set "OPENCLAW_CONFIG_PATH=%STATE_DIR%\openclaw.json"
|
||||
set "PATH=%NODE_DIR%;%NODE_DIR%\node_modules\.bin;%PATH%"
|
||||
set "PATH=%NODE_DIR%;%PATH%"
|
||||
|
||||
if not exist "%STATE_DIR%" mkdir "%STATE_DIR%"
|
||||
if not exist "%DATA_DIR%\memory" mkdir "%DATA_DIR%\memory"
|
||||
@@ -23,184 +22,63 @@ if not exist "%DATA_DIR%\backups" mkdir "%DATA_DIR%\backups"
|
||||
cls
|
||||
echo.
|
||||
echo ========================================
|
||||
echo U-Claw v1.1 - Full Menu
|
||||
echo U-Claw v1.1 - Menu
|
||||
echo Portable AI Agent
|
||||
echo ========================================
|
||||
echo.
|
||||
|
||||
if exist "%NODE_BIN%" (
|
||||
for /f "tokens=*" %%v in ('"%NODE_BIN%" --version') do echo Node.js: %%v
|
||||
for /f "tokens=*" %%v in ('"%%NODE_BIN%%" --version') do echo Node: %%v
|
||||
) else (
|
||||
echo [!] Node.js not found
|
||||
)
|
||||
if exist "%CORE_DIR%\node_modules" (echo Dependencies: OK) else (echo Dependencies: NOT INSTALLED)
|
||||
if exist "%CORE_DIR%\dist" (echo Build: OK) else (echo Build: NOT BUILT)
|
||||
if exist "%STATE_DIR%\openclaw.json" (echo Config: OK) else (echo Config: NOT SET)
|
||||
echo.
|
||||
echo -- Start --
|
||||
echo [1] Quick start (gateway + browser)
|
||||
echo [2] Setup wizard (choose model, API key)
|
||||
echo -- Config --
|
||||
echo [1] Setup wizard (model, API key)
|
||||
echo [2] Open web dashboard
|
||||
echo.
|
||||
echo -- China Platforms --
|
||||
echo [3] QQ Bot setup (Tencent official)
|
||||
echo [4] Feishu / DingTalk / WeChat
|
||||
echo.
|
||||
echo -- Skills --
|
||||
echo [5] Browse pre-installed skills (52)
|
||||
echo [6] Install skill from ClawHub
|
||||
echo -- Chat Platforms --
|
||||
echo [3] QQ Bot (pre-installed, enter ID only)
|
||||
echo [4] Other platforms (Feishu/Telegram/WeChat)
|
||||
echo.
|
||||
echo -- Maintenance --
|
||||
echo [7] Diagnostics (openclaw doctor)
|
||||
echo [8] Backup config and memory
|
||||
echo [9] Restore backup
|
||||
echo [10] Reset (factory default)
|
||||
echo [5] Diagnostics
|
||||
echo [6] Backup config
|
||||
echo [7] Restore backup
|
||||
echo [8] System info
|
||||
echo.
|
||||
echo -- Other --
|
||||
echo [11] Open web dashboard
|
||||
echo [12] System info
|
||||
echo [13] Set China mirror
|
||||
echo [0] Exit
|
||||
echo.
|
||||
set /p choice=" Choose [0-13]: "
|
||||
set /p choice=" Choose [0-8]: "
|
||||
|
||||
if "%choice%"=="1" goto :start
|
||||
if "%choice%"=="2" goto :onboard
|
||||
if "%choice%"=="1" goto :onboard
|
||||
if "%choice%"=="2" goto :dashboard
|
||||
if "%choice%"=="3" goto :qqbot
|
||||
if "%choice%"=="4" goto :channels
|
||||
if "%choice%"=="5" goto :skills
|
||||
if "%choice%"=="6" goto :install_skill
|
||||
if "%choice%"=="7" goto :doctor
|
||||
if "%choice%"=="8" goto :backup
|
||||
if "%choice%"=="9" goto :restore
|
||||
if "%choice%"=="10" goto :reset
|
||||
if "%choice%"=="11" goto :dashboard
|
||||
if "%choice%"=="12" goto :sysinfo
|
||||
if "%choice%"=="13" goto :mirror
|
||||
if "%choice%"=="5" goto :doctor
|
||||
if "%choice%"=="6" goto :backup
|
||||
if "%choice%"=="7" goto :restore
|
||||
if "%choice%"=="8" goto :sysinfo
|
||||
if "%choice%"=="0" exit /b 0
|
||||
echo Invalid choice
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:start
|
||||
call "%UCLAW_DIR%start.bat"
|
||||
goto :end
|
||||
|
||||
:onboard
|
||||
echo.
|
||||
echo === Setup Wizard ===
|
||||
echo.
|
||||
echo DeepSeek - Custom Provider, URL: https://api.deepseek.com/v1
|
||||
echo Kimi - Moonshot AI
|
||||
echo Qwen - Qwen
|
||||
echo Doubao - Volcano Engine
|
||||
echo.
|
||||
cd /d "%CORE_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs onboard
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:qqbot
|
||||
echo.
|
||||
echo === QQ Bot Setup (Tencent Official) ===
|
||||
echo.
|
||||
echo 1. Register: http://q.qq.com/qqbot/openclaw/login.html
|
||||
echo 2. Create bot, get AppID and AppSecret
|
||||
echo 3. Run these commands:
|
||||
echo.
|
||||
echo openclaw plugins install @sliverp/qqbot@latest
|
||||
echo openclaw channels add --channel qqbot --token "AppID:AppSecret"
|
||||
echo openclaw config set channels.qqbot.allowFrom "your_qq_number"
|
||||
echo openclaw gateway restart
|
||||
echo.
|
||||
set /p qqinstall=" Install QQ plugin now? (y/n): "
|
||||
if /i "%qqinstall%"=="y" (
|
||||
cd /d "%CORE_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs plugins install @sliverp/qqbot@latest
|
||||
echo.
|
||||
set /p qqid=" AppID: "
|
||||
set /p qqsecret=" AppSecret: "
|
||||
if not "%qqid%"=="" if not "%qqsecret%"=="" (
|
||||
"%NODE_BIN%" openclaw.mjs channels add --channel qqbot --token "%qqid%:%qqsecret%"
|
||||
set /p qqallow=" Your QQ number (allowlist): "
|
||||
if not "%qqallow%"=="" "%NODE_BIN%" openclaw.mjs config set channels.qqbot.allowFrom "%qqallow%"
|
||||
echo QQ Bot configured!
|
||||
)
|
||||
)
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:channels
|
||||
echo.
|
||||
echo === Chat Platforms ===
|
||||
echo.
|
||||
echo [a] Feishu - https://open.feishu.cn/app
|
||||
echo [b] WeChat - openclaw plugins install @icesword760/openclaw-wechat
|
||||
echo [c] DingTalk - built-in
|
||||
echo [d] Telegram / Discord / WhatsApp / Slack - built-in
|
||||
echo.
|
||||
echo Use [2] Setup wizard to configure these platforms.
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:skills
|
||||
echo.
|
||||
echo === Pre-installed Skills (52) ===
|
||||
echo.
|
||||
echo Productivity: github, coding-agent, summarize, nano-pdf, clawhub
|
||||
echo Notes: apple-notes, obsidian, notion, trello, bear-notes
|
||||
echo AI: openai-image-gen, openai-whisper, gemini, sherpa-onnx-tts
|
||||
echo Social: himalaya (email), discord, slack, wacli (WhatsApp)
|
||||
echo System: weather, peekaboo, tmux, healthcheck, 1password
|
||||
echo IoT: openhue, sonoscli, eightctl, camsnap
|
||||
echo.
|
||||
echo Use "openclaw skills list" for full list.
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:install_skill
|
||||
echo.
|
||||
set /p skillname=" Skill name: "
|
||||
if not "%skillname%"=="" (
|
||||
cd /d "%CORE_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs skills install %skillname%
|
||||
)
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:doctor
|
||||
cd /d "%CORE_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs doctor --repair
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:backup
|
||||
echo.
|
||||
set "TIMESTAMP=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%"
|
||||
set "TIMESTAMP=%TIMESTAMP: =0%"
|
||||
set "BACKUP_PATH=%DATA_DIR%\backups\backup_%TIMESTAMP%"
|
||||
mkdir "%BACKUP_PATH%" 2>/dev/null
|
||||
if exist "%STATE_DIR%\openclaw.json" copy "%STATE_DIR%\openclaw.json" "%BACKUP_PATH%\" >/dev/null
|
||||
if exist "%DATA_DIR%\memory" xcopy /s /q "%DATA_DIR%\memory" "%BACKUP_PATH%\memory\" >/dev/null 2>/dev/null
|
||||
echo Backup saved to: %BACKUP_PATH%
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:restore
|
||||
echo.
|
||||
echo Backups:
|
||||
dir /b "%DATA_DIR%\backups\" 2>/dev/null
|
||||
echo.
|
||||
set /p restorename=" Backup folder name: "
|
||||
if exist "%DATA_DIR%\backups\%restorename%\openclaw.json" (
|
||||
copy "%DATA_DIR%\backups\%restorename%\openclaw.json" "%STATE_DIR%\" >/dev/null
|
||||
echo Config restored!
|
||||
)
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:reset
|
||||
echo.
|
||||
echo WARNING: This will reset your config!
|
||||
set /p confirm=" Type YES to confirm: "
|
||||
if "%confirm%"=="YES" (
|
||||
del "%STATE_DIR%\openclaw.json" 2>/dev/null
|
||||
echo {"gateway":{"mode":"local","auth":{"token":"uclaw"}}} > "%STATE_DIR%\openclaw.json"
|
||||
echo Reset complete.
|
||||
)
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:dashboard
|
||||
echo.
|
||||
echo Starting gateway...
|
||||
@@ -221,22 +99,82 @@ start "" http://127.0.0.1:%PORT%/#token=uclaw
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:qqbot
|
||||
echo.
|
||||
echo === QQ Bot Setup ===
|
||||
echo.
|
||||
echo QQ plugin is pre-installed!
|
||||
echo You only need your AppID and AppSecret.
|
||||
echo.
|
||||
echo Get them at: q.qq.com (create a bot)
|
||||
echo.
|
||||
set /p qqid=" AppID: "
|
||||
set /p qqsecret=" AppSecret: "
|
||||
if "%qqid%"=="" goto :qq_cancel
|
||||
if "%qqsecret%"=="" goto :qq_cancel
|
||||
cd /d "%CORE_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs channels add --channel qqbot --token "%qqid%:%qqsecret%"
|
||||
echo.
|
||||
set /p qqallow=" Your QQ number (allowlist, empty to skip): "
|
||||
if not "%qqallow%"=="" "%NODE_BIN%" openclaw.mjs config set channels.qqbot.allowFrom "%qqallow%"
|
||||
echo.
|
||||
echo QQ Bot configured! Restart gateway to apply.
|
||||
pause
|
||||
goto :menu
|
||||
:qq_cancel
|
||||
echo Cancelled.
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:channels
|
||||
echo.
|
||||
echo === Other Platforms ===
|
||||
echo.
|
||||
echo Feishu: Built-in. Use [1] Setup wizard.
|
||||
echo Telegram: Built-in. Use [1] Setup wizard.
|
||||
echo Discord: Built-in. Use [1] Setup wizard.
|
||||
echo WeChat: Community plugin.
|
||||
echo.
|
||||
echo Use Setup wizard [1] to configure these.
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:doctor
|
||||
cd /d "%CORE_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs doctor --repair
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:backup
|
||||
echo.
|
||||
set "TS=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%"
|
||||
set "TS=%TS: =0%"
|
||||
set "BK=%DATA_DIR%\backups\backup_%TS%"
|
||||
mkdir "%BK%" 2>nul
|
||||
if exist "%STATE_DIR%\openclaw.json" copy "%STATE_DIR%\openclaw.json" "%BK%\" >nul
|
||||
if exist "%DATA_DIR%\memory" xcopy /s /q "%DATA_DIR%\memory" "%BK%\memory\" >/dev/null 2>nul
|
||||
echo Backup saved: %BK%
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:restore
|
||||
echo.
|
||||
echo Available backups:
|
||||
dir /b "%DATA_DIR%\backups\" 2>nul
|
||||
echo.
|
||||
set /p rname=" Backup folder name: "
|
||||
if exist "%DATA_DIR%\backups\%rname%\openclaw.json" (
|
||||
copy "%DATA_DIR%\backups\%rname%\openclaw.json" "%STATE_DIR%\" >nul
|
||||
echo Config restored!
|
||||
)
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:sysinfo
|
||||
echo.
|
||||
echo OS: Windows
|
||||
echo Node:
|
||||
"%NODE_BIN%" --version
|
||||
echo U-Claw: %UCLAW_DIR%
|
||||
echo Path: %UCLAW_DIR%
|
||||
echo Data: %DATA_DIR%
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:mirror
|
||||
echo.
|
||||
cd /d "%CORE_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" config set registry https://registry.npmmirror.com --location=project
|
||||
echo npm mirror set to: registry.npmmirror.com
|
||||
pause
|
||||
goto :menu
|
||||
|
||||
:end
|
||||
goto :menu
|
||||
Reference in New Issue
Block a user