docs: add windows cutvideo recovery guide

This commit is contained in:
kris
2026-03-27 00:11:15 +08:00
parent c65c8e39f3
commit 195a5e5ff6
3 changed files with 174 additions and 0 deletions

View File

@@ -198,3 +198,4 @@ N8N_BASE_URL=http://127.0.0.1:5670
- `cutvideo` 继续运行在 Windows 机器,本系统通过 API 调度
- `huobao-drama` 继续作为 AI 生成视频主链的核心引擎
- 详细审计、阶段计划和联调步骤见 `docs/`
- Windows `cutvideo` 的恢复与常驻维护见 [`WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md`](/Users/kris/code/StoryForge-gitea/docs/WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md)

View File

@@ -36,6 +36,14 @@ cp .env.example .env
- 当前已验证可用的本机 HTTP ASR 入口是 `http://host.docker.internal:8088/transcribe`
- 如果你用的是本机 `mac-whisper-service`,建议同时以 `WHISPER_TIMEOUT_MS=120000` 启动,否则长视频会直接 504
`cutvideo` 维护补充2026-03-27
- 当前 Windows 主机 SSH 别名是 `shuziren-win`,对应 `192.168.31.18`
- 如果 `http://192.168.31.18:7860/api/bootstrap` 超时,但主机 `22 / 3389 / 5985` 仍可达,优先判断为 `cutvideo` 服务未启动,不是局域网地址失效
- 本次已确认的真实故障是 `D:\ai-code\cutvideo\.venv` 损坏,仍指向已不存在的 `Python311`
- 修复后 `cutvideo` 已改由 Windows 任务计划程序 `\Codex\cutvideo-web` 托管,避免服务随 SSH 会话结束一起退出
- 详细恢复步骤见 [`WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md`](/Users/kris/code/StoryForge-gitea/docs/WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md)
## 2. 启动基础服务
```bash
@@ -235,6 +243,13 @@ npm run capture -- \
- Windows 返回 `task_id=8d8f4a0cd5d9`
- 运行目录 `20260318-093520-Windows cutvideo 联调样例`
补充说明2026-03-27
- `GET /api/bootstrap` 恢复为 `200``GET /api/uploads` 返回 `405 Method Not Allowed`
- 上面的 `405` 是正常现象,说明上传接口存在且只接受 `POST`
- `StoryForge collector``/v2/integrations/health` 已重新识别到 `cutvideo.reachable=true``supports_uploads=true`
- 如果 UI 里 `自动剪辑` 再次掉线,先按 [`WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md`](/Users/kris/code/StoryForge-gitea/docs/WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md) 检查 Windows 任务计划程序和 `.venv`
## 8. `huobao-drama` AI 视频链路验证
调用 `POST /v2/pipelines/ai-video`

View File

@@ -0,0 +1,158 @@
# Windows `cutvideo` 运维与恢复
日期2026-03-27
## 1. 适用场景
当 StoryForge 局域网前端里 `自动剪辑` 显示 `不可达`,或者 `collector-service``/v2/integrations/health` 显示:
- `cutvideo.reachable = false`
- `cutvideo.url = http://192.168.31.18:7860/api/bootstrap`
优先按本文处理。
## 2. 当前基线
- Windows 主机:`192.168.31.18`
- SSH 别名:`shuziren-win`
- `cutvideo` 仓库目录:`D:\ai-code\cutvideo`
- 目标服务地址:`http://192.168.31.18:7860`
- 当前常驻方式Windows 任务计划程序 `\Codex\cutvideo-web`
## 3. 本次故障根因
2026-03-27 这次实际故障不是网络不通,而是运行环境损坏:
- Windows 主机仍在线,`22 / 135 / 139 / 445 / 3389 / 5985` 都可达
- 只有 `7860` 超时
- `D:\ai-code\cutvideo\.venv` 内部仍引用已不存在的 `Python311`
- `start-cutvideo-web-background.ps1` 因为坏掉的 `.venv` 回退失败,导致 Web 服务无法启动
## 4. 快速判断
在 Mac 上执行:
```bash
ssh shuziren-win hostname
curl --max-time 5 http://192.168.31.18:7860/api/bootstrap
```
判断逻辑:
- 如果 SSH 能连,但 `api/bootstrap` 超时,优先怀疑 `cutvideo` 服务没起来
- 如果 `GET /api/uploads` 返回 `405 Method Not Allowed`,这是正常现象,表示接口存在且只接受 `POST`
## 5. 标准恢复步骤
### 5.1 重建 `cutvideo` 虚拟环境
在 Windows 上执行:
```powershell
Set-Location D:\ai-code\cutvideo
$ts = Get-Date -Format 'yyyyMMdd-HHmmss'
if (Test-Path .venv -PathType Container) {
Rename-Item .venv (".venv-broken-$ts") -Force
}
C:\Program Files\Python312\python.exe -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip setuptools wheel
.\.venv\Scripts\python.exe -m pip install -e .
.\.venv\Scripts\python.exe -c "import cutvideo, typer, fastapi, uvicorn; print(cutvideo.__file__)"
```
预期:
- `pip install -e .` 成功
- 最后的导入检查不报错
### 5.2 直接启动一次 Web 服务
```powershell
powershell -ExecutionPolicy Bypass -File D:\ai-code\cutvideo\scripts\start-cutvideo-web-background.ps1 -Port 7860
```
预期:
- 返回 `PID=<number>`
- `curl http://192.168.31.18:7860/api/bootstrap` 返回 `200`
### 5.3 注册为常驻任务
这一步必须做。否则服务可能随着临时会话结束而退出。
```powershell
powershell -ExecutionPolicy Bypass -File D:\ai-code\cutvideo\scripts\register-resident-services.ps1 -StartNow
```
说明:
- 该脚本会写入 `HKCU\Software\Microsoft\Windows\CurrentVersion\Run`
- 当前恢复后额外补了任务计划程序 `\Codex\cutvideo-web`
- 建议后续把 `cutvideo-web` 继续作为主要常驻入口
## 6. 验证步骤
### 6.1 Windows 本机
```powershell
cmd /c "netstat -ano | findstr :7860"
```
预期:
- 出现 `0.0.0.0:7860 ... LISTENING`
### 6.2 Mac / NAS
```bash
curl http://192.168.31.18:7860/api/bootstrap
curl -i http://192.168.31.18:7860/api/uploads
```
预期:
- `/api/bootstrap` 返回 `200`
- `/api/uploads` 返回 `405`
### 6.3 StoryForge collector
调用:
```bash
POST /v2/auth/auto-session
GET /v2/integrations/health
```
预期:
- `cutvideo.reachable = true`
- `cutvideo.supports_uploads = true`
- `upload_status_code = 405`
## 7. 常用命令
Mac 上探测:
```bash
ssh shuziren-win hostname
ssh shuziren-win "cmd /c netstat -ano | findstr :7860"
curl --max-time 5 http://192.168.31.18:7860/api/bootstrap
```
Windows 上日志:
```powershell
Get-Content D:\ai-code\cutvideo\runs\service-logs\cutvideo-web.out.log -Tail 120
Get-Content D:\ai-code\cutvideo\runs\service-logs\cutvideo-web.err.log -Tail 120
Get-Content D:\ai-code\cutvideo\runs\service-logs\resident-supervisor.out.log -Tail 120
Get-Content D:\ai-code\cutvideo\runs\service-logs\resident-supervisor.err.log -Tail 120
```
## 8. 当前已验证状态
截至 2026-03-27
- `http://192.168.31.18:7860/api/bootstrap` 已恢复
- `GET /api/uploads` 返回 `405`
- StoryForge NAS collector 已恢复识别 `cutvideo` 在线
- 前端工作台应恢复显示 `自动剪辑` 在线