3.6 KiB
3.6 KiB
LineUp App 迭代基线:Runtime 托管 Chat
迭代编号: 00.base 状态: 已实现、已验证 日期: 2026-08-04 定位: 后续迭代必须保持的客户端基础能力
1. 基线说明
本迭代建立了 LineUp Runtime 承载第一个 Core App 的最小闭环。当前实现中的 chat 是
图文 IM 形态的应用;在后续设计中,它将演进为 Interaction App 的 IM 模式,但现阶段
仍保留 app_scope = "chat" 作为代码和协议兼容名称。
当前客户端基线是:
Tauri 2 Desktop Host + Web Reference Host
两种 Host 运行同一份 TypeScript Runtime 和 Core App:Tauri 用于正式桌面交付,Web 用于 浏览器开发、Tailscale 联调和自动化验证。它们不是两套客户端,也不各自实现通信、同步或 消息存储。
2. 已实现的 Runtime 边界
LineUpRuntime 是以下对象的唯一所有者:
Transport
Conversation Store
sync loop
outbox
App Inbox
作用域筛选
旧 lineup.v1 兼容
去重与恢复
Chat 不能直接访问 AppServer、Transport、Store、登录态或 Host 特权能力,只能使用
ChatRuntimeSDK:
Runtime
→ 校验、持久化和筛选 Agent 消息
→ 投递 app_scope + conversation_id 匹配的消息
→ 通过 SDK 提供订阅、Inbox、ACK 和 Runtime Action
→ 接收 Chat 的用户动作并进入 outbox
3. 已实现的应用加载关系
当前已经将“默认应用选择”和“应用具体挂载”分开:
CoreAppRegistry
→ 选择默认 app_scope = chat
CoreAppHostRegistry
→ 找到 chat 对应的 Host 装配器
chat-app-host.ts
→ 加载 Chat Shell、样式、Renderer、DOM Context 和 SDK
main.ts 现在只负责启动 Runtime、创建 Host 绑定和请求挂载默认 App,不再直接导入
Chat 的样式、Renderer 或 Shell。
相关实现:
tauri/src/runtime/coordination/lineup-runtime.tstauri/src/runtime/app-management/app-registry.tstauri/src/runtime/app-management/runtime-app-host.tstauri/src/core-apps/chat/chat-app-host.tstauri/src/main.ts
4. 已实现的消息和交互能力
当前基线已经覆盖:
- 登录、退出和会话恢复;
- HTTP 增量同步与包含式 cursor;
- 用户消息本地回显、发送状态和 outbox;
- Agent Markdown 消息和安全 DOM 渲染;
- Agent status、progress、error 和执行摘要;
choice、confirm、inputTool Call 的状态机和可信交互卡片;- Tool Result / Tool Cancel 回声;
- Surface 生命周期的基础管理;
- Capability Registry、确认、受限 Host 执行和审计;
- Artifact 元数据校验与 Host 临时内容缓存;
- App Inbox 的持久化、恢复、ACK 和
message_id去重。
所有入站内容必须先经过 Runtime 协议和作用域校验。非法或不匹配的消息不得进入 Chat, 未知内容只能安全降级,不能执行远端脚本或系统能力。
5. 基线验证
npm test -- --run
21 个测试文件通过
94 个测试通过
npm run build
TypeScript 检查通过
Vite production build 通过
6. 本基线的边界
以下能力尚未作为本迭代的完整实现:
动态 App Registry
App 安装、更新、回滚和移除
App Instance Manager
App Focus Manager
Runtime Tool Router
Interaction App 的 IM / Audio / Video 模式统一运行时
扩展 App 的前后台切换和恢复
完整应用市场
这些内容属于 01.kernel.md 定义的下一阶段目标。00.base 的意义是保护
已经完成的通信、可靠投递、作用域和安全边界,后续重构不得让这些能力回到 App 或
main.ts 中。