Commit 1805c6ce3aea08f820d3a639bb3590e9f74a78c8
1 parent
46fa2657
HANDOFF.md: 更新为 2026-09-03 状态,记录今天 raylight/h3-console 这轮改动
2026-08-20 那节早就过期了(写的时候 minimax-h3/gateway.py 还是生产后端,raylight 还没上线)。新增最新状态节:raylight 是现在的生产后端、今天的六项改动(编码bug修复、 排队优先级插队、重启保留队列、ComfyUI健康检查、/v1/models修真实数据、详情页新字段) 都已部署验证并推送,当前各服务实测状态,以及磁盘空间收紧这个待留意项。旧节保留作历史 记录,加了架构已变更的提示。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PA1AWh8e7wJ3vyhKBAEQux
Showing
1 changed file
with
68 additions
and
5 deletions
HANDOFF.md
| 1 | -# 交接文档 · 2026-08-20(夜,最新) | |
| 1 | +# 交接文档 · 2026-09-03(最新) | |
| 2 | 2 | |
| 3 | 3 | > 给下次进来的人(或进程)。**先读这份,再读 `CLAUDE.md`。** |
| 4 | -> 权威细节在 `llm-setup.md`(整机)、`minimax-h3/README.md`(视频线)、 | |
| 5 | -> `h3-console/README.md`(Web 管理台)。时间线在 `CHANGELOG.md`。 | |
| 6 | -> 这里只写「现在是什么状态、下一步该干什么」——下面 2026-08-18/19 那几节是历史记录, | |
| 7 | -> 仍有效的踩坑经验保留,但**状态类的表格/结论以这一节为准,不要用旧的**。 | |
| 4 | +> 权威细节在 `llm-setup.md`(整机)、`raylight/README.md`(视频线,2026-08-22起的生产 | |
| 5 | +> 后端)、`h3-console/README.md`(Web 管理台)。时间线在 `CHANGELOG.md`。 | |
| 6 | +> 这里只写「现在是什么状态、下一步该干什么」——下面 2026-08-20 及更早的几节是历史记录, | |
| 7 | +> 架构已经变了(minimax-h3 旧代码已删除,raylight 是现在的生产后端),仍有效的踩坑经验 | |
| 8 | +> 保留,但**状态类的表格/结论以这一节为准,不要用旧的**。 | |
| 9 | + | |
| 10 | +## 2026-09-03:现在是什么状态 | |
| 11 | + | |
| 12 | +**一句话**:生产 H3 后端是 `raylight/`(ComfyUI + Raylight 插件,4卡当一个 FSDP 集群, | |
| 13 | +详见 `CLAUDE.md`「当前负载」表),`minimax-h3/` 旧架构代码已经在 8/24 删除只剩权重。 | |
| 14 | +今天这轮会话围绕 raylight + h3-console 做了一批修复/功能,**全部已部署到服务器验证通过、 | |
| 15 | +已提交推送到 git**(最新 `46fa265`),细节见 `CHANGELOG.md` 2026-09-03 那两节: | |
| 16 | + | |
| 17 | +1. 修了一个真实 bug:参考图/参考视频文件名带中文时,`raylight/server.py` 的 | |
| 18 | + `_fetch_to_input()` 用 `urllib.request.urlopen` 直接崩 `UnicodeEncodeError` | |
| 19 | + (HTTP 请求行必须纯 ASCII,中文没 percent-encode)。 | |
| 20 | +2. **排队优先级/插队**:`Job` 加 `queue_seq`,`Q` 从 `queue.Queue()` 换成 | |
| 21 | + `queue.PriorityQueue()`,新增 `POST /v1/videos/{jid}/prioritize`,console 详情页/ | |
| 22 | + 列表菜单都加了"优先插队"按钮。 | |
| 23 | +3. **重启不再清空排队任务**:这是顺带发现的架构问题——`start.sh` 重启前,排队中的任务 | |
| 24 | + 会被无条件标记 `cancelled`(内存队列重启即空,sqlite 里的记录没有任何路径被重新入队)。 | |
| 25 | + 现在重启会把排队中的任务原样保留、按序重新入队,只有"正好卡在重启瞬间"那条真运行中的 | |
| 26 | + 任务救不回来(这个改不了,GPU 执行状态确实丢了)。**这条改动很重要**:以后改 | |
| 27 | + `raylight/server.py` 要重启,不用再担心把排队任务清空了,只需要挑当前没有任务在跑 | |
| 28 | + 的时机(或者接受损失那一条正在跑的)。 | |
| 29 | +4. 补回一个 8/24 提交过、但**从未真正部署到服务器**的 ComfyUI 存活探测(`_comfyui_alive`, | |
| 30 | + 修 `/health` 在 ComfyUI 进程崩溃后仍骗人报 ready 的监控盲区)。顺带把本地长期分叉的 | |
| 31 | + `raylight/server.py`(顶层)和 `raylight/scripts/server.py` 两份文件同步一致。 | |
| 32 | +5. `h3-console` 的 `GET /v1/models` 之前硬编码 3 档过期数据(模型文件名指向已删除的 | |
| 33 | + `api.py`/`gateway.py` 旧架构),改成实时问 raylight 新增的 `GET /v1/resolutions` | |
| 34 | + (`RESOLUTION_CEILINGS` 的镜像),现在正确返回全部 8 档。 | |
| 35 | +6. 任务详情页加了两个排查用字段(默认折叠):**原始参数**(`req` 原样 JSON)、 | |
| 36 | + **ComfyUI History**(懒加载,问 raylight 新增的 `GET /v1/videos/{jid}/comfy_history`, | |
| 37 | + 透传 ComfyUI 自己的 `/history/{prompt_id}`——这份数据在 ComfyUI 内存里,进程重启就没了, | |
| 38 | + 不是 bug)。生成结果视频从页面底部挪到了状态/操作按钮那一行下面。 | |
| 39 | + | |
| 40 | +### 当前各服务实际状态(2026-09-03 晚实测,不是文档推测) | |
| 41 | + | |
| 42 | +| 服务 | 状态 | 说明 | | |
| 43 | +|---|---|---| | |
| 44 | +| `raylight`(ComfyUI 8188 + server.py 8100) | **在跑**,4卡满载 100% | 16 条排队 + 1 条运行中(正常工作负载,不是卡住) | | |
| 45 | +| `h3-console`(8080,LAN) | **在跑** | `systemctl is-active` → active,今天带新代码重启过 | | |
| 46 | +| `h3-console`(8081,公网 `/console` 子路径) | **在跑** | 同上 | | |
| 47 | +| `llm38` / `whisper` / `m3e-embedding`(docker) | **停**(`Exited`,2周前) | 不是本次操作停的,沿用既有目标状态(这台机器当前只跑 H3) | | |
| 48 | +| GPU 显存 | 4×22528MiB 卡各用 ~11.5G,100% 利用率 | raylight 一直有任务在跑,正常 | | |
| 49 | +| 磁盘 `/` | 81% used,剩 43G | 没报警但在收紧,留意 | | |
| 50 | +| 磁盘 `/data` | 89% used,剩 199G | 同上 | | |
| 51 | + | |
| 52 | +### 下一步 / 需要留意的点 | |
| 53 | + | |
| 54 | +1. **没有阻塞性待办**——这轮改动都已验证上线,git 已推送。 | |
| 55 | +2. 排队积压 16 条是正常业务量(用户在批量提交任务测试),不是系统故障,仅供下次进来的人 | |
| 56 | + 了解上下文,别误判成"卡住了"。 | |
| 57 | +3. `h3-console` 的 `/v1/models` 里 `partitions` 字段的模型文件名这次顺手改成了 raylight | |
| 58 | + 现在实际用的(`minimax_h3_fl2va_pruned_int8_convrot.safetensors` 等),去掉了对不上号 | |
| 59 | + 的 `lora` 字段——这块用户没有明确要求改,只是顺手核实清楚了,如果有外部消费者依赖旧字段 | |
| 60 | + 形状需要留意。 | |
| 61 | +4. 磁盘两边都过 80% 了,暂时没影响什么,但没有余量报警,紧张起来会跟其它任务一样直接写 | |
| 62 | + 失败——跟 `llm-setup.md` 里旧的磁盘提醒是同一类风险,值得找时间清一次。 | |
| 63 | + | |
| 64 | +--- | |
| 65 | + | |
| 66 | +# 交接文档 · 2026-08-20(历史,状态类结论已过时,见上面最新一节) | |
| 67 | + | |
| 68 | +> ⚠️ 下面这节写的时候 `minimax-h3/gateway.py` 还是生产后端,`raylight/` 还没上线。 | |
| 69 | +> 2026-08-22 起 raylight 才是生产默认后端,minimax-h3 代码已在 8/24 删除。看这节纯为 | |
| 70 | +> 保留历史踩坑记录,不要照着下面的服务状态表操作。 | |
| 8 | 71 | |
| 9 | 72 | ## 2026-08-20 夜:现在是什么状态 |
| 10 | 73 | ... | ... |