feat: U-Claw v1.0 - OpenClaw offline installer USB for China
- Build script to package Node.js (Mac ARM64/x64 + Win x64) + OpenClaw + all deps - YuLinMuFeng-style launcher menu with 16 functions (install/repair/backup/reset) - 8 Chinese AI models one-click config (DeepSeek/Kimi/Qwen/GLM/MiniMax/Doubao/Qianfan/Mimo) - QQ official integration (Tencent), Feishu, WeChat, Telegram, Discord, WhatsApp, Slack - 52 pre-installed skills, all offline - Bilingual README (Chinese + English) - Full China tutorial (12 chapters) - MIT license
This commit is contained in:
148
uclaw-scripts/中国用户指南.txt
Normal file
148
uclaw-scripts/中国用户指南.txt
Normal file
@@ -0,0 +1,148 @@
|
||||
╔══════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ U-Claw 虾盘 — 中国用户快速上手指南 ║
|
||||
║ ║
|
||||
╚══════════════════════════════════════════════════════════╝
|
||||
|
||||
|
||||
第一步:选择 AI 模型
|
||||
══════════════════════
|
||||
|
||||
OpenClaw 支持大量国产模型,以下是推荐:
|
||||
|
||||
1. DeepSeek(深度求索)—— 推荐首选
|
||||
- 便宜好用,编程能力强
|
||||
- 注册: https://platform.deepseek.com/
|
||||
- 免费额度: 有
|
||||
|
||||
2. Kimi(月之暗面)—— 超长上下文
|
||||
- 256K 上下文,适合长文档
|
||||
- 注册: https://platform.moonshot.cn/
|
||||
- 免费额度: 有
|
||||
|
||||
3. 通义千问 Qwen(阿里)—— 免费额度最大
|
||||
- 注册: https://dashscope.console.aliyun.com/
|
||||
- 免费额度: 非常多
|
||||
|
||||
4. 智谱 GLM(清华系)—— 学术场景强
|
||||
- 注册: https://open.bigmodel.cn/
|
||||
- 免费额度: 有
|
||||
|
||||
5. MiniMax —— 语音和多模态强
|
||||
- 注册: https://platform.minimaxi.com/
|
||||
|
||||
6. 豆包 Doubao(字节跳动)—— 火山引擎
|
||||
- 注册: https://console.volcengine.com/ark
|
||||
|
||||
7. 百度千帆 —— 百度智能云
|
||||
- 注册: https://console.bce.baidu.com/qianfan/
|
||||
|
||||
8. 小米 Mimo
|
||||
- 注册: https://dev.mi.com/mimo
|
||||
|
||||
在启动菜单选 [5] 即可一键配置
|
||||
|
||||
|
||||
第二步:选择聊天平台
|
||||
══════════════════════
|
||||
|
||||
让 AI 接入你的聊天工具:
|
||||
|
||||
已内置:
|
||||
- QQ(腾讯官方)★ — 国内首选!3条命令搞定,免费免翻墙
|
||||
- 飞书 Feishu — 企业首选,功能最全
|
||||
- Telegram — 海外推荐
|
||||
- Discord — 游戏/社区
|
||||
- WhatsApp — 海外用户
|
||||
- Slack — 外企用户
|
||||
|
||||
QQ 接入方法(腾讯官方,1分钟搞定):
|
||||
1. 扫码注册: http://q.qq.com/qqbot/openclaw/login.html
|
||||
2. 点击"创建机器人",获取 AppID 和 AppSecret
|
||||
3. 运行 3 条命令:
|
||||
openclaw plugins install @sliverp/qqbot@latest
|
||||
openclaw channels add --channel qqbot --token "AppID:AppSecret"
|
||||
openclaw gateway restart
|
||||
4. 安全: 记得设置白名单 openclaw config set channels.qqbot.allowFrom "你的QQ号"
|
||||
详见: 启动菜单 [6] 中国聊天平台
|
||||
|
||||
微信接入:
|
||||
- 社区插件: openclaw plugins install @icesword760/openclaw-wechat
|
||||
- 基于 iPad 协议,支持文字/图片/文件
|
||||
|
||||
|
||||
第三步:常用技能(Skills)
|
||||
══════════════════════════
|
||||
|
||||
U-Claw 已预装 52 个技能,以下是最实用的:
|
||||
|
||||
【效率工具】
|
||||
- github — GitHub 操作(Issues/PR/代码审查)
|
||||
- coding-agent — 委派编程任务给其他 AI
|
||||
- summarize — 总结文本/网页/播客
|
||||
- nano-pdf — 自然语言编辑 PDF
|
||||
|
||||
【笔记 & 任务】
|
||||
- apple-notes — Apple 备忘录自动化
|
||||
- obsidian — Obsidian 笔记操作
|
||||
- notion — Notion 页面和数据库
|
||||
- apple-reminders— Apple 提醒事项
|
||||
- things-mac — Things 3 任务管理
|
||||
- trello — Trello 看板
|
||||
|
||||
【AI & 创作】
|
||||
- openai-image-gen — AI 图片生成
|
||||
- openai-whisper — 语音转文字
|
||||
- gemini — Gemini 一键问答
|
||||
- sag — ElevenLabs 文字转语音
|
||||
|
||||
【通讯】
|
||||
- himalaya — 邮件收发(IMAP/SMTP)
|
||||
- discord — Discord 消息操作
|
||||
- slack — Slack 消息操作
|
||||
- wacli — WhatsApp 消息
|
||||
|
||||
【系统 & 搜索】
|
||||
- weather — 天气查询
|
||||
- peekaboo — macOS 屏幕截图和自动化
|
||||
- tmux — 远程终端管理
|
||||
- clawhub — 搜索安装更多技能
|
||||
|
||||
使用方法: 在 OpenClaw 对话中直接说 "帮我查天气" 或 "帮我发邮件" 即可
|
||||
|
||||
|
||||
第四步:日常使用场景
|
||||
══════════════════════
|
||||
|
||||
场景1: 编程助手
|
||||
"帮我写一个 Python 脚本,批量重命名文件"
|
||||
"审查这个 PR: #123"
|
||||
|
||||
场景2: 内容创作
|
||||
"帮我总结这篇文章: [URL]"
|
||||
"帮我生成一张关于AI的图片"
|
||||
|
||||
场景3: 日常办公
|
||||
"帮我发邮件给 xxx@example.com,主题是..."
|
||||
"帮我在 Notion 创建一个新页面"
|
||||
"提醒我明天下午3点开会"
|
||||
|
||||
场景4: 信息查询
|
||||
"今天深圳天气怎么样?"
|
||||
"帮我搜索 GitHub 上最新的 AI 项目"
|
||||
|
||||
场景5: 多平台 AI 助手
|
||||
配置飞书/QQ/Telegram 后,直接在聊天中 @AI 即可
|
||||
|
||||
|
||||
遇到问题?
|
||||
══════════════════════
|
||||
|
||||
1. 插 U 盘,双击「启动菜单」
|
||||
2. 选 [8] 诊断修复
|
||||
3. 如果修不好,选 [11] 重置
|
||||
4. 重置前会自动提醒你备份
|
||||
|
||||
加入社区:
|
||||
- u-claw.org
|
||||
- GitHub: github.com/dongsheng123132/u-claw
|
||||
108
uclaw-scripts/使用说明.txt
Normal file
108
uclaw-scripts/使用说明.txt
Normal file
@@ -0,0 +1,108 @@
|
||||
╔══════════════════════════════════════════════════════════╗
|
||||
║ ║
|
||||
║ U-Claw 虾盘 v1.0 ║
|
||||
║ OpenClaw 离线安装 U 盘 ║
|
||||
║ ║
|
||||
║ by OpenClaw Community ║
|
||||
║ u-claw.org ║
|
||||
║ ║
|
||||
╚══════════════════════════════════════════════════════════╝
|
||||
|
||||
什么是 U-Claw?
|
||||
═══════════════
|
||||
U-Claw 虾盘是 OpenClaw(开源 AI 助手)的离线安装包。
|
||||
就像当年的"雨林木风"Windows 光盘一样,
|
||||
把所有依赖打包好,插上 U 盘就能用。
|
||||
|
||||
特别适合中国大陆用户 - 不需要访问 GitHub、npm 等海外服务。
|
||||
|
||||
|
||||
U 盘里有什么?
|
||||
═══════════════
|
||||
U-Claw/
|
||||
├── 运行.command <- Mac 用户双击这个
|
||||
├── 运行.bat <- Windows 用户双击这个
|
||||
├── 安装到电脑.command <- Mac 永久安装
|
||||
├── 安装到电脑.bat <- Windows 永久安装
|
||||
├── runtime/ <- Node.js 运行环境 (Mac/Win)
|
||||
├── openclaw/ <- OpenClaw 源码 + 依赖
|
||||
├── memory/ <- AI 记忆文件
|
||||
├── persona/ <- AI 人格配置
|
||||
├── skills/ <- AI 技能
|
||||
└── 使用说明.txt <- 你正在看的这个
|
||||
|
||||
|
||||
快速开始
|
||||
═══════════════
|
||||
|
||||
【方式一:直接从 U 盘运行(免安装)】
|
||||
|
||||
Mac 用户:
|
||||
1. 插入 U 盘
|
||||
2. 打开 U-Claw 文件夹
|
||||
3. 双击 "运行.command"
|
||||
4. 如果提示"无法打开",右键 -> 打开
|
||||
5. 等待启动完成
|
||||
|
||||
Windows 用户:
|
||||
1. 插入 U 盘
|
||||
2. 打开 U-Claw 文件夹
|
||||
3. 双击 "运行.bat"
|
||||
4. 等待启动完成
|
||||
|
||||
首次运行可能需要几分钟安装依赖(已预打包,无需联网)
|
||||
|
||||
|
||||
【方式二:安装到电脑(推荐)】
|
||||
|
||||
Mac 用户:
|
||||
1. 双击 "安装到电脑.command"
|
||||
2. 按提示操作
|
||||
3. 安装后在终端输入 openclaw 即可使用
|
||||
|
||||
Windows 用户:
|
||||
1. 双击 "安装到电脑.bat"
|
||||
2. 按提示操作
|
||||
3. 安装后在命令提示符输入 openclaw 即可使用
|
||||
|
||||
安装位置: ~/.uclaw/ (Mac) 或 %USERPROFILE%\.uclaw\ (Win)
|
||||
|
||||
|
||||
系统要求
|
||||
═══════════════
|
||||
- macOS 12+ (Intel 或 Apple Silicon)
|
||||
- Windows 10/11 (64位)
|
||||
- 内存: 2GB 以上(推荐 4GB+)
|
||||
- 磁盘: 2GB 可用空间
|
||||
|
||||
|
||||
更新方法
|
||||
═══════════════
|
||||
下载新版 U-Claw,重新运行 "安装到电脑" 即可覆盖更新。
|
||||
你的记忆文件和配置会自动保留。
|
||||
|
||||
|
||||
常见问题
|
||||
═══════════════
|
||||
|
||||
Q: Mac 提示"无法打开,因为它来自身份不明的开发者"
|
||||
A: 右键点击文件 -> 选择 "打开" -> 再点 "打开"
|
||||
|
||||
Q: Windows 提示"Windows 已保护你的电脑"
|
||||
A: 点击 "更多信息" -> "仍要运行"
|
||||
|
||||
Q: 运行报错 "Node.js v22+ is required"
|
||||
A: U-Claw 自带 Node.js,请确保从 U-Claw 文件夹内启动
|
||||
|
||||
Q: 如何配置 AI 模型的 API Key?
|
||||
A: 运行 openclaw 后按引导配置,或编辑 openclaw/.env 文件
|
||||
|
||||
Q: 能离线使用吗?
|
||||
A: OpenClaw 本身需要联网调用 AI API(如 Claude、DeepSeek)。
|
||||
但安装过程完全离线,不需要访问 GitHub 或 npm。
|
||||
|
||||
|
||||
获取帮助
|
||||
═══════════════
|
||||
- OpenClaw 官方: https://github.com/openclaw/openclaw
|
||||
- U-Claw 项目: https://u-claw.org
|
||||
376
uclaw-scripts/启动菜单.bat
Normal file
376
uclaw-scripts/启动菜单.bat
Normal file
@@ -0,0 +1,376 @@
|
||||
@echo off
|
||||
chcp 65001 >nul 2>&1
|
||||
title U-Claw 虾盘 - 启动菜单
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
set "UCLAW_DIR=%~dp0"
|
||||
set "OPENCLAW_DIR=%UCLAW_DIR%openclaw"
|
||||
set "NODE_DIR=%UCLAW_DIR%runtime\node-win-x64"
|
||||
set "NODE_BIN=%NODE_DIR%\node.exe"
|
||||
set "NPM_BIN=%NODE_DIR%\npm.cmd"
|
||||
set "PATH=%NODE_DIR%;%PATH%"
|
||||
|
||||
:MENU
|
||||
cls
|
||||
echo.
|
||||
echo ╔════════════════════════════════════════════════════════╗
|
||||
echo ║ ║
|
||||
echo ║ U-Claw 虾盘 v1.0 ║
|
||||
echo ║ OpenClaw AI 助手 一键安装盘 ║
|
||||
echo ║ ║
|
||||
echo ║ 专为中国用户优化 · 免翻墙 · 离线安装 ║
|
||||
echo ║ ║
|
||||
echo ╠════════════════════════════════════════════════════════╣
|
||||
echo ║ ║
|
||||
|
||||
:: 状态检测
|
||||
for /f "tokens=*" %%v in ('"%NODE_BIN%" --version 2^>nul') do set "NODE_VER=%%v"
|
||||
set "ST_MOD=未安装"
|
||||
set "ST_BUILD=未构建"
|
||||
set "ST_INST=未安装"
|
||||
if exist "%OPENCLAW_DIR%\node_modules" set "ST_MOD=已安装"
|
||||
if exist "%OPENCLAW_DIR%\dist" set "ST_BUILD=已构建"
|
||||
if exist "%USERPROFILE%\.uclaw\openclaw" set "ST_INST=已安装"
|
||||
|
||||
echo ║ 系统: x64 ^| Node: %NODE_VER% ║
|
||||
echo ║ 依赖: %ST_MOD% ^| 构建: %ST_BUILD% ^| 安装: %ST_INST% ║
|
||||
echo ║ ║
|
||||
echo ╠════════════════════════════════════════════════════════╣
|
||||
echo.
|
||||
echo ---- 安装 -----------------------------------------
|
||||
echo.
|
||||
echo [1] 一键安装 OpenClaw 到电脑(推荐)
|
||||
echo [2] 仅安装依赖(npm install)
|
||||
echo [3] 仅构建项目(npm build)
|
||||
echo [4] 直接从 U 盘运行(免安装)
|
||||
echo.
|
||||
echo ---- 中国优化 -------------------------------------
|
||||
echo.
|
||||
echo [5] 配置国产 AI 模型(DeepSeek/Kimi/通义千问)
|
||||
echo [6] 配置中国聊天平台(飞书/钉钉)
|
||||
echo [7] 设置国内镜像源
|
||||
echo.
|
||||
echo ---- 维护工具 -------------------------------------
|
||||
echo.
|
||||
echo [8] 诊断修复(openclaw doctor)
|
||||
echo [9] 备份当前状态
|
||||
echo [10] 恢复备份
|
||||
echo [11] 重置 OpenClaw(恢复出厂)
|
||||
echo [12] 清理缓存和临时文件
|
||||
echo.
|
||||
echo ---- 其他 -----------------------------------------
|
||||
echo.
|
||||
echo [13] 查看使用说明
|
||||
echo [14] 系统信息
|
||||
echo [0] 退出
|
||||
echo.
|
||||
echo ╚════════════════════════════════════════════════════════╝
|
||||
echo.
|
||||
|
||||
set /p CHOICE=" 请选择 [0-14]: "
|
||||
|
||||
if "%CHOICE%"=="1" goto INSTALL
|
||||
if "%CHOICE%"=="2" goto NPM_INSTALL
|
||||
if "%CHOICE%"=="3" goto BUILD
|
||||
if "%CHOICE%"=="4" goto RUN
|
||||
if "%CHOICE%"=="5" goto CHINA_MODELS
|
||||
if "%CHOICE%"=="6" goto CHINA_CHANNELS
|
||||
if "%CHOICE%"=="7" goto MIRROR
|
||||
if "%CHOICE%"=="8" goto DOCTOR
|
||||
if "%CHOICE%"=="9" goto BACKUP
|
||||
if "%CHOICE%"=="10" goto RESTORE
|
||||
if "%CHOICE%"=="11" goto RESET
|
||||
if "%CHOICE%"=="12" goto CLEANUP
|
||||
if "%CHOICE%"=="13" goto README
|
||||
if "%CHOICE%"=="14" goto SYSINFO
|
||||
if "%CHOICE%"=="0" goto EXIT
|
||||
|
||||
echo 无效选择
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:INSTALL
|
||||
echo.
|
||||
echo === 一键安装 OpenClaw 到电脑 ===
|
||||
echo.
|
||||
call "%UCLAW_DIR%安装到电脑.bat"
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:NPM_INSTALL
|
||||
echo.
|
||||
echo === 安装 npm 依赖 ===
|
||||
echo.
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||
echo.
|
||||
echo 依赖安装完成!
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:BUILD
|
||||
echo.
|
||||
echo === 构建 OpenClaw ===
|
||||
echo.
|
||||
if not exist "%OPENCLAW_DIR%\node_modules" (
|
||||
echo 先安装依赖...
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||
)
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" run build
|
||||
echo.
|
||||
echo 构建完成!
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:RUN
|
||||
echo.
|
||||
echo === 从 U 盘启动 OpenClaw ===
|
||||
echo.
|
||||
if not exist "%OPENCLAW_DIR%\node_modules" (
|
||||
echo 先安装依赖...
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||
)
|
||||
if not exist "%OPENCLAW_DIR%\dist" (
|
||||
echo 先构建...
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" run build 2>nul
|
||||
)
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs onboard --install-daemon 2>nul || "%NODE_BIN%" openclaw.mjs 2>nul || "%NODE_BIN%" "%NPM_BIN%" start
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:CHINA_MODELS
|
||||
echo.
|
||||
echo === 配置国产 AI 模型 ===
|
||||
echo.
|
||||
echo [a] DeepSeek(深度求索) - 性价比最高,推荐首选
|
||||
echo [b] Kimi / 月之暗面 - 256K 超长上下文
|
||||
echo [c] 通义千问 Qwen - 阿里云,免费额度大
|
||||
echo [d] 智谱 GLM - 清华系
|
||||
echo [e] MiniMax - 语音和多模态
|
||||
echo [f] 豆包 Doubao(字节跳动) - 火山引擎平台
|
||||
echo.
|
||||
set /p MODEL=" 请选择 (a-f): "
|
||||
|
||||
set "ENV_FILE=%OPENCLAW_DIR%\.env"
|
||||
if not exist "%ENV_FILE%" type nul > "%ENV_FILE%"
|
||||
|
||||
if /i "%MODEL%"=="a" (
|
||||
echo.
|
||||
echo 配置 DeepSeek
|
||||
echo 获取 API Key: https://platform.deepseek.com/
|
||||
set /p APIKEY=" 请输入 DeepSeek API Key: "
|
||||
echo OPENAI_API_KEY=!APIKEY!>> "%ENV_FILE%"
|
||||
echo OPENAI_BASE_URL=https://api.deepseek.com/v1>> "%ENV_FILE%"
|
||||
echo DeepSeek 已配置!
|
||||
)
|
||||
if /i "%MODEL%"=="b" (
|
||||
echo.
|
||||
echo 配置 Kimi
|
||||
echo 获取 API Key: https://platform.moonshot.cn/
|
||||
set /p APIKEY=" 请输入 Moonshot API Key: "
|
||||
echo OPENAI_API_KEY=!APIKEY!>> "%ENV_FILE%"
|
||||
echo OPENAI_BASE_URL=https://api.moonshot.cn/v1>> "%ENV_FILE%"
|
||||
echo Kimi 已配置!
|
||||
)
|
||||
if /i "%MODEL%"=="c" (
|
||||
echo.
|
||||
echo 配置通义千问
|
||||
echo 获取 API Key: https://dashscope.console.aliyun.com/
|
||||
set /p APIKEY=" 请输入 Qwen API Key: "
|
||||
echo ZAI_API_KEY=!APIKEY!>> "%ENV_FILE%"
|
||||
echo 通义千问已配置!
|
||||
)
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:CHINA_CHANNELS
|
||||
echo.
|
||||
echo === 配置中国聊天平台 ===
|
||||
echo.
|
||||
echo [a] 飞书 Feishu/Lark - 已内置,功能最全
|
||||
echo [b] Telegram - 国内可用
|
||||
echo.
|
||||
echo 企业微信/钉钉/QQ 需要桥接服务,后续版本集成
|
||||
echo.
|
||||
set /p CH=" 请选择 (a-b): "
|
||||
|
||||
if not exist "%OPENCLAW_DIR%\node_modules" (
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||
)
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs onboard
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:MIRROR
|
||||
echo.
|
||||
echo === 设置国内镜像源 ===
|
||||
echo.
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" config set registry https://registry.npmmirror.com --location=project
|
||||
echo npm 镜像已设置: registry.npmmirror.com
|
||||
echo 后续 npm install 将自动使用淘宝镜像
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:DOCTOR
|
||||
echo.
|
||||
echo === 诊断修复 ===
|
||||
echo.
|
||||
if not exist "%OPENCLAW_DIR%\node_modules" (
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||
)
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs doctor --repair
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:BACKUP
|
||||
echo.
|
||||
echo === 备份当前状态 ===
|
||||
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_DIR=%UCLAW_DIR%backups\backup_%TIMESTAMP%"
|
||||
mkdir "%BACKUP_DIR%" 2>nul
|
||||
|
||||
if exist "%OPENCLAW_DIR%\.env" (
|
||||
copy "%OPENCLAW_DIR%\.env" "%BACKUP_DIR%\.env" >nul
|
||||
echo [OK] .env 配置已备份
|
||||
)
|
||||
if exist "%USERPROFILE%\.openclaw\openclaw.json" (
|
||||
mkdir "%BACKUP_DIR%\openclaw-state" 2>nul
|
||||
copy "%USERPROFILE%\.openclaw\openclaw.json" "%BACKUP_DIR%\openclaw-state\" >nul
|
||||
echo [OK] OpenClaw 状态已备份
|
||||
)
|
||||
if exist "%USERPROFILE%\.openclaw\credentials" (
|
||||
xcopy "%USERPROFILE%\.openclaw\credentials" "%BACKUP_DIR%\openclaw-state\credentials\" /e /i /q >nul 2>&1
|
||||
echo [OK] 凭据已备份
|
||||
)
|
||||
|
||||
echo.
|
||||
echo 备份完成! 位置: %BACKUP_DIR%
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:RESTORE
|
||||
echo.
|
||||
echo === 恢复备份 ===
|
||||
echo.
|
||||
set "BACKUP_BASE=%UCLAW_DIR%backups"
|
||||
if not exist "%BACKUP_BASE%" (
|
||||
echo 没有找到任何备份
|
||||
pause
|
||||
goto MENU
|
||||
)
|
||||
echo 可用备份:
|
||||
dir /b "%BACKUP_BASE%" 2>nul
|
||||
echo.
|
||||
set /p RESTORE_NAME=" 输入备份名称: "
|
||||
set "RESTORE_PATH=%BACKUP_BASE%\%RESTORE_NAME%"
|
||||
|
||||
if not exist "%RESTORE_PATH%" (
|
||||
echo 备份不存在
|
||||
pause
|
||||
goto MENU
|
||||
)
|
||||
|
||||
if exist "%RESTORE_PATH%\.env" (
|
||||
copy "%RESTORE_PATH%\.env" "%OPENCLAW_DIR%\.env" >nul
|
||||
echo [OK] .env 已恢复
|
||||
)
|
||||
if exist "%RESTORE_PATH%\openclaw-state" (
|
||||
xcopy "%RESTORE_PATH%\openclaw-state" "%USERPROFILE%\.openclaw\" /e /i /q /y >nul 2>&1
|
||||
echo [OK] OpenClaw 状态已恢复
|
||||
)
|
||||
|
||||
echo.
|
||||
echo 恢复完成!
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:RESET
|
||||
echo.
|
||||
echo === 重置 OpenClaw ===
|
||||
echo.
|
||||
echo [1] 仅重置配置(保留凭据)
|
||||
echo [2] 重置配置+凭据+会话
|
||||
echo [3] 完全重置(恢复出厂)
|
||||
echo [0] 取消
|
||||
echo.
|
||||
set /p RESET_CHOICE=" 选择重置级别: "
|
||||
|
||||
if "%RESET_CHOICE%"=="0" goto MENU
|
||||
if not exist "%OPENCLAW_DIR%\node_modules" (
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||
)
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
|
||||
if "%RESET_CHOICE%"=="1" "%NODE_BIN%" openclaw.mjs reset --scope config
|
||||
if "%RESET_CHOICE%"=="2" "%NODE_BIN%" openclaw.mjs reset --scope config+creds+sessions
|
||||
if "%RESET_CHOICE%"=="3" (
|
||||
set /p CONFIRM=" 确定完全重置? 输入 YES 确认: "
|
||||
if "!CONFIRM!"=="YES" "%NODE_BIN%" openclaw.mjs reset --scope full
|
||||
)
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:CLEANUP
|
||||
echo.
|
||||
echo === 清理缓存 ===
|
||||
echo.
|
||||
"%NODE_BIN%" "%NPM_BIN%" cache clean --force 2>nul
|
||||
echo npm 缓存已清理
|
||||
if exist "%USERPROFILE%\.openclaw\logs" (
|
||||
rmdir /s /q "%USERPROFILE%\.openclaw\logs" 2>nul
|
||||
echo 日志已清理
|
||||
)
|
||||
echo.
|
||||
echo 清理完成!
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:README
|
||||
echo.
|
||||
if exist "%UCLAW_DIR%使用说明.txt" (
|
||||
type "%UCLAW_DIR%使用说明.txt"
|
||||
) else (
|
||||
echo 使用说明文件不存在
|
||||
)
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:SYSINFO
|
||||
echo.
|
||||
echo === 系统信息 ===
|
||||
echo.
|
||||
echo 操作系统: %OS%
|
||||
echo 处理器: %PROCESSOR_ARCHITECTURE%
|
||||
echo Node.js: %NODE_VER%
|
||||
echo U-Claw 路径: %UCLAW_DIR%
|
||||
echo.
|
||||
if exist "%USERPROFILE%\.uclaw" (
|
||||
echo 已安装路径: %USERPROFILE%\.uclaw
|
||||
) else (
|
||||
echo 电脑安装: 未安装
|
||||
)
|
||||
if exist "%USERPROFILE%\.openclaw" (
|
||||
echo OpenClaw 状态: %USERPROFILE%\.openclaw
|
||||
)
|
||||
echo.
|
||||
pause
|
||||
goto MENU
|
||||
|
||||
:EXIT
|
||||
echo.
|
||||
echo 再见!
|
||||
echo.
|
||||
exit /b 0
|
||||
844
uclaw-scripts/启动菜单.command
Normal file
844
uclaw-scripts/启动菜单.command
Normal file
@@ -0,0 +1,844 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# U-Claw 虾盘 - 启动菜单 (雨林木风风格)
|
||||
# macOS 版本
|
||||
# ============================================================
|
||||
|
||||
UCLAW_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
OPENCLAW_DIR="$UCLAW_DIR/openclaw"
|
||||
|
||||
# 颜色
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
CYAN='\033[0;36m'
|
||||
BLUE='\033[0;34m'
|
||||
MAGENTA='\033[0;35m'
|
||||
WHITE='\033[1;37m'
|
||||
GRAY='\033[0;37m'
|
||||
NC='\033[0m'
|
||||
BOLD='\033[1m'
|
||||
DIM='\033[2m'
|
||||
|
||||
# 检测架构并设置 Node
|
||||
ARCH=$(uname -m)
|
||||
if [ "$ARCH" = "arm64" ]; then
|
||||
NODE_DIR="$UCLAW_DIR/runtime/node-mac-arm64"
|
||||
else
|
||||
NODE_DIR="$UCLAW_DIR/runtime/node-mac-x64"
|
||||
fi
|
||||
NODE_BIN="$NODE_DIR/bin/node"
|
||||
NPM_BIN="$NODE_DIR/bin/npm"
|
||||
export PATH="$NODE_DIR/bin:$PATH"
|
||||
|
||||
# 检查安装状态
|
||||
check_status() {
|
||||
HAS_MODULES="no"
|
||||
HAS_DIST="no"
|
||||
HAS_ENV="no"
|
||||
INSTALLED="no"
|
||||
|
||||
[ -d "$OPENCLAW_DIR/node_modules" ] && HAS_MODULES="yes"
|
||||
[ -d "$OPENCLAW_DIR/dist" ] && HAS_DIST="yes"
|
||||
[ -f "$OPENCLAW_DIR/.env" ] && HAS_ENV="yes"
|
||||
[ -d "$HOME/.uclaw/openclaw" ] && INSTALLED="yes"
|
||||
}
|
||||
|
||||
# 显示主菜单
|
||||
show_menu() {
|
||||
check_status
|
||||
clear
|
||||
echo ""
|
||||
echo -e "${CYAN}${BOLD}"
|
||||
echo " ╔════════════════════════════════════════════════════════╗"
|
||||
echo " ║ ║"
|
||||
echo " ║ 🦞 U-Claw 虾盘 v1.0 ║"
|
||||
echo " ║ OpenClaw AI 助手 一键安装盘 ║"
|
||||
echo " ║ ║"
|
||||
echo " ║ 专为中国用户优化 · 免翻墙 · 离线安装 ║"
|
||||
echo " ║ ║"
|
||||
echo " ╠════════════════════════════════════════════════════════╣"
|
||||
echo -e " ║${NC} ${CYAN}║"
|
||||
|
||||
# 状态栏
|
||||
local STATUS_NODE="${GREEN}v$($NODE_BIN --version 2>/dev/null || echo '未找到')${NC}"
|
||||
local STATUS_MOD="${RED}未安装${NC}"
|
||||
local STATUS_BUILD="${RED}未构建${NC}"
|
||||
local STATUS_INST="${RED}未安装${NC}"
|
||||
|
||||
[ "$HAS_MODULES" = "yes" ] && STATUS_MOD="${GREEN}已安装${NC}"
|
||||
[ "$HAS_DIST" = "yes" ] && STATUS_BUILD="${GREEN}已构建${NC}"
|
||||
[ "$INSTALLED" = "yes" ] && STATUS_INST="${GREEN}已安装${NC}"
|
||||
|
||||
echo -e " ${CYAN}║${NC} 系统: $(uname -m) | Node: $STATUS_NODE ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} 依赖: $STATUS_MOD | 构建: $STATUS_BUILD | 电脑安装: $STATUS_INST ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}║${NC} ${CYAN}║${NC}"
|
||||
echo -e " ${CYAN}╠════════════════════════════════════════════════════════╣${NC}"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} ━━━━ 安装 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${GREEN} [1]${NC} 🚀 一键安装 OpenClaw 到电脑(推荐)"
|
||||
echo -e " ${GREEN} [2]${NC} 📦 仅安装依赖(npm install)"
|
||||
echo -e " ${GREEN} [3]${NC} 🔨 仅构建项目(npm build)"
|
||||
echo -e " ${GREEN} [4]${NC} ▶️ 直接从 U 盘运行(免安装)"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} ━━━━ 中国优化 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${YELLOW} [5]${NC} 🇨🇳 配置国产 AI 模型(DeepSeek/Kimi/通义千问)"
|
||||
echo -e " ${YELLOW} [6]${NC} 💬 配置中国聊天平台(飞书/钉钉)"
|
||||
echo -e " ${YELLOW} [7]${NC} 🪞 设置国内镜像源"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} ━━━━ 维护工具 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${CYAN} [8]${NC} 🔧 诊断修复(openclaw doctor)"
|
||||
echo -e " ${CYAN} [9]${NC} 💾 备份当前状态"
|
||||
echo -e " ${CYAN} [10]${NC} 📂 恢复备份"
|
||||
echo -e " ${CYAN} [11]${NC} 🔄 重置 OpenClaw(恢复出厂)"
|
||||
echo -e " ${CYAN} [12]${NC} 🧹 清理缓存和临时文件"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} ━━━━ 技能 & 使用 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${BLUE} [13]${NC} 🎯 浏览预装技能(52个,已离线可用)"
|
||||
echo -e " ${BLUE} [14]${NC} 📖 中国用户快速上手指南"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} ━━━━ 其他 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${MAGENTA} [15]${NC} 📋 查看使用说明"
|
||||
echo -e " ${MAGENTA} [16]${NC} ℹ️ 系统信息"
|
||||
echo -e " ${DIM} [0]${NC} 退出"
|
||||
echo ""
|
||||
echo -e " ${CYAN}╚════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# 确保依赖已安装
|
||||
ensure_deps() {
|
||||
if [ ! -d "$OPENCLAW_DIR/node_modules" ]; then
|
||||
echo -e " ${YELLOW}正在安装依赖(淘宝镜像)...${NC}"
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" "$NPM_BIN" install --registry=https://registry.npmmirror.com 2>&1
|
||||
echo -e " ${GREEN}依赖安装完成${NC}"
|
||||
fi
|
||||
if [ ! -d "$OPENCLAW_DIR/dist" ]; then
|
||||
echo -e " ${YELLOW}正在构建...${NC}"
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" "$NPM_BIN" run build 2>&1 || true
|
||||
echo -e " ${GREEN}构建完成${NC}"
|
||||
fi
|
||||
}
|
||||
|
||||
# [1] 一键安装到电脑
|
||||
do_install() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 一键安装 OpenClaw 到电脑 ━━━${NC}"
|
||||
echo ""
|
||||
bash "$UCLAW_DIR/安装到电脑.command"
|
||||
}
|
||||
|
||||
# [2] 安装依赖
|
||||
do_npm_install() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 安装 npm 依赖 ━━━${NC}"
|
||||
echo ""
|
||||
cd "$OPENCLAW_DIR"
|
||||
echo -e " ${YELLOW}使用淘宝镜像安装...${NC}"
|
||||
"$NODE_BIN" "$NPM_BIN" install --registry=https://registry.npmmirror.com 2>&1
|
||||
echo ""
|
||||
echo -e " ${GREEN}依赖安装完成!${NC}"
|
||||
}
|
||||
|
||||
# [3] 构建
|
||||
do_build() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 构建 OpenClaw ━━━${NC}"
|
||||
echo ""
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" "$NPM_BIN" run build 2>&1
|
||||
echo ""
|
||||
echo -e " ${GREEN}构建完成!${NC}"
|
||||
}
|
||||
|
||||
# [4] 直接运行
|
||||
do_run() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 从 U 盘启动 OpenClaw ━━━${NC}"
|
||||
echo ""
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs onboard --install-daemon 2>&1 || \
|
||||
"$NODE_BIN" openclaw.mjs 2>&1 || \
|
||||
"$NODE_BIN" "$NPM_BIN" start 2>&1
|
||||
}
|
||||
|
||||
# [5] 配置国产模型
|
||||
do_china_models() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 配置国产 AI 模型 ━━━${NC}"
|
||||
echo ""
|
||||
echo -e " OpenClaw 已内置以下国产模型支持:"
|
||||
echo ""
|
||||
echo -e " ${GREEN}[a]${NC} DeepSeek(深度求索) — 性价比最高,推荐首选"
|
||||
echo -e " ${GREEN}[b]${NC} Kimi / 月之暗面 — 256K 超长上下文"
|
||||
echo -e " ${GREEN}[c]${NC} 通义千问 Qwen — 阿里云,免费额度大"
|
||||
echo -e " ${GREEN}[d]${NC} 智谱 GLM — 清华系,学术场景强"
|
||||
echo -e " ${GREEN}[e]${NC} MiniMax — 语音和多模态"
|
||||
echo -e " ${GREEN}[f]${NC} 豆包 Doubao(字节跳动) — 火山引擎平台"
|
||||
echo -e " ${GREEN}[g]${NC} 百度千帆 — 百度智能云"
|
||||
echo -e " ${GREEN}[h]${NC} 小米 Mimo — 小米 AI"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}请选择要配置的模型 (a-h):${NC} "
|
||||
read -n 1 MODEL_CHOICE
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
ENV_FILE="$OPENCLAW_DIR/.env"
|
||||
touch "$ENV_FILE"
|
||||
|
||||
case $MODEL_CHOICE in
|
||||
a)
|
||||
echo -e " ${CYAN}配置 DeepSeek${NC}"
|
||||
echo " 获取 API Key: https://platform.deepseek.com/"
|
||||
echo ""
|
||||
read -p " 请输入 DeepSeek API Key: " API_KEY
|
||||
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"
|
||||
echo "OPENAI_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo "OPENAI_BASE_URL=https://api.deepseek.com/v1" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}DeepSeek 已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
b)
|
||||
echo -e " ${CYAN}配置 Kimi (月之暗面)${NC}"
|
||||
echo " 获取 API Key: https://platform.moonshot.cn/"
|
||||
echo ""
|
||||
read -p " 请输入 Moonshot API Key: " API_KEY
|
||||
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"
|
||||
echo "OPENAI_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo "OPENAI_BASE_URL=https://api.moonshot.cn/v1" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}Kimi 已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
c)
|
||||
echo -e " ${CYAN}配置通义千问 Qwen${NC}"
|
||||
echo " 获取 API Key: https://dashscope.console.aliyun.com/"
|
||||
echo ""
|
||||
read -p " 请输入 Qwen API Key: " API_KEY
|
||||
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"
|
||||
echo "ZAI_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}通义千问已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
d)
|
||||
echo -e " ${CYAN}配置智谱 GLM${NC}"
|
||||
echo " 获取 API Key: https://open.bigmodel.cn/"
|
||||
echo " 注意: 通过火山引擎(Volcano Engine)接入"
|
||||
echo ""
|
||||
read -p " 请输入 API Key: " API_KEY
|
||||
if [ -n "$API_KEY" ]; then
|
||||
echo "# 智谱GLM (via Volcano Engine)" >> "$ENV_FILE"
|
||||
echo "VOLCENGINE_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}智谱 GLM 已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
e)
|
||||
echo -e " ${CYAN}配置 MiniMax${NC}"
|
||||
echo " 获取 API Key: https://platform.minimaxi.com/"
|
||||
echo ""
|
||||
read -p " 请输入 MiniMax API Key: " API_KEY
|
||||
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"
|
||||
echo "MINIMAX_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}MiniMax 已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
f)
|
||||
echo -e " ${CYAN}配置豆包 Doubao (字节跳动)${NC}"
|
||||
echo " 获取 API Key: https://console.volcengine.com/ark"
|
||||
echo ""
|
||||
read -p " 请输入火山引擎 API Key: " API_KEY
|
||||
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"
|
||||
echo "VOLCENGINE_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}豆包已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
g)
|
||||
echo -e " ${CYAN}配置百度千帆${NC}"
|
||||
echo " 获取 API Key: https://console.bce.baidu.com/qianfan/"
|
||||
echo ""
|
||||
read -p " 请输入千帆 API Key: " API_KEY
|
||||
if [ -n "$API_KEY" ]; then
|
||||
echo "QIANFAN_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}百度千帆已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
h)
|
||||
echo -e " ${CYAN}配置小米 Mimo${NC}"
|
||||
echo " 获取 API Key: https://dev.mi.com/mimo"
|
||||
echo ""
|
||||
read -p " 请输入 Mimo API Key: " API_KEY
|
||||
if [ -n "$API_KEY" ]; then
|
||||
echo "MIMO_API_KEY=$API_KEY" >> "$ENV_FILE"
|
||||
echo -e " ${GREEN}小米 Mimo 已配置!${NC}"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo -e " ${YELLOW}无效选择${NC}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# [6] 配置中国聊天平台
|
||||
do_china_channels() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 配置中国聊天平台 ━━━${NC}"
|
||||
echo ""
|
||||
echo -e " OpenClaw 支持的聊天平台:"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} -- 国内平台 --${NC}"
|
||||
echo -e " ${GREEN}[a]${NC} 飞书 Feishu/Lark — 已内置,企业首选"
|
||||
echo -e " ${GREEN}[b]${NC} QQ(腾讯官方)${RED}★推荐${NC} — 3条命令,1分钟,免费免翻墙"
|
||||
echo -e " ${GREEN}[c]${NC} 微信(社区插件) — iPad协议,文字/图片/文件"
|
||||
echo -e " ${GRAY}[d]${NC} 企业微信 WeCom — 后续集成"
|
||||
echo -e " ${GRAY}[e]${NC} 钉钉 DingTalk — 后续集成"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} -- 国际平台 --${NC}"
|
||||
echo -e " ${GREEN}[f]${NC} Telegram — 推荐,简单好用"
|
||||
echo -e " ${GREEN}[g]${NC} Discord — 游戏/社区"
|
||||
echo -e " ${GREEN}[h]${NC} WhatsApp — 海外用户"
|
||||
echo -e " ${GREEN}[i]${NC} Slack — 外企用户"
|
||||
echo ""
|
||||
read -p " 请选择 (a-i): " -n 1 CH_CHOICE
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
case $CH_CHOICE in
|
||||
a)
|
||||
echo -e " ${CYAN}配置飞书 Feishu${NC}"
|
||||
echo ""
|
||||
echo " 飞书机器人配置步骤:"
|
||||
echo " 1. 访问 https://open.feishu.cn/app 创建应用"
|
||||
echo " 2. 获取 App ID 和 App Secret"
|
||||
echo " 3. 配置事件订阅和权限"
|
||||
echo ""
|
||||
echo " 详细文档: openclaw/docs/channels/feishu.md"
|
||||
echo ""
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
echo -e " ${YELLOW}启动 OpenClaw 配置向导...${NC}"
|
||||
"$NODE_BIN" openclaw.mjs onboard 2>&1 || true
|
||||
;;
|
||||
b)
|
||||
echo -e " ${CYAN}${BOLD}配置 QQ(腾讯官方接入)${NC}"
|
||||
echo ""
|
||||
echo -e " ${GREEN}${BOLD}这是国内最简单的 AI 助手接入方式!${NC}"
|
||||
echo -e " ${GREEN}全程 1 分钟,完全免费,无需翻墙。${NC}"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD}步骤:${NC}"
|
||||
echo ""
|
||||
echo " 1. 扫码注册 QQ 机器人:"
|
||||
echo -e " ${CYAN}http://q.qq.com/qqbot/openclaw/login.html${NC}"
|
||||
echo ""
|
||||
echo " 2. 点击「创建机器人」,获取 AppID 和 AppSecret"
|
||||
echo ""
|
||||
echo " 3. 运行以下 3 条命令:"
|
||||
echo ""
|
||||
echo -e " ${GREEN}openclaw plugins install @sliverp/qqbot@latest${NC}"
|
||||
echo -e " ${GREEN}openclaw channels add --channel qqbot --token \"AppID:AppSecret\"${NC}"
|
||||
echo -e " ${GREEN}openclaw gateway restart${NC}"
|
||||
echo ""
|
||||
echo -e " ${RED}⚠️ 安全提醒:${NC}"
|
||||
echo " 默认任何人都能访问你的机器人!接入后请设置白名单:"
|
||||
echo -e " ${YELLOW}openclaw config set channels.qqbot.allowFrom \"你的QQ号\"${NC}"
|
||||
echo ""
|
||||
echo -e " ${DIM}备选方案: 也可以用 NapCatQQ (OneBot v11) 接入${NC}"
|
||||
echo -e " ${DIM}https://github.com/NapNeko/NapCatQQ/releases${NC}"
|
||||
echo ""
|
||||
|
||||
# 如果已安装 OpenClaw,直接帮用户执行
|
||||
if [ -d "$OPENCLAW_DIR/dist" ]; then
|
||||
read -p " 是否现在安装 QQ 插件? (y/n) " -n 1 DO_QQ
|
||||
echo ""
|
||||
if [[ "$DO_QQ" =~ ^[Yy]$ ]]; then
|
||||
cd "$OPENCLAW_DIR"
|
||||
echo ""
|
||||
echo -e " ${YELLOW}正在安装 QQ 插件...${NC}"
|
||||
"$NODE_BIN" openclaw.mjs plugins install @sliverp/qqbot@latest 2>&1 || true
|
||||
echo ""
|
||||
read -p " 请输入你的 AppID:AppSecret: " QQ_TOKEN
|
||||
if [ -n "$QQ_TOKEN" ]; then
|
||||
"$NODE_BIN" openclaw.mjs channels add --channel qqbot --token "$QQ_TOKEN" 2>&1 || true
|
||||
"$NODE_BIN" openclaw.mjs gateway restart 2>&1 || true
|
||||
echo ""
|
||||
echo -e " ${GREEN}QQ 机器人配置完成!${NC}"
|
||||
echo -e " ${YELLOW}记得设置白名单!${NC}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
c)
|
||||
echo -e " ${CYAN}配置微信(社区插件)${NC}"
|
||||
echo ""
|
||||
echo " 安装微信插件:"
|
||||
echo " openclaw plugins install @icesword760/openclaw-wechat"
|
||||
echo ""
|
||||
echo " 基于 iPad 协议,支持:"
|
||||
echo " - 文字消息"
|
||||
echo " - 图片发送"
|
||||
echo " - 文件传输"
|
||||
echo " - 关键词触发对话"
|
||||
echo ""
|
||||
echo " 仓库: https://github.com/icesword0760/openclaw-wechat"
|
||||
echo ""
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
echo -e " ${YELLOW}正在安装微信插件...${NC}"
|
||||
"$NODE_BIN" openclaw.mjs plugins install @icesword760/openclaw-wechat 2>&1 || \
|
||||
echo -e " ${YELLOW}安装失败,请手动安装${NC}"
|
||||
;;
|
||||
d|e)
|
||||
echo -e " ${YELLOW}该平台正在开发中,敬请期待${NC}"
|
||||
echo " 可关注 u-claw.org 获取最新进展"
|
||||
;;
|
||||
f)
|
||||
echo -e " ${CYAN}配置 Telegram${NC}"
|
||||
echo ""
|
||||
echo " 步骤:"
|
||||
echo " 1. 在 Telegram 中找 @BotFather"
|
||||
echo " 2. 发送 /newbot 创建机器人"
|
||||
echo " 3. 获取 Bot Token"
|
||||
echo ""
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs onboard 2>&1 || true
|
||||
;;
|
||||
g)
|
||||
echo -e " ${CYAN}配置 Discord${NC}"
|
||||
echo ""
|
||||
echo " 步骤:"
|
||||
echo " 1. 访问 https://discord.com/developers/applications"
|
||||
echo " 2. 创建 Application -> Bot"
|
||||
echo " 3. 获取 Bot Token"
|
||||
echo ""
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs onboard 2>&1 || true
|
||||
;;
|
||||
h|i)
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs onboard 2>&1 || true
|
||||
;;
|
||||
*)
|
||||
echo -e " ${YELLOW}无效选择${NC}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# [7] 设置国内镜像
|
||||
do_mirror() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 设置国内镜像源 ━━━${NC}"
|
||||
echo ""
|
||||
|
||||
# npm 镜像
|
||||
echo -e " ${YELLOW}设置 npm 淘宝镜像...${NC}"
|
||||
"$NODE_BIN" "$NPM_BIN" config set registry https://registry.npmmirror.com --location=project 2>/dev/null
|
||||
cd "$OPENCLAW_DIR" 2>/dev/null
|
||||
"$NODE_BIN" "$NPM_BIN" config set registry https://registry.npmmirror.com --location=project 2>/dev/null
|
||||
echo -e " ${GREEN}npm 镜像已设置: registry.npmmirror.com${NC}"
|
||||
|
||||
# 创建 .npmrc
|
||||
NPMRC="$OPENCLAW_DIR/.npmrc"
|
||||
if ! grep -q "npmmirror" "$NPMRC" 2>/dev/null; then
|
||||
echo "" >> "$NPMRC"
|
||||
echo "registry=https://registry.npmmirror.com" >> "$NPMRC"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${GREEN}国内镜像配置完成!${NC}"
|
||||
echo " 后续 npm install 将自动使用淘宝镜像"
|
||||
}
|
||||
|
||||
# [8] 诊断修复
|
||||
do_doctor() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 诊断修复 ━━━${NC}"
|
||||
echo ""
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs doctor --repair 2>&1 || \
|
||||
echo -e " ${YELLOW}如果 doctor 无法运行,请先完成安装步骤${NC}"
|
||||
}
|
||||
|
||||
# [9] 备份
|
||||
do_backup() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 备份当前状态 ━━━${NC}"
|
||||
echo ""
|
||||
|
||||
BACKUP_DIR="$UCLAW_DIR/backups"
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_NAME="backup_${TIMESTAMP}"
|
||||
BACKUP_PATH="$BACKUP_DIR/$BACKUP_NAME"
|
||||
|
||||
mkdir -p "$BACKUP_PATH"
|
||||
|
||||
echo -e " ${YELLOW}备份中...${NC}"
|
||||
|
||||
# 备份配置
|
||||
if [ -f "$OPENCLAW_DIR/.env" ]; then
|
||||
cp "$OPENCLAW_DIR/.env" "$BACKUP_PATH/.env"
|
||||
echo -e " ${GREEN} ✓ .env 配置${NC}"
|
||||
fi
|
||||
|
||||
# 备份 OpenClaw 状态
|
||||
if [ -d "$HOME/.openclaw" ]; then
|
||||
mkdir -p "$BACKUP_PATH/openclaw-state"
|
||||
cp -R "$HOME/.openclaw/openclaw.json" "$BACKUP_PATH/openclaw-state/" 2>/dev/null || true
|
||||
cp -R "$HOME/.openclaw/credentials" "$BACKUP_PATH/openclaw-state/" 2>/dev/null || true
|
||||
echo -e " ${GREEN} ✓ OpenClaw 状态和凭据${NC}"
|
||||
fi
|
||||
|
||||
# 备份 U-Claw 用户数据
|
||||
if [ -d "$UCLAW_DIR/memory" ] && [ "$(ls -A "$UCLAW_DIR/memory" 2>/dev/null)" ]; then
|
||||
cp -R "$UCLAW_DIR/memory" "$BACKUP_PATH/"
|
||||
echo -e " ${GREEN} ✓ 记忆文件${NC}"
|
||||
fi
|
||||
if [ -d "$UCLAW_DIR/persona" ] && [ "$(ls -A "$UCLAW_DIR/persona" 2>/dev/null)" ]; then
|
||||
cp -R "$UCLAW_DIR/persona" "$BACKUP_PATH/"
|
||||
echo -e " ${GREEN} ✓ 人格配置${NC}"
|
||||
fi
|
||||
|
||||
# 备份已安装的版本
|
||||
if [ -d "$HOME/.uclaw/openclaw" ]; then
|
||||
cp "$HOME/.uclaw/openclaw/.env" "$BACKUP_PATH/installed-env" 2>/dev/null || true
|
||||
echo -e " ${GREEN} ✓ 已安装版本配置${NC}"
|
||||
fi
|
||||
|
||||
BACKUP_SIZE=$(du -sh "$BACKUP_PATH" | cut -f1)
|
||||
echo ""
|
||||
echo -e " ${GREEN}备份完成!${NC}"
|
||||
echo " 位置: $BACKUP_PATH"
|
||||
echo " 大小: $BACKUP_SIZE"
|
||||
echo ""
|
||||
|
||||
# 显示所有备份
|
||||
echo " 所有备份:"
|
||||
ls -1 "$BACKUP_DIR" 2>/dev/null | while read -r b; do
|
||||
echo " - $b"
|
||||
done
|
||||
}
|
||||
|
||||
# [10] 恢复备份
|
||||
do_restore() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 恢复备份 ━━━${NC}"
|
||||
echo ""
|
||||
|
||||
BACKUP_DIR="$UCLAW_DIR/backups"
|
||||
if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A "$BACKUP_DIR" 2>/dev/null)" ]; then
|
||||
echo -e " ${YELLOW}没有找到任何备份${NC}"
|
||||
echo " 请先使用 [9] 创建备份"
|
||||
return
|
||||
fi
|
||||
|
||||
echo " 可用备份:"
|
||||
echo ""
|
||||
local i=1
|
||||
for b in "$BACKUP_DIR"/*/; do
|
||||
local bname=$(basename "$b")
|
||||
local bsize=$(du -sh "$b" | cut -f1)
|
||||
echo -e " ${GREEN}[$i]${NC} $bname ($bsize)"
|
||||
i=$((i+1))
|
||||
done
|
||||
echo ""
|
||||
read -p " 选择要恢复的备份编号: " RESTORE_NUM
|
||||
|
||||
local j=1
|
||||
local RESTORE_PATH=""
|
||||
for b in "$BACKUP_DIR"/*/; do
|
||||
if [ "$j" = "$RESTORE_NUM" ]; then
|
||||
RESTORE_PATH="$b"
|
||||
break
|
||||
fi
|
||||
j=$((j+1))
|
||||
done
|
||||
|
||||
if [ -z "$RESTORE_PATH" ]; then
|
||||
echo -e " ${RED}无效选择${NC}"
|
||||
return
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${YELLOW}正在恢复 $(basename "$RESTORE_PATH")...${NC}"
|
||||
|
||||
# 恢复 .env
|
||||
if [ -f "$RESTORE_PATH/.env" ]; then
|
||||
cp "$RESTORE_PATH/.env" "$OPENCLAW_DIR/.env"
|
||||
echo -e " ${GREEN} ✓ .env 已恢复${NC}"
|
||||
fi
|
||||
|
||||
# 恢复 OpenClaw 状态
|
||||
if [ -d "$RESTORE_PATH/openclaw-state" ]; then
|
||||
mkdir -p "$HOME/.openclaw"
|
||||
cp -R "$RESTORE_PATH/openclaw-state/"* "$HOME/.openclaw/" 2>/dev/null || true
|
||||
echo -e " ${GREEN} ✓ OpenClaw 状态已恢复${NC}"
|
||||
fi
|
||||
|
||||
# 恢复用户数据
|
||||
if [ -d "$RESTORE_PATH/memory" ]; then
|
||||
cp -R "$RESTORE_PATH/memory" "$UCLAW_DIR/"
|
||||
echo -e " ${GREEN} ✓ 记忆文件已恢复${NC}"
|
||||
fi
|
||||
if [ -d "$RESTORE_PATH/persona" ]; then
|
||||
cp -R "$RESTORE_PATH/persona" "$UCLAW_DIR/"
|
||||
echo -e " ${GREEN} ✓ 人格配置已恢复${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${GREEN}恢复完成!${NC}"
|
||||
}
|
||||
|
||||
# [11] 重置
|
||||
do_reset() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 重置 OpenClaw ━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${RED}警告: 重置将清除配置和状态数据${NC}"
|
||||
echo ""
|
||||
echo -e " ${GREEN}[1]${NC} 仅重置配置(保留凭据和会话)"
|
||||
echo -e " ${YELLOW}[2]${NC} 重置配置 + 凭据 + 会话(保留工作区)"
|
||||
echo -e " ${RED}[3]${NC} 完全重置(恢复出厂状态)"
|
||||
echo -e " ${DIM}[0]${NC} 取消"
|
||||
echo ""
|
||||
read -p " 选择重置级别: " -n 1 RESET_CHOICE
|
||||
echo ""
|
||||
|
||||
case $RESET_CHOICE in
|
||||
1)
|
||||
echo ""
|
||||
echo -e " ${YELLOW}建议先备份! 是否先创建备份? (y/n)${NC}"
|
||||
read -n 1 DO_BACKUP
|
||||
echo ""
|
||||
[ "$DO_BACKUP" = "y" ] && do_backup
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs reset --scope config 2>&1 || true
|
||||
;;
|
||||
2)
|
||||
echo ""
|
||||
echo -e " ${YELLOW}建议先备份! 是否先创建备份? (y/n)${NC}"
|
||||
read -n 1 DO_BACKUP
|
||||
echo ""
|
||||
[ "$DO_BACKUP" = "y" ] && do_backup
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs reset --scope config+creds+sessions 2>&1 || true
|
||||
;;
|
||||
3)
|
||||
echo ""
|
||||
echo -e " ${RED}确定要完全重置吗? 输入 YES 确认:${NC} "
|
||||
read CONFIRM
|
||||
if [ "$CONFIRM" = "YES" ]; then
|
||||
do_backup
|
||||
ensure_deps
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs reset --scope full 2>&1 || true
|
||||
echo -e " ${GREEN}已恢复出厂状态${NC}"
|
||||
else
|
||||
echo " 已取消"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo " 已取消"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# [12] 清理
|
||||
do_cleanup() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 清理缓存和临时文件 ━━━${NC}"
|
||||
echo ""
|
||||
|
||||
FREED=0
|
||||
|
||||
# 清理 npm 缓存
|
||||
echo -e " ${YELLOW}清理 npm 缓存...${NC}"
|
||||
CACHE_SIZE=$("$NODE_BIN" "$NPM_BIN" cache ls 2>/dev/null | wc -l || echo 0)
|
||||
"$NODE_BIN" "$NPM_BIN" cache clean --force 2>/dev/null || true
|
||||
echo -e " ${GREEN} ✓ npm 缓存已清理${NC}"
|
||||
|
||||
# 清理 Node.js 编译缓存
|
||||
if [ -d "$HOME/.cache/node" ]; then
|
||||
NSIZE=$(du -sm "$HOME/.cache/node" 2>/dev/null | cut -f1)
|
||||
rm -rf "$HOME/.cache/node"
|
||||
echo -e " ${GREEN} ✓ Node 编译缓存已清理 (${NSIZE}MB)${NC}"
|
||||
fi
|
||||
|
||||
# 清理 OpenClaw 日志
|
||||
if [ -d "$HOME/.openclaw/logs" ]; then
|
||||
LSIZE=$(du -sm "$HOME/.openclaw/logs" 2>/dev/null | cut -f1)
|
||||
rm -rf "$HOME/.openclaw/logs"
|
||||
echo -e " ${GREEN} ✓ 日志已清理 (${LSIZE:-0}MB)${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${GREEN}清理完成!${NC}"
|
||||
}
|
||||
|
||||
# [13] 技能浏览器
|
||||
do_skills_browser() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 预装技能浏览器(52个,已离线可用)━━━${NC}"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} 效率 & 编程${NC}"
|
||||
echo -e " ${GREEN} github${NC} GitHub 操作(Issues/PR/代码审查/CI)"
|
||||
echo -e " ${GREEN} gh-issues${NC} 获取 Issues 并分配 Agent 修复"
|
||||
echo -e " ${GREEN} coding-agent${NC} 委派编程任务给 Codex/Claude/Pi"
|
||||
echo -e " ${GREEN} summarize${NC} 总结文本/网页/播客/视频"
|
||||
echo -e " ${GREEN} nano-pdf${NC} 自然语言编辑 PDF"
|
||||
echo -e " ${GREEN} clawhub${NC} 搜索安装更多社区技能"
|
||||
echo -e " ${GREEN} skill-creator${NC} 创建自定义技能"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} 笔记 & 任务管理${NC}"
|
||||
echo -e " ${GREEN} apple-notes${NC} Apple 备忘录(创建/搜索/编辑)"
|
||||
echo -e " ${GREEN} apple-reminders${NC} Apple 提醒事项"
|
||||
echo -e " ${GREEN} obsidian${NC} Obsidian 笔记操作"
|
||||
echo -e " ${GREEN} notion${NC} Notion 页面和数据库"
|
||||
echo -e " ${GREEN} things-mac${NC} Things 3 任务管理 (macOS)"
|
||||
echo -e " ${GREEN} trello${NC} Trello 看板操作"
|
||||
echo -e " ${GREEN} bear-notes${NC} Bear 笔记"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} AI & 创作${NC}"
|
||||
echo -e " ${GREEN} openai-image-gen${NC} AI 图片生成"
|
||||
echo -e " ${GREEN} openai-whisper${NC} 语音转文字(本地)"
|
||||
echo -e " ${GREEN} openai-whisper-api${NC} 语音转文字(API)"
|
||||
echo -e " ${GREEN} gemini${NC} Gemini 一键问答"
|
||||
echo -e " ${GREEN} sag${NC} ElevenLabs 文字转语音"
|
||||
echo -e " ${GREEN} sherpa-onnx-tts${NC} 本地离线文字转语音"
|
||||
echo -e " ${GREEN} nano-banana-pro${NC} Gemini 3 图片生成"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} 通讯 & 社交${NC}"
|
||||
echo -e " ${GREEN} himalaya${NC} 邮件收发(IMAP/SMTP)"
|
||||
echo -e " ${GREEN} discord${NC} Discord 消息操作"
|
||||
echo -e " ${GREEN} slack${NC} Slack 消息操作"
|
||||
echo -e " ${GREEN} wacli${NC} WhatsApp 消息和历史"
|
||||
echo -e " ${GREEN} imsg${NC} iMessage/SMS"
|
||||
echo -e " ${GREEN} xurl${NC} X (Twitter) API"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} 系统 & 工具${NC}"
|
||||
echo -e " ${GREEN} weather${NC} 天气查询"
|
||||
echo -e " ${GREEN} peekaboo${NC} macOS 屏幕截图和 UI 自动化"
|
||||
echo -e " ${GREEN} tmux${NC} 远程终端管理"
|
||||
echo -e " ${GREEN} healthcheck${NC} 系统安全检查"
|
||||
echo -e " ${GREEN} 1password${NC} 1Password 密码管理"
|
||||
echo -e " ${GREEN} video-frames${NC} 视频截帧 (ffmpeg)"
|
||||
echo -e " ${GREEN} session-logs${NC} 会话日志搜索分析"
|
||||
echo -e " ${GREEN} mcporter${NC} MCP 服务管理"
|
||||
echo ""
|
||||
echo -e " ${WHITE}${BOLD} 智能家居 & IoT${NC}"
|
||||
echo -e " ${GREEN} openhue${NC} Philips Hue 灯光控制"
|
||||
echo -e " ${GREEN} sonoscli${NC} Sonos 音箱控制"
|
||||
echo -e " ${GREEN} eightctl${NC} Eight Sleep 智能床垫"
|
||||
echo -e " ${GREEN} camsnap${NC} 摄像头截图/录像"
|
||||
echo ""
|
||||
echo -e " ${DIM} 提示: 这些技能已全部预装在 U 盘中,无需联网下载${NC}"
|
||||
echo -e " ${DIM} 使用: 在 OpenClaw 中直接说 \"帮我查天气\" 或 \"帮我发邮件\" 即可${NC}"
|
||||
echo -e " ${DIM} 更多: 运行 openclaw 后输入 /skills 查看详情${NC}"
|
||||
}
|
||||
|
||||
# [14] 中国用户指南
|
||||
do_china_guide() {
|
||||
echo ""
|
||||
if [ -f "$UCLAW_DIR/中国用户指南.txt" ]; then
|
||||
cat "$UCLAW_DIR/中国用户指南.txt"
|
||||
else
|
||||
echo " 指南文件不存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# [15] 使用说明
|
||||
do_readme() {
|
||||
echo ""
|
||||
if [ -f "$UCLAW_DIR/使用说明.txt" ]; then
|
||||
cat "$UCLAW_DIR/使用说明.txt"
|
||||
else
|
||||
echo " 使用说明文件不存在"
|
||||
fi
|
||||
}
|
||||
|
||||
# [16] 系统信息
|
||||
do_sysinfo() {
|
||||
echo ""
|
||||
echo -e " ${CYAN}${BOLD}━━━ 系统信息 ━━━${NC}"
|
||||
echo ""
|
||||
echo " 操作系统: $(sw_vers -productName 2>/dev/null || uname -s) $(sw_vers -productVersion 2>/dev/null || uname -r)"
|
||||
echo " CPU架构: $(uname -m)"
|
||||
echo " 内存: $(sysctl -n hw.memsize 2>/dev/null | awk '{printf "%.1f GB", $1/1024/1024/1024}' || echo '未知')"
|
||||
echo " Node.js: $($NODE_BIN --version 2>/dev/null || echo '未找到')"
|
||||
echo " npm: $($NODE_BIN $NPM_BIN --version 2>/dev/null || echo '未找到')"
|
||||
echo ""
|
||||
echo " U-Claw 路径: $UCLAW_DIR"
|
||||
echo " U-Claw 大小: $(du -sh "$UCLAW_DIR" 2>/dev/null | cut -f1)"
|
||||
echo ""
|
||||
if [ -d "$HOME/.uclaw" ]; then
|
||||
echo " 已安装路径: $HOME/.uclaw"
|
||||
echo " 已安装大小: $(du -sh "$HOME/.uclaw" 2>/dev/null | cut -f1)"
|
||||
else
|
||||
echo " 电脑安装: 未安装"
|
||||
fi
|
||||
echo ""
|
||||
if [ -d "$HOME/.openclaw" ]; then
|
||||
echo " OpenClaw 状态: $HOME/.openclaw"
|
||||
echo " 状态大小: $(du -sh "$HOME/.openclaw" 2>/dev/null | cut -f1)"
|
||||
fi
|
||||
echo ""
|
||||
echo " 磁盘空间: $(df -h "$UCLAW_DIR" 2>/dev/null | tail -1 | awk '{print $4 " 可用 / " $2 " 总计"}')"
|
||||
}
|
||||
|
||||
# 主循环
|
||||
while true; do
|
||||
show_menu
|
||||
read -p " 请选择 [0-16]: " CHOICE
|
||||
echo ""
|
||||
|
||||
case $CHOICE in
|
||||
1) do_install ;;
|
||||
2) do_npm_install ;;
|
||||
3) do_build ;;
|
||||
4) do_run ;;
|
||||
5) do_china_models ;;
|
||||
6) do_china_channels ;;
|
||||
7) do_mirror ;;
|
||||
8) do_doctor ;;
|
||||
9) do_backup ;;
|
||||
10) do_restore ;;
|
||||
11) do_reset ;;
|
||||
12) do_cleanup ;;
|
||||
13) do_skills_browser ;;
|
||||
14) do_china_guide ;;
|
||||
15) do_readme ;;
|
||||
16) do_sysinfo ;;
|
||||
0)
|
||||
echo -e " ${CYAN}再见! 🦞${NC}"
|
||||
echo ""
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e " ${RED}无效选择,请输入 0-14${NC}"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
read -p " 按回车键返回主菜单..."
|
||||
done
|
||||
88
uclaw-scripts/安装到电脑.bat
Normal file
88
uclaw-scripts/安装到电脑.bat
Normal file
@@ -0,0 +1,88 @@
|
||||
@echo off
|
||||
chcp 65001 >nul 2>&1
|
||||
title U-Claw - 安装 OpenClaw 到电脑
|
||||
|
||||
echo.
|
||||
echo ╔══════════════════════════════════════╗
|
||||
echo ║ U-Claw 安装到电脑 ║
|
||||
echo ║ OpenClaw 永久安装 (Windows) ║
|
||||
echo ╚══════════════════════════════════════╝
|
||||
echo.
|
||||
|
||||
set "UCLAW_DIR=%~dp0"
|
||||
set "INSTALL_DIR=%USERPROFILE%\.uclaw"
|
||||
|
||||
echo 安装位置: %INSTALL_DIR%
|
||||
echo 安装内容: Node.js + OpenClaw + 所有依赖
|
||||
echo.
|
||||
set /p CONFIRM=" 是否继续安装? (y/n) "
|
||||
if /i not "%CONFIRM%"=="y" (
|
||||
echo 已取消安装
|
||||
pause
|
||||
exit /b 0
|
||||
)
|
||||
echo.
|
||||
|
||||
echo [1/4] 创建安装目录...
|
||||
if not exist "%INSTALL_DIR%" mkdir "%INSTALL_DIR%"
|
||||
|
||||
echo [2/4] 安装 Node.js 运行环境...
|
||||
if exist "%INSTALL_DIR%\node" rmdir /s /q "%INSTALL_DIR%\node"
|
||||
xcopy "%UCLAW_DIR%runtime\node-win-x64" "%INSTALL_DIR%\node\" /e /i /q >nul
|
||||
for /f "tokens=*" %%v in ('"%INSTALL_DIR%\node\node.exe" --version') do echo Node.js %%v 已安装
|
||||
|
||||
echo [3/4] 安装 OpenClaw...
|
||||
if exist "%INSTALL_DIR%\openclaw" (
|
||||
if exist "%INSTALL_DIR%\openclaw\.env" copy "%INSTALL_DIR%\openclaw\.env" "%TEMP%\.uclaw-env-backup" >nul 2>&1
|
||||
rmdir /s /q "%INSTALL_DIR%\openclaw"
|
||||
)
|
||||
xcopy "%UCLAW_DIR%openclaw" "%INSTALL_DIR%\openclaw\" /e /i /q >nul
|
||||
if exist "%TEMP%\.uclaw-env-backup" (
|
||||
copy "%TEMP%\.uclaw-env-backup" "%INSTALL_DIR%\openclaw\.env" >nul 2>&1
|
||||
del "%TEMP%\.uclaw-env-backup" >nul 2>&1
|
||||
)
|
||||
|
||||
if exist "%UCLAW_DIR%memory" xcopy "%UCLAW_DIR%memory" "%INSTALL_DIR%\memory\" /e /i /q >nul 2>&1
|
||||
if exist "%UCLAW_DIR%persona" xcopy "%UCLAW_DIR%persona" "%INSTALL_DIR%\persona\" /e /i /q >nul 2>&1
|
||||
|
||||
echo [4/4] 配置环境变量...
|
||||
|
||||
(
|
||||
echo @echo off
|
||||
echo set "UCLAW_HOME=%%USERPROFILE%%\.uclaw"
|
||||
echo "%%UCLAW_HOME%%\node\node.exe" "%%UCLAW_HOME%%\openclaw\openclaw.mjs" %%*
|
||||
) > "%INSTALL_DIR%\uclaw.cmd"
|
||||
|
||||
(
|
||||
echo @echo off
|
||||
echo set "UCLAW_HOME=%%USERPROFILE%%\.uclaw"
|
||||
echo "%%UCLAW_HOME%%\node\node.exe" "%%UCLAW_HOME%%\openclaw\openclaw.mjs" %%*
|
||||
) > "%INSTALL_DIR%\openclaw.cmd"
|
||||
|
||||
echo.
|
||||
echo 正在添加到系统 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
|
||||
echo 已添加到用户 PATH
|
||||
) else (
|
||||
echo PATH 已配置,跳过
|
||||
)
|
||||
|
||||
echo.
|
||||
echo ╔══════════════════════════════════════╗
|
||||
echo ║ 安装完成! ║
|
||||
echo ╚══════════════════════════════════════╝
|
||||
echo.
|
||||
echo 安装位置: %INSTALL_DIR%
|
||||
echo.
|
||||
echo 使用方法:
|
||||
echo 1. 打开新的命令提示符或 PowerShell
|
||||
echo 2. 运行: openclaw
|
||||
echo 或: uclaw
|
||||
echo.
|
||||
echo 首次使用请运行:
|
||||
echo openclaw onboard --install-daemon
|
||||
echo.
|
||||
pause
|
||||
117
uclaw-scripts/安装到电脑.command
Normal file
117
uclaw-scripts/安装到电脑.command
Normal file
@@ -0,0 +1,117 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# U-Claw 虾盘 - macOS 安装到电脑
|
||||
# 将 OpenClaw 及运行环境永久安装到电脑上
|
||||
# ============================================================
|
||||
|
||||
UCLAW_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
INSTALL_DIR="$HOME/.uclaw"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
CYAN='\033[0;36m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
clear
|
||||
echo ""
|
||||
echo -e "${CYAN}"
|
||||
echo " ╔══════════════════════════════════════╗"
|
||||
echo " ║ U-Claw 安装到电脑 ║"
|
||||
echo " ║ OpenClaw 永久安装 ║"
|
||||
echo " ╚══════════════════════════════════════╝"
|
||||
echo -e "${NC}"
|
||||
echo ""
|
||||
echo " 安装位置: $INSTALL_DIR"
|
||||
echo " 安装内容: Node.js + OpenClaw + 所有依赖"
|
||||
echo ""
|
||||
read -p " 是否继续安装? (y/n) " -n 1 -r
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo " 已取消安装"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ARCH=$(uname -m)
|
||||
if [ "$ARCH" = "arm64" ]; then
|
||||
NODE_SRC="$UCLAW_DIR/runtime/node-mac-arm64"
|
||||
echo -e " ${GREEN}Apple Silicon (M系列)${NC}"
|
||||
else
|
||||
NODE_SRC="$UCLAW_DIR/runtime/node-mac-x64"
|
||||
echo -e " ${GREEN}Intel Mac${NC}"
|
||||
fi
|
||||
|
||||
echo -e " ${CYAN}[1/4] 创建安装目录...${NC}"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
|
||||
echo -e " ${CYAN}[2/4] 安装 Node.js 运行环境...${NC}"
|
||||
rm -rf "$INSTALL_DIR/node"
|
||||
cp -R "$NODE_SRC" "$INSTALL_DIR/node"
|
||||
echo -e " ${GREEN}Node.js $($INSTALL_DIR/node/bin/node --version) 已安装${NC}"
|
||||
|
||||
echo -e " ${CYAN}[3/4] 安装 OpenClaw...${NC}"
|
||||
if [ -d "$INSTALL_DIR/openclaw" ] && [ -f "$INSTALL_DIR/openclaw/.env" ]; then
|
||||
cp "$INSTALL_DIR/openclaw/.env" "/tmp/.uclaw-env-backup" 2>/dev/null || true
|
||||
fi
|
||||
rm -rf "$INSTALL_DIR/openclaw"
|
||||
cp -R "$UCLAW_DIR/openclaw" "$INSTALL_DIR/openclaw"
|
||||
if [ -f "/tmp/.uclaw-env-backup" ]; then
|
||||
cp "/tmp/.uclaw-env-backup" "$INSTALL_DIR/openclaw/.env"
|
||||
rm -f "/tmp/.uclaw-env-backup"
|
||||
fi
|
||||
|
||||
# 复制用户数据
|
||||
[ -d "$UCLAW_DIR/memory" ] && [ "$(ls -A "$UCLAW_DIR/memory" 2>/dev/null)" ] && cp -R "$UCLAW_DIR/memory" "$INSTALL_DIR/"
|
||||
[ -d "$UCLAW_DIR/persona" ] && [ "$(ls -A "$UCLAW_DIR/persona" 2>/dev/null)" ] && cp -R "$UCLAW_DIR/persona" "$INSTALL_DIR/"
|
||||
|
||||
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"
|
||||
|
||||
if ! grep -q ".uclaw/node/bin" "$SHELL_RC" 2>/dev/null; then
|
||||
echo "" >> "$SHELL_RC"
|
||||
echo "# U-Claw OpenClaw" >> "$SHELL_RC"
|
||||
echo 'export PATH="$HOME/.uclaw/node/bin:$PATH"' >> "$SHELL_RC"
|
||||
echo "alias openclaw='\$HOME/.uclaw/node/bin/node \$HOME/.uclaw/openclaw/openclaw.mjs'" >> "$SHELL_RC"
|
||||
echo -e " ${GREEN}已添加到 $SHELL_RC${NC}"
|
||||
else
|
||||
echo -e " ${YELLOW}PATH 已配置,跳过${NC}"
|
||||
fi
|
||||
|
||||
# 创建全局命令
|
||||
cat > "$INSTALL_DIR/uclaw" << 'SCRIPT'
|
||||
#!/bin/bash
|
||||
UCLAW_HOME="$HOME/.uclaw"
|
||||
exec "$UCLAW_HOME/node/bin/node" "$UCLAW_HOME/openclaw/openclaw.mjs" "$@"
|
||||
SCRIPT
|
||||
chmod +x "$INSTALL_DIR/uclaw"
|
||||
|
||||
if [ -d "/usr/local/bin" ] && [ -w "/usr/local/bin" ]; then
|
||||
ln -sf "$INSTALL_DIR/uclaw" /usr/local/bin/uclaw 2>/dev/null || true
|
||||
ln -sf "$INSTALL_DIR/uclaw" /usr/local/bin/openclaw 2>/dev/null || true
|
||||
echo -e " ${GREEN}已创建全局命令: uclaw / openclaw${NC}"
|
||||
else
|
||||
echo -e " ${YELLOW}提示: 运行 sudo ln -sf $INSTALL_DIR/uclaw /usr/local/bin/uclaw${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e " ${GREEN}╔══════════════════════════════════════╗${NC}"
|
||||
echo -e " ${GREEN}║ 安装完成! ║${NC}"
|
||||
echo -e " ${GREEN}╚══════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo " 安装位置: $INSTALL_DIR"
|
||||
echo " Node.js: $($INSTALL_DIR/node/bin/node --version)"
|
||||
echo ""
|
||||
echo " 使用方法:"
|
||||
echo " 1. 打开新的终端窗口"
|
||||
echo " 2. 运行: openclaw"
|
||||
echo " 或: uclaw"
|
||||
echo ""
|
||||
echo " 首次使用请运行:"
|
||||
echo " openclaw onboard --install-daemon"
|
||||
echo ""
|
||||
read -p " 按回车键关闭..."
|
||||
57
uclaw-scripts/运行.bat
Normal file
57
uclaw-scripts/运行.bat
Normal file
@@ -0,0 +1,57 @@
|
||||
@echo off
|
||||
chcp 65001 >nul 2>&1
|
||||
title U-Claw 虾盘 - OpenClaw 一键启动
|
||||
|
||||
echo.
|
||||
echo ╔══════════════════════════════════════╗
|
||||
echo ║ U-Claw 虾盘 v1.0 ║
|
||||
echo ║ OpenClaw 一键启动 (Windows) ║
|
||||
echo ╚══════════════════════════════════════╝
|
||||
echo.
|
||||
|
||||
set "UCLAW_DIR=%~dp0"
|
||||
set "OPENCLAW_DIR=%UCLAW_DIR%openclaw"
|
||||
set "NODE_DIR=%UCLAW_DIR%runtime\node-win-x64"
|
||||
set "NODE_BIN=%NODE_DIR%\node.exe"
|
||||
set "NPM_BIN=%NODE_DIR%\npm.cmd"
|
||||
|
||||
if not exist "%NODE_BIN%" (
|
||||
echo [错误] 找不到 Node.js 运行环境
|
||||
echo 请确保 runtime\node-win-x64 目录完整
|
||||
echo.
|
||||
pause
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
for /f "tokens=*" %%v in ('"%NODE_BIN%" --version') do set NODE_VER=%%v
|
||||
echo Node.js 版本: %NODE_VER%
|
||||
echo.
|
||||
|
||||
set "PATH=%NODE_DIR%;%NODE_DIR%\node_modules\.bin;%PATH%"
|
||||
|
||||
if not exist "%OPENCLAW_DIR%\node_modules" (
|
||||
echo 首次运行,正在安装依赖...
|
||||
echo (使用淘宝镜像,请稍等)
|
||||
echo.
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" install --registry=https://registry.npmmirror.com
|
||||
echo.
|
||||
echo 依赖安装完成!
|
||||
echo.
|
||||
)
|
||||
|
||||
if not exist "%OPENCLAW_DIR%\dist" (
|
||||
echo 首次运行,正在构建...
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" "%NPM_BIN%" run build 2>nul
|
||||
echo.
|
||||
)
|
||||
|
||||
echo 正在启动 OpenClaw...
|
||||
echo.
|
||||
cd /d "%OPENCLAW_DIR%"
|
||||
"%NODE_BIN%" openclaw.mjs onboard --install-daemon 2>nul || "%NODE_BIN%" openclaw.mjs 2>nul || "%NODE_BIN%" "%NPM_BIN%" start
|
||||
|
||||
echo.
|
||||
echo OpenClaw 已退出
|
||||
pause
|
||||
82
uclaw-scripts/运行.command
Normal file
82
uclaw-scripts/运行.command
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# U-Claw 虾盘 - macOS 一键启动
|
||||
# 双击此文件即可启动 OpenClaw
|
||||
# ============================================================
|
||||
|
||||
UCLAW_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
OPENCLAW_DIR="$UCLAW_DIR/openclaw"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
CYAN='\033[0;36m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m'
|
||||
|
||||
clear
|
||||
echo ""
|
||||
echo -e "${CYAN}"
|
||||
echo " ╔══════════════════════════════════════╗"
|
||||
echo " ║ U-Claw 虾盘 v1.0 ║"
|
||||
echo " ║ OpenClaw 一键启动 ║"
|
||||
echo " ╚══════════════════════════════════════╝"
|
||||
echo -e "${NC}"
|
||||
|
||||
# 检测 CPU 架构
|
||||
ARCH=$(uname -m)
|
||||
if [ "$ARCH" = "arm64" ]; then
|
||||
NODE_DIR="$UCLAW_DIR/runtime/node-mac-arm64"
|
||||
echo -e " ${GREEN}检测到 Apple Silicon (M系列芯片)${NC}"
|
||||
else
|
||||
NODE_DIR="$UCLAW_DIR/runtime/node-mac-x64"
|
||||
echo -e " ${GREEN}检测到 Intel Mac${NC}"
|
||||
fi
|
||||
|
||||
NODE_BIN="$NODE_DIR/bin/node"
|
||||
NPM_BIN="$NODE_DIR/bin/npm"
|
||||
|
||||
if [ ! -f "$NODE_BIN" ]; then
|
||||
echo -e " ${RED}错误: 找不到 Node.js 运行环境${NC}"
|
||||
echo " 请确保 runtime/ 目录完整"
|
||||
echo ""
|
||||
read -p " 按回车键退出..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
NODE_VER=$("$NODE_BIN" --version)
|
||||
echo -e " Node.js 版本: ${GREEN}${NODE_VER}${NC}"
|
||||
echo ""
|
||||
|
||||
export PATH="$NODE_DIR/bin:$PATH"
|
||||
|
||||
# 检查依赖
|
||||
if [ ! -d "$OPENCLAW_DIR/node_modules" ]; then
|
||||
echo -e " ${YELLOW}首次运行,正在安装依赖...${NC}"
|
||||
echo " (使用淘宝镜像,请稍等)"
|
||||
echo ""
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" "$NPM_BIN" install --registry=https://registry.npmmirror.com 2>&1
|
||||
echo ""
|
||||
echo -e " ${GREEN}依赖安装完成!${NC}"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# 检查构建
|
||||
if [ ! -d "$OPENCLAW_DIR/dist" ]; then
|
||||
echo -e " ${YELLOW}首次运行,正在构建...${NC}"
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" "$NPM_BIN" run build 2>&1 || true
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# 启动 OpenClaw
|
||||
echo -e " ${CYAN}正在启动 OpenClaw...${NC}"
|
||||
echo ""
|
||||
cd "$OPENCLAW_DIR"
|
||||
"$NODE_BIN" openclaw.mjs onboard --install-daemon 2>&1 || \
|
||||
"$NODE_BIN" openclaw.mjs 2>&1 || \
|
||||
"$NODE_BIN" "$NPM_BIN" start 2>&1
|
||||
|
||||
echo ""
|
||||
echo -e " ${YELLOW}OpenClaw 已退出${NC}"
|
||||
read -p " 按回车键关闭窗口..."
|
||||
Reference in New Issue
Block a user