HomeSense 子进程架构定调 & Moonlight 接续备忘
日期:2026-06-27 用途:回去接着干 Moonlight 时先看这篇。
1. 已定调
- 能力都在自己的 bin/package,Nest 统一 spawn 子进程,不嵌核心。
- Nest 常驻;慢的是热路上每次冷启动,不是子进程本身。
- 最好:Nest 常开;web-server 跟服务起一次一直跑;只有开流时起 streamer,流结束杀 streamer,别反复重启 web-server。
- ADB:一会话一个子进程。alist/media:可短 spawn,卡了再给单包做常驻 worker。
- 长会话 = 子进程不退出。常驻通用框架可以做,难度大一档;可先 SubprocessPool 只接一个最卡 CLI。
2. Moonlight
- web-server:Nest MoonlightWebRuntimeService 常驻 spawn
- streamer:web-server 按 streamer_path spawn,IPC 持续 JSON 行(ServerIpcMessage/StreamerIpcMessage),不是 moonlight-driver 那种 pair CLI
- moonlight-driver:短进程 stdout JSON
3. 环境
D:\devtools,参考 D:\files\References\home\moonlight-web-stream,主仓 D:\files\HomeSense-Studio-v2,别动 Trae/VSCode。OpenSSL 动态库,清 cargo cache 后 moonlight-common-sys 静态链补丁会丢。
4. Phase 1 已完成
packages/moonlight-streamer:homesense-moonlight-streamer mock,check/release OK。未改 streamer_path,未接 moonlight-common。
构建: $env:RUSTUP_HOME='D:\devtools\rust'; $env:CARGO_HOME='D:\devtools.cache.cargo'; env:PATH cd D:\files\HomeSense-Studio-v2\packages\moonlight-streamer cargo +nightly-2026-02-13-x86_64-pc-windows-msvc build --release
5. 接续顺序
- 确认 web-server 不重复冷启动
- Phase 2:moonlight-streamer 接 moonlight-common-rust
- data/runtime/moonlight-web + streamer_path 指向自研 exe
- 可选 IPC 测试脚本
- 配对仍 moonlight-driver 契约
相关:桌面 HomeSense-Moonlight-AList-重构方案.md、Moonlight自研源码分析.md
一句话:服务常驻 + web-server 常驻 + streamer 按流子进程 + 自研 IPC 替换上游 streamer。