feat: add navigation page and rename scripts to English prefixes

- Add U-Claw.html navigation page with OS auto-detection and live status
- Rename scripts: start → Mac-Start/Windows-Start, menu → Mac-Menu/Windows-Menu
- Update installer scripts to reference new v2 directory structure (app/core)
- Update .gitignore to exclude build artifacts and marketing assets
This commit is contained in:
dongsheng123132
2026-03-10 22:55:20 +08:00
parent 797593c398
commit c1e94d4dd9
8 changed files with 209 additions and 9 deletions

6
.gitignore vendored
View File

@@ -1,5 +1,11 @@
# U-Claw build output bundle (generated release artifact) # U-Claw build output bundle (generated release artifact)
U-Claw/ U-Claw/
U-Claw-v2/
# Marketing assets
marketing/
marketing.zip
social-assets/
# OpenClaw source (users download separately) # OpenClaw source (users download separately)
openclaw-2026.3.7/ openclaw-2026.3.7/

194
portable/U-Claw.html Normal file
View File

@@ -0,0 +1,194 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>U-Claw 虾盘 - 启动导航</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, "Microsoft YaHei", sans-serif; background: #0a0a0a; color: #e0e0e0; min-height: 100vh; }
.container { max-width: 800px; margin: 0 auto; padding: 40px 20px; }
.header { text-align: center; margin-bottom: 40px; }
.header h1 { font-size: 2.5em; margin-bottom: 8px; }
.header h1 span { color: #ff6b35; }
.header p { color: #888; font-size: 1.1em; }
.version { display: inline-block; background: #ff6b35; color: #fff; padding: 2px 10px; border-radius: 12px; font-size: 0.8em; margin-left: 8px; }
.os-tabs { display: flex; justify-content: center; gap: 12px; margin-bottom: 30px; }
.os-tab { padding: 12px 32px; border: 2px solid #333; border-radius: 8px; cursor: pointer; font-size: 1.1em; background: transparent; color: #aaa; transition: all 0.2s; }
.os-tab:hover { border-color: #666; color: #fff; }
.os-tab.active { border-color: #ff6b35; color: #ff6b35; background: rgba(255,107,53,0.1); }
.panel { display: none; }
.panel.active { display: block; }
.card { background: #1a1a1a; border: 1px solid #333; border-radius: 12px; padding: 24px; margin-bottom: 16px; }
.card h3 { color: #ff6b35; margin-bottom: 12px; font-size: 1.2em; }
.card p { color: #bbb; line-height: 1.6; }
.step { display: flex; align-items: flex-start; gap: 16px; margin: 12px 0; }
.step-num { background: #ff6b35; color: #fff; width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; flex-shrink: 0; }
.step-text { flex: 1; }
.step-text strong { color: #fff; }
.step-text code { background: #2a2a2a; padding: 2px 8px; border-radius: 4px; color: #ff6b35; font-size: 0.95em; }
.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 16px; }
.grid-item { background: #222; border: 1px solid #333; border-radius: 8px; padding: 16px; }
.grid-item h4 { color: #fff; margin-bottom: 6px; }
.grid-item p { color: #999; font-size: 0.9em; }
.status-bar { background: #1a1a1a; border: 1px solid #333; border-radius: 8px; padding: 16px; margin-bottom: 24px; display: flex; align-items: center; gap: 12px; }
.status-dot { width: 12px; height: 12px; border-radius: 50%; }
.status-dot.off { background: #666; }
.status-dot.on { background: #4caf50; animation: pulse 2s infinite; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }
.status-link { color: #ff6b35; text-decoration: none; margin-left: auto; }
.status-link:hover { text-decoration: underline; }
.section-title { color: #888; font-size: 0.9em; text-transform: uppercase; letter-spacing: 2px; margin: 30px 0 12px; }
.footer { text-align: center; margin-top: 40px; padding-top: 20px; border-top: 1px solid #222; color: #666; }
.footer a { color: #ff6b35; text-decoration: none; }
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>🦞 <span>U-Claw</span> 虾盘 <span class="version">v1.1</span></h1>
<p>Portable AI Agent — 插上就能用的 AI 助手</p>
</div>
<!-- Status Bar -->
<div class="status-bar">
<div class="status-dot off" id="statusDot"></div>
<span id="statusText">OpenClaw 未运行</span>
<a href="#" id="statusLink" class="status-link" style="display:none" target="_blank">打开控制台 →</a>
</div>
<!-- OS Tabs -->
<div class="os-tabs">
<div class="os-tab active" onclick="switchOS('mac')">🍎 Mac</div>
<div class="os-tab" onclick="switchOS('win')">🪟 Windows</div>
</div>
<!-- Mac Panel -->
<div class="panel active" id="panel-mac">
<div class="card">
<h3>🚀 快速启动</h3>
<div class="step">
<div class="step-num">1</div>
<div class="step-text">双击 <code>Mac-Start.command</code></div>
</div>
<div class="step">
<div class="step-num">2</div>
<div class="step-text">浏览器自动打开,在网页里配置 AI 模型和 API Key</div>
</div>
<p style="margin-top:12px; color:#999;">⚠️ 首次运行如果提示"无法验证开发者":右键点击 → 打开</p>
</div>
<div class="card">
<h3>⚙️ 全部功能(配置/诊断/备份)</h3>
<p>双击 <code>Mac-Menu.command</code> 打开全功能菜单:</p>
<div class="grid">
<div class="grid-item"><h4>配置向导</h4><p>选模型、填 API Key、选平台</p></div>
<div class="grid-item"><h4>QQ Bot 接入</h4><p>腾讯官方3条命令搞定</p></div>
<div class="grid-item"><h4>诊断修复</h4><p>openclaw doctor 一键检测</p></div>
<div class="grid-item"><h4>备份恢复</h4><p>配置和记忆一键备份</p></div>
<div class="grid-item"><h4>技能浏览</h4><p>52 个预装技能</p></div>
<div class="grid-item"><h4>镜像配置</h4><p>npm 淘宝镜像</p></div>
</div>
</div>
</div>
<!-- Windows Panel -->
<div class="panel" id="panel-win">
<div class="card">
<h3>🚀 快速启动</h3>
<div class="step">
<div class="step-num">1</div>
<div class="step-text">双击 <code>Windows-Start.bat</code></div>
</div>
<div class="step">
<div class="step-num">2</div>
<div class="step-text">浏览器自动打开,在网页里配置 AI 模型和 API Key</div>
</div>
<p style="margin-top:12px; color:#999;">⚠️ 如果弹出安全警告:点击"更多信息" → "仍要运行"</p>
</div>
<div class="card">
<h3>⚙️ 全部功能(配置/诊断/备份)</h3>
<p>双击 <code>Windows-Menu.bat</code> 打开全功能菜单:</p>
<div class="grid">
<div class="grid-item"><h4>配置向导</h4><p>选模型、填 API Key、选平台</p></div>
<div class="grid-item"><h4>QQ Bot 接入</h4><p>腾讯官方3条命令搞定</p></div>
<div class="grid-item"><h4>诊断修复</h4><p>openclaw doctor 一键检测</p></div>
<div class="grid-item"><h4>备份恢复</h4><p>配置和记忆一键备份</p></div>
<div class="grid-item"><h4>技能浏览</h4><p>52 个预装技能</p></div>
<div class="grid-item"><h4>镜像配置</h4><p>npm 淘宝镜像</p></div>
</div>
</div>
</div>
<!-- Common sections -->
<div class="section-title">🤖 支持的 AI 模型(国内免翻墙)</div>
<div class="card">
<div class="grid">
<div class="grid-item"><h4>DeepSeek</h4><p>编程首选,性价比最高</p></div>
<div class="grid-item"><h4>Kimi K2.5</h4><p>256K 上下文,长文档</p></div>
<div class="grid-item"><h4>通义千问 Qwen</h4><p>免费额度大</p></div>
<div class="grid-item"><h4>智谱 GLM</h4><p>学术、中文 NLP</p></div>
<div class="grid-item"><h4>MiniMax</h4><p>语音、多模态</p></div>
<div class="grid-item"><h4>豆包 Doubao</h4><p>字节跳动,火山引擎</p></div>
</div>
</div>
<div class="section-title">📖 更多资料</div>
<div class="card">
<div class="grid">
<div class="grid-item" onclick="window.open('帮助文档.html')" style="cursor:pointer"><h4>📖 帮助文档</h4><p>完整使用指南</p></div>
<div class="grid-item" onclick="window.open('技能市场.html')" style="cursor:pointer"><h4>🎯 技能市场</h4><p>39 个精选技能</p></div>
<div class="grid-item"><h4>💬 联系我们</h4><p>微信: hecare888</p></div>
<div class="grid-item"><h4>🌐 官网</h4><p><a href="https://u-claw.org" target="_blank" style="color:#ff6b35">u-claw.org</a></p></div>
</div>
</div>
<div class="footer">
<p>Made with 🦞 by <a href="https://github.com/dongsheng123132">dongsheng</a> · <a href="https://u-claw.org">u-claw.org</a></p>
</div>
</div>
<script>
// Auto-detect OS
const isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
if (!isMac) switchOS('win');
function switchOS(os) {
document.querySelectorAll('.os-tab').forEach(t => t.classList.remove('active'));
document.querySelectorAll('.panel').forEach(p => p.classList.remove('active'));
document.querySelector('#panel-' + os).classList.add('active');
document.querySelectorAll('.os-tab')[os === 'mac' ? 0 : 1].classList.add('active');
}
// Check if gateway is running
function checkStatus() {
fetch('http://127.0.0.1:18789/', { mode: 'no-cors', cache: 'no-cache' })
.then(() => {
document.getElementById('statusDot').className = 'status-dot on';
document.getElementById('statusText').textContent = 'OpenClaw 运行中';
const link = document.getElementById('statusLink');
link.style.display = 'inline';
link.href = 'http://127.0.0.1:18789/#token=uclaw';
})
.catch(() => {
document.getElementById('statusDot').className = 'status-dot off';
document.getElementById('statusText').textContent = 'OpenClaw 未运行 — 请先双击启动脚本';
document.getElementById('statusLink').style.display = 'none';
});
}
checkStatus();
setInterval(checkStatus, 5000);
</script>
</body>
</html>

View File

@@ -35,7 +35,7 @@ if [ ! -f "$ARCHIVE" ]; then
fi fi
# 检查是否已安装 # 检查是否已安装
if [ -d "$INSTALL_DIR/openclaw/node_modules" ]; then if [ -d "$INSTALL_DIR/app/core/node_modules" ]; then
echo -e " ${GREEN}检测到已安装的 U-Claw${NC}" echo -e " ${GREEN}检测到已安装的 U-Claw${NC}"
echo " 位置: $INSTALL_DIR" echo " 位置: $INSTALL_DIR"
echo "" echo ""
@@ -55,7 +55,7 @@ if [ -d "$INSTALL_DIR/openclaw/node_modules" ]; then
fi fi
# 解压(如果需要) # 解压(如果需要)
if [ ! -d "$INSTALL_DIR/openclaw/node_modules" ]; then if [ ! -d "$INSTALL_DIR/app/core/node_modules" ]; then
echo "" echo ""
echo -e " ${CYAN}正在解压 U-Claw 到 $INSTALL_DIR ...${NC}" echo -e " ${CYAN}正在解压 U-Claw 到 $INSTALL_DIR ...${NC}"
echo " 这可能需要 30-60 秒,请稍等..." echo " 这可能需要 30-60 秒,请稍等..."
@@ -83,4 +83,4 @@ echo -e " ${CYAN}正在启动 OpenClaw...${NC}"
echo "" echo ""
cd "$INSTALL_DIR" cd "$INSTALL_DIR"
exec bash "$INSTALL_DIR/Mac-从U盘启动.command" exec bash "$INSTALL_DIR/Mac-Start.command"

View File

@@ -1,5 +1,5 @@
@echo off @echo off
chcp 65001 >nul 2>&1 chcp 65001 >/dev/null 2>&1
title U-Claw - Install and Launch title U-Claw - Install and Launch
echo. echo.
@@ -23,7 +23,7 @@ if not exist "%ARCHIVE%" (
) )
REM Check if already installed REM Check if already installed
if exist "%INSTALL_DIR%\openclaw\node_modules" ( if exist "%INSTALL_DIR%\app\core\node_modules" (
echo U-Claw already installed at: %INSTALL_DIR% echo U-Claw already installed at: %INSTALL_DIR%
echo. echo.
echo [1] Launch directly (skip extract) echo [1] Launch directly (skip extract)
@@ -33,7 +33,7 @@ if exist "%INSTALL_DIR%\openclaw\node_modules" (
if "%choice%"=="2" ( if "%choice%"=="2" (
echo. echo.
echo Reinstalling... echo Reinstalling...
rmdir /s /q "%INSTALL_DIR%" >nul 2>&1 rmdir /s /q "%INSTALL_DIR%" >/dev/null 2>&1
) else ( ) else (
echo. echo.
echo Launching... echo Launching...
@@ -47,7 +47,7 @@ echo Extracting U-Claw to %INSTALL_DIR% ...
echo This may take 1-2 minutes... echo This may take 1-2 minutes...
echo. echo.
where tar >nul 2>&1 where tar >/dev/null 2>&1
if %errorlevel%==0 ( if %errorlevel%==0 (
cd /d "%USERPROFILE%" cd /d "%USERPROFILE%"
tar xzf "%ARCHIVE%" tar xzf "%ARCHIVE%"
@@ -62,7 +62,7 @@ if %errorlevel%==0 (
echo Please extract U-Claw.tar.gz manually using 7-Zip or WinRAR echo Please extract U-Claw.tar.gz manually using 7-Zip or WinRAR
echo Extract to: %USERPROFILE% echo Extract to: %USERPROFILE%
echo. echo.
echo Then run: %INSTALL_DIR%\Windows-从U盘启动.bat echo Then run: %INSTALL_DIR%\Windows-Start.bat
pause pause
exit /b 1 exit /b 1
) )
@@ -76,4 +76,4 @@ echo Starting OpenClaw...
echo. echo.
cd /d "%INSTALL_DIR%" cd /d "%INSTALL_DIR%"
call "%INSTALL_DIR%\Windows-从U盘启动.bat" call "%INSTALL_DIR%\Windows-Start.bat"