阶段八:多应用扩展与应用生命周期
阶段状态:已完成并归档
计划状态:已完成
当前工作包:P8-8 生产发布、全局回归与阶段归档(已完成)
当前实施证据(2026-08-18)
已实现并通过自动化回归的范围:
- P8 应用注册表已包含
local-review与presentation-builder,应用状态支持停用、启用、维护、归档和恢复;归档默认隐藏,并可通过include_archived=true查询。 - 运行、输入、结果、Artifact、备份与恢复继续按
application_id隔离;PPTX 文件真实写入 DD 节点 Cloudreve,Runtime 仅保存引用、SHA-256 和元数据,下载回读和备份恢复均已覆盖。 - 演示文稿生成工作台支持主题/Markdown/JSON 文本、本地安全读取的系统云盘文本引用,生成可解析
.pptx,并在 AI BOSS 结构化调用中明确model_called=false。P8 的文件成果唯一存储在 DD 节点 Cloudreve;Runtime SQLite 只保存成果元数据、引用和 SHA-256,下载、备份恢复和完整性校验沿用 Runtime 统一控制链。 - Manifest 已有追加式版本历史,支持受控升级和回滚;历史运行快照不被改写。
- 当前自动化证据:Runtime 全量
206 passed;P8/P7/P6 定向测试20 passed;Console 静态与浏览器契约通过;严格 MkDocs 构建和计划状态校验通过。
已完成范围:Console 已登录态下的桌面与移动端真实浏览器验收、P8-8 最终发布归档和生产 PPTX 下载均已完成。该页保留完整实施契约作为历史兼容入口,正式结论见阶段八完成归档。
生产发布记录:提交 6e6693a 的 Runtime、Console、Docs CI 均成功;本次生产镜像摘要分别为 sha256:af5b10c87e85d59f3d6fd7810f59ceced0418e7fa17e8f3160acd15a642293d6、sha256:ab6a9523aa8c23dbc180029e8b60ab817f3a5d72326415ec33498b2359ba6b65、sha256:43b95c9ef5eb3e28ab54458994efab9f854f86b982b7b048bc280c842ceecff4;部署前 Runtime 数据库备份为 /backup/agentmeshos/ai-runtime/p8-predeploy-20260818-202218.db,quick_check=ok。生产 PPTX 运行 fd65643335c1415592562712273e3d46 已生成并下载,Artifact SHA-256 为 5176eb0c80f2379abe073f59351fe0ff9908d6769595a13166d93fe287113916,Benson 已确认完成;随后 local-review 生产隔离运行也已确认完成。以上是 P8-6 与部分 P8-7/P8-8 证据,不代表整个 P8 已归档。
2026-08-19 成果存储边界生产复核
- 提交
c650a07修复中文标题被清洗成空文件名(.pptx)而无法写入 Cloudreve 的缺陷;Runtime CI32160089635成功,P8 定向测试6 passed。 - 发布前 SQLite 备份为
/backup/agentmeshos/ai-runtime/p8-artifact-storage-predeploy-20260818T161846Z.db,quick_check=ok,SHA-256 为52b22cda16a7c2852c37bf135b7cd10bec2907c0a77c7890eb92797e6de58292。 - 生产镜像切换为
ghcr.io/michaellab7284/agentmeshos-ai-runtime:sha-c650a07,部署健康和拓扑检查通过。真实运行9dfca01b5f9445be8fb467ced188694f生成并由 Benson 确认完成;Artifact3b52552a353b435197537da1f0b59bd9位于 DD Cloudreve 精确路径,SHA-256 为2c6a4a4400477b9e0df32e60e41d2dfed4c476c0e3303c739d18f09d12af2b61,大小29364字节。 - Runtime 下载回读、DD Cloudreve 原对象回读的 SHA-256 完全一致;SQLite
application_artifacts.content长度为0,PPTX ZIP 完整性校验通过。 - 已迁移旧运行
fd65643335c1415592562712273e3d46的唯一 SQLite PPTX:先上传 DD Cloudreve 并回读校验 SHA-2565176eb0c80f2379abe073f59351fe0ff9908d6769595a13166d93fe287113916,再把原记录替换为外部引用。迁移后application_artifacts的 2 条记录均为cloudreve,SQLite 二进制行数为0,旧成果仍可经 Runtime 下载并通过 PPTX ZIP 校验。
计划状态
- 计划名称:阶段八:多应用扩展与应用生命周期。
- 历史阶段:P8 计划已完成并归档,P7 已完成并归档;所有已实现能力均有自动化或生产验收证据。
- 强制进入条件:阶段七全部完成、生产验收通过并形成归档;第一个本地应用已经过连续真实使用周期,且应用运行规范、数据恢复和版本契约不再处于试验状态。该条件已满足。
- 阶段目标:把阶段七稳定的单应用运行规范扩展为可用的应用平台,补齐统一应用注册、生命周期、成果文件交付,并用一个真正有用的演示文稿生成应用验证平台通用性。
- 完成边界:P8-0 至 P8-8 全部完成;本地资料分析与验收工作台和演示文稿生成与交付工作台能够共用注册、运行、成果、文件、生命周期和审计契约,且并发与故障不会造成跨应用状态串联。
- 后续边界:P8 完成不等于建成公共插件市场、多租户 SaaS、任意代码执行平台或无限自治系统。是否新增 P9 必须依据 P8 的生产证据另行规划。
目标、成果与验收契约
P8 解决的不是“再做很多应用”,而是验证 AgentMeshOS 已具备长期承载多个应用的统一生命周期。应用中心负责人类可理解的入口、状态和结果;AI Runtime 继续负责计划、任务、成果、证据、预算、恢复和审计;Nomad 继续是唯一分布式任务调度器;OmniRoute 继续拥有 Provider、模型路由、健康与额度事实。
P8 的阶段成果固定为:
- 一套稳定的多应用身份、注册、隔离、预算、成本、告警和生命周期契约。
- 一个不依赖首个应用业务字段的应用中心与 Runtime 应用关联层。
- 一条带预检、迁移、验证和回滚的应用版本升级路径。
- 一个面向 Benson 直接产出
.pptx成果的演示文稿生成与交付工作台。 - 两个应用并行运行、分别失败、分别暂停和分别恢复,并能提供可下载成果的真实证据。
P8-6 固定选择“演示文稿生成与交付工作台”作为首个成果型应用。它只生成 Benson 明确要求的演示文稿文件,不自动发布、投递、发信或写入外部业务平台;求职类应用不属于本阶段范围。
P8 明确不做:
- 不建立公开应用市场、第三方在线安装源、动态下载并执行任意代码或远端脚本的机制。
- 不引入第二 Runtime、第二调度器、第二 Provider Router、应用自建长期记忆或应用自建凭据代理。
- 不实现多租户、组织、团队、角色矩阵或跨用户数据共享;系统仍按单用户 Benson 模型运行。
- 不默认允许付款、投递、注册、发信、交易、部署、凭据修改或其他外部业务写入。
- 不用应用隔离名义复制 Plan、Task、Deliverable、Evidence、Memory、预算账本或审计状态机。
- 不设置 Console 中不可见的 Token、运行次数或成本限制;“无限制”必须按用户配置真实生效,硬基础设施故障与 Provider 实际限制必须作为外部事实明确显示。
三、技术与架构约束
P8 的实现必须遵守既有 Runtime、Console、数据和调度边界;具体技术选型与比较如下。
技术栈与架构选型
P8 沿用阶段六、阶段七已经验收的 FastAPI + SQLite + Vanilla JavaScript 和现有部署链路。应用注册与生命周期继续位于统一 Runtime,应用中心继续位于统一 Console,任务仍通过现有主节点执行路径或 Nomad Adapter 运行。
不采用微前端、通用插件 SDK、Redis、消息队列或每应用独立服务作为 P8 默认方案:
| 方案 | 可维护性 | 部署复杂度 | 性能 | 学习成本 | 后续扩展 | P8 结论 |
|---|---|---|---|---|---|---|
| 现有 Runtime 内置版本化注册表与统一应用中心 | 单一状态权威,复用既有迁移、恢复和审计 | 最低,沿用 Runtime/Console 镜像 | 单用户多应用足够 | 最低 | 可在真实需求出现后提取独立服务 | 采用 |
| 每应用独立后端或微服务 | 边界清晰但状态和运维面倍增 | 高,需新增服务发现、认证和部署 | 可独立扩展 | 高 | 适合未来高负载异构应用 | P8 不采用 |
| 微前端与动态插件市场 | 前端模块独立 | 很高,供应链和兼容治理复杂 | 增加加载与通信成本 | 高 | 适合大型第三方生态 | P8 禁止预建 |
| Redis/消息队列驱动的第二执行链 | 增加异步吞吐 | 高,新增持久化和恢复权威 | 当前没有必要收益 | 中高 | 适合未来大规模事件流 | P8 不采用 |
flowchart TB
Benson["Benson"] --> Center["统一应用中心"]
Center --> Registry["Runtime 版本化应用注册表"]
Registry --> AppA["第一个稳定应用"]
Registry --> AppB["第二个已验收应用"]
AppA --> Runtime["统一 AI Runtime"]
AppB --> Runtime
Runtime --> Objects["Conversation / Plan / Task / Deliverable / Evidence"]
Runtime --> Nomad["唯一 Nomad 调度器"]
Runtime --> Storage["SQLite / Cloudreve 数据面"]
Runtime --> OmniRoute["官方 OmniRoute"]
Registry --> Governance["分应用预算 / 成本 / 告警 / 生命周期"]
四、核心契约
4.1 应用身份与版本
application_id是 Runtime 分配且永不复用的稳定身份;重命名、停用、归档、恢复和升级不得改变该 ID。application_key是内置注册表中的稳定机器标识,发布后不可原地改名;替换只能注册新应用并保留旧应用历史。manifest_version标识 Manifest 契约版本;application_version标识应用实现版本,两者必须分别记录。- 每次
application_run冻结应用版本、设置版本、输入引用、模型通道、工具白名单、预算配置和触发来源。 - Conversation、Plan、Task、Deliverable 和 Evidence 仍保留各自权威 ID;
application_id与application_run_id只建立归属关联,不能替代原对象身份。
4.2 隔离
- 隔离范围覆盖设置、运行、输入引用、成果、证据、预算用量、成本、告警、审计、临时目录和取消范围。
- 所有应用范围查询必须显式携带并校验
application_id;服务端不得相信浏览器提交的归属字段,必须由已认证资源关系反查。 - SQLite 可继续作为单一数据库,但必须使用外键、唯一约束、事务和应用范围索引实现逻辑隔离;P8 不为“看起来隔离”而复制数据库。
- Cloudreve Artifact 使用明确的应用前缀和精确路径;应用不能扫描其他应用目录,也不能直接读取 Cloudreve 本地持久化目录。
- 应用停用、故障、取消、归档或回滚只能影响该应用及其指定运行,不能修改其他应用状态、全局 AI BOSS 会话或平台控制面。
4.3 预算、成本与告警
- 应用预算是统一 AI 工作台账本上的可见应用子限额,不是应用私有额度池;Benson 可在 Console 查看和编辑,不允许 Runtime 内置隐形 Token 上限、冻结任务限制或不可见安全余量。
unlimited必须使用明确的无限制语义,不得转换为内部默认数值上限;实际 Provider 限额、磁盘、超时或系统资源不足按真实失败原因报告。- 每次调用必须同时满足所有适用的可见有限上限;全局与应用级任一为有限值时使用更严格的剩余额度,任一侧为
unlimited时不把它转换为数值限制,两侧均为unlimited时不产生 Token 准入上限。一次真实调用只在统一账本记一次用量,再按application_id归属展示,禁止双重扣减或创建额外额度。 - 每次运行冻结预算配置;配置修改只影响后续运行,不篡改历史快照。
- 用量和成本按
application_id、application_run_id、模型通道和底层对象关联;未知成本必须显示unknown,不得估算成精确值。 - 告警必须明确应用、人类可读原因、影响、证据、建议和时间;跨应用共用资源告警可关联多个应用,但不能复制成互相矛盾的独立事实。
- “AI BOSS 处理告警”必须使用项目主题的居中自定义弹窗,允许 Benson 补充上下文与授权,再调用既有处理链;不得使用浏览器
alert、prompt或confirm。
4.4 生命周期与状态
应用定义状态统一为:
disabled:已登记但不允许创建新运行,历史可读。enabled:允许按既有受控入口创建新运行。maintenance:暂停新运行,已有运行按 Benson 选择完成或取消。archived:从默认列表隐藏,不允许新运行,历史与证据保留。error:注册、兼容或迁移验证失败;禁止新运行并显示恢复步骤。
应用运行继续使用 P6 冻结、经 P7 生产验证且未另造同义状态的运行状态机。状态转换由 Runtime 校验版本号、当前状态、管理员身份和 client_request_id;重复请求必须幂等返回同一事实。归档不是删除,停用不是取消,维护不是故障,应用错误也不能把已验收成果回退为未验收。
五、数据与接口摘要
P8 只允许在 P7 模型上做增量迁移。最终表名可以在 P8-0 根据现有代码命名收敛,但语义至少包括:
| 数据对象 | 必需字段摘要 | 权威关系 |
|---|---|---|
| 应用定义 | application_id、application_key、名称、状态、当前版本、Manifest 版本、乐观锁版本、时间戳 |
应用身份与当前生命周期权威 |
| 应用版本 | 应用 ID、应用版本、Manifest 快照、兼容范围、迁移状态、镜像/代码摘要、发布时间 | 追加式版本事实,不覆盖旧版本 |
| 应用设置版本 | 应用 ID、设置版本、脱敏设置快照、替代关系、创建时间 | 运行冻结引用;凭据只保存引用 |
| 应用运行关联 | 应用运行 ID、应用/版本/设置、触发来源、预算快照、对象引用、状态 | 与既有 Plan/Task/成果状态机关联 |
| 应用用量与成本 | 应用/运行/通道、Token、请求数、已知成本、来源时间 | 复用真实调用账本,不重复计费 |
| 应用告警关联 | 告警 ID、应用/运行、级别、原因、状态、证据引用 | 复用统一告警事实 |
| 生命周期审计 | 应用 ID、动作、前后状态、操作者、请求 ID、原因、时间 | 追加式,不允许覆盖或删除 |
| 升级与迁移记录 | 来源/目标版本、预检、备份、迁移、验证、回滚引用 | 一次升级一份完整事实 |
所有写接口沿用 P6 的 /boss/v1/applications 前缀、管理员认证、乐观锁、状态校验、client_request_id 和追加式审计;P8-0 必须冻结为扩展既有资源与子资源,不得另建平行 API 前缀。接口族至少包括:
- 应用列表、详情、版本、设置、运行、成本、告警和审计的分页只读查询。
- 应用启用、停用、进入/退出维护、归档和恢复。
- 升级预检、执行升级、验证升级和受控回滚;预检失败不得进入迁移。
- 创建应用运行、取消指定运行和受控重新运行;不得通过应用接口重启 Runtime。
- 新应用的 Manifest 注册只能来自随正式版本发布的内置允许列表,不开放浏览器上传可执行插件。
错误响应必须返回稳定错误码、人类可读原因、当前状态、允许动作和追踪 ID;不得只返回笼统 400/409/500。任何列表和详情接口都不得返回完整 Prompt、凭据、隐藏推理或其他应用的私有输入。
六、工作包与验收契约
P8-0:冻结多应用契约与 P7 基线
目标:以 P7 生产事实为依据,冻结多应用身份、隔离、生命周期、版本和接口契约,消除首个应用硬编码。
输入:P7 完成归档、生产数据库结构、应用 Manifest、Runtime/Console 接口、连续使用报告、故障与恢复记录。
交付物:
- P7 基线清单与不可破坏兼容项。
- 多应用术语、状态转换、身份、外键、索引、错误码和 API 契约。
- 首个应用硬编码审计及逐项移除清单。
- SQLite 增量迁移、备份、验证和回滚设计。
- 安全、数据、凭据和 Cloudreve 路径边界说明。
验收标准:旧 P7 数据无需重写即可读取;每个新增字段有来源与默认值;状态转换无歧义;没有第二调度器或第二状态权威;P8-1 至 P8-8 的依赖、测试与回滚均能映射到冻结契约。
失败处理:若 P7 数据或接口仍不稳定,P8 保持未实施并返回 P7 修复,不允许边迁移边补契约。
P8-1:多应用身份、注册与查询
目标:让 Runtime 和 Console 在没有业务字段分支的情况下识别、列出和打开多个应用。
交付物:
- 增量数据迁移、唯一约束、外键和应用范围索引。
- 内置应用注册表、版本化 Manifest 校验及兼容性检查。
- 应用列表、详情、版本和能力查询接口。
- 应用中心列表、搜索、筛选、排序、状态、版本和最近结果摘要。
验收标准:至少用首个应用和一个不可执行的测试 Manifest 验证多项注册;重复注册幂等;未知、不兼容或损坏 Manifest 进入明确 error,不能污染首个应用;刷新和 Runtime 重启后身份、排序、筛选与详情一致;桌面和移动端无横向溢出。
回滚边界:回退 Runtime/Console 镜像后保留新表和注册数据;旧版本仍能读取 P7 首个应用,不删除任何历史。
P8-2:设置、数据、运行与证据隔离
目标:证明所有应用范围对象都由服务端强制归属,不能通过修改 URL、请求体或前端状态跨应用读取或操作。
交付物:
- 分应用设置版本、运行关联、输入引用和 Artifact 前缀。
- Conversation、Plan、Task、Deliverable、Evidence 与应用运行的关联校验。
- 应用范围临时目录、取消范围、重新运行和清理规则。
- 跨应用访问拒绝、审计和人类可读错误。
验收标准:交换两个应用的 ID、对象 ID、分页游标、运行 ID 和 Artifact 引用均不能越权;应用 A 的停用、取消、清理、失败和重新运行不改变应用 B;数据库外键检查和 quick_check 通过;长期成果与证据在应用归档后仍可追溯。
回滚边界:隔离迁移只追加关联,不移动或删除 P7 原对象;回滚后新关联可被旧版本忽略但不能丢失。
P8-3:预算、成本、告警与审计归属
目标:为每个应用提供真实、可见、可追溯的资源事实,同时保持全局预算和 OmniRoute 权威边界。
交付物:
- 分应用预算配置和每次运行的冻结快照。
- 分应用 Token、请求数、模型通道、已知成本与基础设施成本摘要。
- 分应用告警、最近失败、人类可读原因和处理入口。
- 生命周期、预算修改和告警处理的追加式审计。
验收标准:有限预算在边界处阻止后续调用并显示依据;无限制配置不会触发内部伪造上限;成本缺失显示 unknown;应用 A 的预算耗尽不消耗或冻结应用 B 的独立预算,但全局可见预算仍按现有规则统一计入;告警处理必须先显示自定义授权弹窗并持久化 Benson 补充内容与结果。
回滚边界:回滚不删除用量、成本、告警或审计;关闭分应用展示后,全局账本仍保持数值一致。
P8-4:启停、维护、归档与恢复
目标:完成应用从登记到归档恢复的可控生命周期,并让所有 Benson 操作在应用中心可理解。
交付物:
- 启用、停用、进入/退出维护、归档和恢复接口。
- 应用中心状态、允许操作、影响范围、待处理运行和最近结果。
- 符合项目主题的居中自定义确认弹窗。
- 冲突、重复点击、并发修改和重启恢复处理。
验收标准:停用后不能新建运行但历史可读;维护模式按 Benson 选择处理已有运行;归档后默认隐藏且可在归档筛选中恢复;恢复不生成新应用 ID;重复操作幂等;两个浏览器并发修改时过期版本被明确拒绝;任何生命周期操作都不影响其他应用。
回滚边界:回滚镜像不自动改变应用状态;已归档记录和审计保留,必要时只能通过受控接口恢复。
P8-5:版本升级、迁移与回滚
目标:把 P7 已验收的单应用升级路径泛化为按 application_id 隔离的多应用路径,证明目标应用升级、迁移或回滚不会改变其他应用。
交付物:
- 目标版本兼容预检、依赖检查、数据备份和容量检查。
- 版本/Manifest/设置迁移记录与幂等迁移步骤。
- 升级后 Smoke、历史读取、真实运行和结果校验。
- 应用级回滚操作与回滚后数据兼容说明。
验收标准:不兼容目标在写入前失败;重复执行同一迁移不重复修改数据;升级期间应用进入维护且不影响其他应用;成功后新旧历史均可读;故意失败的迁移可恢复到旧镜像与旧应用版本;恢复后数据库 quick_check、关键数量、哈希和真实运行均通过。
回滚边界:回滚只能影响目标应用代码与版本指针,不删除升级期间产生的审计和迁移记录;数据库不可逆变更禁止进入 P8。
P8-6:演示文稿生成与交付工作台
目标:使用统一应用契约实现一个真正面向 Benson 的成果型应用:根据明确的主题、素材和页数要求生成可下载的 .pptx 文件,并留下可追溯的运行、版本、校验和历史记录。
应用边界:
- 输入:Benson 明确提交的主题、页数、文字素材和已登记文件;不自动抓取未授权外部来源。
- 输出:结构化大纲、演示文稿
.pptx、生成摘要、文件大小、SHA-256 和应用运行关联。 - 允许:使用现有 Runtime、Worker、系统文件空间、应用设置、成果登记和审计。
- 禁止:自动发布、邮件投递、外部平台写入、远程脚本执行和未经确认的外部素材抓取。
交付物:Manifest、设置版本、输入资料集、PPTX 生成器、确定性文件检查、结果页面、下载入口、历史版本、Benson 决定条件、预算、风险、发布与回滚材料。
验收标准:演示文稿应用从注册、启用、输入、运行、成果、文件校验、下载到人类可读结果全链路通过;刷新、重启、中断和受控重新运行不丢失状态;PPTX 能被标准解析器打开,页数、文件大小和 SHA-256 与记录一致;不得通过应用专属旁路破坏统一契约。
失败处理:生成失败必须显示真实原因并保留失败运行;不得生成空文件、伪造下载链接或把文本大纲误报为 PPTX 成果。
P8-7:双应用并行、故障与资源竞争验收
目标:证明两个真实应用并行运行时状态、取消、资源、预算、错误和结果互不串联。
交付物:
- 无依赖并行、共享 Worker 资源、共享模型通道和错峰运行场景。
- 单应用失败、超时、取消、预算耗尽、维护、Runtime 重启和 Worker 故障注入场景。
- 公平性、队列时间、Token、成本、告警和恢复证据。
- 应用中心人类可读进度、结果、原因和下一步展示。
验收标准:两个应用可同时处于独立运行状态;取消 A 不取消 B;A 的错误、维护、归档、预算耗尽和升级不改变 B;共享资源拥塞显示真实排队原因且不重复调用模型;Runtime 重启将未完成运行按既有规则恢复或标记中断,不自动重放旧模型请求;所有结果与证据归属正确。
性能判定:P8 不承诺虚假固定吞吐量。以 P7 基线与同机资源为参照记录延迟、队列、CPU、内存、磁盘和模型调用事实;发现容量问题时给出测量结果和后续扩展建议,不用隐藏限流掩盖问题。
P8-8:生产发布、全局回归与阶段归档
目标:完成 Runtime、Console、Docs 和两个真实应用的生产验收,确认可回滚后归档 P8。
交付物:
- 数据库备份、迁移记录、镜像摘要、配置差异和发布记录。
- 自动化、浏览器、生产、重启和回滚验收报告。
- 两个应用的真实结果、证据、成本、告警、生命周期和恢复记录。
- P8 完成归档、计划状态、文档索引、运行手册和后续缺口清单。
验收标准:本计划第八节的全部测试通过;公网 Console 与 Docs 回读一致;两个应用至少各完成一次真实低风险运行;高风险或外部写入仍停在 Benson 决定;应用级回滚不影响另一应用;平台回滚不删除 P1-P7 或 P8 业务数据;GitHub、本地、部署镜像和 Docs 状态可追溯。
归档条件:所有已知严重问题关闭;普通问题有明确范围、原因和后续计划;不存在把未验证能力写成已完成的文档。未满足任一条件时 P8 保持进行中,不得进入后续阶段。
分布式底座接入声明
- 接入结论:接入 P7 已验收的统一 AI Runtime 与分布式底座,以同一底座承载两个真实应用,不新增第二控制面。
- 使用层:Network 只承载已登记控制面通信;Nomad 是唯一节点放置和任务调度器;Compute 按能力执行无状态任务;Storage 按
application_id保存状态、结果与 Artifact;Observability 按应用和运行归属状态、Token、已知成本、告警与错误。 - Adapter 归属:所有应用复用统一 Model、Nomad、Storage、Tool 和 Feedback Adapter;第二应用不得增加业务专属调度器、Provider Router、长期记忆或凭据代理。
- 执行映射:主节点维护应用身份、生命周期、预算、私有状态、审核和审计,并完成所有 Cloudreve 文件下载、校验与解析;Worker 只接受 Nomad 派发的不含文件字节、已登记最小任务,不能读取其他应用范围或自行选择应用。
- 数据路径:所有文件继续只经
cloud.yohan.fun公网 HTTPS 数据面传输;SQLite、Cloudreve 路径、临时目录、取消范围和结果引用均由服务端按application_id与application_run_id强制隔离。 - 凭据路径:受控服务按应用使用最小权限引用;凭据不进入 Manifest、模型上下文、Worker、浏览器、审计正文、Git 或跨应用共享状态。
- 生命周期:应用可启用、停用、维护、归档、恢复、升级和回滚;历史运行、结果、证据、用量、告警与审计长期保留;临时数据和一次性凭据按精确引用清理,不设置隐藏 TTL。
- 验收证据:两个真实应用的身份、隔离、并行运行、Nomad Allocation(适用时)、Storage 哈希、预算成本、告警、升级回滚、故障恢复、Console 桌面/移动端和公网结果。
七、依赖顺序
flowchart LR
P80["P8-0 契约与基线"] --> P81["P8-1 身份与注册"]
P81 --> P82["P8-2 数据与运行隔离"]
P82 --> P83["P8-3 预算 / 成本 / 告警"]
P82 --> P84["P8-4 生命周期"]
P83 --> P85["P8-5 升级与回滚"]
P84 --> P85
P85 --> P86["P8-6 演示文稿生成与交付"]
P86 --> P87["P8-7 双应用并行验收"]
P87 --> P88["P8-8 发布与归档"]
- P8-0 是全部实现的前置条件。
- P8-1 与 P8-2 必须串行,避免先做页面后补身份和隔离。
- P8-3 与 P8-4 可在 P8-2 完成后由低冲突文件范围并行实施,但状态模型、数据库迁移和共享接口必须由主线统一收口。
- P8-5 必须同时依赖预算/告警事实和生命周期维护模式。
- P8-6 不得早于统一升级与回滚路径,避免第二应用成为不可维护样板。
- P8-7、P8-8 必须串行完成,不能以单应用测试代替双应用生产证据。
八、测试与验收矩阵
8.1 单元与迁移测试
- P7 SQLite 增量迁移、重复迁移、旧数据默认归属、外键、唯一约束、索引和
quick_check。 - 应用 ID/key/version、Manifest 校验、状态转换、乐观锁、幂等键和分页游标。
- 分应用预算的有限与无限制语义、成本
unknown、告警归属和审计追加。 - 启停、维护、归档、恢复、升级预检、迁移失败和回滚。
- 跨应用对象 ID、运行 ID、输入引用、Artifact 路径和取消范围的拒绝测试。
8.2 集成测试
- 两个应用分别创建 Conversation、Plan、Task、Deliverable、Evidence 并准确回查。
- 同时触发、排队、调用模型、提交 Nomad 任务、产生成果和审核,不重复消费 Token。
- 单应用取消、失败、预算耗尽、维护、升级和回滚不传播到另一应用。
- Runtime 重启、Worker 离线和恢复后不重放未确认模型请求,不丢失已持久化结果。
- Cloudreve 上传下载走公网数据面并做下载侧哈希验证;Console/Runtime 不取得浏览器可见 WebDAV 凭据。
8.3 浏览器验收
1440x900与390x844覆盖应用列表、筛选、详情、运行、成本、告警、设置、版本、归档和恢复。- 所有写操作使用项目主题的居中自定义弹窗,显示影响、原因、下一步和即时持久化结果。
- 刷新、浏览器前进后退、切换应用和重新登录后不串应用、不丢状态。
- 长名称、哈希、错误和路径换行,无横向溢出;技术详情默认折叠,人类结果优先展示。
8.4 生产与故障验收
- 先备份 Runtime SQLite 并验证可恢复,再发布 Runtime、Console、Docs。
- 两个真实应用各完成至少一次低风险运行及成果验收。
- 验证有限预算、无限制预算、单应用停用、维护、归档、恢复和告警处理。
- 完成一次应用升级成功路径和一次受控失败回滚演练。
- 完成 Runtime 重启、一个 Worker 不可用和单应用任务失败演练。
- 从公网回读 Console、Docs、结果入口和 Cloudreve 精确路径;不得以 localhost 成功代替公网验收。
九、发布、监控与回滚
发布顺序固定为数据库备份与预检、Runtime、Console、内置应用、Docs。每一步记录 Git 提交、CI、镜像摘要、迁移版本、健康、Smoke 和公网证据;前一步未通过不得继续后一步。
生产观察至少覆盖应用列表、运行成功/失败、队列时间、模型调用、Token、已知成本、告警、SQLite 健康、Worker 状态和 Artifact 访问。观测数据必须带采集时间;过期或缺失不能显示为健康。
回滚遵循以下边界:
- 应用级问题优先停用或进入维护,只回退目标应用版本,不影响另一应用。
- Console 问题只回退 Console 镜像,不修改 Runtime 状态。
- Runtime 问题回退 Runtime 镜像和兼容配置;新增表、版本、运行、成果、证据、用量、告警和审计全部保留。
- 数据迁移仅允许向前兼容的增量列、表和索引;需要删除或不可逆重写时必须停止 P8 并重新设计。
- 回滚后重新执行数据库
quick_check、关键数量核对、两个应用历史读取、一个真实低风险运行和公网入口检查。
十、阶段出口
只有同时满足以下条件,P8 才能标记完成并归档:
- P8-0 至 P8-8 全部交付并通过各自验收。
- 第二应用由 Benson 基于候选评估明确选择,不是旧计划默认恢复。
- 两个真实应用共用同一注册、Runtime、Storage、预算、告警和生命周期契约,没有业务硬编码旁路。
- 跨应用隔离、并行、取消、预算、故障、升级、归档、恢复和回滚均有自动化与生产证据。
- Console 以人类可读方式提供应用状态、结果、原因、成本、告警和下一步,技术对象可追溯但不成为 Benson 的主要操作负担。
- 没有隐藏 Token 限制、第二调度器、第二 Provider Router、任意插件执行或未经授权的外部业务写入。
- Runtime SQLite、P1-P7 历史、P8 运行、成果、证据和审计在发布及回滚后完整。
- 文档状态、GitHub、CI、镜像摘要、生产服务与公网 Docs 相互一致。
P8 归档后,团队根据两个应用的真实使用、容量和维护成本决定下一步:继续按现有内置模式增加应用,另立阶段提取独立应用服务,或保持当前规模。插件 SDK、应用市场、多租户和更高自治不得仅凭设想自动进入后续路线。