Files
曾志威 19a8e03a83
ci / rust (push) Canceled after 0s
ci / web (push) Canceled after 0s
ci / package-preview (push) Canceled after 0s
ci / package-installer (push) Canceled after 0s
ci / linux-agent (push) Canceled after 0s
ci / edge-service (push) Canceled after 0s
ci / coturn-pop (push) Canceled after 0s
ci / package-windows-host (push) Canceled after 0s
Document all-Rust migration and extend native media stack
2026-08-14 14:31:57 +08:00

8.6 KiB
Raw Permalink Blame History

RemoteDesk 实施路线

全 Rust 架构迁移的当前执行顺序和验收标准见 全 Rust 架构迁移计划。该计划依据 ADR 0001,优先于下文旧版里程碑中的 Tauri、WebView、Go、Hysteria2 和兼容模式描述。

路线按风险优先,而不是按界面完成度排序。最先验证 Agent 与客户端原生 helper 的双端零拷贝、IronRDP、Wayland Portal、Xorg DRI3、PTY 和差网络自适应等核心技术。

M0:技术验证

目标:确认架构可以落地,不制作完整产品界面。

九项独立实验、通过标准和回退决策见 M0 技术验证计划

  • 建立 Tauri/React Client、统一 Rust workspace 和 Linux Agent。
  • 验证 native-video helper 的 D3D11 解码、surface 和呈现零拷贝。
  • RDP viewer 已完成安全 Named Pipe、Job Object 和握手失败诊断源码接线;继续完成 Windows 编译/伪造客户端/控制服务崩溃验收,以及 native-video/Tauri 的同类运行时接入。
  • 验证自动跟随、固定/自定义分辨率、动态切换、键鼠和剪贴板。
  • 在 GNOME Wayland 中通过 Portal 获取 PipeWire 画面。
  • 通过 libei/Portal 发送输入。
  • 在 Xorg 中通过 XComposite/DRI3/XDamage 零拷贝获取画面并通过 XTest 发送输入。
  • 在无桌面 Linux 中创建降权 PTY,并由 xterm.js 正确显示 UTF-8 终端。
  • 验证 H.264 硬件编码、解码和 WebRTC 直连。
  • 验证 Wayland DMA-BUF 到硬件编码器、原生 D3D11 解码到呈现的零拷贝路径。
  • 验证 1%~15% 随机/突发丢包下的码率、帧率和分辨率调整。
  • 测量 1080p60 下的复制次数、CPU/GPU 占用和延迟。

验收标准:

  • Windows RDP 会话可连续运行 2 小时,无崩溃和明显内存增长。
  • IronRDP 完成 NLA、动态分辨率、剪贴板和 UDP multitransport 能力报告。
  • GNOME 当前会话可在用户授权后显示并控制。
  • Xorg 当前会话可显示并完成基础键鼠控制。
  • 无桌面 Linux 可创建普通用户 PTY,退出后无残留进程。
  • 输入通道不被视频编码阻塞。
  • WebView2 crash 不终止主程序,helper crash 不影响其他会话。
  • 默认 Linux 图形会话只有 Agent/client 两端均验证 zero_copy 后才能连接。
  • 形成技术验证报告并确定最终媒体库组合。

M1Windows RDP MVP

目标:交付可日常使用的 Windows 远程客户端。

  • 主机列表、新建/编辑/删除配置。
  • 系统密钥库保存凭据。
  • NLA/TLS、证书指纹确认。
  • 全屏、本地缩放、自动跟随、固定/自定义分辨率和剪贴板。
  • 音频播放和基础多显示器。
  • 断线原因、手动重连和有限自动重连。
  • Windows 客户端安装包和基础诊断日志。

验收标准:

  • 可连接 Windows 11 Pro 和 Windows Server。
  • 密码不出现在 SQLite、日志或导出配置中。
  • 证书变化会阻断自动连接。
  • 中文键盘与剪贴板通过专项测试。

M2Linux Agent 基础

目标:建立完全自研的 Linux 被控端,不依赖任何 Linux RDP 服务。

  • remotedesk-agentd systemd 系统服务。
  • remotedesk-agent-session 用户会话服务。
  • remotedesk-shell-session 降权终端会话进程。
  • Unix Socket IPC、进程身份校验和版本握手。
  • 一次性配对码、设备公钥、授权列表和撤销。
  • Agent 能力、桌面类型和 Portal 支持检测。
  • Windows 客户端与 Agent 的 TLS WebSocket 信令。

验收标准:

  • 系统服务不读取或处理桌面画面和剪贴板。
  • 未配对客户端无法创建会话。
  • 至少两种主流发行版完成安装、升级和卸载测试。
  • 不安装或调用 xrdp、GNOME Remote Desktop、KRdp。

M3Linux 桌面 Agent

