@zentodo/cli 0.1.7 → 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 +405 -136
- package/package.json +1 -1
- package/skills/zentodo/SKILL.md +405 -136
package/skills/zentodo/SKILL.md
CHANGED
|
@@ -1,103 +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)
|
|
102
|
+
|
|
103
|
+
每日早晨的反思日记,分标题(mdTitle)和内容(mdContent)两张表,一个标题下可以有多段内容。
|
|
71
104
|
|
|
72
|
-
|
|
105
|
+
**触发词**:晨间日记、morning diary、日记、反思、晨间反思、感恩日记。
|
|
73
106
|
|
|
74
|
-
|
|
107
|
+
**对应命令**:`zentodo diary title-list / title-upsert / content-list / content-upsert`。
|
|
75
108
|
|
|
76
|
-
|
|
109
|
+
### 子任务(SubTask)
|
|
77
110
|
|
|
78
|
-
|
|
79
|
-
1. 后端所有接口要求 `multipart/form-data` 格式,直接 curl 默认发 JSON 会导致 400 或 302 重定向
|
|
80
|
-
2. `usrKey` 等认证参数必须通过 FormData 传递,JSON 格式无效
|
|
81
|
-
3. CLI 已经处理好了格式转换、认证注入、错误映射
|
|
111
|
+
任务下的子项。模型:`subtask.task_key` 指向父任务。
|
|
82
112
|
|
|
83
|
-
|
|
113
|
+
**触发词**:子任务、拆解、sub-task、subtask、子项、分解。
|
|
84
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
|
-
zentodo --json task list
|
|
151
|
+
npm install -g @zentodo/cli --registry https://registry.npmmirror.com
|
|
152
|
+
```
|
|
89
153
|
|
|
90
|
-
|
|
91
|
-
|
|
154
|
+
**海外用户:**
|
|
155
|
+
```bash
|
|
156
|
+
npm install -g @zentodo/cli
|
|
92
157
|
```
|
|
93
158
|
|
|
94
|
-
|
|
159
|
+
安装完成后会自动把 Skill 文件复制到 `~/.claude/skills/zentodo/` 和 `~/.agents/skills/zentodo/`,**无需额外操作**。
|
|
160
|
+
|
|
161
|
+
验证安装:
|
|
162
|
+
```bash
|
|
163
|
+
zentodo --version
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 2. 登录 ZenTodo(一次性)
|
|
167
|
+
|
|
168
|
+
**推荐:邮箱验证码登录(与 App 端一致)**
|
|
169
|
+
```bash
|
|
170
|
+
# 第一步:发送验证码到邮箱
|
|
171
|
+
zentodo auth email-code --email 你的邮箱
|
|
172
|
+
|
|
173
|
+
# 第二步:收到验证码后登录
|
|
174
|
+
zentodo auth login-email --email 你的邮箱
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**或者:邮箱 + 密码登录**
|
|
178
|
+
```bash
|
|
179
|
+
zentodo auth login-password --email 你的邮箱 --password 你的密码
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
登录成功后 `usrKey` 写入 `~/.zentodo/config.json`,之后无需再提供密码。
|
|
183
|
+
|
|
184
|
+
### 3. 重启 AI 工具(Claude Code / Claude Desktop / WorkBuddy / Cursor / Trae 等)
|
|
185
|
+
|
|
186
|
+
### 4. 验证
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
zentodo auth whoami
|
|
190
|
+
zentodo doctor
|
|
191
|
+
```
|
|
95
192
|
|
|
96
193
|
---
|
|
97
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
|
+
```
|
|
98
208
|
|
|
209
|
+
2. **不要误判 "Session 过期"**
|
|
210
|
+
ZenTodo 后端用 Spring Security + Session Cookie。CLI 是无状态 HTTP,不带 Cookie。
|
|
211
|
+
大部分接口用 `usrKey` 参数就能工作。极少数旧接口走 Session,会 302 重定向——这**不是** session 过期,是本来就没 session。不要劝用户"重新登录",请直接使用有 `usrKey` 参数的替代接口。
|
|
99
212
|
|
|
100
|
-
|
|
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`。
|
|
217
|
+
|
|
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` 后,输出统一为:
|
|
101
237
|
|
|
102
238
|
```json
|
|
103
239
|
{
|
|
@@ -109,140 +245,179 @@ curl -X POST http://ztdfwq.qmlist.net:8082/zentodoserver/projectController/getAl
|
|
|
109
245
|
```
|
|
110
246
|
|
|
111
247
|
- 读取 `data` 前**务必**检查 `ok`。
|
|
112
|
-
- 出错时 `ok=false
|
|
113
|
-
- 进程退出码对应常见 HTTP
|
|
248
|
+
- 出错时 `ok=false`,`error.code` 是 `ErrXxx` 枚举(见 `references/error-codes.md`)。
|
|
249
|
+
- 进程退出码对应常见 HTTP 语义(见同一文件)。
|
|
250
|
+
- `data` 可能是对象、数组或标量,根据命令不同。
|
|
251
|
+
|
|
252
|
+
### 典型的 data 形状
|
|
253
|
+
|
|
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, ... }
|
|
114
257
|
|
|
115
|
-
|
|
258
|
+
task.stats
|
|
259
|
+
→ { start_date, end_date, created, completed, completion_rate, by_project: { projectKey: count } }
|
|
116
260
|
|
|
117
|
-
|
|
261
|
+
pomo.focus-stats
|
|
262
|
+
→ { start_time, end_time, sessions, total_sec, total_hours, by_task: { taskKey: sec } }
|
|
118
263
|
|
|
119
|
-
|
|
264
|
+
project.list / list-active / list-archived
|
|
265
|
+
→ array of { projectKey, projectName, taskCount, doneTaskCount, projectState, execTime, ... }
|
|
120
266
|
|
|
121
|
-
|
|
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 / 安排今天 / 今日计划":
|
|
122
281
|
|
|
123
282
|
```bash
|
|
283
|
+
# 1) 先拉 MIT
|
|
124
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
|
|
125
291
|
```
|
|
126
292
|
|
|
127
|
-
|
|
293
|
+
### 场景 2:查看当前进度 / 做了什么
|
|
128
294
|
|
|
129
|
-
|
|
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
|
+
```
|
|
309
|
+
|
|
310
|
+
### 场景 3:创建任务
|
|
130
311
|
|
|
131
312
|
```bash
|
|
313
|
+
# 最简:只传标题
|
|
314
|
+
zentodo --json task add --title "写周报"
|
|
315
|
+
|
|
316
|
+
# 带截止时间、优先级、项目、MIT 标记
|
|
132
317
|
zentodo --json task add \
|
|
133
318
|
--title "写周报" \
|
|
134
319
|
--due 2025-09-05T18:00:00 \
|
|
135
320
|
--priority 3 \
|
|
136
321
|
--project-key 12 \
|
|
137
|
-
--
|
|
322
|
+
--mit true
|
|
323
|
+
|
|
324
|
+
# 加标签
|
|
325
|
+
zentodo --json task add --title "读书" --labels "学习,周末"
|
|
138
326
|
```
|
|
139
327
|
|
|
140
|
-
|
|
141
|
-
- **只传真正需要的参数**,未传字段不会被写入 FormData,避免把已有列置空(这与后端契约一致)。
|
|
328
|
+
> **原则:只传真正需要的参数。** 未传字段不会写入 FormData,避免把 null 写入数据库。
|
|
142
329
|
|
|
143
|
-
###
|
|
330
|
+
### 场景 4:更新 / 完成 / 标 MIT / 换象限
|
|
144
331
|
|
|
145
332
|
```bash
|
|
146
333
|
zentodo --json task update --task-key 4567 --title "新标题"
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### 4. 完成 / 取消完成
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
334
|
zentodo task complete --task-key 4567
|
|
153
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 # 计划做
|
|
154
339
|
```
|
|
155
340
|
|
|
156
|
-
### 5
|
|
341
|
+
### 场景 5:番茄钟
|
|
157
342
|
|
|
158
343
|
```bash
|
|
159
|
-
|
|
160
|
-
zentodo
|
|
161
|
-
```
|
|
344
|
+
# 启动 25 分钟专注
|
|
345
|
+
zentodo --json pomo start --task-key 4567
|
|
162
346
|
|
|
163
|
-
|
|
347
|
+
# 自定义时长(秒)
|
|
348
|
+
zentodo --json pomo start --task-key 4567 --duration-sec 1800
|
|
164
349
|
|
|
165
|
-
|
|
166
|
-
zentodo
|
|
167
|
-
```
|
|
350
|
+
# 停止
|
|
351
|
+
zentodo pomo stop --timer-key <k>
|
|
168
352
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
```bash
|
|
172
|
-
zentodo --json pomo start --task-key 4567 --duration-sec 1500
|
|
173
|
-
zentodo pomo stop --timer-key <key>
|
|
353
|
+
# 历史 & 统计
|
|
174
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
|
|
175
356
|
```
|
|
176
357
|
|
|
177
|
-
###
|
|
358
|
+
### 场景 6:晨间日记
|
|
178
359
|
|
|
179
360
|
```bash
|
|
180
|
-
|
|
181
|
-
zentodo
|
|
182
|
-
zentodo --json workstate current
|
|
183
|
-
```
|
|
361
|
+
# 列出日记标题
|
|
362
|
+
zentodo --json diary title-list
|
|
184
363
|
|
|
185
|
-
|
|
364
|
+
# 新增 / 更新今日标题
|
|
365
|
+
zentodo --json diary title-upsert --title "2025-05-10 晨间反思" --date 2025-05-10
|
|
186
366
|
|
|
187
|
-
|
|
188
|
-
zentodo --json diary title-
|
|
189
|
-
|
|
190
|
-
|
|
367
|
+
# 给某个标题写内容
|
|
368
|
+
zentodo --json diary content-upsert --md-title-key 789 --content "今天..."
|
|
369
|
+
|
|
370
|
+
# 读某天的内容
|
|
371
|
+
zentodo --json diary content-list
|
|
191
372
|
```
|
|
192
373
|
|
|
193
|
-
###
|
|
374
|
+
### 场景 7:搜索
|
|
194
375
|
|
|
195
376
|
```bash
|
|
196
|
-
|
|
197
|
-
|
|
377
|
+
# 任务里找"周报"
|
|
378
|
+
zentodo --json task search --keyword 周报 --limit 20
|
|
198
379
|
|
|
199
|
-
|
|
380
|
+
# 项目里找"ZenTodo"
|
|
381
|
+
zentodo --json project search --keyword ZenTodo
|
|
200
382
|
|
|
201
|
-
|
|
202
|
-
zentodo --json
|
|
203
|
-
zentodo --json sync incremental # 拉取所有"服务器更新"的表
|
|
204
|
-
zentodo --json sync full # 忽略版本号,全量拉取
|
|
383
|
+
# 跨实体(CLI 内部组合)
|
|
384
|
+
zentodo --json search "周报" --in task,project,diary --limit 20
|
|
205
385
|
```
|
|
206
386
|
|
|
207
|
-
###
|
|
387
|
+
### 场景 8:同步 / 备份
|
|
208
388
|
|
|
209
389
|
```bash
|
|
210
|
-
|
|
211
|
-
zentodo --json
|
|
212
|
-
zentodo --json stats focus --range 2025-09-01..2025-09-30 # 专注时长
|
|
213
|
-
```
|
|
390
|
+
# 查看哪些表本地落后
|
|
391
|
+
zentodo --json sync status
|
|
214
392
|
|
|
215
|
-
|
|
393
|
+
# 增量拉取
|
|
394
|
+
zentodo --json sync incremental
|
|
216
395
|
|
|
217
|
-
|
|
396
|
+
# 导出到 JSON 归档
|
|
218
397
|
zentodo --json export --out ./zentodo-backup.json
|
|
398
|
+
|
|
399
|
+
# 本地快照
|
|
219
400
|
zentodo --json backup create --label 周备份
|
|
220
401
|
zentodo --json backup list
|
|
221
402
|
```
|
|
222
403
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
遇到这些动作时,**必须**:
|
|
226
|
-
|
|
227
|
-
1. 向用户总结即将发生的事,用 `--dry-run` 先跑一次给用户看输出。
|
|
228
|
-
2. 得到用户明确同意后再加 `--yes` 真实执行。
|
|
229
|
-
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
|
+
---
|
|
230
405
|
|
|
231
|
-
##
|
|
406
|
+
## 七、领域全景(25 个 group,约 120+ 命令)
|
|
232
407
|
|
|
233
408
|
| Group | 用途 |
|
|
234
409
|
| --- | --- |
|
|
235
410
|
| `auth` | 登录 / 注册 / 找回 / 改密 / 销号 / 签发受限 Token |
|
|
236
411
|
| `user` | 资料 / 头像 / 邀请码 / 奖励币 / VIP |
|
|
237
|
-
| `task` / `subtask` |
|
|
238
|
-
| `project` / `subproject` |
|
|
412
|
+
| `task` / `subtask` | 任务与子任务 CRUD / 完成 / MIT / 四象限 / MIT 列表 / 今日完成 / 过期 / 收集箱 / 日历 / 搜索 / 统计 |
|
|
413
|
+
| `project` / `subproject` | 项目管理 / 活跃 / 归档 / 搜索 / 统计 |
|
|
239
414
|
| `scene` | 场景切换与管理 |
|
|
240
415
|
| `target` | 长期目标 |
|
|
241
416
|
| `label` / `toplabel` | 标签及背景图 |
|
|
242
417
|
| `quadrant` | 四象限配置 |
|
|
243
418
|
| `timeline` | 时间轴条目 |
|
|
244
419
|
| `attach` | 任务 / 思维导图 / 奖励商店附件上传 |
|
|
245
|
-
| `pomo` / `timer` | 番茄钟 / 自由计时 |
|
|
420
|
+
| `pomo` / `timer` | 番茄钟 / 自由计时 / 专注时长统计 |
|
|
246
421
|
| `workstate` | 工作状态记录 |
|
|
247
422
|
| `diary` | 晨间日记标题 + 内容 |
|
|
248
423
|
| `mindmap` | 思维导图元数据 |
|
|
@@ -251,23 +426,117 @@ zentodo --json backup list
|
|
|
251
426
|
| `wheel` | 滚轮视图配置 |
|
|
252
427
|
| `invite` | 邀请列表 |
|
|
253
428
|
| `app` | App 版本与服务器时间 |
|
|
254
|
-
| `pay` | 价格 /
|
|
429
|
+
| `pay` | 价格 / 支付订单(只返回订单串,不代扣) |
|
|
255
430
|
| `sync` | 同步编排 |
|
|
256
431
|
|
|
257
|
-
详细命令清单见 `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。
|
|
258
447
|
|
|
259
|
-
|
|
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
|
+
## 九、诊断命令
|
|
260
485
|
|
|
261
486
|
```bash
|
|
262
487
|
zentodo doctor # 配置 + 网络 + Token 体检
|
|
263
488
|
zentodo auth whoami # 查看当前身份
|
|
489
|
+
zentodo --version # CLI 版本
|
|
490
|
+
zentodo sync status # 每张表的本地 / 服务器版本对比
|
|
264
491
|
zentodo audit log # 本地命令历史
|
|
265
492
|
```
|
|
266
493
|
|
|
267
|
-
|
|
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
|
+
```
|
|
268
541
|
|
|
269
|
-
|
|
270
|
-
- 不要在 `error.code == ErrUnauthorized` 时继续重试同一操作,先告诉用户重新 `zentodo auth login-password`。
|
|
271
|
-
- 不要在未征得用户明确同意时调用任何带 `destructive` 标记的命令。
|
|
272
|
-
- 不要在日志或对话里回显用户密码、token、openid、umengToken。
|
|
273
|
-
- 不要假设后端字段格式:时间一律 ISO 8601 传入 CLI,由 CLI 转换;布尔值传 `true`/`false`,由 CLI 序列化。
|
|
542
|
+
完整参数见 `references/commands.md` 和 `references/tools.md`。
|