Taskwarrior 3.5.0 配置参数详解(.taskrc 逐项实测)

逐项实测 Taskwarrior 3.5.0 的 .taskrc 配置体系:task show/config/rc 覆盖/TASKRC 重定向四套操作,覆盖数据位置、默认行为、日期格式、report.* 报表定制、context、urgency 系数、颜色主题与 sync 组,含 report 前缀误写等排障实录与可用个人配置模板。

Taskwarrior任务管理配置2026/10/24

Taskwarrior 3.5.0 配置参数详解(.taskrc 逐项实测)

目标:在 Debian 12 服务器上对 Taskwarrior 3.5.0 的配置体系做逐项实测——参数的查看(task show/task _show)、写入(task config)、命令行覆盖(rc.xxx=value)、环境变量重定向(TASKRC/TASKDATA),并对数据位置、默认行为、日期格式、报表定制、上下文、紧急度系数、颜色主题、同步等核心配置组逐项给出实测回显与解读。安装方法见《Taskwarrior 3.5.0 安装指南(发行版包与源码构建双线实测)》,命令全集见《Taskwarrior 3.5.0 常用 CLI 命令与工具详解》。

一、环境信息

项目值(实测)
操作系统Debian GNU/Linux 12 (bookworm),x86_64
Taskwarrior 版本3.5.0(官方源码构建,/usr/local/bin/task)
配置文件/root/.taskrc(首次运行自动创建的样例配置起步)
数据目录/root/.task(内含 taskchampion.sqlite3)
参照环境同机另一 Debian 12 环境安装 taskwarrior 2.6.2(用于标注版本差异)

💡 说明:.taskrc 是 Taskwarrior 唯一的用户配置文件(纯 KEY=VALUE 格式,支持 include 引入主题),任务数据本体在 ~/.task 下,二者分工不要混淆。本文所有「实测回显」均来自上述环境真实执行。

二、前置条件

  • 已按安装篇完成 Taskwarrior 3.5.0 安装并至少成功运行过一次(存在 ~/.taskrc 与 ~/.task/);尚未安装的读者先完成安装篇的任一方案;
  • 命令在交互终端执行。⚠️ 本文多处用到 task config 的写确认交互——在真实终端直接输入 yes 回车即可;若你在脚本/管道等非交互环境复现(确认提示读不到输入),可参照本文给出的 pty 方式(echo yes | script -qec "…" /dev/null),这也是下文回显中出现 script -qec 包装的原因。

三、参数查看与修改方式

3.1 查看:task show 与 task _show

task show 列出「生效中的全部配置」(含内建默认值),task _show 以 KEY=VALUE 形式输出(适合脚本解析,实测 245 行):

task show | head -18
task _show | wc -l

实测回显:

Config Variable                    Value
_forcecolor                        0
abbreviation.minimum               2
active.indicator                   *
alias.burndown                     burndown.weekly
alias.ghistory                     ghistory.monthly
alias.history                      history.monthly
alias.rm                           delete
allow.empty.filter                 1
annotation.info                    1
avoidlastcolumn                    0
bulk                               3
calendar.details                   sparse
calendar.details.report            list
calendar.holidays                  none
calendar.legend                    1
calendar.offset                    0
245

查询单个键直接跟在 task show 后:task show gc、task show weekstart(实测回显见 4.2/4.3 节)。当某键与内建默认不同时,task show 会额外提示 Some of your .taskrc variables differ from the default values.(实测见 5.4 节)。

3.2 修改:task config 的写/改/删

写入或修改一个键(终端内会请求确认):

task config default.command list

实测回显(交互确认后):

Are you sure you want to add 'default.command' with a value of 'list'? (yes/no) Config file /root/.taskrc modified.

再次赋值时提示会变为 Are you sure you want to change the value of '_forcecolor' from '1' to '0'?(实测见 5.7 节);带键不带值执行则请求删除该键:

Are you sure you want to remove 'reporter.mini.columns'? (yes/no) Config file /root/.taskrc modified.

