ActivityWatch 0.14.1 介绍与选型指南

开源本地自动时间追踪工具 ActivityWatch 全解:定位、架构、功能边界与量化选型对比(对比 Kimai/Wakapi/Traggo 等),全部信息联网溯源并标注来源与查询日期(2026-10-22)。

ActivityWatchActivityWatch时间追踪2026/10/23

ActivityWatch 0.14.1 介绍与选型指南

目标:面向需要在 Linux 服务器/个人电脑上落地"本地优先、数据自持"的时间追踪方案的技术人员,系统介绍 ActivityWatch 0.14.1 的定位、架构、功能边界,并与同类工具做量化对比,帮助读者判断"该不该选、能用在哪、替代品是谁"。本文为认知篇,全部数据均来自官方渠道联网溯源(来源与查询日期随文标注),未做本地实测。

一、环境信息

本文引用的信息均于 2026-10-22 从下列官方渠道实查取得,读者复核时建议以同源最新页面为准:

截至查询日(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 UIaw-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 指南》,发布后可从专栏目录进入)。

  1. 下载:从 GitHub Releases 下载对应平台的安装包。Linux 提供 .zip、.AppImage、.deb 三种资产(v0.14.1,2026-10-22 实查发布页);
  2. 安装/启动:桌面环境(Windows/macOS/带 GUI 的 Linux)解压或安装后运行 aw-qt,托盘图标出现即完成启动,各进程由 aw-qt 托管;
  3. 验证:浏览器访问 http://localhost:5600,看到 ActivityWatch Web UI 即表示服务器正常;
  4. 装浏览器扩展(可选):按官方文档安装 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.019330(ActivityWatch/activitywatch)本机 SQLite本机桌面应用(无常驻服务器形态)
Kimai自托管工时系统手动打卡/计时AGPL-3.05.1k(kimai/kimai)MySQL/PostgreSQLPHP Web 服务 + 数据库
Wakapi自托管编码统计自动(编辑器插件上报)MIT4.5k(muety/wakapi)SQLite/Postgres/MySQL单二进制 Web 服务
Traggo自托管标签计时手动按标签计时GPL-3.01.6k(traggo/server)内嵌数据库单二进制 Web 服务
wakatime-cliWakaTime SaaS 客户端自动(编辑器插件上报)BSD-3-Clause464(wakatime/wakatime-cli)数据存 WakaTime 云端客户端 + SaaS

💡 说明:wakatime-cli 是 WakaTime 平台的开源客户端本体,WakaTime 服务端为闭源 SaaS,故其星数仅代表客户端仓库活跃度;Wakapi 是 WakaTime 协议的开源服务端复刻,可与同一批编辑器插件配合使用。

7.2 闭源/商业对照

产品形态追踪方式数据归属付费模式
RescueTime桌面客户端 + 云服务自动(应用/网站)厂商云端订阅制
Toggl Track全平台 + 云服务手动计时为主厂商云端免费 + 订阅
ManicTimeWindows 桌面软件自动(本地)本机为主个人免费/商业版

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。

八、参考链接