Skip to content

About

HotspotService(移动热点守护助手)是一个面向 ClassIsland 的 Windows 移动热点守护插件。它把“系统热点应该保持开启还是关闭”抽象成一个可持续维护的守护目标,并在后台定时检查当前系统状态,必要时自动把热点拉回目标状态。

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

HotspotService

HotspotService 图标

HotspotService(移动热点守护助手)是一个面向 ClassIsland 的 Windows 移动热点守护插件。它把“系统热点应该保持开启还是关闭”抽象成一个可持续维护的守护目标,并在后台定时检查当前系统状态,必要时自动把热点拉回目标状态。

本项目完全由 AI 开发,所有的代码、测试、打包、宣发物料均由 AI 完成。不过现在这句话是真人写的,唯一能保证的是功能正常。

本仓库说明

本仓库是 Alan-CRL/HotspotService 的 fork,由 Starsky16 维护。原作者署名保留在插件清单的 author 字段与设置页的版权声明中,本 fork 的修改在 GPL-3.0 条款下进行。

fork 按 .NET 版本拆成两条独立的构建线,默认分支为 main_net8:

构建线 开发分支 发布分支 目标框架 插件 SDK manifest apiVersion
net8 dev_net8 main_net8 net8.0-windows10.0.17763.0 2.0.0.2 2.0.0.0
net10 dev_net10 main_net10 net10.0-windows10.0.17763.0 2.1.1.1 2.2.0.0

两条线功能一致,代码差异仅在目标框架、插件 SDK 版本与清单 apiVersion。下载 Release 时请按自己的 ClassIsland 版本选择对应构建线。

项目背景

在教室、一体机或值班设备场景里,词典笔、平板和其他临时联网设备往往依赖 Windows 的“移动热点”功能。实际使用中最常见的问题并不是不会开热点,而是:

  • 每次开机都要手动打开一次热点;
  • 热点被意外关闭后,往往不能第一时间发现;
  • 想把热点开关纳入 ClassIsland 自动化与规则集时,缺少统一入口。

HotspotService 当前版本聚焦于“热点开/关守护”与连接设备数量统计,帮助减少重复人工操作,并可在热点异常(满员、连续同步失败、长时间卡在切换中)时按策略自动重启热点。插件还可以实时显示热点网卡与外网网卡的上下行速率,并支持通过全局快捷键一键重启热点。异常连接清理(主动断开指定设备)等能力目前仍属于后续扩展方向。

基本概念

  • 守护开启/关闭:守护开启后,后台服务每 10 秒检查一次系统热点状态;守护关闭时,只记录状态,不主动干预系统热点。
  • 守护目标:插件期望系统热点维持的目标状态,可选为“开启”或“关闭”。
  • 自动重启策略:当守护开启且启用自动重启时,若连接设备数达到阈值、连续同步失败达到阈值或热点长时间卡在“切换中”,插件会自动重启热点以恢复可用状态;两次重启之间有冷却时间,若连续 3 次自动重启后触发条件仍成立,将暂停自动重启 30 分钟,避免无限循环。
  • 网速检测:按设定的间隔(默认 2 秒,可调 1–10 秒)读取网卡累计流量并换算成瞬时速率。热点网卡优先按 192.168.137.x 地址识别,其次按 Wi-Fi Direct 虚拟适配器识别;外网网卡按“已连接且具有默认网关、且不承载热点”识别。速率单位是字节每秒(B/s、KB/s、MB/s),只读采样、不修改任何系统设置。
  • 快捷键重启热点:通过 KeyboardCapture 插件订阅全局按键(默认 Ctrl+Alt+F9),命中后重启热点。该插件是可选依赖——没安装时快捷键不可用,守护、展示与网速等其他功能照常工作。KeyboardCapture 使用非独占钩子,不会拦截系统热键或影响其他程序。