⚠️ 首次踩坑提示:自定义报表的配置前缀是 report.<报表名>.*,不是 reporter.…。实测误用 reporter.mini.columns 时 task 照样收下并写入,但报表渲染完全不生效——这类「写入成功但键名无效」的配置不会报错,排查方法是 task show <键名> 与 task _show | grep <键名> 比对。

3.3 临时覆盖:rc.键=值 命令行参数

任何配置都可在单次命令中用 rc.键=值 覆盖,不落盘。最直观的验证是关掉 verbose 提示新增任务:

task rc.verbose=nothing add silent task test
task count

实测回显:

5

对照正常执行 task add … 会有 Created task 5. 提示行,此处被覆盖后不再输出,task count 证实任务确实创建(总数 5)。

3.4 环境变量重定向:TASKRC / TASKDATA

mkdir -p /tmp/rct
TASKRC=/tmp/rct/rc TASKDATA=/tmp/rct/data task show data.location

实测回显:

TASKRC override: /tmp/rct/rc
TASKDATA override: /tmp/rct/data
Cannot proceed without rc file.

解读:TASKRC/TASKDATA 被优先采用并回显 override 提示;但与首跑交互不同,显式指定的 TASKRC 文件不存在时 task 不会主动创建样例配置,需先提供配置文件(哪怕空文件)。这套机制是多实例/多账户隔离的基础(安装篇 8.3 节的多版本隔离即用此法)。

3.5 样例配置文件与 XDG 位置

3.5.0 首跑自动创建的样例 ~/.taskrc 实测全文:

# [Created by task 3.5.0 10/24/2026 10:03:29]
data.location=/root/.task
news.version=3.5.0

# To use the default location of the XDG directories,
# move this configuration file from ~/.taskrc to ~/.config/task/taskrc and update location config as follows:

#data.location=~/.local/share/task
#hooks.location=~/.config/task/hooks

# Color theme (uncomment one to use)
include default.theme
#include light-16.theme
#include light-256.theme
#include bubblegum-256.theme
#include dark-16.theme
#include dark-256.theme
#include dark-red-256.theme
#include dark-green-256.theme
#include dark-blue-256.theme
#include dark-violets-256.theme
#include dark-yellow-green.theme
#include dark-gray-256.theme
#include dark-gray-blue-256.theme
#include solarized-dark-256.theme
#include solarized-light-256.theme
#include no-color.theme

逐项解读:data.location 指数据目录(默认 ~/.task);news.version 记录已读版本公告;注释块给出 XDG 化的官方路径——把文件移到 ~/.config/task/taskrc 并把数据改到 ~/.local/share/task;include 行启用配色主题(默认 default.theme,取消注释即可切换,见 5.7 节)。

四、参数总览

按功能域分组(组内键名为 3.5.0 实测存在者,默认值取自 task show 实测):

功能域代表键默认值(实测)
数据位置data.location/root/.task
默认行为default.command / gc / bulk / allow.empty.filter / abbreviation.minimumnext(未设置时)/ 1 / 3 / 1 / 2
提示输出verbose / nag / active.indicatoraffected,blank,context,edit,header,footnote,label,new-id,news,project,special,sync,override,recur / 空 / *
日期显示dateformat / dateformat.report / dateformat.info / dateformat.holiday / weekstartm/d/Y(未覆盖时)/ 空(回退 dateformat)/ Y-M-D H:N:S / YMD / sunday
报表定制report.<名>.columns / .labels / .sort / .filter无(内建 list/next/long 等)
上下文context.<名>.read / .write无
紧急度urgency.*.coefficient(约 20 项)见 5.6 节实测表
颜色主题include *.theme / color / _forcecolordefault.theme / off(非 TTY)/ 0
同步purge.on-sync / sync.server.*0 / 空(未配置)
别名alias.rm / alias.history / alias.burndown / alias.ghistorydelete / history.monthly / burndown.weekly / ghistory.monthly

💡 说明:3.5.0 的 task _show 全量输出 245 行,上表只覆盖日常运维最高频的键;全量清单以本机 task show 为准(版本间默认值偶有差异,如 weekstart 在 2.6.2 参照环境中同为 sunday)。

