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