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