目标:通过自研 Agent 控制 Wayland 和 Xorg 当前用户会话。

  • Agent 配对、设备密钥和撤销。
  • Portal/PipeWire 捕获与 libei 输入。
  • XComposite/DRI3/XDamage 捕获、XRandR 显示器和 XTest 输入;XShm 仅显式兼容模式。
  • H.264/Opus WebRTC 会话。
  • Native Video 默认 D3D11 零拷贝渲染,WebView2 <video> 仅显式兼容模式。
  • Wayland/Xorg Agent 与 Windows 客户端默认双端严格零拷贝,非零拷贝路径不自动回退。
  • 自适应分辨率、帧率和码率。
  • 分辨率菜单、主机级保存、锁定策略,并保证 Linux 不改变实体显示模式。
  • TWCC/GCC 反馈、NACK/RTX、PLI 和关键帧恢复。
  • 输入/音频优先,严重丢包时限制文件与剪贴板流量。
  • 文本剪贴板、会话通知和用户主动终止。
  • Linux 被控端用户级 Agent 安装包,不包含客户端 UI。

验收标准:

  • GNOME、KDE 各完成一次自研 Agent 的 Wayland Portal 模式端到端验证。
  • 至少一个 Xorg DRI3 桌面完成零拷贝 1080p60、输入和分辨率变化验证。
  • 用户拒绝授权时不会降级为隐蔽捕获。
  • 1080p60 可稳定运行 4 小时。
  • Wayland DMA-BUF、Xorg DRI3 和客户端 D3D11 均由 tracer/perf/ETW/驱动指标验证零拷贝。
  • 配对撤销后旧客户端无法重连。
  • 5% 丢包不主动断开,10% 突发丢包能自动降档并在恢复后稳定升档。

M4Linux 命令行

目标:支持没有图形环境的 Linux 被控端。

  • 配对权限中增加独立的终端权限。
  • PAM 会话、目标 UID/GID 降权和 PTY 生命周期。
  • xterm.js、UTF-8、ANSI、窗口尺寸和信号。
  • 断线宽限期、会话恢复和有限输出缓冲。
  • shell、工作目录和环境白名单。
  • sudo 交互兼容,但不绕过系统提权策略。

验收标准:

  • 无桌面 Debian/Ubuntu Server 可以被 Windows 客户端控制。
  • 命令进程以目标普通用户运行,不能直接创建 root Shell。
  • 中文、颜色、全屏终端程序和窗口缩放通过测试。
  • 客户端撤销终端权限后不能创建或恢复终端会话。

M5:体验和性能

目标:从“能连接”提升到稳定的日常工具。

  • GPU 纹理路径和脏矩形渲染。
  • GPU 默认自动选择、全局手动选择和单主机覆盖。
  • 手动 Linux GPU 自动切换 Native Video Helper。
  • HEVC/AV1 能力协商。
  • 多显示器与 HiDPI 完善。
  • 麦克风、图片剪贴板和可控文件传输。
  • 质量预设、实时统计和诊断包。
  • 网络质量状态、码率阶梯、恢复迟滞和手动质量上限。
  • 崩溃恢复、更新检查和依赖 SBOM。

验收标准:

  • 4K 办公场景可以使用硬件编解码。
  • 会话运行 8 小时无持续资源增长。
  • 所有重定向能力均可按主机独立关闭。

M6CDN 边缘中继

目标:在直连不可用或质量不足时,通过边缘 TURN POP 保持远程会话。

  • Rust Rendezvous Gateway 和 Relay Allocator。
  • Agent 主动出站控制连接,无云账号设备签名路由。
  • 单 POP coturnUDP、TCP、TLS 443。
  • 短期、限 session/POP/配额的 TURN credential。
  • Direct -> TURN ICE 选择与明确诊断。
  • 双端独立 POP 探测、优质骨干评分和 Dual Edge 路径。
  • 智能优选、直连优先和 CDN 优先策略。
  • 备用 POP 和 ICE restart。
  • Windows RDP 透明 L4 Edge Connector 与 TCP/UDP 分流。
  • 中继容量、流量成本、限速和 DDoS 指标。
  • 签名发布物静态 CDN。

验收标准:

  • Direct 可用时不产生 Relay 流量。
  • Direct 可用但质量更差时可以选择 Dual Edge 骨干路径。
  • 禁止 UDP 后可回退 TURN TLS 443。
  • 主 POP 故障后现有 Session ID 可恢复到备用 POP。
  • Relay 无法解密媒体和 DataChannel。
  • RDP Edge 不终止目标 Windows TLS/NLAUDP 不被封装进 TCP。
  • 控制面短时故障不影响已建立会话。
  • 过期或跨 session TURN credential 被拒绝。

后续评估项

以下能力不进入首个稳定版本:

  • 通用 Linux 图形桌面无人值守 Agent。
  • 登录界面和系统锁屏控制。
  • 完整云账号与跨设备配置同步。
  • 移动端客户端。
  • 会话录制。
  • 多用户管理和集中策略。
  • 游戏专用串流模式。

其中“通用 Linux 图形桌面无人值守”必须先完成针对目标发行版和合成器的安全设计,不能简单通过 root 权限绕过 Wayland。纯命令行终端不受这一图形限制,但仍必须经过设备授权和普通用户降权。

建议的首轮开发顺序

  1. 建立最小 Tauri/WebView2 + Rust helper 技术验证工程。
  2. 完成 Windows RDP MVP,稳定会话状态机和安全存储。
  3. 建立 Linux Agent 系统服务、桌面会话、终端会话、配对和信令骨架。
  4. 完成 Wayland 与 Xorg 桌面通道。
  5. 完成 PTY 命令行通道和 Windows 终端控件。
  6. 完成单 POP 边缘中继,再扩展双 POP 选择和故障切换。