ActivityWatch 替代方案(Mac):赏月有什么不同

如果你想要一个能自己扩展、能读原始事件、Linux 和 Windows 也能用的开源工具,ActivityWatch 更合适;如果你只用 Mac,想要一个不用跑服务、直接把一天整理成日报的菜单栏应用,赏月 0.6.0 就是为这个做的。两者记录的东西差不多,都是前台应用和你有没有在操作,区别主要在后面的整理由谁来做。
ActivityWatch 是什么,强在哪
ActivityWatch 是免费的开源记录工具,采用 MPL-2.0 许可证,有 Windows、macOS、Linux 和 Android 版本。官方文档说你默认是自己数据的唯一所有者,README 写的是把数据存在用户本机。它由几个小部件拼成,watcher 负责记录事件,server 负责存储,网页界面负责展示。
默认的 watcher 有两个,aw-watcher-afk 看鼠标键盘判断你在不在电脑前,aw-watcher-window 记录活动窗口、窗口标题,以及 Chrome 系浏览器和 Safari 里的网址;另有浏览器扩展 aw-watcher-web,在 Chrome、Edge 和 Firefox 里记录当前标签页。项目还提供面向 bucket、event 和 heartbeat 的 REST API、一套查询语言,以及网页界面里的 JSON 导出。
这种结构才是它真正的长处,想给编辑器写自己的 watcher、写自定义查询、直接读原始事件,ActivityWatch 就是为此设计的,赏月不是,0.6.0 没有插件系统,也没有服务端接口,只有命令行和 CSV 导出。
在 Mac 上安装 ActivityWatch
入门文档的做法是下载 .dmg,拖进「应用程序」。v0.14 起分 Apple 芯片和 Intel 两个构建,要求 macOS 12 或更新。aw-qt 会在托盘放一个图标,同时启动 server 和默认 watcher,之后用浏览器打开 http://localhost:5600,几分钟内活动视图里就有数据了。
想记窗口标题,aw-watcher-window 的 README 说进程需要访问 macOS 的辅助功能接口,没有授权时只能记到当前应用,记不到标题。README 讲的是从终端运行时把「终端」加进这个列表,用打包好的应用时,第一次启动后到系统设置的隐私与安全性里看辅助功能那一栏,确认要批准的是哪一项。
有两处细节最好事先知道。afk watcher 默认把三分钟没有输入当作离开;它的隐私过滤可以通过 watcher 配置目录下的 toml 文件按标题或应用名丢弃、遮蔽事件,这个目录在 Mac 上是 ~/Library/Application Support/activitywatch/aw-watcher-window/,不是 README 里写的 Linux 路径 ~/.config/activitywatch/aw-watcher-window/,但在 macOS 上默认的 swift 策略应用不了这些规则,配了过滤规则时 watcher 在 swift 策略下会直接拒绝启动,免得标题漏出去,README 建议改用 jxa 或 applescript 策略。aw-qt 的开机自启默认是关的。
赏月有什么不同
赏月是 macOS 15 及以上的菜单栏应用,每 3 秒采样一次前台窗口,连续 180 秒没有输入就算空闲,合并后的会话存在 ~/Library/Application Support/Hina/hina.sqlite 这个 SQLite 文件里。它只申请辅助功能一项权限,不截屏,也不要屏幕录制权限。窗口标题和网页路径默认不读,需要在隐私设置里打开「窗口标题」,浏览器网址存库前就只保留协议、域名和路径。
输入只记次数,也就是按键、点击和滚动各多少次,不记你打了什么。在会话之上,赏月做出日览、时间线、周览、月览几个视图和一份日报。日报可以读你选定的本机 git 仓库,也可以读 AI 会话历史和终端历史,但这两项要在设置里各自手动打开,新安装在你选目录之前不会扫描任何仓库。
遇到分不清的长空档,赏月会在你回来时问一次。屏幕 10 分钟到 2 小时没动,会弹一张小卡,让你选「开会」「阅读或思考」「看视频」或者「离开了」,你的回答会改写那一段的分类,锁屏和睡眠不问。ActivityWatch 的 afk watcher 会把 3 分钟以上没有输入的时间标成 AFK,也就是离开键盘,默认的几个 watcher 不会回头问你那段在做什么。
赏月没有本地网页服务。它只在三处联网,而且都是你点了才发生:在浏览器里打开购买页,激活购买的授权码时发一次请求,以及「检查更新」读取 hina.day 上的一个静态版本文件,三处都不带任何活动数据。
怎么选
如果你还在用 Linux 或 Windows,想要 Android 端记录,想直接对原始事件写脚本,或者希望整套东西都是可审计、可修改的开源代码,选 ActivityWatch。浏览器里的本地面板和一点自己动手的组装,对你来说是优点而不是负担的话,也选它。
如果你只用 Mac,一天结束时最想要的是回答「做了什么、做出了什么」,也就是按项目的时间、专注块、本机提交,以及你允许时当时哪个仓库开着哪个 agent 会话,而且不想一直开着一个服务,就选赏月。赏月是带试用期的付费应用,具体条款以 hina.day 当前页面为准,0.6.0 也只有 Mac 版。
两者都不能证明你有没有效率,记录的都是前台应用和操作,是对你做了什么的一个代理。想进一步了解这条边界,可以看站内关于私密活动追踪和不截屏记录时间的两篇文章。
迁移和核对
赏月不导入其他工具的历史,「时间线」从它开始记录那天算起,所以换工具最好当作重新开始。一个实际的办法是两个同时跑一周,两边都是三分钟没有输入就算离开,而且都从最后一次按键或点击往回算,所以总活跃时间应该很接近,出现大的空缺,多半是 afk 的超时改过,或者某项权限一直没授权,再不然就是其中一个那段时间被暂停或者没在运行。
哪边缺窗口标题,先查辅助功能权限。赏月里权限没给时提示是「在系统设置里允许辅助功能,赏月就能看到窗口标题」,在 macOS 27 上这一项叫「设备控制和数据访问」。如果某天完全空白,先确认应用在运行、没有被暂停,再去看别的。