远程软件
定位(2026-10-29 方案裁决 A1-A4): 纯 Rust、平台无关,只做「怎么连 + 收发什么」——QUIC 会话、协议 v2 认证、 视频帧流、输入上行、Ping/Pong、KeyFrameReq。解码/渲染/触摸全在 Kotlin 侧, 本 crate 不碰像素、不依赖 openh264(dev-dependency 仅验证工具用)。 设计要点 - PeerTarget::Direct 是唯一的连接形态;不做中继、不定义 Relay 变体 (《多平台架构设计》§6.1 裁决)。将来设备码+打洞只换 connect() 内部。 - 帧经容量 2 的 mpsc 交付,**不丢帧**:跳帧决策属于看得到解码器状态的消费方 (Kotlin),Rust 层丢帧会重演 R-3 教训(跳帧断参考链)。 - insecure_skip_verify=false 时明确报错而非静默放行——证书钉扎登记在方案 阶段 4,安全红线不允许默默降级。 - 双流结构与桌面 viewer 一致(流1 认证+视频,流2 输入+控制),入会即请求 IDR。 验证(headless,桌面→桌面 127.0.0.1) - 单测 3 passed(帧契约、默认配置、strict-verify 显式报错) - examples/headless_check:300 帧,seq 违例 0、keyframe 标志不符 0、 解码成功 300/300、RTT 路径工作(RTT=1ms 出现) - 全 workspace 回归:common 20 passed,构建全绿 |
||
|---|---|---|
| .cargo | ||
| agent | ||
| agent-core | ||
| common | ||
| linux-agent | ||
| scripts | ||
| tools | ||
| vendor/nvenc | ||
| viewer | ||
| viewer-core | ||
| .gitattributes | ||
| .gitignore | ||
| B侧设计文档.md | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Git协作规范.md | ||
| README.md | ||
| 借鉴映射与落地规范.md | ||
| 多平台架构设计.md | ||
| 打洞与信令设计.md | ||
| 打洞验证记录.md | ||
| 构建运行手册.md | ||
mvp-remote
自研远程桌面控制软件(办公场景),技术路线参考网易 UU 远程逆向分析结论。
架构
| Crate | 角色 | 说明 |
|---|---|---|
common |
协议库 | 控制消息 / 视频帧线格式,三端共享契约 |
agent |
被控端 | DXGI 屏幕采集 + openh264(H.264) 编码 + QUIC 服务 + SendInput 键鼠注入 |
viewer |
主控端 | QUIC 客户端 + openh264 解码 + minifb 渲染 + 键鼠采集 + 延迟 HUD |
构建
cargo build --release
产物:target/release/agent.exe(被控端)、viewer.exe(主控端),需附带 3 个 mingw 运行库 DLL(libstdc++-6 / libgcc_s_seh-1 / libwinpthread-1)。
运行
# 被控机
agent.exe --port 47800 --code 123456
# 主控机
viewer.exe --addr <被控机IP> --port 47800 --code 123456
详见《构建运行手册.md》、《Git协作规范.md》与《打洞与信令设计.md》。