用途与实际影响
这项功能怎样使用
为什么需要它
托盘退出后需要恢复,但守护程序自己也可能退出。现有双层机制分别检查两类进程,不接管其他网络或应用配置。
举个实际例子
“今天先别自动重开KDE,连接还在就继续用。”打开控制中心暂停到手动恢复;这只改变下一次守护检查的拉起意图,关闭窗口不会结束既有守护。
最后我会得到什么
控制中心显示最近检查、下一次检查及暂停状态;托盘意外退出时会尝试恢复,并明确显示已恢复或启动失败。持续故障仍要按原因处理。
正常时
当前用户已登录,守护程序与原有任务运行,最近检查有效;这只证明托盘恢复链,不证明文件传输。
发现问题时
托盘刚退出而下一轮尚未执行时,控制中心显示等待;若已暂停,就按本人选择保持不自动拉起。
入口不可用或证据不足时
电脑尚未进入本人的 Windows 桌面会话时,这条守护链不会在登录前运行。
从哪里开始
日常双击“MeshClip控制中心.vbs”看心跳、下一检查、暂停和恢复;需要分层排障再运行 scripts/doctor.ps1 -Peer。
需要准备什么
- 想查看哪台电脑的守护状态
- 是否暂停自动重开及暂停多久
- 有故障时的大致发生时间
从开始到拿到结果
- 1
随登录启动
现有入口在当前会话启动一次看门狗,重复实例会退出。
- 2
控制中心看状态
打开“MeshClip控制中心.vbs”看最近心跳、下次检查和待恢复事项;可暂停一小时或直到手动恢复,现有 KDE 连接仍在。
- 3
失踪时尝试恢复
未暂停时它按周期检查托盘,缺失才尝试启动并记录是否真的出现。
- 4
问题交回
doctor 区分网络、配对、任务和进程状态;睡眠、未登录或反复崩溃不能被看门狗当作已修复。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
本轮登录启动、普通权限任务、单进程和新鲜心跳通过关键规则与设计选择
只处理当前会话托盘缺失,不改Tailscale、防火墙、配对、插件和剪贴板。
既有VBS启动器负责隐藏控制台;普通权限任务不因故障升为Highest。
同会话互斥锁避免多实例,多次触发不会建立另一套常驻系统。
已安装且未变更的启动/任务由项目管理;持续应用失败应查应用,不缩短间隔无限重启。
本模块用到的名词
- SessionId(会话标识)
- Windows 系统分配给当前登录交互式桌面的唯一会话编号,确保看门狗仅管理本桌面的托盘程序。
- 双层自愈体系
- 看门狗守护托盘程序(分钟级),计划任务守护看门狗自身(两分钟级)的层级容错架构。
专业定义
VBS 无窗后台巡检与 Task Scheduler 双层自愈
解决什么
睡眠或尚未登录时没有可用用户会话;持续应用启动失败记录StartFailed。锁屏但仍登录不等于注销。
当前怎样实现
- watch-kdeconnect.ps1 依托 Mutex 与 60 秒循环实现托盘指示器单实例守护。
- watch-kdeconnect-hidden.vbs 调用 WScript.Shell Run(command, 0, False) 彻底隐窗。
- New-MeshClipWatchdogTask 注册有限权限、PT2M 重复周期的计划任务守护者。
- scripts/control-center.ps1显示守护意图、最近心跳、下次预计检查和待恢复记录;暂停一小时、暂停直到恢复和Resume共用当前用户状态,下一轮观察生效。原有低权限Task Scheduler监督器不新增副本,已经运行的旧PowerShell进程需下次启动才加载新函数。
执行流程
- 1
用户登录后由既有快捷方式或任务隐藏启动看门狗。
- 2
获取Local\MeshClipKit-KdeConnect-Watchdog互斥锁,未获得则退出。
- 3
首次等待15秒;逐次检查当前SessionId的托盘进程。
- 4
缺失时尝试启动,5秒后记录Restarted或StartFailed;下一轮默认等60秒。
- 5
每2分钟原任务独立检查守护启动链,不唤醒睡眠电脑。
边界
- 仅在当前用户已登录的会话中运行;锁屏后会话可能仍存在,睡眠时不唤醒。
- 不提供登录前剪贴板或文件接收,也不自动修复持续应用崩溃。
失败与恢复
- 可信托盘无法启动
- 写StartFailed,doctor据进程和心跳报告失败。
- 看门狗退出
- 原有任务在后续触发时尝试恢复,调度不是120秒硬保证。
真实入口
scripts\watch-kdeconnect.ps1看门狗轮询与自愈主逻辑
scripts\watch-kdeconnect-hidden.vbs无窗口隐藏唤起包装器
tests\RepositorySafety.Tests.ps1看门狗生命周期与零越权安全测试
如何验证
- MeshClip.Common.Tests.ps1 验证计划任务有限权限契约、单实例互斥锁与 WhatIf(只读预演) 零写副作用。
- doctor.ps1 验证 KDE watchdog login startup、supervisor 与 runtime(运行环境) 三行全 PASS。
与其他模块的关系
维护登录后桌面的应用启动链;数据能否流转仍取决于网络、KDE配对和实际接收。
