Task Keeper 3.112 介绍与选型指南

Task Keeper(PiGa)介绍与选型:键盘驱动的自托管树状任务列表编辑器,含与 Vikunja/Kanboard/Wekan/Tasks.md 的量化对比。

Task KeeperTask Keeper任务管理自托管2026/10/25

Task Keeper 3.112 介绍与选型指南

目标:讲清 Task Keeper(上游项目名 PiGa)是什么、适合谁、与主流自托管任务管理工具的量化差异,帮助读者在 5 分钟内完成技术选型。本文数据全部来自官方仓库、Docker Hub 与 awesome-selfhosted 公开信息(查询日期 2026-10-25),不含本地实测。

一、环境信息

  • 文档类型:A1 介绍与选型(认知篇,仅联网溯源,未做本地部署实测)
  • 数据查询日期:2026-10-25
  • 主要信息源:
    • GitHub 仓库 https://github.com/nymanjens/piga(README、Releases、conf/routes 源码)
    • GitHub Releases 页面(最新版本 v3.112,发布于 2026-10-19)
    • Docker Hub 镜像仓库 https://hub.docker.com/r/nymanjens/piga(latest/v3.112 镜像更新于 2026-10-19)
    • awesome-selfhosted「Task Management & To-do Lists」分类页
    • shields.io 徽章接口(星数与版本号取证)

二、软件概述

Task Keeper 在 awesome-selfhosted 清单中的官方描述是「List editor for power users, backed by a self-hosted server」(面向高级用户的列表编辑器,由自托管服务端支撑)。它对应的开源仓库是 nymanjens/piga——项目早期代号 PiGa,进入 awesome-selfhosted 清单时使用 Task Keeper 作为对外名称,两者指同一个产品。

一句话定位:一个以键盘快捷键为核心交互、以树状缩进列表为数据模型的自托管 Web 任务/清单编辑器。

💡 技术拓展:「自托管任务管理」这个类目下的产品形态差异很大——

形态代表产品数据模型交互重心
看板(Kanban)Kanboard、Wekan、Tasks.md卡片 × 泳道列鼠标拖拽、状态流转
树状列表编辑器Task Keeper(PiGa)可无限缩进的任务树键盘快捷键批量操作
多视图任务系统Vikunja任务 + 多视图(列表/看板/甘特/表格)全家桶式管理
纯命令行Taskwarrior本地任务数据库终端 CLI

Task Keeper 属于「树状列表编辑器」形态,目标用户是偏好键盘流、需要把任务组织成多层大纲的「高级用户」(power users),而不是需要看板拖拽协作的团队。本文介绍的即该形态。

2.1 基本信息速览

项目内容(来源:GitHub 仓库页,查询日期 2026-10-25)
上游仓库https://github.com/nymanjens/piga
对外名称Task Keeper(awesome-selfhosted 清单名)/ PiGa(仓库名)
最新稳定版v3.112(2026-10-19 发布,来源:GitHub Releases 页面)
开源协议Apache-2.0
主要语言Scala(JVM 服务端)+ Scala.js(编译为 JavaScript 的浏览器前端)
服务端框架Play Framework 2.8(Akka HTTP)
数据库MariaDB / MySQL(JDBC,亦可配置 H2/SQLite,官方推荐 MariaDB)
星数★113(shields.io 徽章实测值,社区规模较小)
维护状态活跃(2026 年内持续发版:v3.91 → v3.112 共 10+ 个版本)
官方部署形态Release tar.gz 二进制包(JDK 11 直跑)、Docker 镜像 + docker-compose.yml

三、核心架构

Task Keeper 是一个典型的「服务端渲染 API + 重前端 SPA」架构,其技术栈在自托管工具中相当独特——前后端共用 Scala 语言:

