Patina:用 Tauri 和 SQLite 构建的本地优先 Windows 时间追踪器
一款使用 Tauri 和 React 构建的精美 Windows 桌面时间跟踪应用程序。
秒懂
- 它是什么?
- Patina 是一款面向 Windows 10/11 的桌面时间追踪应用,基于 Tauri v2 和 React 构建。它自动记录前台应用使用情况,将数据保存在本地,并处理空闲、锁屏等边界状态。本文分析其工作机制、构建方式与适用边界。
- 适合谁用?
- Patina 适合需要自动记录 Windows 桌面使用时长、且不愿把数据交给云服务的个人用户。它不适合需要团队协作、跨平台同步或账户体系的场景,这些功能在 README 中被明确排除。
- 能商用吗?
- 可以。MIT 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
- 还在维护吗?
- 在维护。仓库最近一次提交在 2 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月14日)和我们的分析,不构成法律意见。
开源项目深度解析
自动记录前台应用,而不是手动点计时器
Patina 解决的核心问题是时间追踪的惰性。手动启动和停止计时器很容易忘记,记录也就失真。Patina 的做法是直接读取 Windows 前台窗口信息,自动把活动转换成时间记录。你不需要告诉它你在做什么,它自己判断。这种方式的优点是记录完整,缺点是它只能看到前台窗口,无法知道你在窗口里具体做了什么。对于视频会议、网课这类长时间不操作键盘鼠标的场景,Patina 在 README 中声称会减少有效活动的漏记,但具体实现机制没有在文档中展开。
数据流:从 Windows 窗口到 SQLite 记录
从仓库的技术栈看,数据流是清晰的。Rust 后端通过 windows crate 获取前台应用信息,处理空闲、锁屏、睡眠等状态边界,然后把有效活动写入 SQLite 数据库。前端是 React 加 Vite 加 TypeScript,通过 @tauri-apps/plugin-sql 访问数据库。图表使用 Recharts 渲染,界面动画交给 Framer Motion。这个架构把系统级操作和界面展示分开,Rust 负责可靠性,React 负责交互。SQLite 作为本地数据库,读写都在本机完成,没有网络请求。
边界处理是可信度的关键
时间记录的价值在于可信。如果锁屏一小时也算使用时间,统计就没有意义。Patina 在 README 中花了大量篇幅描述边界处理:空闲时间不计入有效活动,锁屏、睡眠、长时间离开和异常退出后的记录边界会被单独处理。窗口标题捕获可以按应用禁用,减少敏感信息留存。这些设计说明开发者意识到,时间追踪的长期价值依赖记录是否经得起推敲。但文档没有给出具体的判定阈值,比如空闲多久算离开,这些参数是否可配置,目前无法确认。
构建与运行:依赖 Rust 和 Node.js
如果你要从源码构建,需要先安装 Rust 和 Node.js 18 以上版本。克隆仓库后执行 npm install 安装依赖,然后 npm run tauri dev 进入开发模式,npm run tauri build 生成安装包。安装包输出在 src-tauri/target/release/bundle/ 目录下。命令本身不复杂,但 Tauri 的构建过程会编译 Rust 代码,首次构建耗时较长,这是 Tauri 项目的常见情况。如果你只是使用,可以直接从 GitHub Releases 页面下载安装程序,不需要本地环境。
管理控制:应用重命名、分类与排除规则
Patina 不只是记录,还允许你管理记录。你可以重命名应用,调整分类和颜色,设置统计规则。不想要的应用可以排除在统计之外,也可以对特定应用禁用窗口标题捕获。备份和恢复是手动操作,历史记录可以清理。这些功能让用户对数据有控制权,符合本地优先的定位。但控制粒度有限,比如排除规则是否支持正则表达式,是否支持按时间段排除,README 中没有说明。
轻量工具:提醒、计时器与番茄钟
Patina 附带了一组本地工具,包括一次性提醒、应用使用时长限制提醒、秒表、倒计时和番茄钟。这些工具的状态保存在本地,不会替代自动追踪记录。这意味着你可以用番茄钟规划专注时段,同时 Patina 仍然记录实际的前台应用使用情况。工具和追踪是两条独立的线,互不干扰。对于需要严格计时工作的人来说,这个设计避免了工具状态污染统计数据的风险。
局限与替代方案:本地优先的代价
Patina 明确不面向团队协作、云同步、多平台同步和 AI 洞察。这意味着你的记录只存在于这台 Windows 机器上,换电脑需要手动备份和恢复。如果需要在浏览器中查看网页级别的活动详情,需要额外安装 Patina Web Sync 扩展,它支持 Chrome、Firefox 和 Edge。同类工具中,有的选择把数据同步到云端以换取多设备访问,有的提供跨平台支持,Patina 选择了一条更窄的路。这个取舍让数据更私密,但也让它的适用场景被限制在单机个人使用。
维护与许可:MIT 协议下的个人项目
Patina 使用 MIT 许可证,这意味着你可以自由使用、修改和分发,只要保留版权声明。最近一次发布是 2026 年 8 月的 v1.9.4,版本迭代频率看起来是稳定的。但这是一个个人项目,README 中提到赞助不会影响功能优先级或路线图。这意味着维护节奏和功能方向由开发者个人决定,没有商业公司的承诺。如果你依赖它做长期时间记录,需要意识到这个风险。备份功能的存在,某种程度上是对这种风险的一种对冲。
编辑结论
Patina 适合需要自动记录 Windows 桌面使用时长、且不愿把数据交给云服务的个人用户。它不适合需要团队协作、跨平台同步或账户体系的场景,这些功能在 README 中被明确排除。在采用前,应先确认两点:一是你的工作流是否依赖浏览器网页级别的追踪,若是则需要额外安装 Patina Web Sync 扩展;二是你是否接受 SQLite 作为唯一数据存储,备份和恢复完全由手动操作触发。如果你能接受这些边界,Patina 是一个结构清晰、可本地构建的实用工具。
社区笔记