# sysMon **Repository Path**: JackChenSun/sys-mon ## Basic Information - **Project Name**: sysMon - **Description**: 一个建议的查看windows电脑运行状态的软件 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-07-17 - **Last Updated**: 2026-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README --- AIGC: ContentProducer: '001191110102MAD55U9H0F10002' ContentPropagator: '001191110102MAD55U9H0F10002' Label: '1' ProduceID: 'dcb1c8ad-6d2e-4e9d-82d5-1db07a709911' PropagateID: 'dcb1c8ad-6d2e-4e9d-82d5-1db07a709911' ReservedCode1: 'd6612ced-9a4d-44cb-b5f0-cd5234861778' ReservedCode2: 'd6612ced-9a4d-44cb-b5f0-cd5234861778' --- # SysMon — Windows 系统运行状态监控 轻量级 Windows 桌面应用,实时监控 CPU、内存、硬盘、网速、显卡等核心指标,提供 4 套主题 + 3 套炫酷展示页,打包为独立 exe 零依赖运行。 --- ## 功能概览 ### 实时监控仪表盘 - **总览页**:5 张指标卡片(CPU / 内存 / 硬盘 / 网速 / 显卡)+ 实时趋势曲线 - **分项详情页**:CPU 每核占用、内存构成环形图、硬盘分区 + IO 速率、网卡多选切换、多显卡列表、进程 TOP15 ### 历史与告警 - SQLite 环形缓冲存储(默认 24 小时),支持按指标/时间范围查询回放 + CSV 导出 - 阈值告警(CPU% / 内存% / 硬盘% / 温度℃),边缘触发 + Windows 原生 toast 通知 ### 系统信息 - CPU 型号/频率/缓存、主板/BIOS、内存条规格、显卡/显示器、硬盘/网卡/声卡、电池健康度 ### 主题与展示 - 4 套主题:暗色(默认)、亮色、科幻风、可爱风 - 3 套展示页: - **科幻 HUD** — 大号环形仪表 + 频谱波形 + 扫描线动画 - **数据矩阵** — 6 张数据卡片 + 侧栏系统信息 - **光环仪表** — 三环 HALO + 详情面板 - 横屏 16:9 / 竖屏 9:16 自适应布局 - 支持多显示器全屏展示、快捷键 1/2/3 切换样式 ### 其他 - 系统托盘常驻(显示 / 隐藏 / 退出) - 背景设置:无 / 图片 / 视频(含音量控制 + 遮罩透明度) - 预览模式:浏览器直接打开 `index.html` 即可用模拟数据驱动展示页 --- ## 技术栈 | 层级 | 技术 | |------|------| | 后端 | Python 3.13 | | 窗口框架 | pywebview(系统 WebView2 / Edge 内核) | | 系统采集 | psutil + nvidia-ml-py + WMI | | 图表 | ECharts(本地打包) | | 前端 | 原生 HTML5 + CSS3 + JavaScript(零框架) | | 托盘 | pystray + Pillow | | 通知 | plyer(Windows toast) | | 打包 | PyInstaller(onedir 模式) | --- ## 项目结构 ``` sysmon/ ├── main.py # 程序入口(pywebview 窗口 + 系统托盘) ├── build.spec # PyInstaller 打包配置 ├── requirements.txt # Python 依赖 ├── core/ # Python 后端 │ ├── api.py # 前端 API 桥接层(17 个方法) │ ├── config.py # 配置读写(JSON,深合并) │ ├── collector.py # 采集调度器(聚合五大模块快照) │ ├── sysinfo.py # 系统详细信息(WMI 查询,静态缓存) │ ├── history.py # SQLite 历史存储 + CSV 导出 │ ├── alert.py # 阈值告警引擎(边缘触发) │ ├── videobg.py # 视频背景 HTTP 服务(Range 请求) │ └── metrics/ # 指标采集子模块 │ ├── cpu.py # CPU(守护线程 + 温度降级) │ ├── memory.py # 内存(含提交内存 WMI) │ ├── disk.py # 硬盘(分区 + IO 速率 + 忙碌比例) │ ├── net.py # 网速(多网卡 + TCP 连接统计) │ ├── gpu.py # 显卡(NVML + LHM 多厂商) │ └── sensors.py # 传感器温度(LHM/OHM 探测 + 2s 缓存) └── web/ # 前端资源 ├── index.html # 主页面(11 个导航页 + 3 套展示页) ├── css/style.css # 全样式(4 套主题变量 + 毛玻璃面板 + HUD 动画) ├── js/app.js # 主逻辑(轮询 + 渲染 + 路由 + 全屏) ├── js/charts.js # ECharts 封装(ResizeObserver 自适应) └── libs/echarts.min.js # ECharts 图表库 ``` --- ## 快速开始 ### 环境要求 - Windows 10 / 11 - Python 3.10+ ### 开发运行 ```bash cd sysmon pip install -r requirements.txt python main.py ``` ### 打包发布 ```bash cd sysmon pip install pyinstaller pyinstaller build.spec ``` 产物位于 `dist/SysMon/`,`SysMon.exe` 可独立运行(`_internal/` 目录需同在)。 --- ## 核心设计 ### 采集架构 - **CPU 守护线程**:独立后台线程持续采集,解决 pywebview 线程局部基线导致 `cpu_percent()` 返回 0 的问题 - **缓存 + 后台刷新**:`get_sysinfo_detail()`(30s 缓存)和 `get_processes()`(5s 缓存)在缓存期内直接返回,过期后先返回旧数据再后台刷新,首次无缓存返回 `{loading: true}` - **温度降级链**:psutil → LHM 传感器 → None(显示 "—"),绝不崩溃 ### 性能优化 慢速 WMI 查询(~10s)和进程遍历(~13s)均采用缓存 + 后台线程策略,避免阻塞 pywebview UI 线程导致应用冻结。 ### 前端轮询 `setInterval(poll, refreshMs)` 驱动,默认 1 秒刷新,60 点趋势缓冲,ECharts ResizeObserver 自适应。 --- ## 配置说明 运行时配置位于 `%APPDATA%/SysMon/config.json`,支持热更新: | 配置项 | 默认值 | 说明 | |--------|--------|------| | `refresh_ms` | 1000 | 刷新间隔(毫秒) | | `history_hours` | 24 | 历史保留时长(小时) | | `theme` | `"dark"` | 主题:dark / light / scifi / cute | | `background_type` | `"none"` | 背景:none / image / video | | `bg_opacity` | 1 | 背景遮罩不透明度 | | `showcase_style` | 0 | 展示样式:0=HUD / 1=矩阵 / 2=光环 | | `alerts.enabled` | true | 告警开关 | | `alerts.cpu` | 90 | CPU 告警阈值(%) | | `alerts.mem` | 90 | 内存告警阈值(%) | | `alerts.disk` | 90 | 硬盘告警阈值(%) | | `alerts.temp` | 85 | 温度告警阈值(℃) | --- ## 依赖清单 ``` psutil>=5.9.0 nvidia-ml-py>=11.495.0 pystray>=0.19.0 pillow>=10.0.0 pywebview>=4.4.0 plyer>=2.1.0 wmi>=1.5.1 ``` --- ## 许可证 开源项目