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
8.6 KiB
8.6 KiB
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后才能连接。 - 形成技术验证报告并确定最终媒体库组合。
M1:Windows RDP MVP
目标:交付可日常使用的 Windows 远程客户端。
- 主机列表、新建/编辑/删除配置。
- 系统密钥库保存凭据。
- NLA/TLS、证书指纹确认。
- 全屏、本地缩放、自动跟随、固定/自定义分辨率和剪贴板。
- 音频播放和基础多显示器。
- 断线原因、手动重连和有限自动重连。
- Windows 客户端安装包和基础诊断日志。
验收标准:
- 可连接 Windows 11 Pro 和 Windows Server。
- 密码不出现在 SQLite、日志或导出配置中。
- 证书变化会阻断自动连接。
- 中文键盘与剪贴板通过专项测试。
M2:Linux Agent 基础
目标:建立完全自研的 Linux 被控端,不依赖任何 Linux RDP 服务。
remotedesk-agentdsystemd 系统服务。remotedesk-agent-session用户会话服务。remotedesk-shell-session降权终端会话进程。- Unix Socket IPC、进程身份校验和版本握手。
- 一次性配对码、设备公钥、授权列表和撤销。
- Agent 能力、桌面类型和 Portal 支持检测。
- Windows 客户端与 Agent 的 TLS WebSocket 信令。
验收标准:
- 系统服务不读取或处理桌面画面和剪贴板。
- 未配对客户端无法创建会话。
- 至少两种主流发行版完成安装、升级和卸载测试。
- 不安装或调用 xrdp、GNOME Remote Desktop、KRdp。
M3:Linux 桌面 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% 突发丢包能自动降档并在恢复后稳定升档。
M4:Linux 命令行
目标:支持没有图形环境的 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 小时无持续资源增长。
- 所有重定向能力均可按主机独立关闭。
M6:CDN 边缘中继
目标:在直连不可用或质量不足时,通过边缘 TURN POP 保持远程会话。
- Rust Rendezvous Gateway 和 Relay Allocator。
- Agent 主动出站控制连接,无云账号设备签名路由。
- 单 POP coturn:UDP、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/NLA,UDP 不被封装进 TCP。
- 控制面短时故障不影响已建立会话。
- 过期或跨 session TURN credential 被拒绝。
后续评估项
以下能力不进入首个稳定版本:
- 通用 Linux 图形桌面无人值守 Agent。
- 登录界面和系统锁屏控制。
- 完整云账号与跨设备配置同步。
- 移动端客户端。
- 会话录制。
- 多用户管理和集中策略。
- 游戏专用串流模式。
其中“通用 Linux 图形桌面无人值守”必须先完成针对目标发行版和合成器的安全设计,不能简单通过 root 权限绕过 Wayland。纯命令行终端不受这一图形限制,但仍必须经过设备授权和普通用户降权。
建议的首轮开发顺序
- 建立最小 Tauri/WebView2 + Rust helper 技术验证工程。
- 完成 Windows RDP MVP,稳定会话状态机和安全存储。
- 建立 Linux Agent 系统服务、桌面会话、终端会话、配对和信令骨架。
- 完成 Wayland 与 Xorg 桌面通道。
- 完成 PTY 命令行通道和 Windows 终端控件。
- 完成单 POP 边缘中继,再扩展双 POP 选择和故障切换。