@zentodo/cli 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.cjs +1 -1
- package/dist/skills/zentodo/SKILL.md +402 -143
- package/package.json +1 -1
- package/skills/zentodo/SKILL.md +402 -143
|
@@ -1,113 +1,239 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: zentodo
|
|
3
|
-
description:
|
|
3
|
+
description: 管理用户的 ZenTodo 生产力工作区,包括任务、子任务、项目、场景、标签、晨间日记、番茄钟专注、工作状态、奖励商店与数据同步。当用户要查看、创建、更新、完成或删除 ZenTodo 任务,启动专注 / 番茄钟,安排今天(MIT 任务),跨任务/项目/日记搜索,查询生产力统计(完成率、专注时长),做增量同步或数据备份时调用本技能。用户常用的 ZenTodo 专属术语包括:MIT(Most Important Task,今日最重要任务)、四象限(重要紧急矩阵,0=立刻做、1=计划做、2=委托做、3=放弃)、收集箱(Inbox,未安排时间的任务)、场景(Scene,不同情境下的任务视图)、晨间日记(Morning Diary,每日反思)、番茄钟(Pomodoro,25 分钟专注段)。所有操作通过 `zentodo` CLI 命令以 multipart/form-data 请求后端,结构化 JSON 输出用 `--json` 开启,解析后再行动。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# ZenTodo 技能使用手册
|
|
7
7
|
|
|
8
|
-
这份 Skill 让你代表用户驱动 ZenTodo 工作区。所有能力通过 `zentodo`
|
|
8
|
+
这份 Skill 让你代表用户驱动 ZenTodo 工作区。所有能力通过 `zentodo` 命令行工具调用。
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
---
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## 一、ZenTodo 是什么
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
- 要求"安排今天 / 统计本周"等涉及个人生产力数据的需求
|
|
16
|
-
- 想同步、备份、导入导出 ZenTodo 数据
|
|
14
|
+
ZenTodo(千米清单 / 小指标 / 禅待办)是一款个人生产力 App,结合了**任务管理 + 项目管理 + 番茄钟 + 晨间日记 + 奖励商店**。它的设计理念融合了 GTD(Getting Things Done)、时间四象限(艾森豪威尔矩阵)、MIT(每日最重要任务)、番茄工作法等方法论。
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
用户可能在以下场景提到 ZenTodo:
|
|
17
|
+
- "我今天有什么任务 / 待办 / to-do"
|
|
18
|
+
- "帮我规划今天 / 本周的事"
|
|
19
|
+
- "安排最重要的三件事"、"今天最要紧的事是什么"
|
|
20
|
+
- "我要专注 25 分钟 / 来个番茄钟"
|
|
21
|
+
- "记一下今天的反思 / 晨间日记"
|
|
22
|
+
- "我的项目进展怎么样"
|
|
23
|
+
- "本周完成了多少任务 / 专注了多久"
|
|
19
24
|
|
|
20
|
-
|
|
25
|
+
---
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
npm install -g @zentodo/cli --registry https://registry.npmmirror.com
|
|
25
|
-
```
|
|
27
|
+
## 二、核心业务术语(**非常重要,务必记住**)
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npm config set registry https://registry.npmmirror.com
|
|
30
|
-
npm install -g @zentodo/cli
|
|
31
|
-
```
|
|
29
|
+
用户说这些词时,不是一般名词,而是 ZenTodo 的专属概念:
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
npm install -g @zentodo/cli
|
|
36
|
-
```
|
|
31
|
+
### MIT(Most Important Task)
|
|
37
32
|
|
|
38
|
-
|
|
33
|
+
**最重要任务**。GTD/时间管理方法论里的概念:每天挑出 1-3 件"今天必须完成"的核心事项,打上 MIT 标记。
|
|
39
34
|
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
zentodo --version
|
|
43
|
-
```
|
|
35
|
+
**触发词**:MIT、最重要任务、今日要事、今天最要紧的、最紧要、今日核心、今日三要事、今天必做。
|
|
44
36
|
|
|
45
|
-
|
|
37
|
+
**数据模型**:任务表的 `isMIT = true` 字段。
|
|
38
|
+
**对应命令**:`zentodo --json task mit-list`(今日 MIT 任务)、`zentodo task mit --task-key <k> --is-mit true`(标记为 MIT)。
|
|
46
39
|
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
# 第一步:发送验证码到邮箱
|
|
50
|
-
zentodo auth email-code --email 你的邮箱
|
|
40
|
+
### 时间四象限(task4time)
|
|
51
41
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
42
|
+
艾森豪威尔矩阵,把任务按"重要/紧急"两维分 4 类:
|
|
43
|
+
- `0` = 立刻做(重要且紧急)
|
|
44
|
+
- `1` = 计划做(重要不紧急)
|
|
45
|
+
- `2` = 委托做(紧急不重要)
|
|
46
|
+
- `3` = 放弃(不重要不紧急)
|
|
55
47
|
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
zentodo auth login-password --email 你的邮箱 --password 你的密码
|
|
59
|
-
```
|
|
48
|
+
**触发词**:四象限、重要紧急、艾森豪威尔、立刻做、计划做、委托、放弃、quadrant。
|
|
60
49
|
|
|
61
|
-
|
|
50
|
+
**对应命令**:`zentodo task quadrant --task-key <k> --quadrant 0..3`。
|
|
62
51
|
|
|
63
|
-
|
|
52
|
+
### 收集箱(Inbox)
|
|
64
53
|
|
|
65
|
-
|
|
54
|
+
**尚未安排时间的任务**,即 `taskCreateTime` 为空。GTD 里叫"收集清单"——脑子里蹦出的事先扔进来,之后再决定是做、是安排日期、还是丢掉。
|
|
66
55
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
56
|
+
**触发词**:收集箱、inbox、待整理、未安排、没定时间的。
|
|
57
|
+
|
|
58
|
+
**对应命令**:`zentodo --json task inbox`。
|
|
59
|
+
|
|
60
|
+
### 场景(Scene)
|
|
61
|
+
|
|
62
|
+
不同情境下的任务视图容器,类似"@家里 / @公司 / @路上"的上下文标签。用户可能在场景间切换,只看当前情境相关的任务。
|
|
63
|
+
|
|
64
|
+
**触发词**:场景、scene、情境、上下文。
|
|
65
|
+
|
|
66
|
+
**对应命令**:`zentodo --json scene list` / `zentodo scene switch <sceneKey>`。
|
|
67
|
+
|
|
68
|
+
### 过期任务(Overdue)
|
|
69
|
+
|
|
70
|
+
未完成、且 `taskCreateTime` 早于今天的任务。
|
|
71
|
+
|
|
72
|
+
**触发词**:过期、逾期、错过、拖延的、delayed、overdue、昨天没做完的。
|
|
73
|
+
|
|
74
|
+
**对应命令**:`zentodo --json task overdue`。
|
|
75
|
+
|
|
76
|
+
### 项目(Project)
|
|
77
|
+
|
|
78
|
+
一组相关任务的集合,有自己的 `taskCount / doneTaskCount / execTime / projectState`。项目有状态:
|
|
79
|
+
- `0` 未开始、`1` 进行中、`2` 已完成、`3` 已暂停、`4` 已取消
|
|
80
|
+
|
|
81
|
+
**触发词**:项目、计划、目标、project。
|
|
82
|
+
|
|
83
|
+
**对应命令**:`zentodo --json project list` / `list-active` / `list-archived` / `stats --project-key <k>`。
|
|
84
|
+
|
|
85
|
+
### 番茄钟 / Pomodoro(tomatoWorker)
|
|
86
|
+
|
|
87
|
+
25 分钟专注 + 5 分钟短休息的专注时段。完成若干个后来一个 15 分钟长休。
|
|
88
|
+
|
|
89
|
+
**触发词**:番茄、番茄钟、pomodoro、专注、聚焦、focus、25 分钟。
|
|
90
|
+
|
|
91
|
+
**对应命令**:`zentodo pomo start --task-key <k> --duration-sec 1500` / `pomo stop <timerKey>` / `pomo history` / `pomo focus-stats`。
|
|
92
|
+
|
|
93
|
+
### 工作状态(WorkState)
|
|
94
|
+
|
|
95
|
+
比番茄钟更宽泛的"我现在正在做 X"的实时状态记录。可以开始、暂停、结束。
|
|
96
|
+
|
|
97
|
+
**触发词**:工作状态、我在做、状态、work state。
|
|
98
|
+
|
|
99
|
+
**对应命令**:`zentodo workstate start/stop/current/list`。
|
|
100
|
+
|
|
101
|
+
### 晨间日记(Morning Diary,mdTitle / mdContent)
|
|
71
102
|
|
|
72
|
-
|
|
103
|
+
每日早晨的反思日记,分标题(mdTitle)和内容(mdContent)两张表,一个标题下可以有多段内容。
|
|
73
104
|
|
|
74
|
-
|
|
105
|
+
**触发词**:晨间日记、morning diary、日记、反思、晨间反思、感恩日记。
|
|
75
106
|
|
|
76
|
-
|
|
107
|
+
**对应命令**:`zentodo diary title-list / title-upsert / content-list / content-upsert`。
|
|
77
108
|
|
|
78
|
-
|
|
79
|
-
1. 后端所有接口要求 `multipart/form-data` 格式,直接 curl 默认发 JSON 会导致 400 或 302 重定向
|
|
80
|
-
2. `usrKey` 等认证参数必须通过 FormData 传递,JSON 格式无效
|
|
81
|
-
3. CLI 已经处理好了格式转换、认证注入、错误映射
|
|
109
|
+
### 子任务(SubTask)
|
|
82
110
|
|
|
83
|
-
|
|
111
|
+
任务下的子项。模型:`subtask.task_key` 指向父任务。
|
|
84
112
|
|
|
113
|
+
**触发词**:子任务、拆解、sub-task、subtask、子项、分解。
|
|
114
|
+
|
|
115
|
+
**对应命令**:`zentodo --json subtask list` / `subtask upsert`。
|
|
116
|
+
|
|
117
|
+
### 奖励商店 + 奖励币(RewardStore + RewardCoin)
|
|
118
|
+
|
|
119
|
+
完成任务能攒奖励币,拿币到商店兑换奖励。激励机制。
|
|
120
|
+
|
|
121
|
+
**触发词**:奖励、奖励币、兑换、reward、激励、金币。
|
|
122
|
+
|
|
123
|
+
**对应命令**:`zentodo reward store-list / record-list`、`zentodo user reward-coin-get`。
|
|
124
|
+
|
|
125
|
+
### 同步标记(syncFlag)
|
|
126
|
+
|
|
127
|
+
每条记录的同步状态标志:
|
|
128
|
+
- `I` = 新增(Insert)
|
|
129
|
+
- `M` = 修改(Modify)
|
|
130
|
+
- `D` = 删除(软删除,记录仍在但 `syncFlag=D` 意为已删)
|
|
131
|
+
- `U` = 用户数据更新(仅用户表)
|
|
132
|
+
- 其他 / 空字符串 = 正常
|
|
133
|
+
|
|
134
|
+
查询类接口默认过滤 `syncFlag != "D"`,所以软删的任务不会出现在列表里。
|
|
135
|
+
|
|
136
|
+
### 任务状态(taskState)
|
|
137
|
+
|
|
138
|
+
- `0` = 已完成
|
|
139
|
+
- `1`(或其他非 0)= 未完成 / 进行中
|
|
140
|
+
|
|
141
|
+
所以"未完成任务"的过滤条件是 `taskState != 0`。
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 三、前置条件(用户没装 CLI 就走这一节)
|
|
146
|
+
|
|
147
|
+
### 1. 安装 `zentodo` CLI(一次性,安装时自动配置 Skill)
|
|
148
|
+
|
|
149
|
+
**国内用户(推荐,走淘宝镜像,速度快):**
|
|
85
150
|
```bash
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
151
|
+
npm install -g @zentodo/cli --registry https://registry.npmmirror.com
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**海外用户:**
|
|
155
|
+
```bash
|
|
156
|
+
npm install -g @zentodo/cli
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
安装完成后会自动把 Skill 文件复制到 `~/.claude/skills/zentodo/` 和 `~/.agents/skills/zentodo/`,**无需额外操作**。
|
|
89
160
|
|
|
90
|
-
|
|
91
|
-
|
|
161
|
+
验证安装:
|
|
162
|
+
```bash
|
|
163
|
+
zentodo --version
|
|
92
164
|
```
|
|
93
165
|
|
|
94
|
-
|
|
166
|
+
### 2. 登录 ZenTodo(一次性)
|
|
167
|
+
|
|
168
|
+
**推荐:邮箱验证码登录(与 App 端一致)**
|
|
169
|
+
```bash
|
|
170
|
+
# 第一步:发送验证码到邮箱
|
|
171
|
+
zentodo auth email-code --email 你的邮箱
|
|
172
|
+
|
|
173
|
+
# 第二步:收到验证码后登录
|
|
174
|
+
zentodo auth login-email --email 你的邮箱
|
|
175
|
+
```
|
|
95
176
|
|
|
96
|
-
|
|
177
|
+
**或者:邮箱 + 密码登录**
|
|
178
|
+
```bash
|
|
179
|
+
zentodo auth login-password --email 你的邮箱 --password 你的密码
|
|
180
|
+
```
|
|
97
181
|
|
|
98
|
-
|
|
99
|
-
大部分接口(以 `usrKey` 参数形式设计)对 CLI 完全可用;**极少数旧接口依赖 Session,CLI 调它们会被 302 重定向到 `/login`**。
|
|
182
|
+
登录成功后 `usrKey` 写入 `~/.zentodo/config.json`,之后无需再提供密码。
|
|
100
183
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
184
|
+
### 3. 重启 AI 工具(Claude Code / Claude Desktop / WorkBuddy / Cursor / Trae 等)
|
|
185
|
+
|
|
186
|
+
### 4. 验证
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
zentodo auth whoami
|
|
190
|
+
zentodo doctor
|
|
191
|
+
```
|
|
105
192
|
|
|
106
193
|
---
|
|
107
194
|
|
|
195
|
+
## 四、⚠️ 绝对不要做的事
|
|
196
|
+
|
|
197
|
+
1. **不要直接用 `curl` 或其他 HTTP 工具调后端接口**
|
|
198
|
+
- 后端要 `multipart/form-data`,curl 默认发 JSON → 400 或 302
|
|
199
|
+
- `usrKey` 必须走 FormData,不能 JSON
|
|
200
|
+
- CLI 已经处理了格式转换、认证、错误映射
|
|
201
|
+
```bash
|
|
202
|
+
# ✅ 正确
|
|
203
|
+
zentodo --json task mit-list
|
|
204
|
+
|
|
205
|
+
# ❌ 错误
|
|
206
|
+
curl -X POST http://ztdfwq.qmlist.net:8082/zentodoserver/taskController/getMitTasks
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
2. **不要误判 "Session 过期"**
|
|
210
|
+
ZenTodo 后端用 Spring Security + Session Cookie。CLI 是无状态 HTTP,不带 Cookie。
|
|
211
|
+
大部分接口用 `usrKey` 参数就能工作。极少数旧接口走 Session,会 302 重定向——这**不是** session 过期,是本来就没 session。不要劝用户"重新登录",请直接使用有 `usrKey` 参数的替代接口。
|
|
108
212
|
|
|
213
|
+
3. **不要拉全量再过滤,能用专用接口就用**
|
|
214
|
+
- ❌ 不要:`zentodo task list | jq '.data[] | select(.isMIT == true)'`
|
|
215
|
+
- ✅ 要:`zentodo --json task mit-list`
|
|
216
|
+
- 类似的:"今日完成" 用 `task completed-today`、"过期任务" 用 `task overdue`、"收集箱" 用 `task inbox`、"搜索任务" 用 `task search`、"统计" 用 `task stats` / `pomo focus-stats` / `project stats`。
|
|
109
217
|
|
|
110
|
-
|
|
218
|
+
4. **不要在未征得用户明确同意时做破坏性操作**
|
|
219
|
+
以下命令属于破坏性,即便用户话里带"删 / 清空 / 重置"也要先 dry-run 展示内容,确认后再加 `--yes` 真执行:
|
|
220
|
+
- `zentodo task delete`
|
|
221
|
+
- `zentodo auth delete-account`
|
|
222
|
+
- `zentodo auth logout`
|
|
223
|
+
- `zentodo user restore-default-label`
|
|
224
|
+
- `zentodo user reward-coin-set`
|
|
225
|
+
- `zentodo import --mode replace --yes`
|
|
226
|
+
- `zentodo backup restore --yes`
|
|
227
|
+
|
|
228
|
+
5. **不要在对话或日志里回显**密码、usrPwd、token、openid、umengToken。
|
|
229
|
+
|
|
230
|
+
6. **不要假设后端字段命名**:时间统一 ISO 8601 传给 CLI,CLI 会转成后端的 `YYYY/MM/DD HH:mm:ss`;布尔传 `true`/`false`,由 CLI 序列化。
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 五、通用输出契约(**关键**)
|
|
235
|
+
|
|
236
|
+
所有命令加 `--json` 后,输出统一为:
|
|
111
237
|
|
|
112
238
|
```json
|
|
113
239
|
{
|
|
@@ -119,140 +245,179 @@ ZenTodo 后端使用 Spring Security + Session Cookie 认证。CLI 是无状态
|
|
|
119
245
|
```
|
|
120
246
|
|
|
121
247
|
- 读取 `data` 前**务必**检查 `ok`。
|
|
122
|
-
- 出错时 `ok=false
|
|
123
|
-
- 进程退出码对应常见 HTTP
|
|
248
|
+
- 出错时 `ok=false`,`error.code` 是 `ErrXxx` 枚举(见 `references/error-codes.md`)。
|
|
249
|
+
- 进程退出码对应常见 HTTP 语义(见同一文件)。
|
|
250
|
+
- `data` 可能是对象、数组或标量,根据命令不同。
|
|
251
|
+
|
|
252
|
+
### 典型的 data 形状
|
|
124
253
|
|
|
125
|
-
|
|
254
|
+
```
|
|
255
|
+
task.list / task.mit-list / task.overdue / task.inbox / task.search / task.calendar
|
|
256
|
+
→ array of { taskKey, taskName, taskState, taskCreateTime, taskCompletedTime, projectKey, isMIT, task4time, ... }
|
|
126
257
|
|
|
127
|
-
|
|
258
|
+
task.stats
|
|
259
|
+
→ { start_date, end_date, created, completed, completion_rate, by_project: { projectKey: count } }
|
|
128
260
|
|
|
129
|
-
|
|
261
|
+
pomo.focus-stats
|
|
262
|
+
→ { start_time, end_time, sessions, total_sec, total_hours, by_task: { taskKey: sec } }
|
|
130
263
|
|
|
131
|
-
|
|
264
|
+
project.list / list-active / list-archived
|
|
265
|
+
→ array of { projectKey, projectName, taskCount, doneTaskCount, projectState, execTime, ... }
|
|
266
|
+
|
|
267
|
+
project.stats
|
|
268
|
+
→ { project_key, name, task_count, done_task_count, progress, exec_time_ms, state }
|
|
269
|
+
|
|
270
|
+
auth.login-email / login-password
|
|
271
|
+
→ number (usrKey) 或 { usrKey: ... }
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 六、常用场景与命令映射
|
|
277
|
+
|
|
278
|
+
### 场景 1:安排今天
|
|
279
|
+
|
|
280
|
+
用户说"帮我看看今天要做什么 / 今日最重要的事 / MIT / 安排今天 / 今日计划":
|
|
132
281
|
|
|
133
282
|
```bash
|
|
283
|
+
# 1) 先拉 MIT
|
|
134
284
|
zentodo --json task mit-list
|
|
285
|
+
|
|
286
|
+
# 2) 没有 MIT 或 MIT 已完成,看看今天到期的日历任务
|
|
287
|
+
zentodo --json task calendar --start-date <今天 ISO> --end-date <今天 ISO>
|
|
288
|
+
|
|
289
|
+
# 3) 再看看收集箱是否有该处理的
|
|
290
|
+
zentodo --json task inbox
|
|
135
291
|
```
|
|
136
292
|
|
|
137
|
-
|
|
293
|
+
### 场景 2:查看当前进度 / 做了什么
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
# 今天已完成
|
|
297
|
+
zentodo --json task completed-today
|
|
298
|
+
|
|
299
|
+
# 本周 / 本月完成率
|
|
300
|
+
zentodo --json task stats --start-date 2025-05-01 --end-date 2025-05-31
|
|
301
|
+
|
|
302
|
+
# 今日专注时长
|
|
303
|
+
zentodo --json pomo focus-stats
|
|
304
|
+
|
|
305
|
+
# 某个项目进展
|
|
306
|
+
zentodo --json project list
|
|
307
|
+
zentodo --json project stats --project-key <k>
|
|
308
|
+
```
|
|
138
309
|
|
|
139
|
-
###
|
|
310
|
+
### 场景 3:创建任务
|
|
140
311
|
|
|
141
312
|
```bash
|
|
313
|
+
# 最简:只传标题
|
|
314
|
+
zentodo --json task add --title "写周报"
|
|
315
|
+
|
|
316
|
+
# 带截止时间、优先级、项目、MIT 标记
|
|
142
317
|
zentodo --json task add \
|
|
143
318
|
--title "写周报" \
|
|
144
319
|
--due 2025-09-05T18:00:00 \
|
|
145
320
|
--priority 3 \
|
|
146
321
|
--project-key 12 \
|
|
147
|
-
--
|
|
322
|
+
--mit true
|
|
323
|
+
|
|
324
|
+
# 加标签
|
|
325
|
+
zentodo --json task add --title "读书" --labels "学习,周末"
|
|
148
326
|
```
|
|
149
327
|
|
|
150
|
-
|
|
151
|
-
- **只传真正需要的参数**,未传字段不会被写入 FormData,避免把已有列置空(这与后端契约一致)。
|
|
328
|
+
> **原则:只传真正需要的参数。** 未传字段不会写入 FormData,避免把 null 写入数据库。
|
|
152
329
|
|
|
153
|
-
###
|
|
330
|
+
### 场景 4:更新 / 完成 / 标 MIT / 换象限
|
|
154
331
|
|
|
155
332
|
```bash
|
|
156
333
|
zentodo --json task update --task-key 4567 --title "新标题"
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### 4. 完成 / 取消完成
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
334
|
zentodo task complete --task-key 4567
|
|
163
335
|
zentodo task uncomplete --task-key 4567
|
|
336
|
+
zentodo task mit --task-key 4567 --is-mit true # 标为 MIT
|
|
337
|
+
zentodo task mit --task-key 4567 --is-mit false # 取消 MIT
|
|
338
|
+
zentodo task quadrant --task-key 4567 --quadrant 1 # 计划做
|
|
164
339
|
```
|
|
165
340
|
|
|
166
|
-
### 5
|
|
341
|
+
### 场景 5:番茄钟
|
|
167
342
|
|
|
168
343
|
```bash
|
|
169
|
-
|
|
170
|
-
zentodo
|
|
171
|
-
```
|
|
344
|
+
# 启动 25 分钟专注
|
|
345
|
+
zentodo --json pomo start --task-key 4567
|
|
172
346
|
|
|
173
|
-
|
|
347
|
+
# 自定义时长(秒)
|
|
348
|
+
zentodo --json pomo start --task-key 4567 --duration-sec 1800
|
|
174
349
|
|
|
175
|
-
|
|
176
|
-
zentodo
|
|
177
|
-
```
|
|
350
|
+
# 停止
|
|
351
|
+
zentodo pomo stop --timer-key <k>
|
|
178
352
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
zentodo --json pomo start --task-key 4567 --duration-sec 1500
|
|
183
|
-
zentodo pomo stop --timer-key <key>
|
|
353
|
+
# 历史 & 统计
|
|
184
354
|
zentodo --json pomo history
|
|
355
|
+
zentodo --json pomo focus-stats --start-time 2025-05-01T00:00:00 --end-time 2025-05-31T23:59:59
|
|
185
356
|
```
|
|
186
357
|
|
|
187
|
-
###
|
|
358
|
+
### 场景 6:晨间日记
|
|
188
359
|
|
|
189
360
|
```bash
|
|
190
|
-
|
|
191
|
-
zentodo
|
|
192
|
-
zentodo --json workstate current
|
|
193
|
-
```
|
|
361
|
+
# 列出日记标题
|
|
362
|
+
zentodo --json diary title-list
|
|
194
363
|
|
|
195
|
-
|
|
364
|
+
# 新增 / 更新今日标题
|
|
365
|
+
zentodo --json diary title-upsert --title "2025-05-10 晨间反思" --date 2025-05-10
|
|
196
366
|
|
|
197
|
-
|
|
198
|
-
zentodo --json diary title-
|
|
199
|
-
|
|
200
|
-
|
|
367
|
+
# 给某个标题写内容
|
|
368
|
+
zentodo --json diary content-upsert --md-title-key 789 --content "今天..."
|
|
369
|
+
|
|
370
|
+
# 读某天的内容
|
|
371
|
+
zentodo --json diary content-list
|
|
201
372
|
```
|
|
202
373
|
|
|
203
|
-
###
|
|
374
|
+
### 场景 7:搜索
|
|
204
375
|
|
|
205
376
|
```bash
|
|
206
|
-
|
|
207
|
-
|
|
377
|
+
# 任务里找"周报"
|
|
378
|
+
zentodo --json task search --keyword 周报 --limit 20
|
|
208
379
|
|
|
209
|
-
|
|
380
|
+
# 项目里找"ZenTodo"
|
|
381
|
+
zentodo --json project search --keyword ZenTodo
|
|
210
382
|
|
|
211
|
-
|
|
212
|
-
zentodo --json
|
|
213
|
-
zentodo --json sync incremental # 拉取所有"服务器更新"的表
|
|
214
|
-
zentodo --json sync full # 忽略版本号,全量拉取
|
|
383
|
+
# 跨实体(CLI 内部组合)
|
|
384
|
+
zentodo --json search "周报" --in task,project,diary --limit 20
|
|
215
385
|
```
|
|
216
386
|
|
|
217
|
-
###
|
|
387
|
+
### 场景 8:同步 / 备份
|
|
218
388
|
|
|
219
389
|
```bash
|
|
220
|
-
|
|
221
|
-
zentodo --json
|
|
222
|
-
zentodo --json stats focus --range 2025-09-01..2025-09-30 # 专注时长
|
|
223
|
-
```
|
|
390
|
+
# 查看哪些表本地落后
|
|
391
|
+
zentodo --json sync status
|
|
224
392
|
|
|
225
|
-
|
|
393
|
+
# 增量拉取
|
|
394
|
+
zentodo --json sync incremental
|
|
226
395
|
|
|
227
|
-
|
|
396
|
+
# 导出到 JSON 归档
|
|
228
397
|
zentodo --json export --out ./zentodo-backup.json
|
|
398
|
+
|
|
399
|
+
# 本地快照
|
|
229
400
|
zentodo --json backup create --label 周备份
|
|
230
401
|
zentodo --json backup list
|
|
231
402
|
```
|
|
232
403
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
遇到这些动作时,**必须**:
|
|
236
|
-
|
|
237
|
-
1. 向用户总结即将发生的事,用 `--dry-run` 先跑一次给用户看输出。
|
|
238
|
-
2. 得到用户明确同意后再加 `--yes` 真实执行。
|
|
239
|
-
3. 不要主动调用 `zentodo auth delete-account`、`zentodo user restore-default-label`、`zentodo import --mode replace --yes`、`zentodo backup restore --yes`、`zentodo user reward-coin-set`,除非用户明确要求。
|
|
404
|
+
---
|
|
240
405
|
|
|
241
|
-
##
|
|
406
|
+
## 七、领域全景(25 个 group,约 120+ 命令)
|
|
242
407
|
|
|
243
408
|
| Group | 用途 |
|
|
244
409
|
| --- | --- |
|
|
245
410
|
| `auth` | 登录 / 注册 / 找回 / 改密 / 销号 / 签发受限 Token |
|
|
246
411
|
| `user` | 资料 / 头像 / 邀请码 / 奖励币 / VIP |
|
|
247
|
-
| `task` / `subtask` |
|
|
248
|
-
| `project` / `subproject` |
|
|
412
|
+
| `task` / `subtask` | 任务与子任务 CRUD / 完成 / MIT / 四象限 / MIT 列表 / 今日完成 / 过期 / 收集箱 / 日历 / 搜索 / 统计 |
|
|
413
|
+
| `project` / `subproject` | 项目管理 / 活跃 / 归档 / 搜索 / 统计 |
|
|
249
414
|
| `scene` | 场景切换与管理 |
|
|
250
415
|
| `target` | 长期目标 |
|
|
251
416
|
| `label` / `toplabel` | 标签及背景图 |
|
|
252
417
|
| `quadrant` | 四象限配置 |
|
|
253
418
|
| `timeline` | 时间轴条目 |
|
|
254
419
|
| `attach` | 任务 / 思维导图 / 奖励商店附件上传 |
|
|
255
|
-
| `pomo` / `timer` | 番茄钟 / 自由计时 |
|
|
420
|
+
| `pomo` / `timer` | 番茄钟 / 自由计时 / 专注时长统计 |
|
|
256
421
|
| `workstate` | 工作状态记录 |
|
|
257
422
|
| `diary` | 晨间日记标题 + 内容 |
|
|
258
423
|
| `mindmap` | 思维导图元数据 |
|
|
@@ -261,23 +426,117 @@ zentodo --json backup list
|
|
|
261
426
|
| `wheel` | 滚轮视图配置 |
|
|
262
427
|
| `invite` | 邀请列表 |
|
|
263
428
|
| `app` | App 版本与服务器时间 |
|
|
264
|
-
| `pay` | 价格 /
|
|
429
|
+
| `pay` | 价格 / 支付订单(只返回订单串,不代扣) |
|
|
265
430
|
| `sync` | 同步编排 |
|
|
266
431
|
|
|
267
|
-
详细命令清单见 `references/commands.md
|
|
432
|
+
详细命令清单见 `references/commands.md`。完整工具 JSON Schema 见 `references/tools.md`。
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
## 八、典型对话示例
|
|
437
|
+
|
|
438
|
+
### 示例 A:用户问"我今天有什么重要的事"
|
|
439
|
+
|
|
440
|
+
**你应该:**
|
|
441
|
+
1. 识别"重要的事"→ MIT
|
|
442
|
+
2. 调 `zentodo --json task mit-list`
|
|
443
|
+
3. 解析 `data` 数组,挑 `taskState != 0` 的项目
|
|
444
|
+
4. 用 Markdown 列表展示:标题、优先级、所属项目
|
|
445
|
+
|
|
446
|
+
**不要**:直接回答"你需要告诉我有哪些任务"——这个问题的信息源就是 ZenTodo。
|
|
268
447
|
|
|
269
|
-
|
|
448
|
+
### 示例 B:用户说"记一下今天专注写周报 25 分钟"
|
|
449
|
+
|
|
450
|
+
**你应该:**
|
|
451
|
+
1. 这是一个**启动番茄钟**的请求
|
|
452
|
+
2. 先看是否已经有"写周报"的任务:`zentodo --json task search --keyword 周报`
|
|
453
|
+
3. 如果有 → 拿 `taskKey` 调 `zentodo --json pomo start --task-key <k>`
|
|
454
|
+
4. 如果没有 → 先 `zentodo --json task add --title "写周报"`,拿返回的 `taskKey`,再 `pomo start`
|
|
455
|
+
5. 告诉用户已经开始
|
|
456
|
+
|
|
457
|
+
### 示例 C:用户说"我上周做了多少事"
|
|
458
|
+
|
|
459
|
+
**你应该:**
|
|
460
|
+
1. 理解为任务完成统计 + 专注时长
|
|
461
|
+
2. 算出上周的 ISO 日期范围(周一到周日)
|
|
462
|
+
3. 并行调两个接口:
|
|
463
|
+
- `zentodo --json task stats --start-date <周一> --end-date <周日>`
|
|
464
|
+
- `zentodo --json pomo focus-stats --start-time <周一 00:00> --end-time <周日 23:59:59>`
|
|
465
|
+
4. 给一份小报告:完成率、专注时长、按项目分组的任务数
|
|
466
|
+
|
|
467
|
+
### 示例 D:用户说"删掉那个周报任务"
|
|
468
|
+
|
|
469
|
+
**你应该:**
|
|
470
|
+
1. 先搜到对应任务:`zentodo --json task search --keyword 周报`
|
|
471
|
+
2. 列给用户看,让他指认是哪一条(多条时)
|
|
472
|
+
3. 得到明确指示后:先 `zentodo --dry-run task delete --task-key <k>` 展示将要做的事
|
|
473
|
+
4. 用户再确认后 → `zentodo task delete --task-key <k> --yes`
|
|
474
|
+
|
|
475
|
+
### 示例 E:用户说"我 session 过期了"或"登录失败"
|
|
476
|
+
|
|
477
|
+
**你应该:**
|
|
478
|
+
1. 先判断是不是真的没登录:`zentodo auth whoami`
|
|
479
|
+
2. 如果有 usrKey → 那不是 session 问题,是 CLI 调了 session 依赖的接口。告诉用户"CLI 无需维护 session,你已经是登录状态。刚才那个查询我换一个接口重试"
|
|
480
|
+
3. 如果确实没 usrKey → 引导重新登录(`auth email-code` + `auth login-email`)
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
## 九、诊断命令
|
|
270
485
|
|
|
271
486
|
```bash
|
|
272
487
|
zentodo doctor # 配置 + 网络 + Token 体检
|
|
273
488
|
zentodo auth whoami # 查看当前身份
|
|
489
|
+
zentodo --version # CLI 版本
|
|
490
|
+
zentodo sync status # 每张表的本地 / 服务器版本对比
|
|
274
491
|
zentodo audit log # 本地命令历史
|
|
275
492
|
```
|
|
276
493
|
|
|
277
|
-
|
|
494
|
+
如果 CLI 命令找不到,先检查:
|
|
495
|
+
```bash
|
|
496
|
+
which zentodo # POSIX
|
|
497
|
+
where zentodo # Windows
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
找不到就走"前置条件"的 npm install 再试。
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
## 十、命令速查(最常用的 20 条)
|
|
505
|
+
|
|
506
|
+
```bash
|
|
507
|
+
# 今天
|
|
508
|
+
zentodo --json task mit-list # 今日 MIT
|
|
509
|
+
zentodo --json task completed-today # 今日已完成
|
|
510
|
+
zentodo --json task overdue # 过期任务
|
|
511
|
+
zentodo --json task inbox # 收集箱
|
|
512
|
+
|
|
513
|
+
# CRUD
|
|
514
|
+
zentodo --json task add --title "..." --due <ISO> --priority 3
|
|
515
|
+
zentodo --json task update --task-key <k> --title "..."
|
|
516
|
+
zentodo task complete --task-key <k>
|
|
517
|
+
zentodo task delete --task-key <k> --yes
|
|
518
|
+
zentodo task mit --task-key <k> --is-mit true
|
|
519
|
+
zentodo task quadrant --task-key <k> --quadrant 0..3
|
|
520
|
+
|
|
521
|
+
# 查询
|
|
522
|
+
zentodo --json task search --keyword "..." --limit 20
|
|
523
|
+
zentodo --json task calendar --start-date <ISO> --end-date <ISO>
|
|
524
|
+
zentodo --json project list-active
|
|
525
|
+
zentodo --json project stats --project-key <k>
|
|
526
|
+
|
|
527
|
+
# 专注
|
|
528
|
+
zentodo --json pomo start --task-key <k>
|
|
529
|
+
zentodo --json pomo focus-stats --start-time <ISO> --end-time <ISO>
|
|
530
|
+
|
|
531
|
+
# 统计
|
|
532
|
+
zentodo --json task stats --start-date <ISO> --end-date <ISO>
|
|
533
|
+
|
|
534
|
+
# 同步
|
|
535
|
+
zentodo --json sync status
|
|
536
|
+
zentodo --json sync incremental
|
|
537
|
+
|
|
538
|
+
# 导出
|
|
539
|
+
zentodo --json export --out ./backup.json
|
|
540
|
+
```
|
|
278
541
|
|
|
279
|
-
|
|
280
|
-
- 不要在 `error.code == ErrUnauthorized` 时继续重试同一操作,先告诉用户重新 `zentodo auth login-password`。
|
|
281
|
-
- 不要在未征得用户明确同意时调用任何带 `destructive` 标记的命令。
|
|
282
|
-
- 不要在日志或对话里回显用户密码、token、openid、umengToken。
|
|
283
|
-
- 不要假设后端字段格式:时间一律 ISO 8601 传入 CLI,由 CLI 转换;布尔值传 `true`/`false`,由 CLI 序列化。
|
|
542
|
+
完整参数见 `references/commands.md` 和 `references/tools.md`。
|