Skip to content

一行输入魔法

添加和编辑时,一行文本里的各字段会被自动识别并摘出,剩余的词就是标题。这一页是完整的识别规则手册。

拿不准的时候,用预览命令先看解析结果:

bash
atd preview "后天 买牛奶 很急 @18:30"
$ atd preview "后天 买牛奶 很急 @18:30"
→ 2026-08-23 | 标题:买牛奶  [高] ⏰2026-08-23 18:30(toast)

预览会告诉你:日期解析到哪天、紧急度映射成哪个档位、提醒设在哪、标题是什么。TUI 里输入时输入框下方会实时显示同样的预览,所见即所得。

日期

支持中文和英文两种相对日期写法,以及数字日期。

中文相对日期

你写解析为说明
今天当天
今晚 明晚当天 / 明天 20:00自带默认时间
明天 后天 大后天+1 / +2 / +3 天
周五 礼拜三 星期日最近的一个周五(含今天今天就是周五时,解析为下周五
本周五本周的周五已过则下周
下周一 下周三下周的周一 / 周三
周末最近的双休日
8.20 8-20 8/20今年 8 月 20 日三种分隔符等价
2026.8.20 2026-08-20指定年份
8月20日 8月20中文数字日期
月底 月初本月最后一天 / 第一天
下月底 下月初下月对应日12 月会正确跨年
元旦 五一 十一 国庆最近的该节日过了就明年

英文相对日期(大小写不敏感)

你写解析为说明
today今天
tonight今天 20:00
tomorrow明天 10:00自带默认上午时间
day after tomorrow+2 天
next monday next wednesday下周的周一 / 周三
this weekend最近的双休日

实测(preview):

$ atd preview "tomorrow buy milk"
→ 2026-08-22 10:00 | 标题:buy milk  ⏰2026-08-22 09:45(toast)

$ atd preview "next monday submit report"
→ 2026-08-31 | 标题:submit report  ⏰2026-08-30 00:00(toast)

$ atd preview "tonight 21:00 gym"
→ 2026-08-21 21:00 | 标题:gym  ⏰2026-08-21 20:45(toast)

$ atd preview "this weekend retro #work"
→ 2026-08-22 | 标题:retro  #work ⏰2026-08-21 23:45(toast)

注意:英文日期解析是新版本(commit 1fdd82a)引入的特性,旧版本只支持中文日期。

过期日期的规则

数字写法的日期(8.208-172026.8.208月17日)即使已经过去,也按字面保存,不自动推到明年——因为补录历史任务("8-17 读书笔记")是常见需求。它们会落在"逾期"分组里标红。

时间

时间可以和日期组合,也可以单独出现(单独出现时默认今天,已过点则顺延到明天):

你写解析为
14:30 9:0014:30 / 09:00
2:30pm 9am 12pm 12am14:30 / 09:00 / 12:00 / 00:00(12 小时制,大小写不敏感,支持 a.m./p.m.
晚上8点20:00
下午3点半15:30
下午3一刻 2点三刻15:15 / 02:45
凌晨2点 早上7点 中午12点02:00 / 07:00 / 12:00(中午 1-11 点自动 +12)
2026-08-20 09:30日期时间一步到位

紧急度

两种写法,任选:

自然语言短语(自动映射到档位,中英文均可):

写法映射
非常急 特别急 特急 很急 比较着急 有点着急 着急 紧急 加急 urgent very urgent asap high priority critical最高档(默认"高")
一般般 一般 普通 中等 还行 常规 normal medium regular中间档
有空再说 慢慢来 不着急 不用急 不急 no rush not urgent low priority someday最低档(默认"低")

短语匹配有词边界保护:中文的"复习急性处理流程"里的"急"不会被当成紧急度;英文的 urgentlyurgency 也不会误匹配 urgentnot urgent 会整体识别为"不急",不会被拆成 urgent

直接写档位名:配置里的档位名(默认 ,可自定义成 Terra Sol 等)作为独立词出现时被识别。

标签 / 项目 / 父任务 / 等待

语法作用案例
#标签打标签,可多个#学习 #采购
proj:名字归属项目proj:读书
^父任务id挂为子任务^3fbd8742
~日期设 wait:该日期前隐藏,到期浮出~周五 ~9.1 ~next monday ~this weekend

~ 后面接任何日期写法(中文或英文,含多词英文日期)。配合 waiting 状态就是 org-mode 的经典玩法——"这事现在做不了,先藏起来"。

备注

>> 之后到行尾的整段都作为备注保存,里面的 #@proj: 和日期写法都不会再被解析成字段,所以备注里可以放心写任何内容:

bash
atd add "买礼物 明天 >>她说想要那个手账本,别买错型号"
写法含义
>>内容之后到行尾整段是备注
>>(单独)清空备注

重复规则

* 开头写重复规则,中英文写法都认:

写法含义
*每天 / *daily / *1d每天
*每2周 / *2w每两周
*每周三 / *weekly:wed每周三
*每月 / *monthly每月
*每年 / *yearly每年
*工作日 / *weekdays每个工作日(跳过周末)

重复任务完成时会另开一条新任务(新 id),截止日期、等待日期和提醒时间整体往后平移,原任务留在历史里,所以「哪天真的做了」不会被下一次覆盖。按月推进时 31 号遇上短月会压到月末(1 月 31 日 → 2 月 28 日),不会滚到下个月。

提醒

@ 开头设置提醒,可以和日期任意组合:

写法含义
@18:30任务日期当天 18:30 提醒(纯时间自动锚定任务日期
@9:00:toast @9:00:toast,email指定用哪些 hook 触发(缺省 toast)
@周五 @8.20具体日期时间点提醒(缺省 09:00)
@30m @2h @1d相对现在:30 分钟 / 2 小时 / 1 天后

默认提醒

新版本(commit 1fdd82a)引入了默认提醒:如果任务设置了未来的截止日期,但没写任何 @ 提醒,atd 会自动补一个 toast 提醒——距截止超过 24 小时提前 1 天,否则提前 15 分钟。

实测(add "后天 还书"show):

$ atd add "后天 还书"
已添加 fb8dfc39  还书

$ atd show fb8dfc39 --json
{
  "id": "fb8dfc39",
  "title": "还书",
  "status": "todo",
  "due": "2026-08-23T00:00:00",
  "reminders": [
    { "id": "rem-81007b1e8f6a939f", "at": "2026-08-22T00:00", "hooks": ["toast"], "fired": false, "dead": false }
  ],
  ...
}

due 是 8-23,默认提醒自动补到了 8-22 00:00(提前 1 天)。

关闭默认提醒

不想自动补提醒,用 @none / @off,或写 no reminders

$ atd preview "下周五 交报告 @none"
→ 2026-08-28 | 标题:交报告  不加提醒

$ atd preview "next friday submit report no reminders"
→ 2026-08-28 | 标题:submit report  不加提醒

预览里没有 提醒、并且标了「不加提醒」,说明默认提醒被关闭了。在 edit 里用 -提醒 是另一回事——那是把任务上已有的提醒删掉,预览会写「清空提醒」。

清空字段(edit)

edit 吃同一套一行输入,而且现在能清空字段——以前只能覆盖,加错的日期删不掉:

写法含义
-due / -日期清掉截止时间
-proj / -项目清掉项目
-tags / -标签清掉全部标签
-#某标签只摘掉这一个标签
-priority / -优先级清掉优先级
-wait / -等待清掉等待日期
-parent / -父清掉父任务关联
-notes / -备注,或单写 >>清掉备注
-recur / -重复清掉重复规则
-reminders / @none清掉提醒
bash
atd edit a1b2 "-due -#临时"    # 清掉截止时间,并摘掉 #临时 标签

全字段组合案例

一行里所有字段混写,顺序随意:

$ atd preview "下周五 18:30 交季度报告 非常急 #工作 proj:q3 @30m"
→ 2026-08-28 18:30 | 标题:交季度报告  [高] proj:q3 #工作 ⏰2026-08-21 16:54(toast)

@30m 是相对提醒(从现在起 30 分钟后),与任务日期无关。

拿不准就用 preview

atd preview 是调试解析的最佳工具。TUI 里输入时也会实时显示同样的预览,不用切到命令行。

bash
atd preview "任何 一行 输入"    # 看解析结果

下一步

anothertodo — 轻量命令行 TODO 工具