Android/Termux一键部署脚本

### 改动内容

**源码更新方式**
- 原:每次删除整个目录重新克隆(venv/.env/data 全部丢失)
- 改:已有项目时 `git pull` 增量更新,保留 venv、.env、data 等本地文件

**网络加速**
- GitHub 克隆:使用 `ghfast.top` 镜像加速
- Python 依赖:使用阿里云 PyPI 镜像 (`mirrors.aliyun.com`)

**安装体验优化**
- 所有耗时操作改为后台运行 + 转圈动画(⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏)
- 成功显示 ,失败显示  + 最后 20 行错误日志
- npm/pip/vite 输出到日志文件,界面保持整洁

**依赖跳过逻辑**
- 前端依赖:`node_modules` 已存在则跳过 `npm install`
- Python 依赖:`venv` 已存在则跳过创建,pip 自动跳过已安装的包
- 数据库:迁移自动跳过已执行的版本

**兼容性补丁**
- `memory_service.py`:import 改为 try/except,缺失 chromadb 时优雅降级
- API 文件(chapters/memories/outlines/projects/foreshadow):memory_service 导入改为 try/except
- 自动修复 `.env` 中 `DEFAULT_MAX_TOKENS=***` 导致的数据库迁移失败

**移除不兼容依赖**
- 移除 `psutil`(Android 不支持编译)
- 移除 `chromadb` + `sentence-transformers`(依赖 PyTorch,无 Android 版本)
- 向量记忆功能在 Termux 上不可用,其余功能正常

### 运行效果

```
[1/9] 检查环境
[✓] Termux 环境检测通过

[2/9] 安装系统依赖
   安装中 完成

[3/9] 拉取/更新项目源码
   拉取中 完成

[4/9] 应用 Termux 补丁
   修补中 完成

[5/9] 安装 Python 依赖
   安装中 完成

[6/9] 数据库迁移
   迁移中 完成

[7/9] 安装前端依赖
   安装中 完成

[8/9] 构建前端
   构建中 完成

[9/9] 创建启动脚本
[✓] 启动脚本已创建: ~/mumuainovel-start.sh
```

### 使用方式

```bash
# 首次安装
curl -fsSL <url> | bash

# 启动
bash ~/mumuainovel-start.sh        # 前台
bash ~/mumuainovel-start.sh --bg   # 后台
```
This commit is contained in:
Fly143
2026-04-20 01:46:58 +08:00
committed by GitHub
parent e8769642a1
commit f19dc721b6
+6 -7
View File
@@ -200,12 +200,13 @@ OPENAI_BASE_URL=https://api.openai.com/v1
DEFAULT_AI_PROVIDER=openai
DEFAULT_MODEL=gpt-4o-mini
DEFAULT_TEMPERATURE=0.7
DEFAULT_MAX_TOKENS=***
DEFAULT_MAX_TOKENS=4096
# 本地登录账号
LOCAL_AUTH_USERNAME=***
LOCAL_AUTH_PASSWORD=***
LOCAL_AUTH_DISPLAY_NAME=***
LOCAL_AUTH_ENABLED=True
LOCAL_AUTH_USERNAME=admin
LOCAL_AUTH_PASSWORD=admin123
LOCAL_AUTH_DISPLAY_NAME=Admin
ENVEOF
# 替换占位符路径为实际 $HOME 路径
sed -i "s|/data/data/com.termux/files/home|$HOME|g" "$BACKEND/.env"
@@ -214,12 +215,10 @@ echo " ✅ .env 已创建"
else
echo " ✅ .env 已存在,跳过"
fi
# 修复 DEFAULT_MAX_TOKENS 占位符 (*** 不是有效整数,会导致数据库迁移失败)
sed -i "s|DEFAULT_MAX_TOKENS=\*\*\*|DEFAULT_MAX_TOKENS=4096|" "$BACKEND/.env"
) > "$LOG" 2>&1 &
SPIN $! "修补中" "$LOG"
# =============================================================================
# 步骤 5: 安装 Python 依赖
# 说明: venv 不存在则创建;pip 自动跳过已安装的包,只安装新增的