这个项目能做什么
## 这是什么
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` 文件待补充。
评论
0 评分人数达到10人后显示
登录后参与讨论。