跳转到主要内容
Vibex 通过”权威运行时 + 类型化投影”让多个原生客户端保持一致。不要在客户端、Relay 或 UI 层创建第二份权威业务状态。

运行时关系

关键点是同一个 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.md
  • docs/remote/protocol-v2.md
  • docs/platform/support-matrix.md
  • docs/operations/recovery-matrix.md