浏览器(Scala.js 编译的 React 前端)
    │  /scalajsapi/*(内部 API,Scala.js 自动路由)
    │  /websocket/hydropush/:updateToken/(服务端推送,实时同步)
    ▼
Play Framework 2.8 服务端(JVM,Akka HTTP)
    │  Slick 3.3 + HikariCP(连接池)
    ▼
MariaDB / MySQL(5 张核心表)

核心组件拆解(依据:仓库 conf/routes 路由表与 release 包 lib/ 依赖清单,查询日期 2026-10-25):

  1. Scala.js 前端:整个编辑器界面由 Scala 编写、编译成 JavaScript 在浏览器执行,因此「任务编辑、快捷键处理、本地缓存」都在客户端完成,离线也能编辑,恢复联网后通过内部 API 同步。
  2. hydro 框架:作者自研的 Scala 全栈框架(代码位于仓库 hydro/ 目录),提供实体同步、WebSocket 推送、实体修改日志(ENTITY_MODIFICATION_ENTITY 表)等基础设施。所有数据变更以「实体修改(EntityModification)」为单位持久化,天然支持多端同步与审计。
  3. Slick + HikariCP 数据访问层:服务端通过 Slick 3.3 的 slick.jdbc.MySQLProfile 访问 MariaDB/MySQL,连接池为 HikariCP。
  4. 数据库模型(5 张表,来源:/externalapi/dbschema/ 接口定义):
    • USERS:用户表(loginName / passwordHash / isAdmin)
    • DOCUMENT_ENTITIES:文档(即「清单/列表」)
    • DOCUMENT_PERMISSION_AND_PLACEMENTS:文档授权与排序
    • TASK_ENTITIES:任务条目(含缩进层级、折叠、完成态、标签、延迟日期)
    • ENTITY_MODIFICATION_ENTITY:实体修改流水(同步与清理依据)
  5. External API:/externalapi/ 前缀下一组面向脚本/定时任务的 HTTP 接口(健康检查、任务插入、任务导出 JSON、延迟任务处理等),以应用密钥(play.http.secret.key)鉴权。

四、功能特性

依据官方 README(查询日期 2026-10-25)归纳:

  • 文档编辑(树状列表)
    • 任务可无限缩进成树;tab / shift+tab 调整层级;ctrl+加号/减号 展开/折叠整棵子树;
    • 任务支持 标签(#tag 形式,alt+shift+T 编辑)、富文本格式(粗体/斜体/代码字体/高亮/删除线)、Markdown 导出(alt+shift+M 复制为 Markdown);
    • 「标记完成」「延迟任务队列」(alt+shift+D,配合 #delayed_tasks 标签与定时 API 调用实现到期自动回流)。
  • 多文档管理:一个实例可建多份清单文档,ctrl+P 打开「跳转到文档」对话框,shift+alt+上/下 在文档间切换;文档可授权给其他用户共享。
  • 键盘流操作体系:60+ 快捷键覆盖任务移动(alt+上/下)、复制剪切整棵子树(ctrl+shift+C/X)、大小写转换(ctrl+alt+U/L、CamelCase、snake_case、dash-case)、选择与跳转等,全程可不离键盘。
  • 多用户与权限:管理员在 Web 界面创建用户,文档按用户授权(DOCUMENT_PERMISSION_AND_PLACEMENTS 表)。
  • External API:供外部脚本插入/导出任务、处理延迟任务、清理修改日志(详见本专栏《Task Keeper 3.112 API 使用详解》)。

五、快速开始(最小可用示例)

最快的体验方式是官方 docker-compose.yml(以下为官方 README 给出的流程,查询日期 2026-10-25;完整实测步骤见本专栏 B2《Task Keeper 3.112 Docker Compose 部署指南》):

# 下载官方编排文件
wget https://raw.githubusercontent.com/nymanjens/piga/master/docker-compose.yml

# 生成应用密钥(会话 Cookie 签名用)
export APPLICATION_SECRET="$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)"

# 初始化数据库表与 admin 用户(默认密码 changeme,首次登录后请修改)
docker compose run --rm web bin/server -DdropAndCreateNewDb
docker compose run --rm web bin/server -DcreateAdminUser

# 启动服务
docker compose up -d

浏览器访问 http://<服务器IP>:9000/,用 admin 登录后新建文档即可开始编辑。裸机安装(JDK 11 + MariaDB + release tar.gz)见本专栏 B1《Ubuntu 22.04 安装 Task Keeper 3.112 指南》。

六、适用场景与限制

6.1 适合

  • 个人或小团队的 TODO 清单、会议纪要、购物/备料清单、大纲笔记:官方 README 列举的四个典型用例即 TODO list、meals and ingredients、meeting notes、things to remember。
  • 键盘重度用户:需要像 Org-mode/WorkFlowy 那样用缩进+快捷键管理深层任务树,但要求数据自托管、可多端同步。
  • 需要 脚本化写入任务 的场景:External API 可把任务插入指定文档的指定标签下(如定时收集告警、导入购物清单)。

6.2 限制(选型前必须知晓)

  • 社区规模小:★113(2026-10-25),与 Kanboard(9.9k)、Wekan(21k)差两个数量级,遇到问题基本只能读源码/提 Issue,没有中文资料。
  • 无看板视图:只有树状列表一种视图,不支持泳道拖拽、甘特图、日历视图;需要看板协作的团队应选 Kanboard/Wekan/Vikunja。
  • 依赖 JVM + 关系库:相比单二进制/纯文件方案(Tasks.md 直接读写 Markdown 文件),部署与备份链条更长(JVM 11 + MariaDB)。
  • 界面仅英文(conf/application.conf 默认 play.i18n.langs = ["en"],release 包内仅附带 en/nl 语言文件),无官方中文本地化。
  • 权限模型简单:只有「管理员/普通用户 + 文档级授权」,无团队/角色/细粒度 ACL。

七、同类选型对比

以下数据均实查自各项目 GitHub 仓库与 shields.io 徽章(查询日期 2026-10-25):

维度Task Keeper (PiGa)VikunjaKanboardWekanTasks.md
GitHub 星数★113★5.8k★9.9k★21k★2.2k
最新版本(查询日)v3.112(2026-10-19)v2.7.1v1.2.56v12.64v3.3.0
技术栈Scala/Play + MariaDBGo + VuePHP + SQLite/MySQLMeteor/Node + MongoDBNode.js + 本地 Markdown 文件
数据模型树状缩进任务列表任务(多视图)看板卡片看板卡片看板卡片(文件即数据)
交互重心键盘快捷键表单+多视图拖拽+自动化拖拽协作拖拽+Markdown 直编
离线编辑/同步支持(本地缓存+实体修改日志)不支持不支持不支持文件即数据
外部 API有(任务插入/导出等)完整 REST API完整 JSON-RPC APIREST API无(直接改文件)
资源占用JVM(建议 256–512MB 堆)+ MariaDB低(Go 单二进制)低(PHP+SQLite 即可)高(Node+MongoDB)极低
协议Apache-2.0AGPL-3.0MITMITMIT

如何选型:

  • 想要 WorkFlowy 式大纲 + 键盘流 + 自托管:选 Task Keeper,它是该细分形态里少有的仍在活跃维护的选项(2026 年保持月度发版)。
  • 需要 看板拖拽 + 团队敏捷协作:选 Kanboard(轻量、自动化规则强)或 Wekan(功能全、类 Trello)。
  • 需要 列表/看板/甘特/表格多视图一体:选 Vikunja。
  • 需要 零数据库、文件即可迁移/进 Git:选 Tasks.md。
  • 想要 终端原生、不上 Web:选 Taskwarrior(本平台已有专栏)。

八、参考链接