# Control Plane Guide 本文档面向 `biliup-next` 控制台的日常使用。 默认地址: ```text http://127.0.0.1:8787/ ``` 如果当前机器已经开放公网访问,也可以使用服务器 IP + `8787` 端口访问。 ## 页面分区 控制台主要分成两列: - 左侧:全局状态、服务、动作流、导入入口、任务列表、Settings - 右侧:当前任务详情、步骤、产物、历史、时间线、模块、日志 建议的使用顺序是: 1. 先看 `Runtime` 2. 再看 `Tasks` 3. 选中一个任务后,看右侧详情 4. 如果任务异常,再看 `Logs` 和 `History` ## Runtime 这里可以看 3 个汇总指标: - `Health` - `Doctor` - `Tasks` 含义: - `Health = OK` - API 服务本身还活着 - `Doctor = OK` - 关键路径、二进制和依赖文件都存在 - `Tasks` - 当前数据库里的任务数 如果 `Doctor` 不是 `OK`,优先不要继续点任务操作,先修运行环境。 ## Services 这里可以查看并控制: - `biliup-next-worker.service` - `biliup-next-api.service` - 如果还保留旧服务,也可能看到 `biliup-python.service` 可执行操作: - `start` - `restart` - `stop` 建议: - 页面打不开时,先看 `biliup-next-api.service` - 任务不推进时,先看 `biliup-next-worker.service` - 不要随便再启动旧 `biliup-python.service`,除非你明确知道自己要同时跑旧链路 ## Recent Actions 这里显示最近的控制面动作流,例如: - `worker_run_once` - `task_run` - `retry_step` - `reset_to_step` - `stage_import` - `stage_upload` - `service_action` 可过滤: - 仅当前任务 - `status` - `action_name` 用途: - 判断最近有没有人工操作过任务 - 判断任务是不是被重试过 - 判断服务是不是被重启过 ## Import To Stage 这里有两种入口。 ### 1. 复制本机已有文件到隔离 stage 输入服务器上的绝对路径,例如: ```text /home/theshy/video/test.mp4 ``` 点击: ```text 复制到隔离 Stage ``` 适合: - 服务器本地已有文件 - 想快速把已有文件丢进新系统测试 ### 2. 浏览器直接上传文件 选择本地文件后点击: ```text 上传到隔离 Stage ``` 适合: - 本地电脑上的测试视频 - 不想先手动传到服务器 上传成功后,`worker` 会自动扫描 `stage` 并开始建任务。 ## Tasks 这里列出任务列表。 每个任务会显示: - 标题 - 当前状态 - 任务 ID 常见状态: - `created` - `transcribed` - `songs_detected` - `split_done` - `published` - `commented` - `collection_synced` - `failed_retryable` - `failed_manual` 建议: - 先选中你关心的任务 - 再看右侧 `Task Detail / Steps / Logs` ## Task Detail 显示当前选中任务的核心信息: - `Task ID` - `Status` - `Title` - `Source` - `Created` - `Updated` 上方有 3 个操作按钮: - `执行当前任务` - `重试选中 Step` - `重置到选中 Step` ### 执行当前任务 作用: - 手动推进当前任务一次 适合: - 你刚改完配置 - 你不想等下一轮 worker 轮询 ### 重试选中 Step 作用: - 从当前选中的 step 重新尝试 适合: - 某一步是临时失败 - 不需要删除后续产物 ### 重置到选中 Step 作用: - 清理该 step 之后的产物和标记 - 把任务回拨到该 step - 然后重新执行 适合: - 后续结果已经不可信 - 需要从某一步重新跑整段链路 注意: - 这是破坏性动作 - 页面会要求确认 ## Steps 这里显示任务步骤列表,例如: - `ingest` - `transcribe` - `song_detect` - `split` - `publish` - `comment` - `collection_a` - `collection_b` 点击某个 step 之后: - 这个 step 会成为“当前选中 step” - 然后你就可以点: - `重试选中 Step` - `重置到选中 Step` 排查原则: - `transcribe` 失败:先看 `Groq API Key`、`ffmpeg` - `song_detect` 失败:先看 `codex_cmd` - `publish` 失败:先看 `cookies.json`、`biliup` - `collection_*` 失败:再看任务历史和日志 评论规则补充: - `comment` - 纯享版视频下默认发“编号歌单”,不带时间轴 - 完整版主视频下默认才发“带时间轴评论” - 如果当前任务找不到 `full_video_bvid.txt`,也没能从最近发布列表解析出完整版 BV,主视频评论会跳过 ## Artifacts 这里显示任务当前已经产出的文件,例如: - `source_video` - `subtitle_srt` - `songs_json` - `songs_txt` - `clip_video` - `publish_bvid` 用途: - 判断任务跑到了哪一步 - 判断关键输出是否已经落盘 如果开启了 cleanup 配置,任务在 `collection_synced` 后: - `source_video` 对应的原始视频可能会被删除 - `clip_video` 对应的 `split_video/` 目录也可能被清理 这是正常收尾行为,不代表任务失败。 ## History 这里是单任务动作历史。 和 `Recent Actions` 的区别: - `Recent Actions` 看全局 - `History` 只看当前任务 可以看到: - 动作名 - 状态 - 摘要 - 时间 - 结构化 `details_json` 用途: - 判断某次 `retry` 或 `reset` 的结果 - 判断 worker 最近对这个任务做了什么 ## Timeline 这里把任务事件串成一条时间线: - `Task Created` - step started / finished - artifact created - action records 适合: - 回放任务完整过程 - 查清楚任务到底卡在什么时候 ## Modules 这里显示当前注册的模块 / provider。 用途: - 确认当前用的是哪套 provider - 确认模块有没有注册成功 如果将来切 provider,这里会很有用。 ## Doctor Checks 这里比顶部的 `Doctor = OK/FAIL` 更详细。 会列出: - workspace 目录 - `cookies_file` - `upload_config_file` - `ffprobe` - `ffmpeg` - `codex_cmd` - `biliup_path` 如果某个依赖显示 `(external)`,表示它还在用系统或父项目路径,不是 `biliup-next` 自己目录内的副本。 ## Logs 这里可以看日志文件。 支持: - 切换日志文件 - 刷新日志 - 按当前任务标题过滤 使用建议: - 任务异常时,先选中任务 - 再勾选“按当前任务标题过滤” - 然后查看相关日志 这样比直接翻整份日志快很多。 ## Settings Settings 分成两层: - 上半部分:schema 驱动表单 - 下半部分:`Advanced JSON Editor` ### 表单区 这里适合日常参数调整,例如: - `min_duration_seconds` - `groq_api_key` - `codex_cmd` - `retry_count` - `season_id_a` - `season_id_b` - `post_split_comment` - `post_full_video_timeline_comment` - `delete_source_video_after_collection_synced` - `delete_split_videos_after_collection_synced` 支持: - 搜索配置项 - 高频参数优先展示 - 低频参数收纳到 `Advanced Settings` ### Advanced JSON Editor 适合: - 批量调整 - 一次改多个字段 - 需要直接编辑原始 JSON 页面上有两个同步按钮: - `表单同步到 JSON` - `JSON 重绘表单` ### 敏感字段规则 敏感字段会显示为: ```text __BILIUP_NEXT_SECRET__ ``` 规则: - 保留占位符:不改原值 - 改成空字符串:清空原值 - 改成新的字符串:更新为新值 ## 推荐操作流 ### 新上传一个测试视频 1. 打开控制台 2. 在 `Import To Stage` 上传视频 3. 看 `Tasks` 是否出现新任务 4. 选中该任务 5. 观察 `Steps / Artifacts / Timeline` 6. 如需加速,点击 `执行当前任务` ### 某个任务失败 1. 选中任务 2. 看 `Task Detail` 当前状态 3. 看 `Steps` 哪一步失败 4. 看 `Logs` 5. 若只是临时失败: - 选中 step - 点 `重试选中 Step` 6. 若后续产物也需要重建: - 选中 step - 点 `重置到选中 Step` ### 修改合集或上传参数 1. 打开 `Settings` 2. 搜索目标参数,例如 `season` / `retry` 3. 修改表单 4. 点击 `保存 Settings` 5. 对目标任务执行: - `执行当前任务` - 或 `重置到相关 step` ### 控制评论与清理行为 1. 打开 `Settings` 2. 搜索: - `post_split_comment` - `post_full_video_timeline_comment` - `delete_source_video_after_collection_synced` - `delete_split_videos_after_collection_synced` 3. 修改后保存 4. 新任务会按新规则执行 建议: - 如果你希望纯享版评论更适合分P浏览,保持 `post_split_comment = true` - 如果你不希望尝试给完整版主视频发时间轴评论,可以关闭 `post_full_video_timeline_comment` - 如果磁盘紧张,再开启 cleanup;默认建议先关闭,等确认流程稳定后再开 ### 服务异常 1. 看 `Services` 2. 优先 `restart biliup-next-worker.service` 3. 如果页面自身异常,再 `restart biliup-next-api.service` 4. 重启后看: - `Health` - `Doctor` - `Recent Actions` ## 安全建议 当前控制台已经对公网开放时,建议立刻设置: - `runtime.control_token` 设置后: - 除 `/` 和 `/health` 外,其余 API 都要求 `X-Biliup-Token` 如果你通过公网访问控制台,不建议长期保持空 token。