运行时关系
关键点是同一个DesktopRuntime 内核有两种前端:apps/desktop 给它加一个 GPUI 窗口,apps/server 给它加一套守护进程生命周期。两者暴露完全相同的 Remote v2 网关。
主要 crate 与 app
数据流规则
事件带有权威序号和版本。客户端检测到 generation 或 cursor gap 时必须返回resync_required,然后从权威运行时重新获取。文件写入还要遵循内容修订和 compare-and-swap(CAS)检查。
远程附件在建立流之前重新认证和授权。终端输入带工作区作用域、generation 检查和审计;不要保存原始终端字节。
项目与工作区模型
VibexWorktree 工作区不是”另一种模式”,而是同一项目下的另一个工作区。
持久化和恢复
SQLite 保存项目、工作区、会话、时间线、供应商配置、终端元数据和远程设备。 只存在于内存、重启即丢失: Agent 进程、终端会话内容、活动连接。数据库中的running 只是上次观察到的状态,重启后必须重新探测,丢失的终端标记为 stale。
变更评审清单
- 是否仍由权威运行时拥有唯一真相?
- 新能力是否同时支持本地与配对运行时(经
BackendFacade),而不是只走本地路径? - 是否使用共享 DTO、错误和能力,而不是复制结构?
- 是否为重连、序号间隙、撤销和恢复定义行为?
- 是否脱敏日志、诊断资料和测试证据?
延伸阅读
docs/architecture/ui-boundary.mddocs/remote/protocol-v2.mddocs/platform/support-matrix.mddocs/operations/recovery-matrix.md