Files
app/设计/02.正式方案/lineup-app-layer-architecture.md
T

8.0 KiB
Raw Blame History

LineUp App 层架构与迁移记录

版本: 2.0Runtime 基线) 状态: 当前实现边界与历史迁移记录 日期: 2026-08-04 最终决策入口: LineUp App 最终设计方案

1. 当前结论

LineUp 是运行在用户设备上的协作 Runtime,不是某个平台上的独立聊天客户端。可以把 Runtime 理解为本地协调中心:它负责连接、消息、存储和恢复;chat 是它首先加载的可信 内置功能。未来的语音、画板、游戏和应用中心也必须使用同一套 Runtime / SDK 边界,不能 各自再建立一条到 Agent 的通信链路。

当前唯一实现与验收基线:

Tauri 2 Desktop Host + Web Reference Host

这两个 Host 是同一套 TypeScript Runtime 的两种外壳:Tauri Desktop Host 用于正式桌面 交付及受控系统能力;Web Reference Host 用于浏览器开发、Tailscale 联调和自动化测试。 它们不是两套产品,Web 版也不能替代桌面版的系统能力。独立 Android/Kotlin 客户端与 Wails Host 均不在当前或后续规划范围内;早期实验细节仅保留在 Git 历史,不构成架构或 验收依据。

2. App 层边界

Remote Agent / AppServer
          │  lineup.v1 wire protocol
          ▼
┌────────────────────────────────────────────────────────┐
│                     LineUpRuntime                       │
│ Transport · sync loop · Store · Outbox · App Inbox      │
│ instance state · scope 路由 · Tool · Capability          │
└─────────────────────┬──────────────────────────────────┘
                      │ Runtime SDK
                      ▼
┌────────────────────────────────────────────────────────┐
│                  Core / Installed App                   │
│         chat · app-registry · voice · whiteboard        │
└────────────────────────────────────────────────────────┘
必须负责 不得负责
LineUpRuntime 处理 AppServer/Agent 通信、会话、原始协议兼容、scope 筛选、Store、sync、outbox、App Inbox、Tool 路由、App 实例和前台焦点、权限、按 instance 隔离的 MiniApp 业务状态快照与恢复。 具体业务页面 DOM 或任意 MiniApp 的业务语义。
Interaction Core App 用户实际使用的主交互界面:当前是 Chat/IM,未来包含 Audio/Video 模式、标准交互原语和扩展结果投影。 直连 AppServer、维护 cursor、解析 Agent 原始包、调度其他 App 或直接写 Runtime Store。
Runtime SDK App 与 Runtime 之间唯一的受限接口:提供 snapshot、订阅、Agent 消息、Inbox ACK、Runtime Action、App 导航、生命周期请求及自身 instance 的 schema 校验业务状态快照。 把 Transport、token、Host 特权 API、Conversation Store 或其他 App/instance 状态暴露给 App。
Tauri/Web Host 把 Runtime 放进桌面窗口或浏览器,并提供对应的 DOM/系统能力。 解释协议、决定 App 调度、绕过 Runtime 路由和策略。
Surface 在隔离执行域呈现已验证 Bundle,并经受限 bridge 上报事件。 访问 Host DOM、登录态、Tauri API、任意网络。

3. MVP-R1Runtime 托管 Chat

当前 MVP 已完成并以 Tauri/Web 自动化回归验证以下八项条件:

条件 当前事实
MVP-01 LineUpRuntime 唯一创建并持有 Transport、ConversationStore、sync loop 与 outbox。
MVP-02 Runtime 从本地 CoreAppRegistry 解析默认 chatRuntimeAppHost 负责挂载其 Shellmain.ts 不创建聊天页面。
MVP-03 Chat 只经 ChatRuntimeSDK 订阅 Agent 消息、状态和 Chat-safe Runtime 事件,并以 Action 发送文本、交互、结果与取消。
MVP-04 Runtime 向 Chat 投递前验证 app_scope = chat 与当前 conversation_id;非法/不匹配消息被拒绝。
MVP-05 Compatibility Adapter 在 Runtime 内将旧 lineup.v1 映射为内部 RuntimeEnvelope;远端无须同步重写。
MVP-06 登录、同步、发送、本地回显、Markdown、Agent 状态、Tool/Task 与刷新恢复保持回归。
MVP-07 Store 持久化每个 App 的 Inbox;运行时重建后未 ACK 消息可恢复,message_id 去重。
MVP-08 npm test -- --run 通过 21 个文件 / 94 个测试;npm run build 通过。

源代码目录和依赖方向见 Tauri/Web 源码导航

4. 当前源码归属

lineup-app/tauri/src/
├── main.ts                         # 启动装配入口:连接 Tauri/Web Host、Runtime 与默认 App
├── core-apps/chat/                 # 当前 Interaction App 的 IM 实现、Renderer、样式
└── runtime/
    ├── app-management/             # Registry、App Instance、焦点、生命周期、Host
    ├── communication/              # Transport Adapter
    ├── coordination/               # Runtime、Kernel、Envelope、Tool/Task/交互编排
    ├── persistence/                # Conversation Store、Outbox、App Inbox、instance state snapshot
    ├── protocol/                   # lineup.v1 解码与 golden fixture
    ├── surfaces/                   # Surface 生命周期、Bundle、隔离 Host
    ├── capabilities/               # Registry、执行、审计
    ├── artifacts/                  # Artifact 元数据与缓存
    └── inventory/                  # Agent 可见 Inventory

依赖必须保持单向:

core-apps/interaction(当前 chat → runtime/app-management SDK → runtime/coordination
                                         └→ communication / persistence / protocol
Host adapters → runtime/coordination
Surface → restricted bridge → Runtime Action / Capability Gateway

5. 历史迁移的保留价值

早期 M0M4 工作建立了当前 Runtime 的可复用安全基础。它们是迁移记录,不是新的功能 排期或平行客户端路线:

历史阶段 保留成果 当前归属
M0 HTTP Transport、Conversation Store、协议解码、Markdown、基础回归 communicationpersistenceprotocol、Chat Renderer
M1 Tool Call、Task、可靠交互结果、受限执行摘要 coordination、Chat SDK 投影
M2 本地 Surface Registry、实例生命周期、隔离 iframe 与恢复 surfaces
M3 Capability Registry、用户确认、审计与受限 Host 执行 capabilities
M4 签名 Manifest、Bundle 校验/缓存/回滚、golden fixture surfacesprotocol/golden

早期文档中的阶段性“尚未实现”或旧目录路径不得用来判断当前能力;需要审计细节时通过 Git 历史检索。

6. 后续阶段

F2  持久化 App Registry、App Instance/Focus Manager、默认 App 切换
F3  Runtime Tool Router、动态 Inventory、可靠 App SDK Tool 闭环
F4  Interaction App 的 IM/Audio/Video 模式边界与第一个 Installed App

未来 App 必须复用 app_scope + conversation_id、Runtime SDK、Tool/Capability、Artifact、 Store、outbox 与恢复机制;禁止新建独立 Agent 通信通道。

7. 文档关系

文档 用途
app_final_design.md 当前产品、Runtime、App、SDK 与实施优先级的唯一汇总入口。
lineup-runtime-sdk-architecture.md Runtime / SDK 的详细接口与未来 App Manager 契约。
lineup-ui-surface-protocol.md Surface sandbox、bridge、Capability 和 Bundle 安全协议。
本文件 当前实现边界、源码归属与 M0~M4 的迁移价值。