用途与结果
最快了解这个项目
为什么需要它
高帧率、HDR(高动态范围)和 3D 场景需要 Sunshine/Moonlight 这类低延迟串流,但多屏主机一旦把捕获目标或窗口留在虚拟屏,远程端可能只看见壁纸;反过来,为了救画面盲改主屏、镜像模式或副屏又可能破坏本地工作。这个项目把“先认准设备、再判断是否允许切换、失败时保持现场”做成脚本和可测试规则。
举个实际例子
“人在外面想用主机玩游戏,先看看为什么只有壁纸,不要乱切家里的显示器。”先区分画面捕获、窗口位置、网络和编码问题;只有设备身份、当前会话与显卡状态允许时才走对应修复,最后用真实客户端画面确认。
最后我会得到什么
主机已有主屏优先的守护、专用虚拟屏调整、网络诊断和定期检查入口。手机能否真正直连、画面是否流畅、窗口能否回到主屏以及关机后能否远程启动,仍需要分别在真实设备上验收。
正常时
软件能回读服务和守护状态;只有当前显示设备、显卡和串流会话都允许,才执行对应切换。真实画面仍需在手机上确认。
发现问题时
9 月 18 日记录了本次开机周期的图形故障,所以当时停止捕获切换和显示写入;服务仍运行,手机是否连接不明。9 月 4 日的输出不匹配只是更早的观察。
入口不可用或证据不足时
主屏和专用虚拟屏都辨认不清、出现其他未知虚拟屏或显卡严重故障时,停止显示改动,保留电脑当前画面和配置。
从哪里开始
在已配置的主机上用 Moonlight/Artemis 发起连接;先查看 Sunshine、显示目标和指定 Tailscale peer 状态,真实画面与输入仍需手机端验收。
需要准备什么
- 要连接的主机和手机
- 希望的画质或远程开机方式
- 实际遇到的画面、声音或输入问题
从开始到拿到结果
- 1先确认主机条件
检查 Sunshine、Tailscale、物理主屏和唯一虚拟屏;平时优先捕获实体主屏。
- 2手机实际连接
用 Moonlight/Artemis 选择主机,从保守码率和可用编码开始试;路径诊断与画面、声音、输入分别验。
- 3主屏离线才兜底
守护器满足缺屏、显卡和空闲条件才切虚拟屏,恢复主屏时再回切并核对窗口位置。
- 4失败按层定位
服务在线不等于可捕获画面;直连、中继、编码、显示和开机条件分别报告,本轮未实测的不写成通过。
从这些需求了解功能
从一个实际问题看它怎样处理、交回什么;当前能做到哪一步和仍有哪些限制,也写在对应说明中。
项目指标与相关入口查看规模、覆盖范围和关联能力
当前项目指标
- 物理主屏 / VDD(虚拟显示器)配置目标
- 4K 240Hz / 2880×1800 HDR(高动态范围)
- 文档上行依据 / 客户端起点
- 约 32 Mbps / CBR(恒定码率)18–20 Mbps
- AV1 证据
- 主机端能力已回读 / 手机协商未实测
- 源码隔离测试
- 4 套测试(101+ 断言)全部通过
它负责
- 平时让 Sunshine 捕获正在使用的物理主屏;主屏确实离线、串流空闲且电脑状态允许时,才交给专用虚拟屏。
- 主屏恢复后,尝试把属于本次范围的普通窗口拉回,再恢复主屏捕获,并逐项回读结果。
- 识别水冷屏、机箱小屏和未知虚拟屏,避免把它们误当远程桌面或搬动其窗口。
- 提供本人明确选择的应急固定虚拟屏入口;改配置、服务采用、手机看到画面和恢复自动守护分开核对。
- 分别检查 Tailscale 网络路径和 Sunshine 视频会话;“能连到电脑”不等于“手机看见画面”。
- 给手机客户端提供从约 18–20 Mbps 和可用时 AV1 开始的画质试验起点,再按真实卡顿和延迟调整。
- 在已知代理残留影响网络时,提供有界修复与再检查,不顺手改其他应用的设置。
- 沿用现有定期检查和本人暂停选择;任务安装、实际运行和检查结果分别报告。
它不负责
- 继续使用 Sunshine 与 Moonlight/Artemis,不自造另一套远程画面软件。
- 不通过复制或镜像显示器来救画面;调整专用虚拟屏不改变物理主屏、水冷屏和机箱屏。
- 无线唤醒未经可靠验证,不把它写成外出开机保证;智能插座或有线唤醒也要实测。
- 公开页不展示真实家庭网络地址、设备身份或访问凭据。
- 不会把 Sunshine 管理入口直接无保护地暴露到公网。
- 显卡状态、屏幕身份、会话空闲或配置未能核对时,不继续写显示配置或重启相关服务。
产品思想与设计核心
物理主屏优先,虚拟屏只兜底
电脑在正常使用时让手机看到主屏;只有主屏确实离线,才考虑专用虚拟屏。主屏回来还要核对窗口与捕获目标。
不为了远程画面改乱本地屏幕
远程分辨率由串流过程调整,不把 Windows 改成复制屏,也不改变实体屏幕的高刷新率和布局。
直连要当次证明
能否绕开中继,要看指定手机与主机当时的路径检查。本轮手机路径尚未实测,不能凭主机网络能力宣布直连。
先留带宽余量,再看客户端统计
从约 18–20 Mbps 试播,给声音和传输额外开销留空间;实际流畅度按手机客户端的丢包、帧率与延迟决定。
显卡不稳就停手
检测到本次开机中的严重图形故障,就暂停显示切换和相关服务修改,先保住电脑当前可用状态。
自动守护是日常,应急固定要能退回
平时由守护器决定捕获目标;本人明确要求时才能暂时固定虚拟屏。留下备份不等于已经自动恢复。
先看状态,明确选择后才改
专用虚拟屏入口默认只展示身份、当前值和支持的模式;本人选择应用后才预检、修改并回读。
主机怎样判断该显示什么、能否连接
它只读显示设备、窗口、图形故障、网络和串流会话,再决定是否可以修改;公开结果不包含私人网络地址。
辨认主屏、专用虚拟屏及其他小屏,避免把会变化的屏幕编号当成固定身份。
选择正确捕获目标;身份不清时停止切换。
在切换前记录符合条件的窗口及原位置。
主屏回来时尝试拉回,并逐窗口检查;不碰桌面底栏、输入法或未知窗口。
查看 Windows 是否记录显卡或系统图形崩溃。
有严重故障就停止显示改动;本人看到黑屏时也应按实际画面停手。
查看两端服务和指定手机到主机的路径。
区分直连、中继或不可达;主机一侧的检查不能代替手机串流。
读取本机视频服务是否有人正在串流及可用编码。
有活动或未知会话时不贸然切捕获目标;服务在线不证明手机已看到画面。
由 Moonlight/Artemis 显示视频和声音,并把触控、键鼠或手柄动作送回主机。
只有实测画面、声音和输入后,才认定远程使用链真正可用。
状态收集不改显示或网络;旧巡检只证明当时观察,不能代替本轮手机体验。
项目怎样演化到现在
把远程画面与网络入口接起来
形成已有串流工具的安装、任务和诊断路线;服务正常与真正收到画面分开。
阶段依据
- 2026-06-26—2026-07-09 · 已有串流工具的常驻、任务与路径巡检起点。 原记录的依据标签为“基础串流与路径巡检”,未附Git提交编号。
避免修远程端却打乱本地桌面
物理主屏优先,虚拟屏只在明确条件下兜底;普通窗口回迁、虚拟屏参数和显卡稳定性分别检查,自动拓扑联动保持关闭。
阶段依据
- 2026-08-05—2026-08-08 · 传输和登录前边界分开,服务正常不证明画面已经可捕获。 原记录的依据标签为“传输与登录前边界”,未附Git提交编号。
- 2026-08-10—2026-09-02 · 物理主屏优先、窗口恢复、GPU事件限制与VDD参数分工形成;真实手机及物理显示验收独立。 原记录的依据标签为“主屏优先、窗口恢复与 VDD 参数”,未附Git提交编号。
切换失败能回到原配置
可见健康和暂停意图与现有守护配合,配置修改前后核对身份并保留回退;客户端未知不当空闲,未验手机路线不写成保证。
阶段依据
- 2026-09-18 · 切换失败能回到原配置
3f3ebed
完整项目状态与证据边界
已确认事实
- 为 RTX 5090 D + Ryzen 9 9950X3D 主机提供一套 Sunshine 运维层:识别应该捕获哪块屏、在主屏确实离线时规划 VDD 兜底、把漂入虚拟屏的普通窗口拉回,并把网络、编码与远程开机问题拆成可诊断的步骤。
- 实现约定是 4K 240Hz 活动物理主屏优先,主屏正常时不改它的分辨率或排列。只有物理主屏稳定缺失 15 秒且串流连续空闲 5 秒时,守护器才允许把捕获目标切到唯一健康的 2880×1800 HDR MTT1337 VDD(虚拟显示驱动)并迁移普通窗口;本轮没有用真机连接或拔线验证这条生产路径。
- 人工固定VDD仍需明确预览和Apply,且消费当前GPU、会话和唯一VDD身份。配置通过共同短事务保存原值、原子写入和实际回读;回滚只碰本次postimage,不覆盖后来并发修改。配置提交不重启Sunshine或证明手机画面。
- 2026-09-18只读现场属于9月16日开始的启动周期:20条LiveKernelFailure图形故障证据,状态BlockedByGpuStability,worker新鲜、capture=VDD,客户端会话Unknown(未验证)。捕获切换和显示写入不放行;只有额外满足空闲和来源/目标证据的普通窗口单向拉回可独立判断。旧9月4日22条与9月14日状态各保留历史,不能跨启动周期替换。
- 不使用 Windows“复制显示器”,不开启 Sunshine 的 ensure_only_display(仅确保单显示器)或自动分辨率改写;VDD 参数与物理主屏分开,避免本项目因多屏联动增加黑屏或显卡驱动故障风险。
- LIAN LI(联力)水冷屏与 HS2 机箱屏是本项目的禁止目标与禁止区域:捕获选择和本项目发起的窗口迁移动作不选它们。Windows 或其他应用自行放置窗口不在这项代码保证内。
- 若当前系统启动已记录 Kernel-Power 41、BugCheck、nvlddmkm 或匹配的 WER 1001/1019 图形故障事件,系统进入 BlockedByGpuStability(因 GPU 不稳定阻断)状态,停止捕获源修改、模式切换与主屏到 VDD 的窗口迁移,只允许经严格验证的单向拉回主屏。用户实际看到黑屏或整机卡死时同样应停止操作,不能靠事件查询冒充视觉检测。
- Sunshine/Moonlight串流层与Tailscale传输层分别诊断。本次Tailscale仍Running(运行中)、online(在线)且unattended(无人值守);2026-09-14T04:20:46Z回读WLAN非链路本地IPv6地址数为0。没有指定手机peer(对端)探测,当前直连或DERP(中继服务器)路线仍未验证;不能把一个接口的地址数推广成整机网络不可用。
- README 以约 32 Mbps 上行为依据,建议手机客户端先从 CBR(恒定码率)18–20 Mbps 起步,并为 FEC(前向纠错)与音频留余量。这是配置建议,不是主机强制策略;本轮没有串流遥测证明 24.5 Mbps 峰值、无丢包或不卡顿。
- RTX 5090 D 与小米 15 Pro 骁龙 8 Elite 具备 AV1 硬件能力,Sunshine 回环接口也报告 AV1 Main10(10 位色深配置);真实会话是否协商到 AV1、画质是否优于 HEVC(高效视频编码),仍要由手机端连接与统计数据确认。
- 纯无线 Wi-Fi WoWLAN(无线局域网唤醒)不适合作为可靠关机唤醒路径。仓库给出“智能插座 + BIOS 来电自启”与有线 Realtek 2.5GbE WoL(有线网络唤醒)两种选择,但本轮没有读取 BIOS、触发魔术包或做断电上电循环。
- repair-stream.ps1 可在真实网络故障时恢复 IPv6 绑定、清理固定代理端口残留并固化 Tailscale 无人值守偏好;SunshineRemote-VerifyPath-Daily 最近一次自然运行返回 0,但 peer ping(对端探测)被跳过,并提示本机另有用户配置的 Funnel(公网入口),未证明它属于 Sunshine。
当前缺口
- 当前启动周期已有GPU图形故障证据,捕获切换与显示写入被阻断;网页没有清事件、重启或改驱动绕过。实际手机串流和物理故障转移仍未验。
- 本轮未发起从小米 15 Pro 手机端的真机交互式远程串流连接验收;服务常驻与编码掩码正常不代表真机操控体验。当前巡检也没有指定 peer,不能判断 direct(直连)还是 DERP 中继。
- 未做拔掉物理显示器线缆或硬件关屏的破坏性 failover(故障转移)真实演练;去抖与窗口迁移由经过验证的 67 项自动化测试保障。
- 未进行外网断电后通过智能插座远程冷开机的实物验证;WoL 与 AC(交流电)来电自启目前是文档方案,不能称硬件已经就绪。
- worker新鲜只证明循环在工作;当前会话Unknown(未验证)不算空闲,不能累计空闲时间或据服务Running推断可安全切换。
- 每日巡检看到一项用户配置的 Tailscale Funnel 公网入口;当前证据没有把它归因于 Sunshine,也不能把整台主机描述成零公网暴露。
来源与公开边界
sunshine-remote-streaming 是 PRIVATE(私有)运维项目。公开页面只保留系统架构、产品逻辑、配置原则与脱敏回执,不包含真实内网 IP、Tailnet(Tailscale 私有网络)名称、设备名称、家庭网段、Funnel 真实端点或任何凭据。
当前关键技术事实
- 它真正解决的事
- 为 RTX 5090 D + Ryzen 9 9950X3D 主机提供一套 Sunshine 运维层:识别应该捕获哪块屏、在主屏确实离线时规划 VDD 兜底、把漂入虚拟屏的普通窗口拉回,并把网络、编码与远程开机问题拆成可诊断的步骤。
- 主屏优先与 VDD 兜底
- 实现约定是 4K 240Hz 活动物理主屏优先,主屏正常时不改它的分辨率或排列。只有物理主屏稳定缺失 15 秒且串流连续空闲 5 秒时,守护器才允许把捕获目标切到唯一健康的 2880×1800 HDR MTT1337 VDD(虚拟显示驱动)并迁移普通窗口;本轮没有用真机连接或拔线验证这条生产路径。
- 应急固定 VDD 不是日常模式
- 人工固定VDD仍需明确预览和Apply,且消费当前GPU、会话和唯一VDD身份。配置通过共同短事务保存原值、原子写入和实际回读;回滚只碰本次postimage,不覆盖后来并发修改。配置提交不重启Sunshine或证明手机画面。
- 捕获状态与历史故障
- 2026-09-18只读现场属于9月16日开始的启动周期:20条LiveKernelFailure图形故障证据,状态BlockedByGpuStability,worker新鲜、capture=VDD,客户端会话Unknown(未验证)。捕获切换和显示写入不放行;只有额外满足空闲和来源/目标证据的普通窗口单向拉回可独立判断。旧9月4日22条与9月14日状态各保留历史,不能跨启动周期替换。
- 严禁拓扑联动与镜像
- 不使用 Windows“复制显示器”,不开启 Sunshine 的 ensure_only_display(仅确保单显示器)或自动分辨率改写;VDD 参数与物理主屏分开,避免本项目因多屏联动增加黑屏或显卡驱动故障风险。
- 水冷屏与机箱屏保护
- LIAN LI(联力)水冷屏与 HS2 机箱屏是本项目的禁止目标与禁止区域:捕获选择和本项目发起的窗口迁移动作不选它们。Windows 或其他应用自行放置窗口不在这项代码保证内。
- GPU稳定性故障关闭
- 若当前系统启动已记录 Kernel-Power 41、BugCheck、nvlddmkm 或匹配的 WER 1001/1019 图形故障事件,系统进入 BlockedByGpuStability(因 GPU 不稳定阻断)状态,停止捕获源修改、模式切换与主屏到 VDD 的窗口迁移,只允许经严格验证的单向拉回主屏。用户实际看到黑屏或整机卡死时同样应停止操作,不能靠事件查询冒充视觉检测。
- 传输层与直连证据
- Sunshine/Moonlight串流层与Tailscale传输层分别诊断。本次Tailscale仍Running(运行中)、online(在线)且unattended(无人值守);2026-09-14T04:20:46Z回读WLAN非链路本地IPv6地址数为0。没有指定手机peer(对端)探测,当前直连或DERP(中继服务器)路线仍未验证;不能把一个接口的地址数推广成整机网络不可用。
- 受限上行带宽建议
- README 以约 32 Mbps 上行为依据,建议手机客户端先从 CBR(恒定码率)18–20 Mbps 起步,并为 FEC(前向纠错)与音频留余量。这是配置建议,不是主机强制策略;本轮没有串流遥测证明 24.5 Mbps 峰值、无丢包或不卡顿。
- AV1 能力与真实协商
- RTX 5090 D 与小米 15 Pro 骁龙 8 Elite 具备 AV1 硬件能力,Sunshine 回环接口也报告 AV1 Main10(10 位色深配置);真实会话是否协商到 AV1、画质是否优于 HEVC(高效视频编码),仍要由手机端连接与统计数据确认。
- 远程唤醒是方案,不是现成结果
- 纯无线 Wi-Fi WoWLAN(无线局域网唤醒)不适合作为可靠关机唤醒路径。仓库给出“智能插座 + BIOS 来电自启”与有线 Realtek 2.5GbE WoL(有线网络唤醒)两种选择,但本轮没有读取 BIOS、触发魔术包或做断电上电循环。
- 幂等修复与每日巡检
- repair-stream.ps1 可在真实网络故障时恢复 IPv6 绑定、清理固定代理端口残留并固化 Tailscale 无人值守偏好;SunshineRemote-VerifyPath-Daily 最近一次自然运行返回 0,但 peer ping(对端探测)被跳过,并提示本机另有用户配置的 Funnel(公网入口),未证明它属于 Sunshine。
完整执行流程
- 1平时在电脑前工作
设计目标是 Sunshine 捕获活动物理主屏,普通窗口留在主屏工作区,VDD 只作为备用目标;水冷屏与机箱屏不参与。
- 2主屏确实离线
关屏不一定等于 Windows 认定显示器离线。只有实时 PnP 与活动输出证据确认主屏稳定缺失 15 秒,守护器才继续判断。
- 3空闲后允许 VDD 兜底
若 GPU 稳定门、唯一 VDD 身份和连续 5 秒串流空闲都通过,代码才允许更新捕获目标并迁移符合条件的普通窗口。
- 4手机端发起连接
Moonlight/Artemis 可以协商视频、音频和触控、键鼠或手柄输入;当前建议从 18–20 Mbps 与 AV1 起试,但本轮没有验证直连路线、实际编码、帧率或输入。
- 5用毕断开
真实客户端断开后,RTSP 会话应释放;是否保持 VDD 捕获以及窗口实际位置要由当时的状态回读决定。
- 6主屏恢复
主屏再次被证明健康且串流空闲时,守护器按记录把符合条件的普通窗口拉回并恢复物理捕获;本轮没有做这次前后对照。
来源读取与精确判定
系统通过 Windows 原生活动显示快照、cfgmgr32(Windows 设备管理接口)状态、Win32 窗口位置 API、系统事件日志与 Tailscale/Sunshine 本地管理接口读取状态;只返回公开安全的判断,不输出私人网络标识。
Windows 活动显示快照与 EDID(扩展显示标识数据):实时枚举物理主屏、MTT1337 VDD 与副屏硬件身份;绕过不稳定的管理接口,以 PnP(即插即用设备)实例 ID 与 EDID 计算 Sunshine UUIDv5(基于命名空间的稳定标识)。;按当前证据选择捕获目标,避免依赖会变化的 DISPLAY 编号,并排除 LIAN LI 水冷屏与未知虚拟屏。
Win32 窗口几何与 Placement(窗口放置):在切换至 VDD 前保存正常窗口的 HWND(窗口句柄)、PID(进程标识)、进程启动时间与位置矩形;识别相邻屏幕 11–13 像素的不可见边框容差。;为主屏恢复时的窗口回迁提供计划,并避免把阴影边框当成真正跨屏;是否实际成功仍要写后回读。
Windows 系统事件日志(System Log):只读查询当前开机周期内的 Kernel-Power 41、BugCheck、nvlddmkm 14/153,以及匹配图形故障特征的 WER(Windows 错误报告)1001/1019。;命中后阻断捕获修改与服务重启;用户看到黑屏或整机卡死时仍须直接停手,事件日志不能替代视觉判断。
Tailscale 本地网络探针与服务管理:只读探测 PC 本地 IPv6 能力、unattended(无人值守)偏好、后台服务和可选 peer(对端)路径;不输出真实 Tailnet(Tailscale 私有网络)与 IP。;返回本机与传输层状态;只有显式指定并验证目标 peer 后,才能区分 direct(直连)、DERP(中继服务器)或不可达。
Sunshine Loopback(本机回环)接口:通过 127.0.0.1 绕过外部代理请求 serverinfo;获取当前编码能力掩码(mask=0x1F0301(2026-09-13自然巡检))与 RTSP(实时流会话)活动状态。;为切换前的空闲门提供输入;它不证明手机已经连接、协商到哪种编码或画面可交互。
手机端输入与主机端画面:Moonlight/Artemis 接收 Sunshine 的视频与音频,并把触控、键鼠或手柄输入送回主机;手柄兼容由 Sunshine 与 ViGEmBus(虚拟手柄总线)等上游组件承担。;本项目只维护主机显示、网络和运维边界,不记录屏幕内容,也没有在本轮验证手机输入或手柄映射。
所有网络地址均以 100.x.y.z 与 2xxx:: 占位符脱敏展示;状态收集不改系统配置,verify-path-lite.ps1 只追加脱敏巡检日志。
本页用到的名词
需要核对专业含义时,可以在这里查看它在 Sunshine 远程串流 项目中的具体用法。
- Sunshine
- 安装在 PC 上的自建游戏与桌面串流服务端,支持 NVENC 高性能低延迟硬件编码。
- Moonlight / Artemis
- 运行在手机或客户端上的开源串流接收器,支持超低延迟硬解与手柄触控模拟;Artemis 为国内优秀定制版。
- VDD(Virtual Display Driver)
- 基于 Windows 间接显示驱动架构的虚拟显示器;本项目使用经过硬件 ID 严格验证的 MTT1337 VDD。
- Failover(故障转移)
- 当物理主屏失效且身份、GPU 与串流空闲门都通过时,受控切到备用虚拟屏;是否平滑仍需真实手机与显示器 E2E。
- P2P 直连(Peer-to-Peer)
- 两台设备直接建立点对点通信,数据包不经过第三方服务器中转,延迟最低且带宽最大。
- DERP(Designated Encrypted Relay for Packets)
- Tailscale 的中继节点;海外 DERP 延迟高且易受网络抖动干扰,直连成功后应绕开 DERP。
- CBR(Constant Bitrate,恒定码率)
- 将网络传输速率牢牢锁定在固定值的编码模式,避免因复杂动态场景导致码率突增打爆上行。
- CQP(Constant Quantization Parameter,恒定量化参数)
- 追求恒定画质的动态码率模式;在网络带宽受限的远程场景下极易引发剧烈丢包与卡顿。
- WoL(Wake-on-LAN)
- 网络唤醒技术;通过向有线网卡发送特定魔术包实现远程开机。
- WoWLAN(Wake on Wireless LAN)
- 无线网络唤醒;受限于无线网卡关机省电机制,在实际生产环境中极不可靠。
- ViGEmBus(虚拟手柄总线)
- Sunshine 客户端输入链可能使用的上游 Windows 虚拟手柄驱动;本项目不实现或记录用户的手柄输入。
系统里实际有什么
下面是当前产品组件,不是概念分类。每一项都对应真实文件、入口或验证链。
主屏优先绑定、VDD 兜底计划、RTSP 会话空闲门与 Win32 窗口位置迁移/拉回。
sunshine-capture-failover.psm1 与 Invoke-SunshineCaptureFailover.ps1 实现稳态轮询、身份复核和 GPU 事件门。
提供 2880×1800 60Hz 150% HDR 初始配置、CDS_TEST 预检、缩放/HDR 写后回读与首选项持久化。
Set-SunshineVddDisplayProfile.ps1 编排 Get-SetVddDisplayMode.ps1、Get-SetVddScaleHdr.ps1 与 sunshine-vdd-display-settings.psm1;真正的 Win32 调用在两个 Get-Set 脚本中。
在用户明确选择时把 Sunshine output_name 指向已验证 VDD,并管理 6 个 dd_* 显示键;它不替代日常主屏优先守护。
Set-SunshineHeadlessConfig.ps1 与 sunshine-headless-config.psm1 负责候选、提交前绑定复核、同目录原子替换、写后回读与有条件回滚;不会自动重启服务,新增 GPU、会话或身份阻断时会保留未恢复项。本轮未应用。
Sunshine 输出画面与音频,Moonlight/Artemis 把触控、键鼠或手柄输入送回主机。
由上游 Sunshine、客户端与可选 ViGEmBus 提供;本仓库只维护显示与运维边界,本轮未做手机输入 E2E(端到端验证)。
探测光猫与主机 IPv6 SLAAC 状态,清除 Tailscale 服务的固定代理端口环境变量,固化无人值守模式。
repair-stream.ps1(幂等修复)与 verify-path.ps1(深度直连与 DERP 路径诊断)。
检查服务运行态、编码能力掩码(HEVC/AV1 Main10)、无人值守和公网入口提示并写入运行态日志。
复用现有轻量验证任务;注册失败不静默另建触发方式,保留用户停用意图。当前每日任务历史记录不当成新版安装证明。
在内存与沙箱环境中对设备 GUID 计算、窗口搬迁、安全门禁与 AST 语法进行严谨的非破坏性回归测试。
tests/ 目录下 4 套核心测试脚本,涵盖 101 项以上严格断言。
当前数据合同与写读边界
sunshine.capture-failover-state.v1
Invoke-SunshineCaptureFailover.ps1:记录当前模式(Unknown/Physical/Vdd)、主屏缺失时间点、串流空闲时间戳以及已迁移窗口的 HWND/PID/Placement 数组;禁止记录私密窗口标题。
无独立 schema;PowerShell 参数、Win32 结果与 VDD XML
Set-SunshineVddDisplayProfile.ps1:严格限定目标为唯一健康 MTT1337;Get-SetVddDisplayMode.ps1 执行 CDS_TEST,两个原生适配器负责应用/回读,持久 XML 同卷原子替换。
无独立 schema;7 个受控 sunshine.conf 键
Set-SunshineHeadlessConfig.ps1:受管配置的短事务共用互斥、同目录原子替换和写后回读;保留前像,回滚只在当前仍匹配本次postimage时执行。新GPU或会话/身份阻断会停止不安全恢复,未恢复项单独报告;不自动重启或声称手机画面已验。
verify-lite.log format
verify-path-lite.ps1:仅输出时间戳、WLAN IPv6 计数、服务状态、Sunshine 编码掩码、unattended 状态与脱敏公共暴露提示,绝不持久化明文 IP 或凭据。
4 层证据分别证明什么
能证明:PRIVATE(私有) main 与 origin/main 已对齐到 3f3ebed784cd1a7dfccabd09e1b1f7ebb3c5be55;此前 BugCheck/WER GPU 事件门仍保留,后续补齐可见健康、VDD 分阶段事务、写后回读与有条件回滚。
不能证明:源码提交不证明现役 output_name 已正确、真实硬件切换成功,也不证明手机操控的延迟、画质或弱网稳定性。
能证明:4 套独立 PowerShell 测试套件通过全部 101 项以上断言,覆盖 GUID 唯一绑定、窗口阴影边框容差、GPU 崩溃门禁与原子写入。
不能证明:测试不模拟硬件显卡真正拔线、屏幕物理掉电或真实的 Windows 蓝屏事件。
能证明:2026-09-18只读健康:Sunshine/Tailscale运行,worker新鲜;9月16日起本次启动周期有20条LiveKernel图形故障记录,BlockedByGpuStability,客户端会话Unknown(未验证)。9月13日每日巡检与9月14日服务观察仍各保留原日期。
不能证明:旧9月4日22条和9月14日状态不能替代本次启动周期证据;20条是日志记录数,不是20次独立崩溃。worker新鲜、捕获当前为VDD也不证明手机可交互或此时能安全切换。
能证明:2026-09-14只读诊断确认Tailscale 1.102.2运行、在线且无人值守;WLAN非链路本地IPv6地址数为0。最新每日巡检未指定手机peer(对端)。
不能证明:当前手机路线是 direct 还是 DERP、串流数据经过哪里、延迟和丢包均为 Unknown(未知)。巡检还提示另有用户配置的 Funnel,但未把它归因于 Sunshine。
维护入口
pwsh -NoProfile -File .\verify-path-lite.ps1只读运行态路径轻量验证:以只读方式检查本机 IPv6、服务状态、Sunshine 编码能力掩码与 Tailscale 无人值守状态,写入 runtime(运行环境) 日志。
pwsh -NoProfile -File .\repair-stream.ps1网络与服务幂等修复入口:重新绑定网卡 IPv6,清理服务环境变量残留的固定代理端口,固化 Tailscale 无人值守并拉起服务。
pwsh -NoProfile -File .\verify-path.ps1 -PhoneTailscaleIp <peer-ip>深度传输路径与对端探测:仅在显式传入手机 Tailscale IP 时,验证手机与电脑之间是走公网 IPv6 直连还是海外 DERP 中继。
pwsh -NoProfile -File .\Set-SunshineVddDisplayProfile.ps1 -Width 2880 -Height 1800 -RefreshRate 60 -ScalePercent 150 -HdrMode Hdr [-Apply]VDD 独立显示参数回读与调整:默认只读核对身份、当前值与支持模式;显式 -Apply 后的事务才先执行 CDS_TEST,再应用、回读并持久化首选项。
pwsh -NoProfile -File .\Install-SunshineCaptureFailoverTask.ps1 [-Apply]捕获守护计划任务注册与更新:默认预检;显式加上 -Apply 在 Windows Task Scheduler 注册无窗后台守护任务。
pwsh -NoProfile -File .\Set-SunshineHeadlessConfig.ps1 [-Apply]应急无头捕获模式切换:在极端情况下将 Sunshine 捕获源强行指向 VDD 并保持所有拓扑改动选项处于 disabled 状态。
E:\PCConfig\tools\Show-StreamingMaintenance.ps1只读联合维护窗口:查看串流与缓存守护,精确控制既有循环或未来触发;打开窗口不启工作循环、不改配置,关闭不等于停止任务。
快照怎样更新
2026-09-18只读健康与正式来源3f3ebed核对:worker新鲜,GPU图形故障20条,本次会话Unknown(未验证);只更新说明,未Apply、改网络、重启或串流。
