SeatSentinel 是一款面向 Windows 11 的本地离席自动锁屏工具。它通过摄像头和 OpenVINO 调用 NPU 或 CPU 判断电脑前是否有人,再结合 Windows 最近键盘、鼠标活动 时间,在满足全部条件时按设置使用系统锁屏或独立密码的应用锁屏。用户可以选择“任意人脸”或“仅本人” 两种在场判断方式;持续监测时无需注册人脸,只要画面中出现至少两个人,就能用 屏幕毛玻璃临时遮住桌面内容。
摄像头画面和模型推理全部在本机完成。SeatSentinel 不上传、不拍照、不录像, 画面仅短暂保存在内存中。完整说明见 PRIVACY.md。
在“设置 → 离席锁屏方式”选择“应用锁屏(独立密码)”,设置密码并保存应用。 密码不限长度和字符,支持单个字符、中文、空格及空密码。默认仍为 Windows 系统锁屏。 已有密码时,新密码留空会保留原密码;如需清空,勾选“设为空密码”。首次启用时 两次新密码都留空,也可以保存为空密码;空密码锁定后直接按 Enter 或点击“解锁”。 设置页以固定圆点显示“已设置密码”,并区分“未设置密码”和“已设为空密码”。 解锁状态下可以直接设置新密码、清空密码或切换锁屏方式,无需填写旧密码。 “预览应用锁屏(8 秒)”仅展示界面,会自动关闭,不拦截输入,也不保存密码。
锁屏采用山水静谧背景,显示实时时钟与日期。每块屏幕按自身尺寸独立裁切背景, 主屏显示密码框,副屏显示返回主屏解锁的提示。支持横竖屏、负坐标布局和主屏切换; 布局更新期间保留原有覆盖窗口,待新窗口准备好后替换,并保留已输入的密码。
“OLED 锁屏保护”默认开启:锁屏后键鼠闲置 3 分钟,所有显示器切换为黑底、正常亮度 的移动时钟,日期和装饰线随时钟一起移动,隐藏壁纸、密码框与鼠标指针。首次键鼠操作只恢复山水界面, 随后正常输入密码解锁。各屏幕内的时钟独立移动,显示器布局变化后继续保持保护。 这只是应用内画面变化,保持唤醒和后台任务不受影响;可在设置中关闭此选项。 降低静态画面亮度并移动显示内容有助于降低 OLED 残影风险,不能保证杜绝烧屏, 请保留显示器自身的保护功能(厂商说明)。
托盘图标右键菜单中的“应用锁屏”可立即手动锁定,不必等待离席检测。 即使自动锁屏方式设为 Windows 系统锁屏或监控已暂停,也可以手动使用;首次使用需 先在设置中保存应用密码。锁定前释放摄像头,解锁后恢复操作前的监控运行或暂停状态。
应用模式沿用无人及键鼠空闲阈值、5 秒预告和取消条件。锁定后释放摄像头,覆盖所有 显示器(含任务栏),拦截常见切窗快捷键及向其他窗口的输入,只能在应用内通过密码 解除;检测到人脸、甩动鼠标和暂停监控都不会解锁。正确密码解锁后重新进入监控宽限期。 密码使用随机盐和 PBKDF2-HMAC-SHA256(600,000 次)派生后保存在本机设置文件, 不保存明文、不写入日志;连续输错 5 次后递增等待,最长每次等待 60 秒。
应用模式在监控和应用锁屏期间请求保持系统与屏幕唤醒,暂停或退出后释放请求。 软件不模拟键盘或鼠标操作;在应用模式中不会调用系统锁屏,也不改写 Windows 电源、 屏保、动态锁或组策略设置。
这是应用级遮挡,不等同于 Windows 安全锁屏。 Ctrl+Alt+Del 安全界面、任务管理器、 管理员、其他桌面、强制结束进程及同一账户修改程序或配置,都可能绕过保护。 程序崩溃后遮挡和输入过滤会失效;输入钩子也可能被系统移除。遗忘密码时可通过 Ctrl+Alt+Del 打开任务管理器结束进程并在解锁的 Windows 会话中重设本地设置; 这也是该模式安全强度有限的原因。对无人值守安全要求较高时应选择系统锁屏。
保持唤醒有助于避免普通空闲休眠和关闭屏幕,但不能阻止屏保、公司策略、动态锁、 手动睡眠、合盖、低电量或网络设备自身断线。长时间后台任务需在实际使用环境验证。 接口边界见微软的 保持唤醒说明。
开发验证:python -m unittest discover -s tests;
python tools/validate_app_lock.py --full-self-test 在不切换用户桌面的独立测试桌面验证
真实窗口、输入钩子、密码解锁、显示器覆盖和现有自检,截图写入被忽略的 dist 目录。
其中多屏布局通过注入双屏/三屏、负坐标、竖屏、主屏/DPI 变更和枚举失败进行模拟;
真实混合缩放显示器及物理热插拔仍需在对应硬件上验收。
为保护隐私,截图已遮挡真人面部。图中 30 秒为用户自定义参数,项目默认的 无人脸及键鼠空闲锁屏时间均为 60 秒。
- 可选应用锁屏:全屏覆盖全部显示器,以独立密码解锁,监控期间保持唤醒,后台任务继续运行;
- 支持“任意人脸”和“仅本人(需注册)”两种在场判断模式;
- 仅本人模式在本地完成关键点对齐和人脸特征比对,陌生人不会重置离席计时;
- 连续确认至少两个人后立即覆盖屏幕工作区毛玻璃,无需注册人脸;甩动鼠标可立即恢复,已注册时第二个人离开且只剩本人满 3 秒也会自动恢复;
- 多人脸隐私模糊可在设置页或托盘图标右键菜单中随时开关;
- 全局快捷键可随时手动切换毛玻璃,默认
Alt+B,支持在设置中自定义;空闲监测或摄像头关闭时同样可用; - 注册时只保存 Windows 用户级加密的 256 维特征模板,不保存注册照片;
- 优先使用 OpenVINO NPU,失败时自动回退 CPU;
- 可在调试控制台或设置中随时切换 NPU / CPU;
- 支持“持续监测”和“键鼠空闲后监测”两种摄像头工作模式;后者默认空闲 20 秒后才打开摄像头,连续确认在场 10 秒后释放并每 60 秒复查,恢复输入后立即释放;
- 同时检查“未确认在场时间”和“键鼠空闲时间”,降低误锁概率;
- 锁屏、暂停或摄像头异常时立即释放摄像头并清空调试画面;
- Windows 解锁后自动恢复监控;
- 支持指定摄像头名称,避免误用手机联动或虚拟摄像头;
- 视觉控制台可直接下拉切换摄像头并安全重启监控;
- 浅色隐私守护面板,分区显示实时画面、人脸检测、锁屏判断和系统信息;
- 调试控制台打开时显示独立的 Windows 任务栏图标,便于确认和快速切回窗口;
- 调试控制台提供“彻底退出程序”按钮,可直接结束监控和托盘进程;
- 达到锁屏条件后先显示 5 秒柔和提示,检测到在场或键鼠操作会立即取消;
- 连续在电脑前满 30 分钟后显示 1 秒久坐提醒,并在仍未离开的每个 30 分钟节点继续提示;
- 久坐提醒默认开启,可在“设置 → 久坐提醒”中随时关闭或重新开启;
- 鼠标悬停托盘图标时,在监控状态上方显示本轮已连续未离席时长;
- EXE、调试窗口和托盘统一使用专属图标;监控运行显示彩色图标,暂停时显示灰色图标和琥珀色状态点;
- 托盘驻留、单实例运行,重复启动时唤出已有调试窗口;
- 参数保存在本地,不设置开机自动启动。
SeatSentinel 只有在以下条件全部成立时才会锁屏:
摄像头正常
AND 模型推理正常
AND 连续 60 秒未确认有人在场
AND 最近 60 秒无键盘或鼠标输入
AND 本轮监控启动已超过 30 秒
AND 上述锁屏条件连续保持满 5 秒提示倒计时
AND 当前尚未执行锁屏
“任意人脸”模式下,任意人脸都表示有人在场;“仅本人”模式下,只有连续两帧
识别为已注册本人才能重置离席计时,陌生人和无人脸均表示本人不在。
达到条件后,屏幕顶部会显示不抢焦点的 5 秒半透明提示;倒计时期间继续检测,
只要本人/人脸重新出现或发生键鼠操作,提示即消失并取消本次锁屏。调用
LockWorkStation 前还会再次检查键鼠活动。摄像头读取失败、模型异常或 Windows
状态不明确时均不会锁屏。
- 持续监测:保持原有行为,在 Windows 解锁期间持续使用摄像头;“任意人脸”和“仅本人”模式均可启用多人脸隐私模糊。
- 键鼠空闲后监测:键盘或鼠标持续空闲达到设定时间后才打开摄像头,默认阈值为 20 秒;连续确认有人在场 10 秒后释放摄像头并进入待机,默认每 60 秒重新开启复查;一旦恢复键鼠操作,立即取消锁屏判定、清空调试画面并释放摄像头。
空闲后监测期间,OpenVINO 模型保持已加载状态,只开关摄像头设备,不反复重启 程序或重新编译模型。在场确认必须连续满足;无人脸、身份不符、摄像头读取失败或模型 推理异常都会重置这 10 秒计时。待机复查时如仍然在场,会再次确认后关闭;如未确认 在场,则保持摄像头开启并继续原有连续离席计时。键鼠状态无法读取时摄像头保持关闭且 禁止锁屏。该模式与自动多人脸 隐私模糊互斥,因为摄像头关闭期间无法可靠发现第二个人;但无需摄像头的手动毛玻璃 快捷键仍可使用。“任意人脸”和“仅本人” 两种在场判断仍然都可以使用。旧版设置缺少该选项时继续采用“持续监测”,不会在 升级后静默改变摄像头行为。
SeatSentinel 从本轮首次确认在场开始累计连续久坐时间。持续监测模式直接使用人脸 判断;键鼠空闲后监测模式在摄像头待机时以键鼠活动确认人在电脑前,进入空闲后再由 摄像头确认。连续 30 秒未确认在场、Windows 锁定、暂停监控或重启监控都会重置本轮 计时。满 30 分钟时在屏幕顶部显示与锁屏预告相同风格的不抢焦点提醒,内容会写明已 连续坐了多久;提醒总显示时间为 1 秒。若仍未离开,会在 60、90 分钟等后续节点继续 提醒。
久坐提醒开关保存在本机设置中。关闭后不会继续累计或弹出提醒;重新开启后从下一轮 监控首次确认在场时重新计时。鼠标悬停托盘图标可随时查看同一计时器的当前时长; 不足 1 分钟、等待首次确认、监控暂停或久坐提醒已关闭时会显示对应状态。
- 从托盘菜单选择“注册 / 更新本人”,或在“设置”中点击“注册本人”;
- 保证画面中只有本人一人,正对摄像头并缓慢左右转头;
- 完成 12 个本地特征样本采集后,在“设置 → 在场判断”中选择 “仅本人(需注册)”;
- 如需恢复原有行为,随时切回“任意人脸”。
更新注册会替换旧模板;“删除本人数据”会删除模板并自动切回任意人脸模式。 本功能不是活体检测或身份认证,照片、屏幕视频等可能造成误识别,因此不能用于 Windows 解锁或替代 Windows Hello。
本功能在“持续监测”模式下生效,默认开启,不要求注册人脸。系统连续两帧确认 画面中存在至少两张人脸后,会创建一个跨越整个虚拟桌面的 Windows DWM Desktop Acrylic 窗口,再按各显示器工作区裁切显示范围。双屏共用一个 DWM 合成表面,避免第二块 屏幕重复创建背景或偶发灰闪;Windows 任务栏不被覆盖,保持清晰并可直接点击。 如暂时不需要本功能,可在“设置 → 多人脸隐私模糊”取消勾选,也可右键单击 右下角 SeatSentinel 托盘图标,取消勾选“多人脸隐私模糊”;两处使用同一持久化设置。
覆盖层使用 Windows 分层、无激活和点击穿透属性,视觉强度采用实机确认的 96%。 毛玻璃显示期间,鼠标点击仍会落到下方的真实窗口,可以关闭提示或操作已知位置的 控件;下方内容变化由 DWM 实时合成并立即反映。SeatSentinel 不再截取桌面,也不再 使用 Pillow 缩放、高斯模糊、刷新线程或全屏图片上传,因此不会发生模糊画面递归 叠加,也不会因 Python 处理桌面像素拖慢点击反馈。
恢复时可以快速左右(或上下)往返甩动鼠标。手势必须在约 0.9 秒内包含至少三次 方向反转,普通的单向快速移动不会误解除。在“仅本人”模式且已经注册人脸时,系统 连续确认画面只剩本人满 3 秒也会自动解除毛玻璃;只剩一张陌生人脸不会自动解除。 在“任意人脸”模式或未注册人脸时,系统无法判断留下的是本人还是第二个人,因此 不会仅凭一张人脸自动解除,需甩动鼠标恢复。第二个人再次出现、摄像头读取失败或 模型推理异常都会重新计算自动解除时间。
按全局快捷键可直接切换同一套 DWM 毛玻璃,默认组合键为 Alt+B。该功能不依赖
摄像头或人脸检测,因此在“键鼠空闲后监测”、摄像头待机以及监控暂停时仍然可用。
再次按下快捷键或快速甩动鼠标即可解除;托盘菜单中的“手动毛玻璃”也能执行相同
操作。快捷键可在设置页点击“录制”,然后直接按下包含 Ctrl、Alt、Shift 或
Win 的组合键,例如 Alt+1、Ctrl+K 或 Ctrl+Shift+F8。为避免正常输入文字
或数字时误触发,不能把单独的字母或数字注册为全局快捷键。保存时程序会先向 Windows 注册新组合键;如组合键
已被其他程序占用,将提示错误并继续保留原快捷键。
快捷键采用 Windows RegisterHotKey,不安装全局键盘钩子,不记录按键内容。
自定义组合必须包含至少一个 Ctrl、Alt、Shift 或 Win 修饰键,以及一个
字母、数字、F1-F24 或常用功能键。
无论通过甩鼠标还是 3 秒条件恢复,画面仍必须持续少于 2 人满 60 秒,功能才会 重新布防;期间只要再次检测到 2 人及以上,60 秒会重新计时。摄像头或模型状态异常 也会中断本次重新布防计时,不会把无法确认的时间算进去。
毛玻璃是用于应急遮挡的置顶界面,不等同于 Windows 安全桌面。需要强安全边界时, 仍应使用系统锁屏。
环境要求:
- Windows 11 64 位,Build 22621 或更高版本;
- 可用摄像头;
- 首次初始化时可以连接 Python.org、PyPI(或清华镜像)和 Intel 官方模型存储;
- NPU 可选,没有 NPU 时自动使用 CPU。
下载轻量联网版后,先完整解压,再双击 安装并启动.cmd。不要直接在 ZIP
预览窗口中运行。首次启动脚本会:
- 检查 64 位 Python 3.13;
- 如果电脑没有兼容 Python,从 Python.org 下载固定版本并校验 SHA-256,随后
安装到
%LOCALAPPDATA%\SeatSentinel\runtime\Python313; - 在解压目录创建独立
.venv并安装运行依赖; - 从 Intel Open Model Zoo 下载缺少的人脸检测、关键点和特征模型;
- 校验全部六个模型文件的 SHA-256;
- 启动 SeatSentinel。
自动准备的 Python 不写入 PATH、不建立文件关联,也不创建系统快捷方式。首次运行
需要下载数百 MB 内容并占用数百 MB 磁盘;完成后再次双击只会检查变化,不会重复
安装。初始化后请勿移动整个解压目录,否则其中的 .venv 需要重新创建。
也可以右键 一键启动.ps1,选择“使用 PowerShell 运行”;检测不到 Python 时会先
询问是否自动准备。已经安装兼容的 Python 3.13 64 位时会直接复用。
开发者也可以手动安装:
py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python app.py仅运行控制台监控:
python main.py首次启动若默认摄像头不可用,SeatSentinel 会保持安全状态并禁止锁屏。请打开 调试控制台,在底部“摄像头”下拉框中选择本机摄像头;无需修改源码。 更完整的首次启动摄像头选择向导已列入 ROADMAP.md。
模型文件不包含在 Git 仓库中。一键启动.ps1 会从 Intel 官方存储地址下载
Open Model Zoo 2022.1 FP32 版本:
models/
├─ face-detection-retail-0004.xml
├─ face-detection-retail-0004.bin
├─ landmarks-regression-retail-0009.xml
├─ landmarks-regression-retail-0009.bin
├─ face-reidentification-retail-0095.xml
└─ face-reidentification-retail-0095.bin
固定 SHA-256:
| 文件 | SHA-256 |
|---|---|
face-detection-retail-0004.xml |
E1103759CF32B74AE3C2E84E9653DB5FA0D69AC246DC1E17AC3B116EFF319459 |
face-detection-retail-0004.bin |
89349CE12DD21C5263FB302CD3FFD4B73C35EA12ED98AFF863D03A2CF3A32464 |
landmarks-regression-retail-0009.xml |
8EDE1C8A94BFF1C0DDDA96F938CB872249BD0E1E33E77315498C8A8F17470AC1 |
landmarks-regression-retail-0009.bin |
71199E8D6DF4583C3BA4AD8EAB013F36995B9FEF2DD6D85D86C2CC2322803955 |
face-reidentification-retail-0095.xml |
9148EB0E6578807B073F2A90649C701566A277DF1A2086E769C2CB263CC66B86 |
face-reidentification-retail-0095.bin |
C0A0ACB57503ACB0B04A9AA3B1A6DA7165C799D0DC2A462AD6B081A5CD1BC908 |
下载文件如果大小异常或哈希不一致会被拒绝,不会交给 OpenVINO 加载。XML 和 BIN 必须来自同一模型版本及同一精度目录。
只校验本地模型而不启动程序:
.\一键启动.ps1 -VerifyModelsOnly模型输出按以下格式解析:
[image_id, label, confidence, xmin, ymin, xmax, ymax]
坐标从归一化值换算到原始摄像头画面,并限制在图像范围内。仅本人模式随后使用
五个人脸关键点进行仿射对齐,通过 face-reidentification-retail-0095 生成归一化
256 维特征,并按余弦相似度判断是否为本人。
默认选择 NPU:
- NPU 可用且模型编译成功:使用 NPU;
- NPU 不存在或编译失败:自动回退 CPU;
- 手动选择 CPU:直接使用 CPU,不再尝试 NPU。
调试控制台底部提供“切换至 CPU / 尝试切换至 NPU”按钮,也可以在“参数设置” 中选择推理设备。切换时 SeatSentinel 会安全释放摄像头和模型,然后自动恢复监控。
调试窗口复用监控线程读取的最新画面,不会重复打开摄像头。界面显示:
- 摄像头实时画面;
- 人脸检测框、检测置信度和本人相似度;
- 本人显示绿色
SELF,陌生人显示红色OTHER; - NPU / CPU 推理设备;
- 单次推理耗时和预览刷新率;
- 无人持续时间、键鼠空闲时间和宽限期;
- 当前锁屏条件与摄像头状态。
底部“摄像头”下拉框会枚举当前可用摄像头。选择新设备后,SeatSentinel 会 保存设置、清空调试帧、安全释放原摄像头并自动恢复监控。
OpenCV 的 BGR 画面在显示前转换为 RGB,并按原始比例缩放。Tkinter 主线程 只读取线程安全的最新帧缓冲区,监控线程不会直接操作界面控件。
主要默认值位于 config.py:
| 参数 | 默认值 | 含义 |
|---|---|---|
PREFERRED_CAMERA_NAME |
FHD Camera |
优先摄像头名称 |
DETECTION_INTERVAL_SECONDS |
0.5 |
检测间隔 |
FACE_CONFIDENCE_THRESHOLD |
0.6 |
人脸置信度阈值 |
PREFERRED_INFERENCE_DEVICE |
NPU |
首选推理设备 |
PRESENCE_MODE |
ANY_FACE |
任意人脸或仅本人模式 |
CAMERA_MONITORING_MODE |
CONTINUOUS |
持续监测或键鼠空闲后监测 |
CAMERA_ACTIVATION_IDLE_SECONDS |
20.0 |
空闲后监测模式下开启摄像头所需的键鼠空闲时间 |
CAMERA_PRESENCE_AUTO_STANDBY_SECONDS |
10.0 |
空闲后监测模式下连续确认在场多久后释放摄像头 |
CAMERA_PRESENCE_RECHECK_INTERVAL_SECONDS |
60.0 |
确认在场并释放摄像头后的复查间隔 |
FACE_MATCH_SIMILARITY_THRESHOLD |
0.70 |
本人余弦相似度阈值 |
IDENTITY_MATCH_CONFIRMATION_FRAMES |
2 |
本人连续确认帧数 |
SECOND_PERSON_CONFIRMATION_FRAMES |
2 |
第二人连续确认帧数 |
SECOND_PERSON_REARM_CLEAR_SECONDS |
60.0 |
画面少于 2 人后重新布防所需的连续秒数 |
SECOND_PERSON_AUTO_DISMISS_SECONDS |
3.0 |
画面只剩已注册本人后自动解除毛玻璃所需的连续秒数 |
PRIVACY_BLUR_ENABLED |
True |
是否启用多人脸隐私模糊 |
PRIVACY_BLUR_HOTKEY |
Alt+B |
手动切换毛玻璃的全局快捷键 |
PRIVACY_ACRYLIC_STRENGTH_PERCENT |
96 |
DWM Desktop Acrylic 视觉强度 |
FACE_ABSENCE_TIMEOUT_SECONDS |
60 |
未确认在场的锁屏计时 |
INPUT_IDLE_TIMEOUT_SECONDS |
60 |
键鼠空闲锁屏计时 |
STARTUP_GRACE_PERIOD_SECONDS |
30 |
启动/恢复宽限期 |
LOCK_WARNING_SECONDS |
5 |
锁屏前可取消提示时长 |
SEDENTARY_REMINDER_ENABLED |
True |
是否启用久坐提醒 |
SEDENTARY_REMINDER_INTERVAL_SECONDS |
1800 |
久坐提醒间隔(30 分钟) |
SEDENTARY_LEAVE_CONFIRMATION_SECONDS |
30 |
连续未确认在场后重置久坐计时所需秒数 |
SEDENTARY_REMINDER_DISPLAY_SECONDS |
1 |
久坐提醒显示总时长 |
FRAME_WIDTH |
640 |
摄像头画面宽度 |
FRAME_HEIGHT |
360 |
摄像头画面高度 |
源码运行时会在项目目录生成已被 Git 忽略的 settings.json。字段示例见
settings.example.json。打包版数据保存在:
%LOCALAPPDATA%\SeatSentinel\settings.json
%LOCALAPPDATA%\SeatSentinel\logs\seat-sentinel.log
%LOCALAPPDATA%\SeatSentinel\registered-face.dat
- 摄像头帧只保存在内存中;
- 不上传画面、检测框或推理结果;
- 不写入照片或视频文件;
- 仅本人模式会保存一个由当前 Windows 用户级 DPAPI 加密的特征模板;
- 第二人隐私模糊由 Windows DWM 实时合成,不截取、处理或保存桌面帧;
- 不在日志中记录摄像头画面;
- 锁屏、暂停、摄像头释放和程序退出时立即清空最新帧;
- 摄像头或推理状态不可靠时采用“禁止锁屏”的安全策略;
- SeatSentinel 不初始化 OpenVINO 转换工具的可选遥测,并在导入 OpenVINO 前
设置进程级
DO_NOT_TRACK=1与SCARF_NO_ANALYTICS=1。
正常监控代码没有联网功能。只有 一键启动.ps1 在安装依赖和下载模型时访问
网络。数据保存范围、日志内容和第三方组件边界见 PRIVACY.md。
python -m compileall -q -x '[\\/](\.venv|build|dist)[\\/]' .
python -m unittest discover -s tests -v
python app.py --self-test--self-test 不会打开摄像头。它会验证三组模型、256 维特征链路以及单窗口跨屏
DWM Acrylic 的窗口属性、双屏工作区和任务栏裁切,并枚举摄像头用于诊断;已保存的
设备名称在另一台电脑上不存在时只记录警告,不会把跨设备差异误判为程序故障。
GitHub PR 和 main 推送会自动运行 Windows / Python 3.13 的语法检查和回归测试。
模型推理、打包资源和真实锁屏窗口另用本机自检验证;云端回归测试不要求 NPU 或摄像头。
仓库只发布源码,不提交 dist 或 EXE。需要时可在本机运行:
.\构建EXE.ps1构建脚本会执行依赖检查、PyInstaller 打包、打包版 --self-test 和 ZIP 压缩,
并清理 build 中间目录。运行依赖位于 requirements.txt,仅构建时需要的
PyInstaller 位于 requirements-build.txt;构建脚本会自动准备构建工具。
生成 GitHub Releases 使用的轻量联网版:
.\构建轻量版.ps1输出为 dist\SeatSentinel-v<版本>-Light.zip 及对应 .sha256 文件。轻量版不包含
Python、.venv、OpenVINO、OpenCV 或模型,首次启动时按上述流程联网准备。所有
生成内容均已由 .gitignore 排除。
.
├─ app.py
├─ main.py
├─ detector.py
├─ face_identity.py
├─ face_registration.py
├─ dwm_privacy.py
├─ camera.py
├─ debug_frame.py
├─ activity_monitor.py
├─ session_monitor.py
├─ windows_lock.py
├─ single_instance.py
├─ user_settings.py
├─ config.py
├─ settings.example.json
├─ assets/
│ ├─ seatsentinel-icon.png
│ └─ seatsentinel-icon.ico
├─ tests/
├─ docs/
│ └─ seatsentinel-vision-console.png
├─ models/
│ └─ .gitkeep
├─ PRIVACY.md
├─ SECURITY.md
├─ THIRD_PARTY_NOTICES.md
├─ ROADMAP.md
├─ requirements.txt
├─ requirements-build.txt
├─ 安装并启动.cmd
├─ 一键启动.ps1
├─ 打开调试界面.cmd
├─ 构建轻量版.ps1
└─ 构建EXE.ps1
- 安全问题报告方式见 SECURITY.md;
- 第三方软件及模型许可见 THIRD_PARTY_NOTICES.md;
- 后续计划见 ROADMAP.md。
SeatSentinel 采用 MIT License 开源。第三方软件和模型继续适用其各自 许可证,详见 THIRD_PARTY_NOTICES.md。
ZheZZ
