diff --git a/build-uclaw.sh b/build-uclaw.sh index 85a65c6..8ee60e0 100755 --- a/build-uclaw.sh +++ b/build-uclaw.sh @@ -128,13 +128,19 @@ info "复制用户脚本..." # 从 scripts 模板目录复制(构建脚本同级的 uclaw-scripts/ 目录) SCRIPTS_SRC="$SCRIPT_DIR/uclaw-scripts" if [ -d "$SCRIPTS_SRC" ]; then + cp "$SCRIPTS_SRC/启动菜单.command" "$UCLAW_DIR/" 2>/dev/null || true + cp "$SCRIPTS_SRC/启动菜单.bat" "$UCLAW_DIR/" 2>/dev/null || true cp "$SCRIPTS_SRC/运行.command" "$UCLAW_DIR/" 2>/dev/null || true cp "$SCRIPTS_SRC/运行.bat" "$UCLAW_DIR/" 2>/dev/null || true cp "$SCRIPTS_SRC/安装到电脑.command" "$UCLAW_DIR/" 2>/dev/null || true cp "$SCRIPTS_SRC/安装到电脑.bat" "$UCLAW_DIR/" 2>/dev/null || true cp "$SCRIPTS_SRC/使用说明.txt" "$UCLAW_DIR/" 2>/dev/null || true - chmod +x "$UCLAW_DIR/运行.command" "$UCLAW_DIR/安装到电脑.command" 2>/dev/null || true - ok "用户脚本已复制" + cp "$SCRIPTS_SRC/中国用户指南.txt" "$UCLAW_DIR/" 2>/dev/null || true + # 复制教程文档 + mkdir -p "$UCLAW_DIR/docs" + cp "$SCRIPT_DIR/docs/教程-OpenClaw中国区完全指南.md" "$UCLAW_DIR/docs/" 2>/dev/null || true + chmod +x "$UCLAW_DIR/启动菜单.command" "$UCLAW_DIR/运行.command" "$UCLAW_DIR/安装到电脑.command" 2>/dev/null || true + ok "用户脚本已复制(含启动菜单、中国用户指南)" else warn "找不到 uclaw-scripts/ 目录,请手动复制脚本到 U-Claw/" fi diff --git a/uclaw-scripts/启动菜单.bat b/uclaw-scripts/启动菜单.bat index 9db9dfd..d677a1f 100644 --- a/uclaw-scripts/启动菜单.bat +++ b/uclaw-scripts/启动菜单.bat @@ -164,6 +164,11 @@ if /i "%MODEL%"=="a" ( echo 配置 DeepSeek echo 获取 API Key: https://platform.deepseek.com/ set /p APIKEY=" 请输入 DeepSeek API Key: " + REM 移除旧配置再写入,避免重复 + if exist "%ENV_FILE%" ( + findstr /v "^OPENAI_API_KEY= ^OPENAI_BASE_URL=" "%ENV_FILE%" > "%ENV_FILE%.tmp" 2>nul + move /y "%ENV_FILE%.tmp" "%ENV_FILE%" >nul 2>nul + ) echo OPENAI_API_KEY=!APIKEY!>> "%ENV_FILE%" echo OPENAI_BASE_URL=https://api.deepseek.com/v1>> "%ENV_FILE%" echo DeepSeek 已配置! @@ -173,6 +178,10 @@ if /i "%MODEL%"=="b" ( echo 配置 Kimi echo 获取 API Key: https://platform.moonshot.cn/ set /p APIKEY=" 请输入 Moonshot API Key: " + if exist "%ENV_FILE%" ( + findstr /v "^OPENAI_API_KEY= ^OPENAI_BASE_URL=" "%ENV_FILE%" > "%ENV_FILE%.tmp" 2>nul + move /y "%ENV_FILE%.tmp" "%ENV_FILE%" >nul 2>nul + ) echo OPENAI_API_KEY=!APIKEY!>> "%ENV_FILE%" echo OPENAI_BASE_URL=https://api.moonshot.cn/v1>> "%ENV_FILE%" echo Kimi 已配置! @@ -182,6 +191,10 @@ if /i "%MODEL%"=="c" ( echo 配置通义千问 echo 获取 API Key: https://dashscope.console.aliyun.com/ set /p APIKEY=" 请输入 Qwen API Key: " + if exist "%ENV_FILE%" ( + findstr /v "^ZAI_API_KEY=" "%ENV_FILE%" > "%ENV_FILE%.tmp" 2>nul + move /y "%ENV_FILE%.tmp" "%ENV_FILE%" >nul 2>nul + ) echo ZAI_API_KEY=!APIKEY!>> "%ENV_FILE%" echo 通义千问已配置! ) diff --git a/uclaw-scripts/启动菜单.command b/uclaw-scripts/启动菜单.command index 1fa9c85..c2bd36b 100644 --- a/uclaw-scripts/启动菜单.command +++ b/uclaw-scripts/启动菜单.command @@ -200,7 +200,7 @@ do_china_models() { echo -e " ${CYAN}配置 DeepSeek${NC}" echo " 获取 API Key: https://platform.deepseek.com/" echo "" - read -p " 请输入 DeepSeek API Key: " API_KEY + read -s -p " 请输入 DeepSeek API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then grep -v "OPENAI_API_KEY\|OPENAI_BASE_URL" "$ENV_FILE" > "$ENV_FILE.tmp" 2>/dev/null || true mv "$ENV_FILE.tmp" "$ENV_FILE" @@ -213,7 +213,7 @@ do_china_models() { echo -e " ${CYAN}配置 Kimi (月之暗面)${NC}" echo " 获取 API Key: https://platform.moonshot.cn/" echo "" - read -p " 请输入 Moonshot API Key: " API_KEY + read -s -p " 请输入 Moonshot API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then grep -v "OPENAI_API_KEY\|OPENAI_BASE_URL" "$ENV_FILE" > "$ENV_FILE.tmp" 2>/dev/null || true mv "$ENV_FILE.tmp" "$ENV_FILE" @@ -226,7 +226,7 @@ do_china_models() { echo -e " ${CYAN}配置通义千问 Qwen${NC}" echo " 获取 API Key: https://dashscope.console.aliyun.com/" echo "" - read -p " 请输入 Qwen API Key: " API_KEY + read -s -p " 请输入 Qwen API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then grep -v "ZAI_API_KEY" "$ENV_FILE" > "$ENV_FILE.tmp" 2>/dev/null || true mv "$ENV_FILE.tmp" "$ENV_FILE" @@ -239,7 +239,7 @@ do_china_models() { echo " 获取 API Key: https://open.bigmodel.cn/" echo " 注意: 通过火山引擎(Volcano Engine)接入" echo "" - read -p " 请输入 API Key: " API_KEY + read -s -p " 请输入 API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then echo "# 智谱GLM (via Volcano Engine)" >> "$ENV_FILE" echo "VOLCENGINE_API_KEY=$API_KEY" >> "$ENV_FILE" @@ -250,7 +250,7 @@ do_china_models() { echo -e " ${CYAN}配置 MiniMax${NC}" echo " 获取 API Key: https://platform.minimaxi.com/" echo "" - read -p " 请输入 MiniMax API Key: " API_KEY + read -s -p " 请输入 MiniMax API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then grep -v "MINIMAX_API_KEY" "$ENV_FILE" > "$ENV_FILE.tmp" 2>/dev/null || true mv "$ENV_FILE.tmp" "$ENV_FILE" @@ -262,7 +262,7 @@ do_china_models() { echo -e " ${CYAN}配置豆包 Doubao (字节跳动)${NC}" echo " 获取 API Key: https://console.volcengine.com/ark" echo "" - read -p " 请输入火山引擎 API Key: " API_KEY + read -s -p " 请输入火山引擎 API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then grep -v "VOLCENGINE_API_KEY" "$ENV_FILE" > "$ENV_FILE.tmp" 2>/dev/null || true mv "$ENV_FILE.tmp" "$ENV_FILE" @@ -274,7 +274,7 @@ do_china_models() { echo -e " ${CYAN}配置百度千帆${NC}" echo " 获取 API Key: https://console.bce.baidu.com/qianfan/" echo "" - read -p " 请输入千帆 API Key: " API_KEY + read -s -p " 请输入千帆 API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then echo "QIANFAN_API_KEY=$API_KEY" >> "$ENV_FILE" echo -e " ${GREEN}百度千帆已配置!${NC}" @@ -284,7 +284,7 @@ do_china_models() { echo -e " ${CYAN}配置小米 Mimo${NC}" echo " 获取 API Key: https://dev.mi.com/mimo" echo "" - read -p " 请输入 Mimo API Key: " API_KEY + read -s -p " 请输入 Mimo API Key: " API_KEY; echo if [ -n "$API_KEY" ]; then echo "MIMO_API_KEY=$API_KEY" >> "$ENV_FILE" echo -e " ${GREEN}小米 Mimo 已配置!${NC}" @@ -835,7 +835,7 @@ while true; do exit 0 ;; *) - echo -e " ${RED}无效选择,请输入 0-14${NC}" + echo -e " ${RED}无效选择,请输入 0-16${NC}" ;; esac diff --git a/uclaw-scripts/安装到电脑.bat b/uclaw-scripts/安装到电脑.bat index 3608f42..9dcd4dc 100644 --- a/uclaw-scripts/安装到电脑.bat +++ b/uclaw-scripts/安装到电脑.bat @@ -61,10 +61,29 @@ echo "%%UCLAW_HOME%%\node\node.exe" "%%UCLAW_HOME%%\openclaw\openclaw.mjs" %%* echo. echo 正在添加到系统 PATH... +set "CURRENT_PATH=" for /f "tokens=2*" %%a in ('reg query "HKCU\Environment" /v PATH 2^>nul') do set "CURRENT_PATH=%%b" + echo %CURRENT_PATH% | findstr /i ".uclaw" >nul 2>&1 if errorlevel 1 ( - setx PATH "%INSTALL_DIR%;%INSTALL_DIR%\node;%CURRENT_PATH%" >nul 2>&1 + REM 检查 PATH 是否为空(全新账户) + if not defined CURRENT_PATH ( + setx PATH "%INSTALL_DIR%;%INSTALL_DIR%\node" >nul 2>&1 + ) else ( + REM 检查 setx 1024 字符限制 + set "NEW_PATH=%INSTALL_DIR%;%INSTALL_DIR%\node;%CURRENT_PATH%" + setlocal enabledelayedexpansion + if "!NEW_PATH:~1024,1!" neq "" ( + echo [警告] PATH 超过 1024 字符,setx 会截断! + echo 请手动添加以下路径到系统 PATH: + echo %INSTALL_DIR% + echo %INSTALL_DIR%\node + endlocal + ) else ( + endlocal + setx PATH "%INSTALL_DIR%;%INSTALL_DIR%\node;%CURRENT_PATH%" >nul 2>&1 + ) + ) echo 已添加到用户 PATH ) else ( echo PATH 已配置,跳过 diff --git a/uclaw-scripts/安装到电脑.command b/uclaw-scripts/安装到电脑.command index 1a203f9..db10f66 100644 --- a/uclaw-scripts/安装到电脑.command +++ b/uclaw-scripts/安装到电脑.command @@ -68,9 +68,13 @@ fi echo -e " ${CYAN}[4/4] 配置环境变量...${NC}" -SHELL_RC="$HOME/.zshrc" -[ ! -f "$SHELL_RC" ] && SHELL_RC="$HOME/.bashrc" -[ ! -f "$SHELL_RC" ] && SHELL_RC="$HOME/.bash_profile" +# macOS Catalina+ 默认 zsh,始终写 .zshrc +if [ "$(basename "$SHELL")" = "zsh" ] || [ ! -f "$HOME/.bashrc" -a ! -f "$HOME/.bash_profile" ]; then + SHELL_RC="$HOME/.zshrc" +else + SHELL_RC="$HOME/.bashrc" +fi +touch "$SHELL_RC" if ! grep -q ".uclaw/node/bin" "$SHELL_RC" 2>/dev/null; then echo "" >> "$SHELL_RC" diff --git a/website/index.html b/website/index.html index 9cb5985..6b59ad6 100644 --- a/website/index.html +++ b/website/index.html @@ -500,43 +500,43 @@ DeepSeek 深度求索 - 编程,性价比之王Coding, best value + 编程,性价比之王 ★ 推荐 Kimi K2.5 月之暗面 - 256K 超长上下文256K context + 256K 超长上下文 长文档 Qwen 阿里通义千问 - 免费额度最大Large free tier + 免费额度最大 免费 GLM 4.7 智谱 AI - 学术,中文 NLPAcademic + 学术,中文 NLP MiniMax MiniMax - 语音,多模态Voice, multimodal + 语音,多模态 Doubao 字节豆包 - 火山引擎生态ByteDance ecosystem + 火山引擎生态 Claude Anthropic - 最强综合能力Best overall + 最强综合能力 Global