ActivityWatch 0.14.1 介绍与选型指南
开源本地自动时间追踪工具 ActivityWatch 全解:定位、架构、功能边界与量化选型对比(对比 Kimai/Wakapi/Traggo 等),全部信息联网溯源并标注来源与查询日期(2026-10-22)。
ActivityWatch 0.14.1 介绍与选型指南
目标:面向需要在 Linux 服务器/个人电脑上落地"本地优先、数据自持"的时间追踪方案的技术人员,系统介绍 ActivityWatch 0.14.1 的定位、架构、功能边界,并与同类工具做量化对比,帮助读者判断"该不该选、能用在哪、替代品是谁"。本文为认知篇,全部数据均来自官方渠道联网溯源(来源与查询日期随文标注),未做本地实测。
一、环境信息
本文引用的信息均于 2026-10-22 从下列官方渠道实查取得,读者复核时建议以同源最新页面为准:
- 官方网站:https://activitywatch.net/
- 官方文档站:https://docs.activitywatch.net/
- GitHub 主仓库(元仓库):https://github.com/ActivityWatch/activitywatch
- 发布页:https://github.com/ActivityWatch/activitywatch/releases
- 官方论坛:https://forum.activitywatch.net/
- 溯源工具:GitHub Releases Atom 源(releases.atom)、shields.io 徽章(星数取证)、仓库页 HTML(许可取证)
截至查询日(2026-10-22)取得的关键事实:
- 最新稳定版本:v0.14.1(GitHub Releases Atom 显示发布时间 2026-10-10)
- 开发预发布版:v0.14.2b1(2026-10-22 出现在 releases.atom,属 prerelease,不作为选型基线)
- 许可证:MPL-2.0(GitHub 仓库页侧栏 License 标识,2026-10-22 实查)
- GitHub 星数:19330(shields.io 动态徽章取自仓库 stargazers 数据,2026-10-22 实查)
💡 说明:ActivityWatch 各功能模块拆分在多个子仓库(aw-server、aw-server-rust、aw-qt、aw-watcher-window、aw-watcher-afk、aw-webui 等),
ActivityWatch/activitywatch是汇总发布"安装包全家桶"的元仓库;对比星数、看发布节奏时以该元仓库为准。
二、软件概述
ActivityWatch 是一款开源、跨平台、本地优先(local-first)的自动时间追踪软件:它在你的电脑上记录"你把时间花在了哪"(当前活动窗口、AFK 离开状态、浏览器标签页等),把数据存在本机的 SQLite 数据库里,并提供本地 Web 界面(http://localhost:5600)做可视化统计与自定义查询。官方对其一句话定位是"Records what you do so that you can know how you've spent your time. All in a secure way where you control the data"(来源:GitHub 仓库 README,2026-10-22 查询)。
三个关键词决定了它的差异化定位:
- 自动追踪:不同于 Kimai、Toggl 这类"手动打卡/计时"工具,ActivityWatch 靠常驻的 watcher 进程自动采集活动窗口与输入状态,无需人工启停计时器;
- 数据自持:数据默认只落在本机(Linux 下为
~/.local/share/activitywatch/),不上传任何云端,官方甚至对"远程服务器部署"明确持"technically possible, not supported, and strongly discouraged"的否定态度(来源:官方文档 Remote Server 页,2026-10-22 查询); - 开放生态:MPL-2.0 许可、REST API + 自带查询语言、浏览器扩展与多语言客户端库,均可自行集成。
技术栈方面:服务器有 aw-server(Python/Flask + SQLite) 与 aw-server-rust(Rust 实现) 两个实现;桌面管理器 aw-qt 基于 PyQt6;Web UI(aw-webui)为 Vue 前端,由服务器托管(来源:官方文档与 GitHub 子仓库,2026-10-22 查询)。
三、核心架构
ActivityWatch 采用「服务器 + 采集器(watchers)+ Web UI」的松耦合多进程架构(来源:官方架构说明页 activitywatch.net/slides 与 docs.activitywatch.net,2026-10-22 查询):
| 角色 | 进程 | 职责 |
|---|---|---|
| 服务器 | aw-server 或 aw-server-rust | 统一存储所有事件数据(SQLite),提供 REST API 与查询服务,托管 Web UI |
| 采集器 | aw-watcher-window / aw-watcher-afk / aw-watcher-input 等 | 独立进程采集"当前活动窗口""键盘鼠标空闲(AFK)"等心跳事件,经 REST API 上报 |
| 浏览器扩展 | ActivityWatch Web Browser extension | 采集浏览器标签页/域名的活动事件(Chrome/Firefox) |
| 桌面管理器 | aw-qt | 系统托盘图标 + 服务的启停管理器,负责拉起/停止上述各进程 |
| Web UI | aw-webui | 由 aw-server 托管的 Vue 单页应用,做时间线、分类统计、自定义查询 |
数据模型是理解其生态的钥匙:一切数据都是 bucket(桶)+ event(事件)。每个 watcher 向服务器申请一个以自身命名的 bucket(如 aw-watcher-window_<主机名>),事件以「时间戳 + 时长 + JSON data」的形式持续写入;查询侧提供官方称之为 canonical queries 的查询语言(在 REST API 的 /api/0/query/ 端点上执行),支持按 key 合并事件、按类别分类(classpath)、求和时长等分析算子。
💡 技术拓展:「服务器 + 采集器」的解耦让 watcher 可以按需增减(例如不装 input watcher 只留 window/afk),也让跨机上报在技术上可行。但官方明确:watchers 与 server 分离到"非本机"部署属于不被支持的场景,若确有多机汇总需求,官方推荐的方向是 aw-sync(随 aw-server-rust 分发的同步模块)或 SSH 隧道(来源:官方文档 Remote Server 页、aw-server-rust 仓库,2026-10-22 查询)。
两个服务器实现的取舍(来源:两个子仓库 README 与发布说明,2026-10-22 查询):
- aw-server(Python,默认):随官方安装包分发、文档默认、功能最全;
- aw-server-rust:性能更好、内存占用更低,数据格式与 Python 版互通(首次启动会自动导入 Python 版遗留数据库),v0.14.1 起官方安装包已把 Rust 版一并打包。
四、功能特性
以下特性均据官方文档与发布说明归纳(来源:docs.activitywatch.net 各功能页、v0.14.x Release Notes,2026-10-22 查询):
- 自动窗口追踪:aw-watcher-window 记录当前获得焦点的窗口标题与应用名,支持按正则排除窗口标题;
- AFK 检测:aw-watcher-afk 依据键鼠空闲时间判定"离开"状态,窗口时长会与 AFK 时长做交集修正,得到"真正活跃使用"的统计;
- 浏览器追踪:官方浏览器扩展把标签页 URL/标题写入独立 bucket,Web UI 中按域名汇总;
- 本地 Web 仪表盘:按天/周/年的时间线视图、top 应用/域名/分类统计、窗口与 AFK 时间线对照;
- 查询语言与分析:canonical queries 支持
merge_events_by_keys、sum_durations、concat_events_by_data等算子,以及 categories 分类规则; - 数据导入/导出:bucket 级 JSON 导出(
/api/0/buckets/<id>/export),可再导入恢复; - 多实现与多平台:Windows/macOS/Linux(x86_64 与 arm64),Python/Rust 双服务器实现,Tauri 发行版在 v0.14.x 开始实验性提供(Linux 原生 Wayland 支持);
- 隐私设计:无账号体系、无遥测上传,敏感数据可开启 API Key 认证与窗口标题排除。
版本节奏方面:v0.12.x → v0.13.x(2024)→ v0.14.1(2026-10-10),节奏为年更级别的大版本 + 修复版本;releases.atom 显示 2026-10-22 出现 v0.14.2b1 预发布,社区处于活跃开发状态(查询日期 2026-10-22)。
五、快速开始(最小可用示例)
本章内容依据官方文档 Getting Started(https://docs.activitywatch.net/en/latest/getting-started.html ,2026-10-22 查询)归纳,具体安装命令与实测回显见本专栏部署篇(见《Ubuntu 22.04 安装 ActivityWatch 0.14.1 指南》,发布后可从专栏目录进入)。
- 下载:从 GitHub Releases 下载对应平台的安装包。Linux 提供
.zip、.AppImage、.deb三种资产(v0.14.1,2026-10-22 实查发布页); - 安装/启动:桌面环境(Windows/macOS/带 GUI 的 Linux)解压或安装后运行
aw-qt,托盘图标出现即完成启动,各进程由 aw-qt 托管; - 验证:浏览器访问
http://localhost:5600,看到 ActivityWatch Web UI 即表示服务器正常; - 装浏览器扩展(可选):按官方文档安装 Chrome/Firefox 扩展,使浏览器标签页数据进入统计。
⚠️ 注意:ActivityWatch 的默认形态是"装在你每天使用的电脑上"。把它装到一台无图形界面的服务器上时,窗口/AFK 采集器因依赖桌面会话无法工作(可只运行服务器部分),且官方不鼓励把服务器暴露给多台机器共用,详见下一章限制说明。
六、适用场景与限制
适用场景(结合官方文档与社区讨论归纳):
- 个人效率分析:想知道自己每天在各类应用/网站/项目上花了多少时间,且不接受数据上云;
- 自由职业者/远程工作者的工时佐证:以窗口时间线为依据回溯某天的实际工作内容(注意:它不是考勤系统);
- 习惯改善与深度工作统计:结合分类规则(categories)追踪"编码/会议/娱乐"占比的长期趋势;
- 科研数据采集:Research Edition 相关能力(窗口分类、
--research参数)使其可用于用户行为研究(来源:aw-watcher-window 仓库说明,2026-10-22 查询)。
明确限制(均为官方口径,2026-10-22 查询):
- 无官方容器/服务器部署形态:官方未发布任何 Docker 镜像或服务器发行版;官方文档明确"远程服务器不受支持且强烈不建议";
- 无移动端 App:Android/iOS 端无官方完整实现;
- 无团队协作/多人账单:它不提供账号体系与团队报表,这类需求应看 Kimai/Toggl 类工具;
- 手动计时不属于它的设计:无法替代"按项目手动打卡"的工作流;
- 数据库为 SQLite:单机文件数据库,官方不支持 MySQL/PostgreSQL 后端(来源:官方论坛官方回复,2026-10-22 查询)。
七、同类选型对比(量化)
选型对比数据均于 2026-10-22 实查取证:GitHub 星数取自 shields.io 动态徽章(读仓库 stargazers 数据),形态/许可取自各项目官方仓库与官网。关键差异与如何选型的解读紧随表后。
7.1 开源同类工具对比
| 工具 | 形态 | 追踪方式 | 许可 | GitHub 星数(2026-10-22) | 数据存储 | 部署形态 |
|---|---|---|---|---|---|---|
| ActivityWatch 0.14.1 | 本地自动时间追踪 | 自动(窗口/AFK/浏览器) | MPL-2.0 | 19330(ActivityWatch/activitywatch) | 本机 SQLite | 本机桌面应用(无常驻服务器形态) |
| Kimai | 自托管工时系统 | 手动打卡/计时 | AGPL-3.0 | 5.1k(kimai/kimai) | MySQL/PostgreSQL | PHP Web 服务 + 数据库 |
| Wakapi | 自托管编码统计 | 自动(编辑器插件上报) | MIT | 4.5k(muety/wakapi) | SQLite/Postgres/MySQL | 单二进制 Web 服务 |
| Traggo | 自托管标签计时 | 手动按标签计时 | GPL-3.0 | 1.6k(traggo/server) | 内嵌数据库 | 单二进制 Web 服务 |
| wakatime-cli | WakaTime SaaS 客户端 | 自动(编辑器插件上报) | BSD-3-Clause | 464(wakatime/wakatime-cli) | 数据存 WakaTime 云端 | 客户端 + SaaS |
💡 说明:wakatime-cli 是 WakaTime 平台的开源客户端本体,WakaTime 服务端为闭源 SaaS,故其星数仅代表客户端仓库活跃度;Wakapi 是 WakaTime 协议的开源服务端复刻,可与同一批编辑器插件配合使用。
7.2 闭源/商业对照
| 产品 | 形态 | 追踪方式 | 数据归属 | 付费模式 |
|---|---|---|---|---|
| RescueTime | 桌面客户端 + 云服务 | 自动(应用/网站) | 厂商云端 | 订阅制 |
| Toggl Track | 全平台 + 云服务 | 手动计时为主 | 厂商云端 | 免费 + 订阅 |
| ManicTime | Windows 桌面软件 | 自动(本地) | 本机为主 | 个人免费/商业版 |
7.3 选型解读
- 数据必须本地自持 + 自动追踪 → ActivityWatch 是该象限里社区最大、跨平台最全的开源选项(19330 星、MPL-2.0、三平台原生安装包);
- 团队工时/账单/考勤 → 选 Kimai(多用户、多项目、发票闭环)或 Toggl Track,ActivityWatch 没有账号与团队模型,不是竞品而是互补品;
- 只关心"写代码的时间"且想自托管 → Wakapi(配合 WakaTime 生态的编辑器插件),ActivityWatch 的编辑器集成非其主线;
- 接受云端换便利 → Toggl Track/RescueTime,免运维但数据出域;
- 想要 ActivityWatch 的数据但偏好 WakaTime 生态 → 社区存在桥接方案(如把 ActivityWatch 数据转换为 WakaTime 格式),但属第三方实践,选型时不作为官方能力依赖。
一句话结论:ActivityWatch = 「自动 + 本地 + 开源」象限的事实标准;凡需要"团队/账单/云端"中任意一项,请移步 Kimai/Toggl 阵营;凡需要"编码时长 API 兼容",评估 Wakapi。
八、参考链接
- 官方网站:https://activitywatch.net/
- 官方文档(Getting Started / API / Remote Server / FAQ):https://docs.activitywatch.net/
- GitHub 元仓库:https://github.com/ActivityWatch/activitywatch
- 发布页(版本与安装包资产):https://github.com/ActivityWatch/activitywatch/releases
- 子仓库:aw-server(https://github.com/ActivityWatch/aw-server )、aw-server-rust(https://github.com/ActivityWatch/aw-server-rust )、aw-qt(https://github.com/ActivityWatch/aw-qt )、aw-client(https://github.com/ActivityWatch/aw-client )
- 官方论坛:https://forum.activitywatch.net/
- 同类项目:Kimai(https://github.com/kimai/kimai )、Wakapi(https://github.com/muety/wakapi )、Traggo(https://github.com/traggo/server )、wakatime-cli(https://github.com/wakatime/wakatime-cli )