Wakapi 2.18.2 介绍与选型指南
Wakapi 是开源、可自托管的编码时间追踪服务,兼容 WakaTime 客户端生态;本文联网溯源其定位、架构、功能与社区数据,并给出与 WakaTime 官方服务、ActivityWatch 等的量化选型对比。
Wakapi 2.18.2 介绍与选型指南
目标:讲清 Wakapi 是什么、解决什么问题、与 WakaTime 官方服务及同类自托管方案的差异,帮助开发者/团队决定是否采用以及采用哪种形态。本文为认知选型篇,内容基于官方仓库与官网联网溯源(查询日期 2026-10-25),不含本地实测数据。
一、环境信息
- 信息来源:GitHub 官方仓库
muety/wakapi(README、Releases)、WakaTime 官网定价页、shields.io 徽章服务 - 溯源查询日期:2026-10-25
- 溯源版本基线:Wakapi 最新稳定版 2.18.2(2026-10-14 发布,来源:GitHub Releases 页)
- 本文属性:联网溯源认知篇,部署与实测操作见本专栏安装/部署/API 各篇
二、软件概述
Wakapi 是一个自托管(self-hosted)的编码时间追踪后端服务,由德国开发者 Ferdinand Mütsch 以 MIT 许可证开源(来源:仓库 README License 节,shields.io license 徽章显示 MIT,查询日期 2026-10-25)。它接收编辑器/IDE 插件上报的「心跳(heartbeat)」数据,聚合出按项目、编程语言、编辑器、操作系统、机器等维度拆分的编码时间统计,并提供仪表盘、排行榜、徽章(badge)、周报邮件与 REST API。
Wakapi 最大的特点是与 WakaTime 生态兼容:它复用 WakaTime 官方开源的编辑器插件体系(wakatime-cli 及数十种 IDE 插件),客户端只需把 ~/.wakatime.cfg 中的 api_url 指向自己的 Wakapi 实例即可无缝切换。WakaTime 官方是 SaaS 付费服务,Wakapi 则是「数据主权在自己手里」的开源替代方案——作者在 FAQ 中自述,项目起点就是「不想为 WakaTime 付 $9/月」(来源:仓库 README FAQ,查询日期 2026-10-25)。
项目社区数据(shields.io 徽章,查询日期 2026-10-25):
- GitHub Stars:约 4.5k
- 最近提交:查询时显示「yesterday」,处于活跃维护状态
- 许可证:MIT
- 官方托管实例:
wakapi.dev(官方运营的免费云服务,可直接注册使用)
三、核心架构
Wakapi 的技术形态非常克制,是一个典型的「单二进制 + 关系库」单体应用:
| 层次 | 组成 | 说明 |
|---|---|---|
| 语言与运行时 | Go | 编译为单个静态二进制,无运行时依赖,资源占用低 |
| Web/HTTP 层 | 内置 HTTP 服务器 | 默认监听 127.0.0.1:3000,支持 IPv4/IPv6/UNIX Socket,可挂反向代理子路径(base_path) |
| 数据模型 | heartbeat → summary | 客户端每次按键/保存产生一条心跳;服务端定时任务聚合为 summary 供仪表盘查询 |
| 存储 | SQLite(默认)/ MySQL / MariaDB / Postgres | 基于 GORM ORM,SQLite 零依赖起步,生产推荐 MySQL(官方说明"测试最充分") |
| 后台任务 | 内置 job queue | 聚合、排行榜生成、数据清理、数据库 vacuum、周报邮件等定时任务(cron 表达式可配) |
| API 兼容层 | /api/compat/wakatime/v1 | 兼容 WakaTime API 协议,客户端无感知切换 |
| 可观测 | Prometheus /api/metrics(默认关闭)、Sentry 集成 | 需显式开启 |
💡 技术拓展:「心跳驱动的活动时间统计」不止 Wakapi/WakaTime 一种实现思路。常见方案对比——
方案 原理 代表 心跳上报 编辑器插件定期上报「正在编辑某文件」事件,服务端按时间间隔推断时长 WakaTime / Wakapi 本地窗口监听 在本机监听活动窗口与进程标题推断活动类型 ActivityWatch 手动打标签计时 用户显式开始/结束任务并打 tag Traggo / Toggl Wakapi 采用心跳上报,优点是精度高、可细到文件级,代价是必须依赖客户端插件生态(Wakapi 直接复用 WakaTime 插件)。
四、功能特性
按官方 README「Features」清单(查询日期 2026-10-25)并结合 Releases 记录归纳:
- 完全免费且开源(MIT),数据完全自有
- 统计维度:项目 / 语言 / 编辑器 / 操作系统 / 机器(hostname)多维统计与图表仪表盘
- 徽章(Badges):可嵌入 README 的编码时长徽章(如
wakapi.dev给自身项目打的徽章) - 每周邮件报告(需配置 SMTP)
- REST API:自有 API + WakaTime 兼容 API,官方提供 Swagger 文档(
wakapi.dev/swagger-ui) - 与 WakaTime 并行:支持把心跳同时转发到 WakaTime 官方(relay / 客户端多目标配置)
- Prometheus 指标导出(
security.expose_metrics) - 数据导入:支持从 WakaTime 官方或其他 Wakapi 实例导入历史数据
- 认证:本地账号、OIDC 单点登录、WebAuthn(默认禁用)、反向代理可信头认证
- 多数据库:SQLite / MySQL / MariaDB / Postgres
- 订阅计费(可选):内置 Stripe 订阅能力,供搭建成付费托管服务使用(默认关闭)
版本节奏(来源:GitHub Releases 页,查询日期 2026-10-25):2.17.x → 2.18.x 一年内多个小版本持续迭代;近期版本包含 AI 编程助手工时统计增强(如 2.18.0 修复 AI agent thinking time 重复计数)、性能修复(2.18.1 修复 SQLite 下活动图慢查询)、以及 2.18.2 为 heartbeats 表新增 idx_user_project_time 索引优化大表查询(大实例升级前建议手工预建索引)。
五、快速开始(最小可用示例)
官方给出四种使用方式(来源:README「How to use」,查询日期 2026-10-25):
- 官方托管:直接注册
wakapi.dev,零运维成本; - 单二进制快跑:
curl -L https://wakapi.dev/get | bash; - Docker 单容器:官方镜像
ghcr.io/muety/wakapi,一条命令挂载数据卷即可; - 源码编译:
go install github.com/muety/wakapi@latest。
无论哪种形态,服务端就绪后的客户端接入是统一的两步:
# ~/.wakatime.cfg(客户端配置文件)
[settings]
api_url = http://你的服务器:3000/api
api_key = <Web 界面注册账号后获取的 API Key>
IDE 侧安装对应的 WakaTime 插件(VS Code / JetBrains / Vim 等均支持)即可开始上报。部署细节与实测命令见本专栏《Ubuntu 22.04 安装 Wakapi 2.18.2 指南》与《Wakapi 2.18.2 Docker Compose 部署指南》。
六、适用场景与限制
适用场景:
- 个人开发者想要 WakaTime 级体验但不愿付费/不想把代码活动数据交给第三方 SaaS;
- 小团队内部统一统计编码投入(内置排行榜、多用户);
- 隐私合规要求严格、数据必须留在内网的组织;
- 需要把编码数据接入自有 BI / Prometheus 监控体系的技术团队。
已知限制(来源:README 与 Releases 注记):
- 与 WakaTime 的兼容是「部分兼容(partially compatible)」,WakaTime 官方近期力推的 AI 用量/花费分析等高级面板在 Wakapi 侧为简化实现或没有;
- 官方镜像自 2.17.2 起切换到 distroless + nonroot(UID 65532),本地目录挂载需注意属主;
- 2.18.2 的数据库索引迁移在大数据量实例上可能耗时数小时(官方给出预建索引的规避 SQL);
- 默认配置未启用 TLS,生产使用官方建议置于 Caddy/Nginx 反向代理之后;
- 无内置集群/HA 能力,属单实例应用(数据库可用外部高可用库)。
七、同类选型对比
下表为量化对比(Stars 与价格来源:shields.io 徽章与各官网定价页,查询日期 2026-10-25):
| 维度 | Wakapi 2.18.2 | WakaTime 官方服务 | ActivityWatch | Traggo |
|---|---|---|---|---|
| 定位 | 自托管 WakaTime 替代后端 | SaaS 编码统计服务 | 本地优先的活动追踪 | 手动标签式工时记录 |
| 开源/许可 | 是,MIT | 服务端闭源(客户端开源) | 是,MPL-2.0 | 是,AGPL-3.0 |
| GitHub Stars | ≈4.5k(muety/wakapi) | —(客户端 wakatime-cli ≈464) | ≈19k | ≈1.6k |
| 成本 | 自托管免费 | Free $0(仅 1 周历史)/ Basic $9/月 / Premium $14/月 / Team $21/人·月 | 免费 | 免费 |
| 数据主权 | 自有服务器 | 官方云(可导出) | 完全本地 | 自有服务器 |
| 统计方式 | 心跳上报(文件级) | 心跳上报(文件级) | 窗口监听(应用级) | 手动开始/结束 |
| 客户端生态 | 复用 WakaTime 全部 IDE 插件 | 官方插件最全 | 自有 watcher,编辑器插件较少 | 无编辑器插件 |
| 自动统计编码时长 | ✅ | ✅ | ⚠️ 间接(需配 watcher) | ❌ 手动 |
| 部署复杂度 | 单二进制/单容器,极低 | 无需部署 | 桌面应用 | 单容器,低 |
| 多用户/团队 | ✅ 内置多用户+排行榜 | ✅(付费档位) | ❌ 偏单机 | ✅ |
选型建议:
- 要「免费 + 数据自有 + 全 IDE 插件生态 + 精确到文件的编码时长」→ Wakapi;
- 不愿运维任何服务端、接受付费换省心与 AI 用量分析 → WakaTime 官方 Premium;
- 更关心「整天电脑都干了什么」(不限于编码)且偏好纯本地 → ActivityWatch;
- 只需要按任务手动记工时、不需要编辑器集成 → Traggo。
八、参考链接
- GitHub 仓库(README/Releases/License,查询日期 2026-10-25):https://github.com/muety/wakapi
- Wakapi 官方托管实例与文档:https://wakapi.dev/
- Swagger API 文档:https://wakapi.dev/swagger-ui
- WakaTime 定价页(查询日期 2026-10-25):https://wakatime.com/pricing
- WakaTime 插件体系:https://wakatime.com/plugins
- 社区数据徽章:https://img.shields.io/github/stars/muety/wakapi