关于网速读数的说明:热点网速统计的是热点网卡上的流量,外网网速统计的是外网网卡上的流量。当两者实际是同一张物理网卡时(例如热点直接由 Wi-Fi 网卡承载,且该网卡同时用于上网),同一份流量会同时出现在两个读数里,请不要把两个数字相加。另外,热点网卡通常要等热点开启后才会出现,因此刚开机时“热点网卡”一栏会提示未找到网卡。

当前功能

  • 支持 ClassIsland 启动后按配置自动开启守护
  • 支持设置启动时默认守护目标
  • 支持在设置页手动开启或关闭守护
  • 支持在设置页手动修改当前守护目标,并立即应用
  • 支持显示守护状态、守护目标、系统热点状态、最近检查时间和最近错误
  • 支持通过自动化动作开启守护、关闭守护、修改守护目标
  • 支持在规则集中判断守护状态、守护目标和系统热点状态
  • 当系统热点状态与守护目标不一致时,自动执行同步并在后续轮询中重试
  • 支持统计并记录当前连接设备数量与设备上限
  • 支持配置自动重启策略:连接设备数达到阈值、连续同步失败达到阈值或热点卡在“切换中”超过时限时自动重启,并带重启冷却
  • 支持以编程方式一键重启热点(设置页已提供“立即重启热点”入口)
  • 支持在主界面添加“移动热点守护”展示组件:以绿/红实心圆点表示守护开关状态,并显示连接设备数量(热点关闭时显示 Off、设备不支持热点时显示 None);圆点与文字可分别在组件设置中独立开关
  • 支持配置连接数刷新间隔(默认 10 秒,范围 5–3600 秒)
  • 支持网速检测:在设置页开关采样、调整采样间隔(1–10 秒),并实时显示热点网卡与外网网卡的网卡名与上下行速率
  • 支持在展示组件中独立开关“热点网速”与“外网(WAN)网速”(默认只显示热点网速)
  • 支持配置快捷键一键重启热点(默认 Ctrl+Alt+F9,可改触发键、修饰键与冷却时间),依赖 KeyboardCapture 插件(可选依赖,未安装时自动降级)

功能实现情况

  • 基础守护服务
  • 手动修改守护目标
  • 手动启停守护服务
  • 自动化中使用插件功能(启停守护、修改守护目标)
  • 规则集中使用插件功能(判断守护状态、判断守护目标、判断系统热点状态)
  • 设置页展示当前守护状态与最近检查结果
  • 连接设备数量统计
  • 读取连接设备列表
  • 基于连接数量或异常状态的自动重启热点策略
  • 主界面展示组件
  • 设置页一键重启热点入口
  • 连接数刷新间隔可配置
  • 网速检测(热点网卡 / 外网网卡吞吐采样与展示)
  • 通过 KeyboardCapture 快捷键重启热点(可选依赖)
  • 连接设备清理策略(主动断开指定设备)

项目结构

  • HotspotService/:插件主体、设置页、自动化扩展与资源文件
  • HotspotService.Tests/:核心协调逻辑与设置存储测试
  • HotspotService.BehaviorTests/:面向行为的补充测试

开发与验证

dotnet build .\HotspotService.slnx
dotnet run --project .\HotspotService.Tests\HotspotService.Tests.csproj
dotnet run --project .\HotspotService.BehaviorTests\HotspotService.BehaviorTests.csproj

在 Linux/macOS 上交叉构建或运行测试时,需要为 dotnet 命令追加 -p:EnableWindowsTargeting=true。

依赖说明:插件引用 NuGet 包 Starsky16.KeyboardCapture.Abstractions(KeyboardCapture 插件的共享接口包)实现快捷键功能,正常 dotnet restore 即从 nuget.org 还原。仅在内网 / 离线环境下才需要临时在仓库根目录放一个 nuget.config 指向本地包目录(该文件不进入版本库)。

许可证

本项目基于 GPL-3.0 许可证发布,详见 LICENSE。

About

HotspotService(移动热点守护助手)是一个面向 ClassIsland 的 Windows 移动热点守护插件。它把“系统热点应该保持开启还是关闭”抽象成一个可持续维护的守护目标,并在后台定时检查当前系统状态,必要时自动把热点拉回目标状态。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages