这个项目能做什么

## 这是什么 Snoop 是一个开源的桌面键鼠活动记录工具,定位是「本地优先」:所有数据写入本机的一个 SQLite 文件,README 明确说明不上传网络。支持 Windows 10/11 和 macOS 10.15+,品牌归属 Feedra,吉祥物是一只猫。 它的目标是回答几个日常问题:哪些应用占用了最多时间、一天中哪些时段最活跃、键鼠活动强度曲线怎么变化、一周的作息规律与主观感受差多少。 ## 隐私边界(README 明确声明) 工具只记录键鼠的频次与强度,不记录: - 按键的具体键值序列(因此密码、聊天内容、搜索词不会被捕获) - 剪贴板、截屏、麦克风、摄像头 - 任何需要上传网络的内容 数据库中的粒度为「某个应用在某个 5 秒时段内敲了 N 次键、鼠标移动了多少像素」。键盘热力图基于每个键位被按次数的去序列化计数,按 README 说法无法重建输入内容。 ## 主要功能模块 - **概览/今日快照**:当前应用与强度分档状态卡、当日数字总览、应用使用时长排行、24 小时时段强度热力条。 - **时间线**:泳道式甘特图,每个应用一行,横轴为时间,色块按应用固定配色;支持滚轮缩放、拖拽平移、日期切换;超过 2 小时的空白区间会压缩为灰块。 - **键盘热力图**:按真实键盘布局渲染,内置 40/60/68/87/98/104 等多种配列可切换;可按应用和时段筛选;键盘、鼠标、Top 按键三块联动;染色使用分位数分档,避免高频键(如回车)压过其他键。 - **洞察/跨周报告**:一周趋势柱状图、带环比涨跌的应用排行、7×24 作息热力网格。 - **其他**:托盘常驻、开机自启(可关闭)、深浅色主题、忽略应用名单、猫吐槽开关与毒舌度调节、一键数据导出与清空。 ## 安装与运行 从 Releases 下载对应平台安装包: - Windows:`Snoop_x.y.z_x64-setup.exe`;SmartScreen 拦截时可选择「更多信息 → 仍要运行」。 - macOS Apple Silicon:`Snoop_x.y.z_aarch64.dmg`;macOS Intel:`Snoop_x.y.z_x64.dmg`。 - macOS 首次运行需在「系统设置 → 隐私与安全性 → 辅助功能」中授权,用于全局键鼠监听;Gatekeeper 首次拦截时可右键打开。 自动更新已内置:Windows 后台下载后在托盘菜单提示「重启安装」,macOS 提示打开下载页手动覆盖。 ## 实现与性能说明 技术栈为 Tauri 2 + React 19 + TypeScript + Vite(前端),Rust 作为后端,使用 rusqlite 存储、rdev/Raw Input 采集,平台相关代码以 `#[cfg]` 隔离。UI 由自建组件加语义化 CSS 变量实现深浅双轨主题。 README 称全局监听走操作系统原生通道(Windows 用 Raw Input,macOS 用底层事件通道),事件回调只在内存计数,每 5 秒批量落库,日常 CPU 占用低于 1%。Windows 版特意不使用 low-level hook,以避免与 EAC、Vanguard 等反作弊机制冲突;Snoop 不注入 DLL、不读取其他进程内存、不发送模拟输入。 数据存放位置:Windows 为 `%APPDATA%\org.feedra.snoop\`,macOS 为 `~/Library/Application Support/org.feedra.snoop/`。 ## 从源码构建 需要 Node 22+、Rust stable 及对应平台构建工具链。README 提醒 Vite 7 要求 Node 20.19+/22.12+,使用 Node 18 会出现 `crypto.hash is not a function` 导致开发服务器无法启动。 ```bash npm ci npm run tauri dev # 开发模式 npm run tauri build # 出安装包 ``` Windows 构建需要 Visual Studio Build Tools(C++ 桌面开发工作负载),macOS 构建需要 Xcode Command Line Tools。打包与发布流程见仓库内 `docs/打包与发布.md`。 ## 已知限制与许可 暂不支持 Linux,README 说明这不是当前发布目标。不支持同步到手机或云端,作者将其描述为设计选择。 品牌与版权归 Feedra(© 2026)。代码开源,但 README 要求不要将「Snoop」品牌与吉祥物用于同类产品。正式许可条款尚未落定,`LICENSE` 文件待补充。