阶段六:应用中心基础与本地应用样板
阶段状态:进行中(P6-11 收口修正)
计划状态:已完成
当前工作包:P6-11 本地输入、目录管理与调用留痕收口
计划状态
- 计划名称:阶段六:应用中心基础与本地应用样板
- 当前阶段:P6。
- 当前状态:P6-0 至 P6-10 已完成,P6-11 正在收口;P7 等待本批次公网验收。
- 当前记录:AgentMeshOS 已确认定位为“AI 应用运行平台 / AI 操作系统”;P6 先补齐应用中心框架,再以“本地资料分析与验收工作台”验证平台是否能承载一个完整、可理解、可恢复的应用。
- 启动条件:已满足。P6-P8 权威计划、阶段依赖和出口条件已完成审阅并发布,项目负责人已明确授权开始 P6。
- 完成边界:P6-0 至 P6-10 的必需验收已经全部通过;本页与阶段六完成归档共同构成最终追溯记录。
- 后续边界:P7 为当前等待实施阶段,P8 继续等待 P7;不提前实施第二个应用、多应用生命周期或外部业务动作。
定位与非目标
P6 的目的不是先做复杂业务,也不是再验证 Runtime 能否调用模型。P1-P5 已经完成底座、Runtime、AI BOSS 编排、成果验收和受控主动循环;P6 要解决的是用户目前看不到“应用”的平台缺口。
本阶段建立统一应用入口,并交付一个只处理本地资料的样板应用。样板接收受控纯文本以及已登记的 Markdown、JSON、文本型 PDF、项目资料和验收材料引用,输出人类可读的摘要、事实、问题、风险、验收项和下一步。它不得访问外部来源,不自动投递、注册、付款、发信或执行外部业务写入。
本阶段明确不做:
- 求职、职位抓取、商业机会发现或任何特定外部业务闭环;
- 动态安装第三方插件、插件市场或任意代码加载;
- React 重写、微前端、第二 Runtime、第二调度器、第二状态机或第二控制面;
- 多用户、多租户或跨应用共享隐式状态;
- 应用自建 Provider Router、长期记忆系统、定时器或任务调度器;
- 让用户直接操作 Task Graph、Runtime Call、Worker Allocation 等平台内部对象;
- OCR 扫描件、复杂表格、音视频和任意二进制格式的通用解析承诺;
- 从浏览器上传文件到 Console、Runtime 或认证回源代理,也不通过主节点、Tailnet、SSH、Nomad 或节点共享目录中转文件。
求职应用仅保留为阶段八或以后可重新评估的候选,不是现行 P6 计划。
技术栈与架构选型
P6 继续使用现有 FastAPI + SQLite + Vanilla JavaScript + MkDocs,采用“内置应用注册表 + Console 应用中心 + 本地样板应用”的方式扩展。
| 方案 | 可维护性 | 部署复杂度 | 性能 | 学习成本 | 后续扩展 | 结论 |
|---|---|---|---|---|---|---|
| 延续 FastAPI、SQLite 和现有 Console | 与 Runtime、迁移、认证和发布链一致 | 低,只扩展现有 Runtime/Console | 单用户和首批应用足够 | 最低 | 可先冻结应用契约,再逐步增加应用 | 采用 |
| React 或微前端应用壳 | 需要第二套前端工程和状态管理 | 中高,构建与发布链增加 | 对 P6 无决定性收益 | 高 | 适合大量独立团队,不符合当前规模 | 不采用 |
| 动态插件平台或独立应用服务 | 生命周期和隔离灵活 | 高,需要签名、沙箱、升级和服务发现 | 取决于插件实现 | 高 | 过早扩大安全和兼容面 | P8 后再评估 |
| Redis、消息队列或第二调度器 | 可支持大规模异步吞吐 | 高,形成重复状态和恢复链 | 当前负载无收益 | 中高 | 会破坏 Nomad 与 Runtime 权威边界 | 不采用 |
该选择保持当前单用户规模下的可维护性和部署简单度,同时通过稳定 Manifest、运行记录和数据边界为 P7/P8 留出扩展空间。仓库只负责开发、构建、测试和发布;生产应用由已发布镜像、Runtime SQLite、Cloudreve 数据和既有服务运行,不依赖 Git 工作树常驻。
简化架构
flowchart LR
Benson["Benson"] --> Center["Console 应用中心"]
Center --> Registry["Runtime 内置应用注册表"]
Registry --> Workspace["应用独立工作区"]
Workspace --> Sample["本地资料分析与验收工作台"]
Sample --> Runtime["现有 AI Runtime"]
Runtime --> Boss["AI BOSS / Worker"]
Runtime --> Objects["Conversation / Plan / Task / Deliverable / Evidence"]
Runtime --> Storage["SQLite / Cloudreve"]
Runtime --> Nomad["Nomad 唯一调度器"]
应用中心只提供应用身份、入口、状态和人类可读结果。任务、模型、证据、预算、审计和节点执行继续由现有 Runtime、OmniRoute、Nomad 与 Storage 负责,不复制平台能力。
目标、成果与验收契约
阶段目标
建立一个可登记、可启停、可打开、可追溯且可恢复的应用中心;通过“本地资料分析与验收工作台”证明用户能够在不了解平台内部对象的情况下提交资料、看到过程、获得结果并处理失败。
Worker 能力
- 只复用实施时已登记并通过能力目录校验的文本提取、JSON 校验、PDF 文本提取、结构化分析、成果登记和证据检查能力;能力 ID、版本、数据等级和执行位置在 P6-0 冻结。
- 主节点完成注册、输入引用校验、运行编排、审核、SQLite 状态和人类可读结果汇总。
- Cloudreve 文件引用由主节点 root-only StorageAdapter 经
cloud.yohan.fun公网 HTTPS 下载、校验和解析;P6 不向 Worker 签发文件下载能力,也不经 Nomad、Tailnet、SSH 或主节点代理转发文件字节。 pcdell-101、pcdell-103仅处理不含 Cloudreve 文件字节、由 Benson 明确提交且数据等级允许的受控纯文本或结构化输入,并由 Nomad 根据实时能力选择实际节点;应用和模型不能指定节点。- 未登记能力、未经验证的解析器和任意命令不得作为“临时能力”运行。
预期成果
| 成果 | 类型与版本 | 存储 | 必需结果契约 |
|---|---|---|---|
| 应用中心注册能力 | Runtime/Console 功能,p6-v1 |
Runtime SQLite 与发布镜像 | 应用身份、版本、状态、入口、错误和最近运行可查询 |
| 应用运行记录 | 结构化记录,application-run-v1 |
Runtime SQLite | 冻结应用版本、输入引用、设置、模型通道、预算引用、工具白名单和平台对象关联 |
| 本地资料分析结果 | 结构化成果,local-review-result-v1 |
小型 JSON 在 Runtime SQLite;文件型成果在 Cloudreve | 摘要、事实、问题、风险、验收项、证据引用、下一步和完成度 |
| 人类可读工作区 | Console 功能,p6-v1 |
Console 发布镜像 | 输入、当前进展、结果、历史、错误和下一步在同一应用范围内可理解 |
| 验收与发布证据 | 测试、运行与发布证据 | GitHub、Runtime 审计、Cloudreve 或受控验证记录 | 提交、CI、镜像摘要、数据库检查、浏览器与生产回读互相对应 |
必需验收标准
- 应用注册、启停、工作区、运行历史、本地资料分析、结果版本、平台对象关联、刷新恢复和 Runtime 重启恢复全部可用。
- 同一
client_request_id的重复写请求不产生第二次运行、第二次模型调用或第二份成果;相同键但不同请求体被拒绝并留下脱敏事实。 - 应用 A 的输入、运行、结果和错误不会出现在应用 B;P6 虽只有一个正式样板,也必须用隔离测试夹具验证命名空间条件。
- 输入文件只经
cloud.yohan.fun公网 HTTPS 在 Cloudreve 与实际使用方之间直达;Console 和 Runtime API 不接收文件字节,Worker 不取得 WebDAV 或 Cloudreve 管理凭据。 - 运行完成不等于成果验收完成;检查失败、证据不足、AI BOSS 审核失败或需 Benson 决定时,应用结果不得显示为“已完成”。
- 无限 Token 设置不受隐藏内部 Token 上限阻断;有限设置严格使用 AI BOSS 工作台当前可见配置,不建立应用私有预算池。
- 所有面向 Benson 的确认、停用、取消和重新运行使用符合项目主题的居中自定义弹窗,不调用浏览器系统
alert、prompt或confirm。 - 桌面
1440x900与移动端390x844无横向溢出,长文件名、哈希、错误和结果可折行;核心操作有即时、持久化反馈。 - Runtime、Console 或样板应用任一失败不会破坏 AI BOSS、P1-P5 数据、其他平台页面或历史应用记录。
- 生产发布、回滚、数据库
quick_check、公网 Console 和 Docs 回读均有真实证据,不能以本地测试代替生产验收。
自动检查、AI 审核与 Benson 决定
- 自动检查器在 P6-0 冻结 ID 与版本,至少覆盖结构化结果 Schema、输入哈希对应、必需章节非空、证据引用存在和成果可访问性;解析器不支持或检查器无法判断时不得猜测通过。
- AI BOSS 只输出结构化
accept、rework或insufficient_evidence及人类可读依据,不以模型自述替代确定性检查。 - 涉及不支持格式、内容无法读取、数据等级超出允许范围、证据不足、未知风险或任何潜在外部副作用时,停止运行并由 Benson 决定,不自动扩大权限。
- Benson 的通过、要求修正、拒绝和重新打开继续复用 P4 权威验收链;应用页面只提供面向人的入口,不创建第二套决定状态。
风险、Token 与生命周期
- 主要风险:文件引用越界、内容误解析、跨应用串数据、重复请求重复计费、重启重放模型调用、错误状态假报成功、技术信息或凭据泄露。
- Token:规划、执行、审核和返工统一进入现有 AI BOSS 账本与工作台可见设置;P6 不增加隐藏限制、冻结额度或应用私有额度。
- 生命周期:注册长期保留;停用不删除历史;每次重新运行创建新的
application_run_id和结果版本并引用原运行;只清理明确的任务临时副本和一次性凭据;普通运行、历史、成果和审计不设置人为 TTL。 - 回滚:代码和镜像可回退,增量表和历史记录保留;回退版本若不认识新功能则隐藏写入口并保持只读数据,不删除 P1-P5 或 P6 记录。
应用注册与运行契约摘要
Manifest 静态契约
首版 Manifest 是随 Runtime 代码发布、版本化、只读的内置声明,不允许在生产页面粘贴任意 JSON、安装远端包或动态加载代码。Runtime 注册 Manifest 时为注册实例生成永不复用的 application_id;Manifest 自身只声明发布后不可原地改名的稳定 application_key。必需字段为:
- 稳定
application_key、manifest_schema_version、应用版本、名称、说明和图标标识; - Console 入口、支持的输入类型、最大文本大小、输出类型和数据等级;
- 允许调用的现有 Runtime 能力、工具白名单和可选 Worker 能力;
- 成果类型、检查器、失败策略、数据命名空间和历史边界;
- 兼容的最小平台版本和向前兼容声明。
Manifest 升级只影响新运行。每次运行保存 Manifest 摘要和内容哈希;旧运行不得因新 Manifest 发布而静默改变解释结果。
数据对象
P6 以增量 SQLite 表或等价的现有 Store 实体实现下列对象,不迁移、不重写 P1-P5 表:
| 对象 | 权威字段摘要 | 约束 |
|---|---|---|
application_registration |
Runtime 分配的 application_id、Manifest 的 application_key、Manifest 版本与哈希、状态、状态原因、乐观版本、更新时间 |
application_key 唯一;每个内置应用一条当前注册状态;静态 Manifest 不写进可编辑设置 |
application_run |
application_run_id、application_id、状态、版本、输入摘要、冻结快照、原运行引用、错误、时间 |
新运行使用新 ID;未完成运行重启后不得自动重放模型调用 |
application_input |
输入 ID、运行 ID、类型、显示名、文本摘要或已登记文件引用、大小、哈希、数据等级 | 不保存文件字节、系统凭据、浏览器本地路径或主机路径 |
application_result |
结果 ID、运行 ID、Schema 版本、状态、结构化内容、版本、成果引用、创建时间 | 旧版本不可覆盖;结构化小结果遵守 1 MiB 回调上限 |
application_object_link |
运行 ID、对象类型、对象 ID、关系、创建时间 | 只关联现有 Conversation/Plan/Task/Deliverable/Evidence/Runtime Call,不复制其状态 |
application_action_request |
应用或运行 ID、动作、client_request_id、请求摘要、响应摘要、时间 |
写操作幂等;相同键不同请求体冲突 |
application_event |
运行 ID、事件类型、人类摘要、技术详情引用、时间 | 追加式;不保存 Prompt、隐藏推理或凭据 |
实施时可合并物理表以符合现有 Store 风格,但上述逻辑对象、字段语义、唯一性和保留边界不得省略。每个增量迁移必须可重复运行,旧 SQLite 打开后不丢数据,回滚代码不得降级或删除新表。
注册状态机
disabled --enable--> enabled
enabled --disable--> disabled
enabled --maintenance--> maintenance --resume--> enabled
disabled --maintenance--> maintenance --resume--> disabled
enabled/disabled/maintenance --runtime_error--> error
error --acknowledge_and_restore--> enabled/disabled
- 初次注册默认为
disabled,防止发布即自动运行。 disabled、maintenance、error均允许读取历史,但禁止创建新运行。error必须保存真实原因和下一步;恢复时明确选择恢复到enabled或disabled。- 状态切换采用乐观版本和
client_request_id;重复点击不得产生重复审计或副作用。
应用运行状态机
created -> validating -> queued -> running -> checking -> reviewing
reviewing -> completed
reviewing -> awaiting_benson -> completed/rework_required/rejected
validating/queued/running/checking/reviewing -> failed/interrupted/cancelled
checking/reviewing -> partially_completed
rework_required -> 新 application_run_id
failed/interrupted/cancelled/partially_completed -> 受控重新运行并创建新 application_run_id
completed仅表示必需检查、AI BOSS 审核和适用的 Benson 决定全部通过。partially_completed是带明确缺口的终态,不得显示为成功;它必须说明已完成、未完成和下一步。- Runtime 启动时把无法确定恢复的活动运行标为
interrupted,不重放旧模型调用。能确定性完成的数据库收尾可继续,但必须记录恢复事件。 - 取消只影响该
application_run_id关联的活动范围,不取消其他应用运行、人工对话或无关 Nomad Job。
API 契约摘要
P6 API 延续现有 FastAPI、管理员认证、JSON 错误体和 /boss/v1 命名空间。最终字段在 P6-0 冻结,最低接口面如下:
| 方法与路径 | 用途 | 关键输入或行为 |
|---|---|---|
GET /boss/v1/applications |
应用列表 | 状态、版本、最近结果、是否可运行;不返回凭据或完整技术事件 |
GET /boss/v1/applications/{application_id} |
应用详情 | Manifest 安全摘要、注册状态、支持输入、错误和最近运行 |
POST /boss/v1/applications/{application_id}/enable |
启用 | client_request_id、当前版本;幂等写入 |
POST /boss/v1/applications/{application_id}/disable |
停用 | client_request_id、当前版本、可选原因;不删除历史 |
GET /boss/v1/applications/{application_id}/runs |
运行历史 | 游标分页、状态筛选;限定应用范围 |
POST /boss/v1/applications/{application_id}/runs |
创建运行 | client_request_id、受限纯文本或已登记 Cloudreve 文件引用、可见设置;不接收文件字节 |
GET /boss/v1/applications/{application_id}/runs/{application_run_id} |
运行详情 | 人类结果、状态、原因、下一步、关联对象和折叠技术详情 |
POST /boss/v1/applications/{application_id}/runs/{application_run_id}/cancel |
取消活动运行 | client_request_id、可选原因;限定当前运行范围 |
POST /boss/v1/applications/{application_id}/runs/{application_run_id}/rerun |
受控重新运行 | client_request_id、原因和可选修正输入;创建新运行,不重放旧调用 |
所有写接口必须验证管理员身份、应用状态、对象归属、乐观版本、数据等级、允许输入和 client_request_id。错误至少区分认证失败、版本冲突、应用不可运行、输入不支持、引用越界、重复键冲突、运行状态不允许、依赖不可用和内部失败,并返回人类可读原因、下一步和可追溯错误 ID。不得用笼统 409 隐藏真实原因。
Console 应用中心契约
- 应用中心与 AI BOSS 工作台并列,是应用的人类工作入口,不是新的管理控制面。
- 列表显示名称、用途、状态、版本、最近结果、最近活动和需 Benson 处理的事项;默认不展示模型调用和任务图。
- 工作区固定组织为输入、当前进展、结果、历史和下一步;技术 ID、模型调用、任务图、证据哈希和审计放在可展开详情。
- 状态变化和请求提交立即显示加载、成功、失败或冲突反馈;刷新后从 Runtime 权威状态恢复,不以浏览器缓存覆盖服务端数据。
- 启用、停用、取消、重新运行和错误详情使用项目主题一致、页面居中的自定义弹窗,包含标题、上下文、取消路径、确认动作、焦点管理和移动端适配;禁止系统弹窗。
- 应用路由、异步响应和切换请求必须绑定
application_id与application_run_id;晚到响应不得覆盖当前应用或当前运行。 - 应用页只展示人类可理解过程和结果;任务、成果、证据页继续保留为查询与追溯入口,不要求 Benson 到内部页面完成日常应用操作。
工作包依赖与实施顺序
flowchart LR
P60["P6-0 契约冻结"] --> P61["P6-1 数据与注册表"]
P61 --> P62["P6-2 Runtime API"]
P62 --> P63["P6-3 Console 应用中心"]
P63 --> P64
P64 --> P65["P6-5 本地资料样板"]
P65 --> P66["P6-6 平台对象关联"]
P61 --> P67["P6-7 Cloudreve 输入与结果"]
P65 --> P67
P66 --> P68["P6-8 恢复与隔离"]
P67 --> P68
P68 --> P69["P6-9 全量验收与发布"]
P6-3 必须在 P6-2 后完成应用入口与路由身份,P6-4 才开始独立工作区和历史实现;两者不并行修改共享路由与状态。P6-5 至 P6-9 强依赖前序真实结果,不得用静态假数据越过依赖。
P6-0 契约冻结与生产基线
- 目标:把应用术语、Manifest、状态机、数据对象、API、人类结果、错误分类、能力目录和验收夹具冻结为
p6-v1。 - 前置依赖:P1-P5 完成归档;P6-P8 权威计划审阅完成;项目负责人明确授权启动 P6。
- 范围:只做架构与契约确认、生产只读盘点、SQLite 备份和实现任务拆分;不创建应用运行,不调用模型,不修改生产状态。
- 预期成果:版本化契约、接口 Schema、迁移设计、能力 ID/版本清单、数据等级矩阵、测试矩阵、生产基线和回滚点。
- 验收:文档、OpenAPI 草案、迁移草案与现有 Runtime 对象无冲突;Cloudreve 数据路径、管理员权限、可见 Token 设置和无第二调度器边界均有明确断言;基线备份通过
quick_check。 - 回滚与失败边界:契约未通过审阅不得进入 P6-1;调查发现与现有权威状态冲突时先修订计划,不通过临时代码兼容;本包不产生需要回滚的生产业务数据。
P6-0 完成记录(2026-08-18)
已完成真实 Runtime、SQLite、Store 迁移、管理员认证、Console 自定义弹窗和回滚镜像的只读盘点,并完成生产 SQLite 一致性备份及 quick_check。冻结产物、API 草案、能力目录、迁移设计、兼容映射、测试夹具和功能开关见 P6 p6-v1 契约与生产基线。P6-0 未创建应用记录、未调用模型、未启动 Worker 或 Nomad Job;下一工作包为 P6-1。
P6-1 数据模型与内置注册表
- 目标:增量建立应用注册、运行、输入、结果、对象关联、动作幂等和事件存储,并登记默认停用的内置样板 Manifest。
- 前置依赖:P6-0 的
p6-v1契约、数据库备份、迁移与回滚设计完成。 - 数据与运行范围:只修改现有 Runtime Store 和迁移;Manifest 来源仅为代码内置声明;不开放动态安装,不自动启用,不启动模型或 Worker。
- 预期成果:可重复执行的 SQLite 增量迁移、Manifest 校验器、注册表读取、状态转换原语、唯一索引和追加式事件。
- 验收:旧库迁移、空库初始化、重复迁移、并发状态写、非法 Manifest、未知状态、幂等冲突和旧代码只读回退测试通过;P1-P5 表行数和内容不被重写。
- 回滚与失败边界:迁移失败时事务整体回滚;已成功创建的新表不在代码回退时删除,写入口保持关闭;Manifest 校验失败只隔离该应用并报告真实错误,不阻断 Runtime 启动。
P6-2 Runtime 应用 API 与状态控制
- 目标:实现应用列表、详情、启停、运行创建、运行详情、取消和受控重新运行的最小 API。
- 前置依赖:P6-1 数据模型、注册表和幂等原语通过测试。
- API 范围:实现本计划 API 摘要中的接口;所有写操作执行管理员认证、对象归属、版本、状态、输入、数据等级和
client_request_id校验。 - 预期成果:稳定 OpenAPI 契约、统一人类错误体、游标分页、状态迁移、幂等重放和审计事件;此时运行可使用确定性测试执行器,不必调用真实模型。
- 验收:未授权、越权引用、版本冲突、重复点击、相同键不同请求体、停用应用创建运行、非法状态取消/重跑和晚到取消全部有确定响应;同一请求不重复创建运行或成本。
- 回滚与失败边界:关闭应用写入口即可回退 Console 使用;API 失败不得修改半条状态;无法确认远端取消结果时保留
cancel_requested或等价中间事实,不假报已取消。
P6-2 至 P6-8 实施记录(2026-08-18)
- P6-2:已实现应用列表、详情、启停、运行详情、取消和受控重新运行;启停与运行写入均支持管理员认证、乐观版本和
client_request_id幂等;错误返回code/message/next_step/error_id。 - P6-3/P6-4:已发布独立“应用中心”入口和单应用工作区,默认显示人类可读结果,技术详情折叠;按
application_id/application_run_id丢弃晚到响应,移动端列表与详情可纵向切换。 - P6-5/P6-6:已交付
local-review-result-v1确定性纯文本样板。运行输出摘要、事实、风险、验收项、证据哈希和下一步;结果状态为awaiting_benson,并关联现有bensonConversation,不把分析完成冒充最终验收。 - P6-7:已实现已登记 Cloudreve 引用的路径、大小、SHA-256 和文本类型校验;Runtime 通过 root-only StorageAdapter 读取,浏览器请求和 Worker 不接收文件字节。文本、Markdown、JSON、文本型 PDF 和真实公网 Cloudreve 文件样本均已完成验证。
- P6-8:已实现 Runtime 启动将活动应用运行标为
interrupted、不自动重放;取消、重跑、重复请求、跨应用归属和错误边界有专项测试。
P6-9 当前验收记录(2026-08-18)
- 自动化:Runtime 全量
194 passed;P6 专项、计划状态、严格 MkDocs、Console 工作区/浏览器合同和部署边界均通过。 - 发布:GitHub Actions 的 Runtime、Console、Docs 镜像构建成功;Runtime、Console、Docs 已按顺序部署,健康检查通过。生产 Runtime SQLite 发布前备份、发布后
PRAGMA quick_check=ok。 - 生产运行:已启用
local-review,完成纯文本运行、重复请求幂等、Runtime 重启后的持久状态检查和真实 Cloudreve 登记 CSV 引用读取;结果正确停在awaiting_benson。 - 浏览器:真实管理员 API Key Chrome 会话已验收公网应用中心桌面
1440x900和移动390x844;应用加载、资料提交、结果回显、启停自定义居中弹窗、历史刷新、技术详情折叠和失败提示均有证据,移动端无横向溢出。 - 当前结论:P6-10 已完成,P6 已正式归档。完整归档摘要与发布证据见阶段六完成归档。
P6-10 系统资料选择与对话应用调用入口(当前工作包)
- 目标:让应用真正依托 AgentMeshOS 的系统能力。Benson 在应用工作区可从系统登记的 Cloudreve 资料目录选择文件,不再手填路径、大小或 SHA-256;AI BOSS 对话提供结构化
@应用入口,应用调用不伪装成模型对话。 - 系统边界:项目仓库只负责代码、测试、构建和发布;Runtime 是 OS 平台底座;
local-review是运行在平台内的应用。系统资料选择器只开放AgentMeshOS-长期/applications/local-review与AgentMeshOS-临时,旧review和runtime-artifacts仅兼容读取;独立Project项目库仍不属于 Runtime 应用资料空间。 - 数据路径:浏览器只获得安全文件列表与元数据,不获得 WebDAV 凭据或文件字节;Runtime 通过现有 root-only StorageAdapter 下载并重新计算 SHA-256。应用输入不要求 Benson 手工填写校验信息。
- 对话入口:选择
@local-review后发送文本,Runtime 创建与当前主题关联的应用运行、写入用户消息和人类可读结果消息,并返回model_called=false;主题不存在时拒绝,默认benson主题沿用普通聊天的兼容确保逻辑。 - 验收:专项 Runtime
11 passed、Runtime 全量196 passed、Console 静态/嵌入/浏览器契约通过;生产 Runtime、Console、Docs 已发布,真实 API 文件目录/文件读取、@应用对话回读、桌面与390x844浏览器回归和 Docs 公网回读均通过。
P6-3 Console 应用中心入口
- 目标:建立可扫描的应用中心导航、列表、状态、版本、最近结果和受控启停入口。
- 前置依赖:P6-2 列表、详情和状态控制 API 稳定;现有 Console 路由与弹窗组件完成复核。
- Console 范围:沿用 Vanilla JavaScript 与现有样式;实现加载、空、成功、陈旧、失败和权限不足状态;使用自定义居中弹窗,不增加第二前端工程。
- 预期成果:应用中心首屏、状态筛选、打开入口、启停确认、错误详情和即时持久化反馈。
- 验收:刷新、返回、重复点击、慢响应、并发状态变更、API 失败、窄屏和键盘操作均不会错误切换状态;停用后历史入口仍可用,新运行入口明确禁用并说明原因。
- 回滚与失败边界:功能开关可隐藏应用中心导航,不删除 Runtime 数据;Console 失败不影响 AI BOSS 其他标签;不得用本地缓存伪造已启用或已停用。
P6-4 独立工作区与应用范围历史
- 目标:为每个应用建立输入、当前进展、结果、历史和下一步统一工作区,并彻底隔离应用范围异步状态。
- 前置依赖:P6-2 运行 API 与 P6-3 应用入口完成;路由身份和请求取消策略已冻结。
- Console 与数据范围:按
application_id和application_run_id查询;历史使用游标分页;技术详情按需展开;不在浏览器保存权威应用记录。 - 预期成果:独立工作区、运行列表/详情、结果版本切换、返回应用列表和面向人的状态卡片。
- 验收:新开应用为空白、刷新后记录仍在、切换后等待五秒再返回不丢失、不串应用、不被晚到响应覆盖;停用或维护状态的历史可读;移动端在列表与详情之间可返回。应用归档属于 P8,不在 P6 提前实现。
- 回滚与失败边界:关闭工作区功能开关后仍可通过 API 读取历史;任何路由身份不一致立即丢弃响应并重新读取,不以局部补丁拼接错误数据。
P6-5 本地资料分析与验收样板
- 目标:接入首个可用应用工作流,把允许的本地资料转换为结构化、人类可读且可验收的结果。
- 前置依赖:P6-4 工作区稳定;P6-0 冻结的解析、分析、检查和审核能力已登记并通过独立测试。
- 运行范围:首版支持受限纯文本、UTF-8 文本/Markdown、合规 JSON 和可提取文本的 PDF;文件引用只由主节点 StorageAdapter 下载、校验和解析,Worker 仅可处理无文件字节的允许输入;AI BOSS 规划、成果检查与审核复用现有 Runtime 链路。
- 预期成果:
local-review-result-v1,包含摘要、事实、问题、风险、验收项、证据引用、下一步、完成度和错误;Console 默认展示人类结果。 - 验收:至少使用 Markdown、JSON 和文本型 PDF 各完成一次真实分析;不支持格式、超限、损坏文件、空内容、部分解析和检查失败分别显示准确状态;没有证据时不得生成“已确认事实”。
- 回滚与失败边界:可单独停用样板 Manifest 和新运行入口,保留历史;解析失败不自动换用任意工具、不扩大文件范围、不无限重试;模型失败遵守现有显式重试和成本记录。
P6-6 平台对象关联与验收闭环
- 目标:让应用运行可追溯到现有 Conversation、Plan、Task、Deliverable、Evidence、Runtime Call 和验收决定,同时保持各对象权威状态唯一。
- 前置依赖:P6-5 已生成真实运行与成果;现有 P4/P5 对象接口和审计链复核完成。
- 数据与 API 范围:只新增
application_object_link或等价关联;应用聚合现有状态并输出人类摘要,不复制任务、成果或决定记录。 - 预期成果:双向追溯入口、应用进展聚合、等待 Benson 卡片、成果版本与证据详情链接、完成状态推导规则。
- 验收:Worker 执行结束但成果未验收时应用仍显示检查/审核;检查失败、证据不足、要求修正、拒绝、重新打开和新版本均能正确回显;应用页操作调用原有权威接口并保持幂等。
- 回滚与失败边界:关联失败不得修改原对象状态;无法解析关联时显示“技术关联暂不可用”及下一步,不把成果判成失败或成功;关闭聚合 UI 后原任务和成果查询仍完整。
P6-7 Cloudreve 输入引用与结果访问
- 目标:完成符合项目宪法的文件选择、下载校验、临时使用、成果登记和正式访问路径。
- 前置依赖:P6-1 输入对象、P6-5 样板解析和既有 StorageAdapter 可用;允许目录、文件引用格式和数据等级已冻结。
- 数据范围:Benson 先通过
cloud.yohan.fun用户数据面上传文件,应用只提交已登记引用;主节点 root-only StorageAdapter 从公网 HTTPS 读取并校验类型、大小、哈希和范围,在精确运行临时目录解析后清理;文件型成果仍写 Cloudreve 数据面。P6 不假设 Cloudreve 存在未验证的单文件临时下载令牌。 - 预期成果:安全文件引用、下载侧哈希证据、临时副本清理、Cloudreve 精确路径、结构化小结果预览和不可访问原因。
- 验收:证明 Console/Runtime API 请求不含文件字节,Worker 不接收文件任务且无 WebDAV/管理凭据,Tailnet/SSH/Nomad/主节点代理不传文件;主节点 StorageAdapter 的公网 HTTPS 下载、哈希复算、临时目录清理可追溯;引用越界、哈希不符、链接失效、下载超时和成果不可访问均有明确原因与下一步。
- 回滚与失败边界:Storage 不可用时阻止新文件运行但保留纯文本能力和历史读取;临时副本只按精确运行目录清理;长期成果和用户原文件不得自动删除或移动。
P6-8 重启恢复、幂等与故障隔离
- 目标:证明应用在浏览器刷新、网络波动、重复提交、Runtime 重启、Worker 中断和依赖失败后保持真实状态且不会重复计费。
- 前置依赖:P6-2 至 P6-7 全链路可运行;测试环境具备可控故障注入和数据库备份。
- 运行范围:覆盖请求、模型调用、任务、Nomad、成果检查、审核、Storage 和 Console 异步响应;不破坏生产业务数据。
- 预期成果:恢复分类、
interrupted处理、受控重新运行、取消范围、重复触发抑制、故障隔离、告警和人类下一步。 - 验收:Runtime 在运行各关键阶段重启后不重放模型调用;相同幂等键不重复消费 Token;重新运行使用新 ID、快照和成本;一个应用错误不影响 AI BOSS、主动工作或其他 Console 页面;恢复后历史与事件可追溯。
- 回滚与失败边界:无法确定是否已产生副作用时停在
interrupted或需 Benson 决定,不自动再次执行;连续失败不无限重试;数据库异常先只读保护和恢复验证,不在受污染状态叠加旁路实例。
P6-9 全量验收、生产发布与阶段收口
- 目标:完成自动化、浏览器、生产、公开入口、回滚和文档验收,确认 P6 是否满足归档条件。
- 前置依赖:P6-0 至 P6-8 的必需验收全部通过,已知问题有关闭证据,发布版本和回滚镜像明确。
- 验收与发布范围:旧 SQLite 迁移、全量 Runtime/Console 回归、桌面与移动端、真实文件样本、Runtime 重启、Cloudreve 回读、生产健康、公网 Console/Docs、审计和容量。
- 预期成果:P6 验收记录、GitHub 提交与 CI、Runtime/Console/Docs 镜像摘要、数据库备份与
quick_check、真实应用运行、浏览器证据、回滚演练和文档状态更正。 - 验收:成功、失败、不支持、部分成功、中断、取消和重新运行路径均真实通过;生产无 P1-P5 回归;功能开关关闭后写入口消失且历史保留;公网内容与发布提交一致。
- 回滚与失败边界:发布顺序 Runtime、Console、Docs;任一步失败先回退对应镜像并验证既有功能,不删除新表、历史、成果或审计;未通过全部必需项时保持 P6“进行中”,不得归档或进入 P7。
分布式底座接入声明
- 接入结论:接入现有 AI Runtime 与分布式底座,但不新增基础设施组件。
- 使用层:Network 仅承载控制面;Nomad 是唯一节点放置和任务调度器;Compute 执行无状态解析;Storage 保存应用状态、结果和 Artifact;Observability 记录运行、成本和错误。
- Adapter 归属:复用现有 Model、Nomad、Storage、Tool 和 Feedback Adapter;P6 不创建应用私有 Adapter 总线。
- 执行映射:主节点保存应用注册、输入引用、运行状态和私有内容,并完成所有 Cloudreve 文件下载、校验与解析;101/103 只处理不含文件字节、明确允许的纯文本或结构化无状态任务,实际节点由 Nomad 根据实时能力选择。
- 数据路径:文件只经
cloud.yohan.fun公网 HTTPS 在 Cloudreve 与实际使用方之间直达;不得经 Tailnet、SSH、Nomad 分发、主节点代理或节点共享目录传输。 - 凭据路径:应用、模型、Worker 和浏览器不得取得基础设施、Provider、Cloudreve 管理或主机凭据。
- 生命周期:应用运行和结果长期保留;临时文件按现有任务引用精确清理;普通运行状态不设置人为 TTL。
- 验收证据:真实应用注册、Console 工作区、Runtime 运行、Nomad Allocation(适用时)、Storage 回读、结果版本、错误恢复和公网页面。
发布批次
| 批次 | 内容 | 进入条件 | 出口证据 | 回滚边界 |
|---|---|---|---|---|
| P6-A | P6-0 契约与 P6-1 数据/注册表 | P6 获明确实施授权 | 迁移、Store、Manifest 和兼容测试 | 不启用应用;代码回退保留新表 |
| P6-B | P6-2 API 与状态控制 | P6-A 通过 | OpenAPI、认证、幂等、状态和错误测试 | 关闭写入口,保留只读查询 |
| P6-C | P6-3 应用中心与 P6-4 工作区 | P6-B 通过 | 桌面/移动端、刷新、切换和异步隔离证据 | Console 功能开关隐藏入口 |
| P6-D | P6-5 样板与 P6-6 验收关联 | P6-C 通过 | 真实结构化结果、任务/成果/证据闭环 | 停用样板,不删除历史 |
| P6-E | P6-7 Storage 与 P6-8 恢复隔离 | P6-D 通过 | 公网文件数据面、哈希、重启、幂等和故障证据 | 阻止文件新运行,保留纯文本和历史 |
| P6-F | P6-9 生产发布与 Docs 收口 | P6-E 全部通过 | 提交、CI、镜像、健康、真实运行、公网和回滚证据 | 分别回退 Runtime/Console/Docs 镜像 |
每个批次都必须先在仓库完成自动化验证,再按 Runtime、Console、Docs 的依赖顺序发布适用组件。不得把批次发布等同于阶段完成;只有 P6-F 全部通过并经项目负责人确认,才更新阶段状态和归档。
P6 出口与 P7 进入条件
只有 P6-0 至 P6-9 的必需项全部通过,且应用注册、应用中心、本地资料样板、平台对象关联、Cloudreve 数据边界、错误恢复、桌面/移动端和生产公网验收均有真实证据,P6 才能完成归档。之后进入阶段七:本地应用 MVP 与应用运行规范,把样板收敛为持续可用的正式应用。
当前出口已满足:
- P6-0 至 P6-9 全部通过,阶段状态已切换为“已完成并归档”;
- P7 计划已完成但等待实施,P8 继续等待 P7,不进入实现;
- 应用中心、样板应用和生产验收均有实现与真实验证证据,未将计划文本当作功能证据。
P6-11 收口修正记录(2026-08-18)
本批次因真实使用发现的输入与可用性缺口重新打开 P6 收口,不改变 P1-P5 数据和应用安全边界:
- 应用工作区新增本地 UTF-8 文本、Markdown、JSON 文件选择与明确的粘贴输入状态;不上传浏览器路径或二进制字节,PDF/图片会明确提示转换要求。
- Cloudreve 选择器不再要求 Benson 手填 SHA-256;Runtime 仍在下载侧校验哈希,并新增受限的应用资料目录创建入口,只能位于
AgentMeshOS-长期/applications/local-review或AgentMeshOS-临时。 - 内置应用 Manifest 显式记录
run_mode=invocation,工作区显示闲置不占用资源;AI BOSS 调用会在应用运行历史中标记来源主题。 - API Gateway 公网回源配置为告警 OPTIONS preflight 绕过管理员认证重定向,普通 GET/POST 仍保持管理员认证;后端同时声明 OPTIONS 与 CORS 方法。
完成条件:Runtime/Console/API Gateway 专项测试通过,镜像部署后公网 OPTIONS 不返回 3xx,真实管理员浏览器完成本地文件、粘贴、Cloudreve 选择和目录创建回归,之后才恢复 P7 等待实施状态。
本批次追加的系统文件收口(2026-08-18):
- 根级“本地资料分析与验收工作台专用目录”已加入
local-review-dedicated应用选择器;此前专用目录不可见的根因是白名单未覆盖根级目录,不是 WebDAV 数据丢失。 - 经复核,Console 自制“系统文件”页面不承担上传、下载、预览或完整目录管理,避免复制 Cloudreve 已有能力和暴露第二套 WebDAV 操作面;系统云盘入口直接使用既有 Cloudreve 管理器。
- 应用选择器仅保留本地资料应用所需的受控目录读取与新建目录能力,浏览器不取得 WebDAV 凭据。
2026-08-18 分析提交链路更正:选择器不要求 Benson 填写 SHA-256,Console 必须提交 null 而非空字符串;Runtime 下载后自行计算哈希。根级专用目录同时写入运行入口、StorageAdapter 和持久化输入三处允许列表,防止“可选择但无法运行”的不一致。422 字段校验错误在 Console 显示为可读失败原因,不再退化为“请求未完成”。