ActivityWatch 是一个 开源 的时间与行为采集工具。简单来说,它会在你的电脑上默默记录“你都在做些什么”——当前活跃的程序、窗口标题、浏览器标签页、键盘鼠标是否活动(用于 AFK 判断)等。数据全部存在你本机的硬盘上,由你自己做主。
它的设计理念非常直接:尽可能多地收集有价值的“生命数据”(lifedata),但绝不牺牲隐私。想采集多少由你决定,想扩展功能也可以自己动手写 watcher。

它能解决哪些痛点?
- 隐私焦虑:数据保存在本地,第三方拿不到你的详细行为记录。
- 数据不够细:很多时间管理工具只能靠手动打卡或粗粒度统计,而 ActivityWatch 可以记录细到窗口标题、URL 级别。
- 不够灵活/不可扩展:需要特定编辑器或平台?自己写个 watcher 就能接入。
- 同步方式无法接受:它支持去中心化/本地同步(官方也在推进更灵活的同步方案),不像 RescueTime 那样把数据全部丢到云端。
- 可追溯/可导出:原始事件、时间轴、查询工具、JSON 导出,应有尽有,方便二次分析。

能追踪哪些东西(举例)
- 当前活跃应用与窗口标题(
aw-watcher-window)
- 浏览器当前标签与 URL(
aw-watcher-web)
- 键盘/鼠标活动,判断 AFK(
aw-watcher-afk)
- 编辑器插件、代码时间(社区提供的 watchers)
- 其它自定义 watcher:你可以自己写 Python/JS 客户端接入
安装与快速上手(Windows / macOS / Linux,Python 友好)
下面给一个最常见的 Windows/macOS/Linux 快速安装流程,适合想“马上试”的新手。
1. 下载与发布页
去 Releases 页面下载对应平台的发行版(也有打包好的安装包)。项目地址在文末。
2. 本地运行(最简版:官方桌面包 / GUI)
- 下载并安装官方发布的包(Windows 用 installer、macOS 用 dmg、Linux 有 AppImage 或打包版本)。
- 启动后它会自动运行
aw-server(后台服务)和一些默认 watchers(aw-watcher-afk、aw-watcher-window)。
- 打开浏览器访问本地界面(通常是
http://localhost:5600,启动时会自动打开),就能看到 Dashboard、时间线、活动浏览器等。
功能与架构亮点(表格总结)
| 项目 |
说明 |
| 数据存储 |
本地存储为主,用户完全掌控 |
| 语言 / 实现 |
aw-server 用 Python 实现(另有 Rust 版本),watchers 多为 Python/JS |
| 可扩展性 |
高,支持自定义 watcher,提供 client libs(Python/JS/Rust) |
| 平台 |
Windows / macOS / Linux / 有 Android 支持(iOS 不完全) |
| 隐私 |
开源 + 本地数据 = 高可控 |
| 可视化 |
aw-webui(浏览器界面),支持查询、时间线、导出 |
| 同步 |
去中心化 / 本地优先(官方在做更好的同步方案) |
优点
- 开源且透明,隐私更有保障。
- 高细粒度数据,适合做行为分析、时间管理复盘。
- 模块化、扩展性好,社区 watcher 丰富。
- Python 生态友好,开发/二次开发门槛低。
- 本地运行,不用担心数据被云端滥用。
缺点 / 注意点
- 初始配置对非技术用户仍有一定门槛,尤其是源码安装。
- 虽然数据本地存储很安全,但若想跨设备统一同步,需要额外配置或第三方方案。
- 连续记录会带来隐私风险(以你自己为例),需要小心哪些窗口/网站不想被记录,并做好过滤设置。
- 部分 watchers 平台支持不完整(例如 iOS 支持较差),社区维护的插件质量参差不齐。
总结
想知道自己的时间都去哪儿了?ActivityWatch 给出了一个非常干净的回答。它把采集、存储、可视化、扩展这几块都做得比较到位:你既能拿到高分辨率的行为数据,又不必把隐私交给别人。
如果你只是想开箱即用地统计时间,装个官方包就能跑起来;如果你想深度定制、做自动化分析,Python 友好的代码库和 client 库会让你很舒适。对这类开源项目感兴趣的开发者,也可以在 云栈社区 找到更多讨论和资源。
项目地址:https://github.com/ActivityWatch/activitywatch
|