五、核心配置组逐项实测

5.1 数据与钩子位置:data.location

task show data.location

实测回显:

data.location   /root/.task

数据目录落盘形态(实测 ls -la ~/.task/):

drwxr-xr-x 2 root root  4096 Oct 24 10:03 .
drwx------ 1 root root  4096 Oct 24 10:03 ..
-rw-r--r-- 1 root root 45056 Oct 24 10:03 taskchampion.sqlite3

解读:3.5.0 的任务数据由 TaskChampion 引擎管理,本地落为单个 SQLite 库文件 taskchampion.sqlite3(2.6.2 时代是 pending.data 等 JSON 文件族,备份迁移方式见安装篇 7.3 节)。改 data.location 等价于换库位置,改后建议 task diagnostics 核对 Data: 行已指向新目录。

5.2 默认行为组:default.command / gc / bulk / nag / verbose

default.command——裸敲 task 不带子命令时执行的默认命令(实测设为 list 后生效):

default.command=list

gc——垃圾回收开关(控制已完成任务在报表中的即时收纳),实测 task show gc:

Config Variable Value
gc              1

bulk——批量操作超过该数量时请求确认,默认 3(实测 task show 片段 bulk 3)。

nag——完成低紧急度任务时的提醒文案。实测设置并触发:

echo yes | script -qec "task config nag You have more urgent tasks." /dev/null
task 3 done

实测回显(done 的完整输出):

Completed task 3 'low priority task'.
Completed 1 task.
You have more urgent tasks.
The project 'demo' has changed.  Project 'demo' is 50% complete (1 of 2 tasks remaining).

验证判定:nag 文案紧随 Completed 1 task. 出现——因为当时存在更高紧急度(priority:H)的待办任务,触发了提醒;清空更高紧急度任务后完成操作则不再出现。不想要提醒时 task config nag(无值)删除即可。

verbose——输出开关集合,默认值实测:

verbose         affected,blank,context,edit,header,footnote,label,new-id,news,project,special,sync,override,recur

需要安静输出时用覆盖方式(见 3.3 节),或把值改为 affected,new-id 等最小集。

5.3 日期与显示组:dateformat 系列 / weekstart

task show weekstart
task show dateformat

实测回显:

Config Variable Value
weekstart       sunday
dateformat.holiday    YMD
dateformat.info       Y-M-D H:N:S
dateformat.report

实测把报表日期格式改为 Y/m/d 后,task list 的 Due 列立即变化:

echo yes | script -qec "task config dateformat.report Y/m/d" /dev/null
task list

实测回显:

ID Age  P Project Tags  Due        Description               Urg
-- ---- - ------- ----- ---------- ------------------------- ----
 1 9min                 2026/10/30 pay electricity bill      6.25
 3 1min H demo                     urgent top task              7
 2 9min   docs    learn            read taskwarrior docs      1.8

解读:dateformat.report 为空时回退 dateformat(默认 m/d/Y,即 10/30/2026);改为 Y/m/d 后显示 2026/10/30。日期占位符语法:Y=四位年、m=月、d=日、H:N:S=时分秒,完整表见官方 man taskrc。weekstart 影响日历报表与「本周」类过滤的周起始日,默认 sunday,中文环境常改为 monday。

5.4 报表定制组:report.<名>.* 全链实测

定义一个只看 ID/截止日/描述的最小报表并验证(列→标签→排序→过滤四步):

echo yes | script -qec "task config report.mini.columns id,due,description" /dev/null
echo yes | script -qec "task config report.mini.labels ID,Due,Description" /dev/null
echo yes | script -qec "task config report.mini.sort due+" /dev/null
echo yes | script -qec "task config report.mini.filter status:pending" /dev/null
task mini

实测回显(逐步 Config file /root/.taskrc modified. 后运行报表):

ID Due        Description
-- ---------- ---------------------
 1 2026-10-30 pay electricity bill
 2            read taskwarrior docs
 3            urgent top task

