螢幕使用行為監控系統
Screen Monitor — Agent-Server 分離架構,人工監看 + VLM 自動判讀雙方案
📋 專案概述
Screen Monitor 是一套企業級螢幕使用行為監控系統,採用 Agent-Server 分離架構,支援人工監看與VLM 視覺模型自動判讀雙方案,偵測違規行為後自動鎖屏警告。
系統由被控端(Agent)和監測端(Server)兩部分組成。被控端負責螢幕錄製、串流推送和本地鎖屏;監測端負責 WebUI 直播介面、VLM 排程分析和狀態管理。
🎯 核心功能
實時螢幕錄製
被控端持續錄製螢幕並本地歸檔,使用 mss 高性能截圖 + OpenCV 編碼
WebSocket 直播
低延遲視訊串流,支持多人同時監控,10 FPS 實時推送
VLM 自動判讀
每 5 分鐘自動截圖送 AI 模型分析,違規信心度 ≥ 0.6 自動鎖屏
人工監控
WebUI 直播介面,監控員可手動鎖屏/解鎖
智能鎖屏
全螢幕鎖屏蓋板,顯示違規原因,支持管理員密碼解鎖
系統匣告知
常駐系統匣顯示監控狀態與規則,確保告知式監控
Windows 服務化
開機自啟、防移除、故障自動重啟(Tamper Protection)
離線緩衝
網絡斷開時本地緩衝事件,重連後自動回放
🏗️ 技術架構
🖥️ 監測端 (Server)
- • FastAPI + Uvicorn(REST API + WebSocket)
- • VLM 排程器(5 分鐘輪詢)
- • LM Studio(RTX 5090)qwen2-vl-7b
- • 狀態管理器(集中式)
💻 被控端 (Agent)
- • mss + OpenCV(螢幕截圖/錄影)
- • WebSocket 自動重連
- • Tkinter 鎖屏蓋板
- • pystray 系統匣
- • pywin32 Windows 服務
🔥 技術難點與解決方案
WebSocket 自動重連與離線緩衝
網絡不穩定時,使用指數退避重連算法(1s → 2s → 4s → ... → 30s 上限)。離線期間異常事件寫入本地 JSON 緩衝,重連成功後批量回放,確保事件不丟失。
VLM 排程與置信度閾值
使用 run_in_executor 將同步 VLM 調用放入線程池,避免阻塞事件循環。設置置信度閾值(默認 0.6)控制誤報,支持管理員暫停/恢復自動判讀。
雙向鎖屏狀態同步
兩個獨立鎖源:Server 控制的違規鎖和連線狀態鎖。狀態優先級:連線鎖 > 違規鎖 > 無鎖。本地密碼解鎖後通過事件同步給 Server。
跨線程與異步協作
錄影線程、網絡異步循環、Tkinter GUI 線程間通信用 asyncio.run_coroutine_threadsafe 調度。GIL 保護全局變量跨線程安全。
Windows 服務化與防移除
使用 pywin32 安裝為 LocalSystem 服務,普通用戶無權停止/移除。設置 sc failure 故障恢復策略(60 秒後自動重啟),單例 Mutex 防多重實例。
雙端分離打包部署
PowerShell 打包腳本生成兩個部署包,各端只含所需代碼和依賴。配置從 UTF-8 範本複製,避免編碼問題,內附部署說明。
📊 項目統計
🔒 安全與合規
🚀 應用場景
企業員工監控
監控敏感行為(訪問違規網站、數據洩露等)
家長監護
監控未成年人螢幕使用,防止瀏覽不當內容
公共場所監控
圖書館、考試中心等場景自動檢測作弊
內容審核
人工審核與 AI 自動判讀結合,提高效率