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:
6
.gitignore
vendored
6
.gitignore
vendored
@@ -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
194
portable/U-Claw.html
Normal 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>
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -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"
|
||||||
Reference in New Issue
Block a user