逐项解读:report.mini.columns 定义列(列名即字段名);.labels 定义表头文字;.sort 定义排序(due+ 升序,- 为降序);.filter 定义报表内置过滤器。⚠️ 两个实测教训:其一,前缀必须是 report. 而非 reporter.(误前缀写入成功但报表不识别,见 3.2 节);其二,自定义报表若不设 .filter,已完成任务也会出现——实测未加过滤时 task mini 多显示一行 low priority task(Due 为 - 的已完成任务),加上 status:pending 后消失,这正是内建报表与自定义报表的默认差异所在。task show 对自定义键会追加差异提示(实测):

Some of your .taskrc variables differ from the default values.

5.5 上下文组:context.<名>.* 实测

上下文(context)是「一键给所有查询叠加过滤器」的配置组。实测定义、启用、查看、关闭:

echo yes | script -qec "task context define work project:demo" /dev/null
task context work
task list
task context
task context none

实测回显(定义时 task 自动写入一对键):

Are you sure you want to add 'context.work.read' with a value of 'project:demo'? (yes/no) Are you sure you want to add 'context.work.write' with a value of 'project:demo'? (yes/no) Context 'work' defined (read only). Use 'task context work' to activate.
Context 'work' set. Use 'task context none' to remove.

启用后 task list 只剩 demo 项目的 1 条任务,且表头上方多出 Context 'work' set. 提示;task context 查看状态:

Name Type  Definition   Active
work read  project:demo no
     write              no

task context none 关闭(实测回显 Context unset.)。解读:define 一次会写 context.work.read(查询过滤)与 context.work.write(新增任务自动附加属性)两个键;task config 也可直接管理这两个键,效果等同。

5.6 紧急度系数组:urgency.*

task show urgency 实测回显(节选):

Config Variable                    Value
urgency.active.coefficient         4.0
urgency.age.coefficient            2.0
urgency.age.max                    365
urgency.annotations.coefficient    1.0
urgency.blocked.coefficient        -5.0
urgency.blocking.coefficient       8.0
urgency.due.coefficient            12.0
urgency.inherit                    0
urgency.project.coefficient        1.0
urgency.scheduled.coefficient      5.0
urgency.tags.coefficient           1.0
urgency.uda.priority.H.coefficient 6.0

解读:Urg 列的分数就是各系数加权求和(如 due 临近贡献最高 12 分、优先级 H 贡献 6 分、被阻塞任务倒扣 5 分)。调参思路:想让「截止日期」压倒一切就调大 urgency.due.coefficient;团队内想让「阻塞他人」更醒目就调大 urgency.blocking.coefficient。改系数后用 task list 观察 Urg 列变化验证即可。

5.7 颜色与主题组:include / color / _forcecolor

主题通过 include 行切换(样例文件列出全部 15 个可选主题,见 3.5 节)。实测切换到 solarized-dark-256:

sed -i 's|^include default.theme|include solarized-dark-256.theme|' ~/.taskrc
task show color

非 TTY 输出时颜色自动关闭,实测提示:

Color is currently turned off in your .taskrc file.  To enable color, remove the line 'color=off', or change the 'off' to 'on'.

强制在管道/重定向输出中也保留 ANSI 颜色,实测设 _forcecolor=1 后图例出现转义序列:

