playbooks/docs/ai-workspace-runtime-delivery-plan.md
2026-06-15 21:58:50 +08:00

10 KiB
Raw Blame History

AI Workspace Runtime 交付计划

1. 目标与边界

本计划定义 AI Workspace 核心运行时从源码仓库构建、发布、离线聚合到目标机部署的完整交付链路。

核心原则:

  • LiteLLM、xworkspace-console、xworkmate-bridge、QMD 分别在各自源码仓库的 GitHub Actions build job 中构建。
  • 每个组件独立发布 runtime-* GitHub Release 及其 SHA256 清单。
  • offline package 只下载已发布产物,逐文件完成 SHA256 校验后再聚合。
  • 目标机只允许校验、解包、安装、配置、启动和健康检查,禁止源码编译、依赖构建及镜像构建。
  • 所有未经过 CI 或目标机矩阵实测的能力均保持 TODO,不得仅依据设计或局部实现标记完成。

2. 目标架构

LiteLLM repository ---------- build job --> runtime-litellm-* ----------\
xworkspace-console repository build job --> runtime-xworkspace-console-* --\
xworkmate-bridge repository -- build job --> runtime-xworkmate-bridge-* -----+--> offline package job
QMD repository -------------- build job --> runtime-qmd-* ------------------/      |
                                                                                   | download
                                                                                   | SHA256 verify
                                                                                   | manifest aggregate
                                                                                   v
                                                                        offline-package-*
                                                                                   |
                                                                                   v
                                                                  target host: verify/install only

2.1 组件 Release

四个组件必须由各自仓库负责构建,聚合仓库不得从源码代建组件。

组件 构建责任 Release 命名 必需产物
LiteLLM LiteLLM 仓库 GitHub Actions build job runtime-litellm-* 固定版本 Python runtime/依赖包、启动入口、组件 manifest、SHA256 清单
xworkspace-console xworkspace-console 仓库 GitHub Actions build job runtime-xworkspace-console-* dashboard 静态产物、API 二进制、运行配置模板、组件 manifest、SHA256 清单
xworkmate-bridge xworkmate-bridge 仓库 GitHub Actions build job runtime-xworkmate-bridge-* bridge 二进制、systemd/运行配置模板、组件 manifest、SHA256 清单
QMD QMD 仓库 GitHub Actions build job runtime-qmd-* 已安装依赖和已构建 CLI/runtime、组件 manifest、SHA256 清单

每个组件 manifest 至少记录:组件名、源码 commit、版本、构建时间、目标 OS、目标架构、入口文件、文件列表及每个文件的 SHA256。

2.2 offline package 聚合

offline package job 必须:

  1. 从四个组件的 runtime-* Release 下载与目标平台匹配的产物和 SHA256 清单。
  2. 在聚合前执行 SHA256 校验;缺少清单、文件缺失或摘要不一致时立即失败。
  3. 生成聚合 manifest固定四个组件的 Release tag、源码 commit、资产 URL、资产大小和 SHA256。
  4. 将已校验组件产物、部署 playbook 所需依赖及聚合 manifest 打包为 offline-package-*
  5. 对最终 offline package 再生成 SHA256并在 CI 中执行一次解包与结构校验。

禁止以 latest 作为不可追溯的部署输入;重新聚合必须基于明确 tag 或不可变 commit。

2.3 目标机部署

目标机部署必须开启 prebuilt-only 约束。缺少任一预构建产物时直接失败,不得回退到以下行为:

  • git clone 或源码 checkout
  • npm installnpm run buildgo buildgo run
  • pip install 从公网或源码解析构建依赖;
  • docker buildpodman build 或其他本地镜像构建;
  • 任何需要编译器、SDK 或前端构建工具链的安装步骤。

部署仅执行offline package SHA256 校验、manifest 校验、解包、文件安装、权限设置、配置渲染、服务启动、健康检查和结果汇总。

3. 资源与性能约束

3.1 并发控制

  • 全局并发硬上限必须满足 并发数 <= 2 * 在线 CPU 数,在线 CPU 数以执行时实际可用 CPU 为准。
  • 初始并发取任务上限、配置上限和 2 * 在线 CPU 数 三者最小值。
  • 调度器必须随 load 动态收缩:负载超过阈值时停止发放新任务并逐级降低并发;负载恢复且持续稳定后再缓慢扩容。
  • 动态收缩不得中断正在执行的不可重入安装步骤;只限制后续任务进入。
  • 日志和最终摘要必须记录 CPU 数、load 采样、每次并发调整的时间、原因及调整前后值。

3.2 部署耗时分布

每次部署必须记录总耗时及至少以下阶段耗时:

  • offline package 下载;
  • SHA256 与 manifest 校验;
  • 解包;
  • 各组件安装;
  • 配置渲染;
  • 服务启动;
  • 健康检查。

CI/验收报告按 OS、架构、冷启动/缓存命中、首次执行/幂等重跑分组,统计样本数、最小值、最大值、平均值以及 P50、P90、P95、P99。样本不足时保留原始数据并明确标注不以单次耗时代替分布结论。

