7.1 KiB
LineUp App 迭代定义:Runtime 工作区与 Pomodoro MiniApp
迭代编号: 04.runtime_workspace 状态: 草稿,待设计评审 日期: 2026-08-06 前置基线: 03.sdk_and_coreapp.md 总体计划: plan.md 权威架构: APP架构设计.md
1. 迭代目标
前三次迭代已经完成 Runtime、Interact、MiniApp SDK v1 和参考 MiniApp 的基础契约。本迭代不再扩展 复杂的业务应用,而是把这些基础接到真实的 Web/Tauri 工作区界面,证明用户可以启动、切换、后台化、 关闭、恢复一个 MiniApp,并在 Interact 中查看对应的子会话。
本迭代选择一个极简的 Pomodoro 番茄时钟 MiniApp 作为 Runtime 验证应用。番茄时钟只负责倒计时和 自己的完成提醒,不负责任务、项目或复杂业务管理。
Interact IM
→ Agent 请求启动 Pomodoro
→ Runtime 创建 App instance 和 App 子会话
→ Pomodoro 进入前台,Interact 进入后台
→ 计时在后台继续运行
→ 用户暂停、继续、取消或回到 Interact
→ 到时间显示完成提醒并回传结果
→ 用户关闭 App,Runtime 收口并恢复 Interact
→ 子会话在 IM 中折叠保存
→ 重启后按规则恢复或继续处理
2. 产品和架构边界
2.1 Interact
Interact 仍然是系统级 system MiniApp,负责人与 Agent 的交互:
- Agent 请求启动或控制番茄钟;
- Agent 向用户询问是否开始下一轮;
- Agent 需要用户确认时使用
notice / choice / confirm / input; - 交互记录属于 Interact 和对应会话,不属于 Pomodoro 的内部 UI。
2.2 Runtime
Runtime 负责最终裁决和可靠性:
- 创建和管理 Pomodoro App instance;
- 管理前台、后台、挂起、关闭和恢复;
- 校验 Tool、作用域、实例和会话上下文;
- 保存计时状态和工作区快照;
- 处理刷新、断线和重启恢复;
- 关闭 App 时停止新 Tool 投递,并收口未完成操作;
- 通过 outbox 可靠回传结果;
- 需要系统通知时通过 Capability Gateway 处理。
2.3 Pomodoro MiniApp
Pomodoro 是普通 bundled MiniApp,必须使用与其他非系统级 MiniApp 相同的 SDK、受限 Surface 和
Capability 规则。
它只负责:
- 显示倒计时;
- 响应暂停、继续和取消;
- 根据 Runtime 提供的状态刷新界面;
- 到时间显示自己的完成提醒;
- 通过 SDK 报告状态和结果。
它不能:
- 直接访问 AppServer、Transport、Conversation Store 或 Agent;
- 直接调用 Tauri、系统通知或其他 Host 能力;
- 发起 Interact 标准交互;
- 修改 Runtime 的焦点、Registry 或其他 App 数据。
3. Pomodoro 最小模型
第一版只保留以下状态:
idle 尚未开始
running 正在计时
paused 已暂停
completed 已完成
cancelled 已取消
最小数据:
timer_id
duration_seconds
started_at
ends_at
remaining_seconds
state
建议的最小 Tool:
pomodoro.start
pomodoro.pause
pomodoro.resume
pomodoro.cancel
pomodoro.status
Runtime 不解释“番茄钟”业务,只管理一个有生命周期的计时操作。计时完成后,Pomodoro 可以显示普通 完成提示;如果 Agent 要询问用户是否开始下一轮,必须回到 Interact 的标准交互。
4. 工作内容
4.1 工作区界面
- 显示当前前台 App;
- 支持 Interact 和 Pomodoro 之间切换;
- 显示 App 前台、后台、挂起、关闭和恢复状态;
- App 启动失败时恢复 Interact;
- 刷新或重启后恢复工作区快照。
4.2 生命周期接入
- 将
AppLifecycleManager、AppFocusManager和AppOrchestrator接入真实 Host; - 区分后台、挂起和真正关闭;
- 后台运行时保持计时;
- 关闭后停止向该 instance 投递新 Tool;
- 将未终态普通 Tool 收敛为
cancelled(app_closed); - 已提交结果继续通过 outbox 发送;
- 关闭后恢复前一个有效前台 App。
4.3 子会话和 Interact 交互
- 创建 Pomodoro instance 时创建或恢复 App 子会话;
- 在主 IM 中显示可折叠的 Pomodoro 子会话;
- 子会话只记录人与 Agent 围绕该番茄钟的交互和结果;
- 倒计时、暂停按钮、继续按钮等 App 内部操作不写入 IM;
- App 前台时,Interact 的标准交互可以显示在其上方;
- 展示位置变化不改变交互归属;
- 已结束子会话只读;“继续处理”创建新的 instance 和新的子会话。
4.4 恢复和提醒
- 重启后根据
ends_at重新计算剩余时间; - 不允许重启后无条件重新开始完整时长;
- 明确后台、暂停、关闭和完成的区别;
- 第一版只实现 App 内完成提示;
- 系统通知作为后续 Capability 验证,不允许 MiniApp 直接调用系统 API。
4.5 自动化和真实验收
- 覆盖 Pomodoro 状态机和 Tool 调用;
- 覆盖前后台切换、关闭和恢复;
- 覆盖重启后剩余时间恢复;
- 覆盖 App 子会话创建、折叠、只读和继续处理;
- 覆盖 Interact 标准交互在 Pomodoro 前台时仍归 Interact;
- 通过 Web Reference Host 完成完整浏览器验收;
- 在 Tauri Desktop Host 完成至少一条代表性流程;
- 检查生命周期、Tool、交互、恢复和拒绝路径日志。
5. 不在本迭代范围
- 应用市场、服务端 App Catalog 和远程下载;
- 第三方 MiniApp 发布和在线更新;
- 多 Agent 连接和 Agent 切换;
- Audio Mode 和 Video Mode 的真实媒体能力;
- Pomodoro 统计报表、多个计时器、日历和复杂提醒计划;
- Task Dashboard 的任务、项目、优先级、标签和历史管理;
- Whiteboard 的多人协作、云端同步和复杂绘图工具。
6. 验收目标
1. 用户可以从 Interact 启动 Pomodoro。
2. Runtime 创建真实 App instance、焦点记录和 App 子会话。
3. Pomodoro 进入前台后,Interact 可以退到后台。
4. Pomodoro 在后台仍然正确计时。
5. 用户可以暂停、继续和取消计时。
6. 到时间后 Pomodoro 显示完成提示,并通过 Runtime 回传结果。
7. 用户关闭 Pomodoro 后,未完成操作正确取消,Interact 恢复前台。
8. 子会话在主 IM 中折叠保存,已结束内容只读。
9. 用户选择继续处理时,Runtime 创建新的 instance 和新的 App 子会话。
10. 刷新或重启后,剩余时间、App 状态、焦点和子会话按规则恢复。
11. Agent 的标准交互始终由 Interact 负责,Pomodoro 不伪造交互组件。
12. MiniApp 无法访问 Transport、Store、Agent、Host DOM、Tauri 或任意系统 API。
13. `npm test -- --run`、`npm run build` 和 Web/Tauri 代表性验收全部通过。
14. P0~P3 设计和验收问题清零。
7. 后续定位
本迭代完成后,Whiteboard 可以作为下一条 Surface、Artifact 和隔离边界验证应用;Task Dashboard 保留
为后续普通 bundled MiniApp,等 Runtime 工作区、SDK 和生命周期稳定后,再单独定义任务管理业务模型。