C++/Qt 多进程壳:Host 壳框 + Client 原生窗嵌入 + Protobuf IPC。
首期平台:Windows(形态 A);macOS / Linux 目录占位。
English overview:docs/en/README.md
- 多进程 UI 壳:Host 管理 Tab / 生命周期;Client 以原生 HWND 嵌入(
SetParent) - 可撕出 Tab:拖出 / 合入、MRU 关 Tab、空壳规则(纯规则模块 + 单测)
- Protobuf IPC:权威 IDL 为
proto/shell/ipc/v1/ipc.proto,Demo 合约见文档 wid在 embed seam:Tab 模型只认tabId;平台句柄由EmbedContainer/TabEmbedMap持有- 一键 Demo 部署:Windows 上自动
windeployqt,可直接运行build-shared/demos/mps_demo_host.exe
| 项 | 说明 |
|---|---|
| Qt | 6.8+(编 Demo / Host;纯协议单测可不装 Qt) |
| 工具链 | CMake、Ninja、Python 3;Windows 上 MSVC x64(vcvars) |
| 依赖 | Protobuf(可由 CMake FetchContent 拉取) |
| 可选 | clang-format 20(本地格式检查) |
- 打开 x64 Native Tools / vcvars 环境。
- 设置
QTDIR为 Qt 6.8+ 前缀,并把%QTDIR%\bin加入PATH。 - 推荐:安装 QTE→QFR→MPS 到本地 prefix(共享库,构建目录
build-shared):
:: QTDIR = Qt 6.8+ 前缀;PREFIX = 安装根(可选,默认三仓同级的 prefix/)
set QTDIR=<Qt-6.8+-prefix>
set PREFIX=<install-prefix>
python scripts\install_stack.py --prefix %PREFIX%- 双击运行(无额外控制台):
build-shared\demos\mps_demo_host.exe
仅编本仓(默认也输出到 build-shared;Windows 上会自动 deploy_demo.py / windeployqt):
python scripts\build_repo.py仅协议 / Tab 规则单测(可不装 Qt):
python scripts\build_repo.py --no-demos --test更细的构建选项见 docs/zh/build.md。CI:docs/zh/ci.md。
cmake/ Qt / Protobuf 辅助
proto/ shell.ipc.v1 IDL
src/ Host / Client / common / ipc_qt
demos/ mps_demo_host / mps_demo_client
tests/ 协议单测 + Tab 条规则单测
scripts/ install_stack / build_repo / build_qt / deploy_demo
clients/python/ M4b Python Hello 烟测
docs/zh|en/ 中英文文档
| 主题 | 中文(主) | English |
|---|---|---|
| 产品技术规格 | multiprocess-shell-spec.md | multiprocess-shell-spec.md |
| 开发计划 | dev-plan.md | dev-plan.md |
| Demo 形态 | demo-morphology.md | demo-morphology.md |
| Demo 验收 | demo-acceptance.md | demo-acceptance.md |
| Demo IPC | demo-ipc.md | demo-ipc.md |
| IPC 备选(远期) | ipc-alternatives.md | ipc-alternatives.md |
| 构建 | build.md | build.md |
| CI | ci.md | ci.md |
约定:日常以中文文档为准;英文为同步译本。若长文规格草图与 .proto 冲突,以 .proto / Demo IPC 为准。
| 能力 | 状态 |
|---|---|
拼帧 + shell.ipc.v1 + mps_ipc_tests(M0) |
完成 |
可撕出 Tab 规则单测(mps_tab_strip_tests) |
完成 |
| Windows Demo(Home / Create Client / 拖出合入 / 嵌入) | 完成(M5 可关账) |
wid 收到 embed seam(Tab 模型 tabId-only) |
完成 |
| M4b Python Hello | 完成 |
| M6 心跳 / 无响应 UI | 完成 |
| 多 Backend、可选 M7 等 | 见规格与 dev-plan |
Released under the MIT License.