4. 支持矩阵与验收

目标支持以下全部组合:

发行版 版本 架构
Debian 11、12、13 amd64、arm64
Ubuntu 22.04、24.04、26.04 amd64、arm64

每个矩阵项必须验证:

  1. offline package 下载和 SHA256 校验成功。
  2. 目标机在无源码、无构建工具链、组件外网访问受限的条件下部署成功。
  3. 四个组件版本与聚合 manifest 完全一致。
  4. 服务启动、健康检查和关键 smoke test 成功。
  5. 同一主机使用同一输入至少连续执行两次;第二次成功且无非预期变更、无重复资源、无凭据轮换、无构建行为。
  6. 首次部署和幂等重跑均产出阶段耗时及完整摘要。

Ubuntu 26.04 在实际可用 runner/镜像和依赖生态完成验证前,只能保持计划支持状态,不得标记已验证。

5. 当前事实

以下状态只记录当前仓库或相邻交付文档能够证明的事实,不把目标设计视为完成:

  • 聚合入口已拆分为 preflight 与 runtime playbookpreflight 已校验 dockerk3ssystemd 运行模式组合。
  • xworkspace-console 与 QMD 的部署代码已出现预构建 archive 输入及 prebuilt-only 缺包失败入口。
  • 相邻一键部署文档已记录xworkspace-console 离线包 publish-release 链路和 Release 产物上传曾核对完成。
  • 相邻一键部署文档已记录:一键安装脚本优先使用离线安装包。
  • xworkspace-console 与 QMD 当前仍存在目标机源码 checkout/依赖安装/构建回退,尚未满足“目标机禁止构建”。
  • LiteLLM 当前可覆盖 package spec但未证明其独立 runtime-litellm-* Release 和完全离线、免构建安装链路。
  • xworkmate-bridge 独立 runtime-xworkmate-bridge-* Release 和预构建消费链路尚未在本计划范围内验证。
  • 四组件 Release 的一致命名、manifest 和 SHA256 契约尚未完成验证。
  • offline package 的逐文件下载、SHA256 校验、聚合 manifest 和最终包校验尚未完成验证。
  • 并发硬上限、基于 load 的动态收缩及调整日志尚未完成验证。
  • 部署耗时分布统计尚未完成验证。
  • 连续重复执行的幂等性验收尚未完成。
  • Debian 11/12/13、Ubuntu 22.04/24.04/26.04 的 amd64/arm64 全矩阵尚未完成验证。

6. TODO

P0构建与发布闭环

  • TODO在 LiteLLM 仓库建立 build job发布 runtime-litellm-* Release、组件 manifest 和 SHA256 清单。
  • TODO在 xworkspace-console 仓库固化 build job确认每次发布 runtime-xworkspace-console-* Release、组件 manifest 和 SHA256 清单。
  • TODO在 xworkmate-bridge 仓库建立 build job发布 runtime-xworkmate-bridge-* Release、组件 manifest 和 SHA256 清单。
  • TODO在 QMD 仓库建立 build job发布 runtime-qmd-* Release、组件 manifest 和 SHA256 清单。
  • TODO为 amd64、arm64 分别产出可安装资产;若资产与发行版相关,则按支持矩阵拆分并在 manifest 中明确兼容范围。
  • TODO增加 Release 契约测试拒绝缺失入口、manifest、SHA256 或架构资产的发布。

P0离线聚合与目标机免构建

  • TODO实现 offline package job按固定 tag 下载四组件 Release并在聚合前逐文件执行 SHA256 校验。
  • TODO生成可追溯聚合 manifest并为最终 offline-package-* 生成和发布 SHA256。
  • TODO在目标机部署入口强制 prebuilt-only删除或禁用四组件所有源码构建回退。
  • TODO增加“目标机禁止构建”守卫检测到编译器调用、包构建命令、源码 checkout 或镜像构建即失败。
  • TODO在断网或仅允许访问 offline package 源的目标机上完成端到端部署验证。

P1并发、性能与可观测性

  • TODO实现在线 CPU 探测和 <= 2 * 在线 CPU 的全局并发硬限制。
  • TODO定义 load 采样窗口、收缩/恢复阈值、迟滞策略和最低并发,完成动态收缩测试。
  • TODO记录阶段级耗时、组件级耗时、并发变化和环境标签产出结构化 JSON 及人类可读摘要。
  • TODO汇总部署耗时分布至少输出 count/min/max/avg/P50/P90/P95/P99并区分首次执行与幂等重跑。

P1幂等与平台矩阵

  • TODO为每个支持矩阵项连续执行至少两次验证第二次无非预期 changed、服务中断、重复资源或凭据变化。
  • TODO覆盖 Debian 11/12/13 amd64/arm64。
  • TODO覆盖 Ubuntu 22.04/24.04/26.04 amd64/arm64。
  • TODO保存每个矩阵项的 Release tag、offline package SHA256、部署日志、耗时数据和验收结论。
  • TODO全部矩阵通过后再把“计划支持”更新为“已验证支持”部分通过时逐项记录不做整体完成声明。