Here are the colors currently in use:
Color                     Definition
^[[1;31mcolor.active             ^[[0m ^[[1;31mbold red          ^[[0m

解读:color=on 让 TTY 会话启用配色;_forcecolor=1 是非交互场景(如需要彩色日志落盘)的强制开关,日常保持 0。include no-color.theme 可一键退回无色。配色具体规则键(color.active、color.overdue 等)都由主题文件给出,可在其后用 task config color.<对象> <样式> 覆盖。

5.8 同步组:sync.*(未配置时的实测基线)

task show sync

实测回显:

Config Variable     Value
color.sync.added    rgb010
color.sync.changed  color11
color.sync.rejected color9
purge.on-sync       0

解读:未配置同步服务端时,sync.server.url / sync.server.client_id / sync.encryption_secret 三键为空——这是 3.x 同步的三要素(服务端地址、本机客户端 ID、端到端加密口令),配置方法属于同步部署主题;purge.on-sync=0 表示同步时不清理已完成任务历史。

5.9 别名组:alias.*

实测默认别名(task show 片段):

alias.burndown                     burndown.weekly
alias.ghistory                     ghistory.monthly
alias.history                      history.monthly
alias.rm                           delete

解读:alias.rm=delete 意味着 task 3 rm 等价于删除(软删除);自定义示例:task config alias.today "list due:today" 后即可 task today。别名只是文本替换,任何内建命令都能被覆盖映射。

六、个人配置模板(实测可用的起步集)

以下模板整合本文全部实测项,适用于「单机个人使用、终端 TTY、希望安静且聚焦」的场景(直接追加到 ~/.taskrc,逐行含义见注释):

# ── 位置 ─────────────────────────────────────────────
data.location=~/.task                # 任务库位置(默认值,显式写出便于备份脚本引用)

# ── 默认行为 ─────────────────────────────────────────
default.command=list                 # 裸敲 task 时执行的报表
gc=1                                 # 保持垃圾回收开启
bulk=3                               # 批量完成超过 3 条时请求确认
nag=You have more urgent tasks.      # 完成低紧急度任务时提醒(不需要可整行删除)

# ── 显示 ────────────────────────────────────────────
verbose=affected,new-id,project      # 只保留必要提示,屏蔽 header/footnote 等噪音
weekstart=monday                     # 周从周一开始
dateformat.report=Y-m-d              # 报表日期统一 2026-10-30 形态

# ── 报表 ────────────────────────────────────────────
report.mini.columns=id,due,description
report.mini.labels=ID,Due,Description
report.mini.sort=due+
report.mini.filter=status:pending    # 自定义报表务必带过滤,否则已完成任务混入

# ── 上下文(按需启用)───────────────────────────────
context.work.read=project:Work
context.work.write=project:Work

# ── 颜色 ────────────────────────────────────────────
include solarized-dark-256.theme     # 主题;无色需求改 include no-color.theme
color=on                             # TTY 会话启用配色;_forcecolor 保持默认 0

💡 说明:该模板不含任何同步键(单机场景)。模板中每一项均在本文对应小节实测过,逐项粘贴后可用 task show 复核差异提示与 task diagnostics 做整体体检。

七、常见问题(FAQ)

Q1:task config 写入后报表/行为没变化? 先查键名前缀是否正确——自定义报表是 report.<名>.*(实测误写 reporter. 前缀不生效,见 3.2 节排障)。再用 task show <键> 或 task _show | grep <键> 确认键确实存在且值正确。

Q2:task config 没有出现 yes/no 确认,直接 No changes made.? 确认提示从终端读取输入,非交互环境(脚本、CI、重定向)读不到。交互终端直接运行即可;脚本内用 pty 包装(echo yes | script -qec "task config …" /dev/null,本文全部写操作实测即用此法),或直接编辑 ~/.taskrc 文本文件——两者等效,文件格式就是 KEY=VALUE。

Q3:TASKRC=/path/rc task … 提示 Cannot proceed without rc file.? 显式指定 TASKRC 时文件不存在不会自动创建(与默认路径首跑行为不同,见 3.4 节实测)。先创建文件(空文件亦可)再执行。

Q4:为什么管道输出没有颜色,color=on 也没用? 非 TTY 输出时 task 自动关闭颜色;需要彩色落盘/进管道时设 _forcecolor=1(实测出现 ANSI 转义序列,见 5.7 节)。

Q5:改了 urgency 系数,Urg 分数怎么没变? Urg 是实时计算的,确认改动写入(task show urgency 核对)后重新渲染报表即可;urgency.age.max(默认 365)会封顶「任务年龄」贡献的老化分数,老化类系数调整要看长任务才明显。

Q6:配置改坏了怎么回滚? 单键回滚:task config <键>(无值)确认删除,即回到内建默认。整体回滚:停止使用当前 ~/.taskrc,重命名后任由 task 重建样例(或从 3.5 节样例全文手工恢复),数据目录 ~/.task 与配置文件相互独立,删除配置不影响任务数据。

八、参考链接