@dinoxx/dinox-cli 1.0.19 → 1.0.20

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/README.md CHANGED
@@ -1,740 +1,951 @@
1
- # Dinox CLI 使用说明(普通用户版)
1
+ # Dinox CLI 用户手册
2
2
 
3
- `dino` 是一个命令行工具,用来管理你的 Dinox 数据(笔记、标签、卡片盒等)。
3
+ `dino` 是 Dinox 的命令行工具,用来在本地管理和同步你的 Dinox 数据,包括:笔记、待办、标签、卡片盒、Prompt、知识图谱,以及给 AI 客户端使用的 MCP 服务。
4
4
 
5
- 如果你不熟悉技术细节也没关系,按这份文档一步一步操作就能用。
5
+ 这份 README 按“先上手、再进阶、最后查表”的顺序重写,尽量做到:
6
6
 
7
- ---
7
+ - 先让你快速跑通第一次使用
8
+ - 再教你完成最常见的日常操作
9
+ - 最后给出完整命令速查,方便回头查阅
10
+
11
+ 如果你只想尽快开始,先看“5 分钟快速上手”。
8
12
 
9
- ## 1. 先看你要做什么
13
+ ---
10
14
 
11
- 常见需求:
15
+ ## 目录
12
16
 
13
- 1. 登录账号:`dino auth login ...`
14
- 2. 同步数据:`dino sync`
15
- 3. 搜索笔记:`dino note search "关键词"`
16
- 4. 搜索待办:`dino todo search ...`
17
- 5. 新建笔记:`dino note create ...`
18
- 6. 新建标签:`dino tag add ...`
19
- 7. 新建卡片盒:`dino box add ...`
20
- 8. 看当前版本:`dino info`
17
+ - [1. 你可以用 Dinox CLI 做什么](#1-你可以用-dinox-cli-做什么)
18
+ - [2. 安装要求与安装方法](#2-安装要求与安装方法)
19
+ - [3. 5 分钟快速上手](#3-5-分钟快速上手)
20
+ - [4. 使用前必须知道的 6 个规则](#4-使用前必须知道的-6-个规则)
21
+ - [5. 日常操作教程](#5-日常操作教程)
22
+ - [6. 完整命令速查](#6-完整命令速查)
23
+ - [7. AI / Cursor / MCP 集成](#7-ai--cursor--mcp-集成)
24
+ - [8. 常见问题](#8-常见问题)
25
+ - [9. 配置文件、数据库与环境变量](#9-配置文件数据库与环境变量)
26
+ - [10. 如何查看帮助](#10-如何查看帮助)
21
27
 
22
28
  ---
23
29
 
24
- ## 2. 安装前准备
30
+ ## 1. 你可以用 Dinox CLI 做什么
25
31
 
26
- 你需要先安装 Node.js(建议 LTS,且版本 >= 20)。
32
+ Dinox CLI 适合这几类场景:
27
33
 
28
- 检查是否已安装:
34
+ 1. 在终端里登录 Dinox 账号,并把云端数据同步到本地
35
+ 2. 快速搜索、查看、创建、更新、删除笔记
36
+ 3. 从笔记里的任务列表中搜索待办,或追加/创建待办
37
+ 4. 维护标签、卡片盒、Prompt 等结构化信息
38
+ 5. 查询笔记之间的链接关系和知识图谱
39
+ 6. 给 Cursor / AI Agent 暴露 MCP 工具接口
40
+ 7. 用 `--format json` 输出结构化结果,方便脚本和 AI 调用
29
41
 
30
- ```bash
31
- node -v
32
- npm -v
33
- ```
42
+ 你可以把它理解为:
43
+
44
+ - 普通用户:一个更高效的 Dinox 数据管理工具
45
+ - 进阶用户:一个可脚本化的本地知识库命令行入口
46
+ - AI 用户:一个可被 MCP / 自动化工具调用的本地数据服务入口
34
47
 
35
48
  ---
36
49
 
37
- ## 3. 安装方法(macOS / Windows)
50
+ ## 2. 安装要求与安装方法
51
+
52
+ ### 2.1 系统要求
38
53
 
39
- ## 3.1 macOS
54
+ 安装前请先确认:
40
55
 
41
- ### 方式 A:普通用户推荐(全局安装)
56
+ - 已安装 Node.js 20 或更高版本
57
+ - 已安装 npm
58
+ - 你的系统可以正常执行全局 npm 命令
42
59
 
43
- 1. 安装 Node.js(若未安装):
60
+ 检查方法:
44
61
 
45
62
  ```bash
46
- brew install node
63
+ node -v
64
+ npm -v
47
65
  ```
48
66
 
49
- 2. 安装 CLI:
67
+ ### 2.2 安装 Dinox CLI
68
+
69
+ 推荐直接全局安装:
50
70
 
51
71
  ```bash
52
72
  npm install -g @dinoxx/dinox-cli
53
73
  ```
54
74
 
55
- 3. 验证:
75
+ 安装完成后,验证是否成功:
56
76
 
57
77
  ```bash
58
78
  dino info
59
79
  ```
60
80
 
61
- ---
62
-
63
- ## 3.2 Windows
81
+ 看到版本号就表示安装成功。
64
82
 
65
- ### 方式 A:普通用户推荐(全局安装)
83
+ > 说明:安装后通常可以使用 `dino` 或 `dinox` 两个命令名,本文统一使用 `dino`。
66
84
 
67
- 1. 安装 Node.js(若未安装):
85
+ ### 2.3 macOS 安装 Node.js(如果你还没装)
68
86
 
69
- ```powershell
70
- winget install OpenJS.NodeJS.LTS
87
+ ```bash
88
+ brew install node
71
89
  ```
72
90
 
73
- 2. 安装 CLI(PowerShell 或 CMD):
91
+ ### 2.4 Windows 安装 Node.js(如果你还没装)
92
+
93
+ PowerShell 中可使用:
74
94
 
75
95
  ```powershell
76
- npm install -g @dinoxx/dinox-cli
96
+ winget install OpenJS.NodeJS.LTS
77
97
  ```
78
98
 
79
- 3. 验证:
99
+ ### 2.5 更新 CLI
80
100
 
81
- ```powershell
82
- dino info
101
+ 后续如果要更新到最新版本,直接执行:
102
+
103
+ ```bash
104
+ dino update
83
105
  ```
84
106
 
107
+ 它会自动根据你当前的安装方式选择合适的包管理器执行更新。
108
+
85
109
  ---
86
110
 
87
- ## 4. 第一次使用(建议照抄)
111
+ ## 3. 5 分钟快速上手
88
112
 
89
- ## 第 1 步:登录
113
+ 下面是第一次使用最推荐的顺序。你可以直接照着执行。
114
+
115
+ ### 第 1 步:登录
90
116
 
91
117
  ```bash
92
- dino auth login "<你的token>"
118
+ dino auth login "<你的 token>"
93
119
  ```
94
120
 
95
- ## 第 2 步:同步
121
+ 说明:
122
+
123
+ - 这里填的是登录 token 本体
124
+ - 不要加 `Bearer ` 前缀
125
+ - 登录时 CLI 会顺便验证连接是否可用
126
+
127
+ ### 第 2 步:同步数据到本地
96
128
 
97
129
  ```bash
98
130
  dino sync
99
131
  ```
100
132
 
101
- ## 第 3 步:看状态(可选)
133
+ 这一步会把 Dinox 数据同步到本地 SQLite 数据库,后续很多查询都会直接使用本地缓存。
134
+
135
+ ### 第 3 步:确认当前状态
102
136
 
103
137
  ```bash
104
138
  dino auth status
105
139
  ```
106
140
 
141
+ 你会看到当前是否已登录、本地数据库位置、最近同步状态等信息。
142
+
143
+ ### 第 4 步:搜索一条笔记试试
144
+
145
+ ```bash
146
+ dino note search "AI"
147
+ ```
148
+
149
+ ### 第 5 步:新建一条笔记试试
150
+
151
+ ```bash
152
+ dino note create \
153
+ --title "今天的记录" \
154
+ --content "# 标题\n\n这里是正文" \
155
+ --type note
156
+ ```
157
+
158
+ 如果你能顺利完成上面 5 步,说明 CLI 已经可以正常使用。
159
+
107
160
  ---
108
161
 
109
- ## 5. 最常用命令
162
+ ## 4. 使用前必须知道的 6 个规则
163
+
164
+ 很多问题都来自对 CLI 约定不熟。先掌握下面 6 条,会少踩很多坑。
165
+
166
+ ### 规则 1:很多命令默认会优先使用本地数据库
110
167
 
111
- ## 5.1 笔记
168
+ `dino sync` 会把云端数据同步到本地。后续大多数查询命令会基于本地缓存工作。
112
169
 
113
- 搜索笔记:
170
+ 如果你希望明确只使用本地缓存、不触发联网/同步,可以加:
114
171
 
115
172
  ```bash
116
- dino note search "AI"
117
- dino note search "AI" --days 7
118
- dino note search "AI" --from 2026-02-01 --to 2026-02-28
119
- dino note search "AI" --boxes "Inbox"
120
- dino note search --sql 'type = "crawl" AND zettel_boxes IN ("Inbox","Project")'
173
+ --offline
121
174
  ```
122
175
 
123
- 搜索待办(基于 `image_detail` 的 taskList):
176
+ 例如:
124
177
 
125
178
  ```bash
126
- dino todo search
127
- dino todo search "付款"
128
- dino todo search "付款" --status uncompleted --tags "工作,财务"
129
- dino todo search --from 2026-03-01 --to 2026-03-07 --limit 100
179
+ dino note search "项目复盘" --offline
130
180
  ```
131
181
 
132
- 追加待办到现有笔记:
182
+ 适用场景:
183
+
184
+ - 网络不稳定
185
+ - 只想查本地缓存
186
+ - 你已经先手动执行过 `dino sync`
187
+
188
+ ### 规则 2:给脚本或 AI 用时,推荐统一加 `--format json`
189
+
190
+ 例如:
133
191
 
134
192
  ```bash
135
- dino todo append "补交报销单"
136
- dino todo append --note-id <note-id> --task "补交报销单" --task "整理发票"
137
- dino todo append --tasks '["补交报销单","整理发票"]'
193
+ dino note search "AI" --format json
138
194
  ```
139
195
 
140
- 创建新的待办笔记:
196
+ 说明:
197
+
198
+ - `--format json`:推荐的结构化输出
199
+ - `--format yaml`:也支持
200
+ - `--json`:历史兼容参数,等价于 `--format yaml`
201
+
202
+ ### 规则 3:很多写操作都支持 `--dry-run`
203
+
204
+ 如果你想先看“将会发生什么”,但暂时不真正写入数据,可以用:
141
205
 
142
206
  ```bash
143
- dino todo create "补交报销单"
144
- dino todo create --task "补交报销单" --task "整理发票" --title "本周财务待办"
145
- dino todo create --tasks @./todo.txt
207
+ --dry-run
146
208
  ```
147
209
 
148
- 更新待办完成状态:
210
+ 例如:
149
211
 
150
212
  ```bash
151
- dino todo update <task-id> --status completed
152
- dino todo update <task-id> --status uncompleted
213
+ dino note delete <note-id> --dry-run
153
214
  ```
154
215
 
155
- 创建笔记:
216
+ 这对删除、更新、批量修改尤其有用。
217
+
218
+ ### 规则 4:很多参数支持直接从文件读取
219
+
220
+ 凡是写成 `<string|@file>` 或 `<string|@file>` 的参数,通常都支持 `@文件路径` 的写法。
221
+
222
+ 例如从文件读取笔记正文:
156
223
 
157
224
  ```bash
158
- dino note create \
159
- --title "今天的记录" \
160
- --content "# 标题\n\n正文内容"
225
+ dino note create --title "读书笔记" --content @./note.md --type note
161
226
  ```
162
227
 
163
- 按 ID 查看:
228
+ 例如从文件读取待办列表:
164
229
 
165
230
  ```bash
166
- dino note get <note-id>
167
- dino note detail <note-id>
231
+ dino todo create --tasks @./todo.txt
168
232
  ```
169
233
 
170
- 删除笔记(软删除):
234
+ ### 规则 5:列表参数通常有 3 种写法
235
+
236
+ 像 `--tags`、`--boxes`、`--tasks`、`--ids` 这类列表参数,通常支持:
237
+
238
+ 1. JSON 数组
239
+ 2. 逗号分隔
240
+ 3. 换行分隔
241
+
242
+ 例如这三种都可以:
171
243
 
172
244
  ```bash
173
- dino note delete <note-id>
245
+ --tags '["工作","项目A"]'
246
+ --tags "工作,项目A"
247
+ --tags @./tags.txt
174
248
  ```
175
249
 
176
- ## 5.2 标签
250
+ ### 规则 6:标签和卡片盒必须先存在,笔记才能引用它们
177
251
 
178
- 列出标签:
252
+ 例如你先创建笔记时用了一个不存在的标签:
179
253
 
180
254
  ```bash
181
- dino tag list
255
+ dino note create --title "测试" --content "正文" --tags "工作/项目A"
182
256
  ```
183
257
 
184
- 新增标签(两种写法都可以):
258
+ 如果这个标签还不存在,就会报错。正确顺序通常是:
185
259
 
186
260
  ```bash
187
261
  dino tag add "工作/项目A"
188
- dino tag add --name "工作/项目A" --emoji "🧠"
262
+ dino box add "Inbox"
263
+ dino note create --title "测试" --content "正文" --tags "工作/项目A" --boxes "Inbox" --type note
189
264
  ```
190
265
 
191
- ## 5.3 卡片盒
266
+ ---
267
+
268
+ ## 5. 日常操作教程
269
+
270
+ 这一部分按真实使用场景来写。你不需要一开始记住所有命令,先会做日常任务就够了。
192
271
 
193
- 列出卡片盒:
272
+ ### 5.1 搜索笔记
273
+
274
+ #### 按关键词搜索
194
275
 
195
276
  ```bash
196
- dino box list
277
+ dino note search "AI"
197
278
  ```
198
279
 
199
- 新增卡片盒(两种写法都可以):
280
+ #### 搜索最近 7 天的笔记
200
281
 
201
282
  ```bash
202
- dino box add "Inbox"
203
- dino box add --name "Inbox" --description "用于存放待整理的想法和资料"
283
+ dino note search "AI" --days 7
204
284
  ```
205
285
 
206
- `--description` 很有用:它能帮助 AI 更准确地把笔记分到正确卡片盒。
207
-
208
- ## 5.4 Prompt
286
+ #### 按时间范围搜索
209
287
 
210
288
  ```bash
211
- dino prompt list
212
- dino prompt add --name "周报助手" --prompt "请基于本周笔记输出一份简洁周报"
289
+ dino note search "AI" --from 2026-03-01 --to 2026-03-31
213
290
  ```
214
291
 
215
- ## 5.5 配置
292
+ #### 按标签表达式搜索
293
+
294
+ ```bash
295
+ dino note search --tags "(work OR life) AND NOT archived"
296
+ ```
216
297
 
217
- 查看全部配置:
298
+ #### 按卡片盒搜索
218
299
 
219
300
  ```bash
220
- dino config get
301
+ dino note search --boxes "Inbox,Project"
221
302
  ```
222
303
 
223
- 查看某一项:
304
+ #### 只看已收藏或未收藏笔记
224
305
 
225
306
  ```bash
226
- dino config get sync.timeoutMs
307
+ dino note search --starred true
308
+ dino note search --starred false
227
309
  ```
228
310
 
229
- 设置某一项:
311
+ #### 分页与字段裁剪
230
312
 
231
313
  ```bash
232
- dino config set sync.timeoutMs 20000
314
+ dino note search "AI" --limit 20 --offset 0
315
+ dino note search "AI" --fields id,title,summary,created_at
233
316
  ```
234
317
 
235
- ---
318
+ #### 高级 SQL 风格筛选
236
319
 
237
- ## 6. macOS 和 Windows 的使用差异
320
+ ```bash
321
+ dino note search --sql 'type = "crawl" AND zettel_boxes IN ("Inbox","Project")'
322
+ ```
238
323
 
239
- ## 6.1 路径位置不同
324
+ 适合场景:
240
325
 
241
- 配置文件:
326
+ - 你已经很清楚要筛什么字段
327
+ - 希望做更复杂的组合条件查询
242
328
 
243
- 1. macOS: `~/Library/Application Support/dinox/config.json`
244
- 2. Windows: `%APPDATA%\dinox\config.json`
329
+ > 提醒:`--sql` 只支持只读查询条件,不是让你执行任意 SQL。
245
330
 
246
- ## 6.2 多行命令写法不同
331
+ ### 5.2 查看笔记内容
247
332
 
248
- macOS / Linux(bash/zsh)用 `\` 续行:
333
+ #### 只看笔记基础信息
249
334
 
250
335
  ```bash
251
- dino note create \
252
- --title "标题" \
253
- --content "正文"
336
+ dino note get <note-id>
254
337
  ```
255
338
 
256
- Windows PowerShell 用反引号 `` ` `` 续行:
339
+ #### 只拿轻量上下文(适合 AI / 脚本)
257
340
 
258
- ```powershell
259
- dino note create `
260
- --title "标题" `
261
- --content "正文"
341
+ ```bash
342
+ dino note get <note-id> --context-only --format json
262
343
  ```
263
344
 
264
- ## 6.3 `@file` 参数在 Windows 建议加引号
345
+ #### 预览正文前几行
346
+
347
+ ```bash
348
+ dino note preview <note-id>
349
+ dino note preview <note-id> --lines 30
350
+ ```
265
351
 
266
- 比如从文件读取正文:
352
+ #### 查看完整详情
267
353
 
268
354
  ```bash
269
- dino note create --title "测试" --content @./note.md
355
+ dino note detail <note-id>
270
356
  ```
271
357
 
272
- 在 PowerShell 建议写成:
358
+ #### 批量查看多条笔记详情
273
359
 
274
- ```powershell
275
- dino note create --title "测试" --content "@.\note.md"
360
+ ```bash
361
+ dino note detail --ids @./note-ids.txt
276
362
  ```
277
363
 
278
- 这样更稳,不容易被 shell 误解析。
364
+ ### 5.3 创建笔记
279
365
 
280
- ---
366
+ #### 创建最简单的一条笔记
367
+
368
+ ```bash
369
+ dino note create \
370
+ --title "会议记录" \
371
+ --content "今天讨论了发布计划" \
372
+ --type note
373
+ ```
281
374
 
282
- ## 7. 常见问题
375
+ #### 从 Markdown 文件创建
283
376
 
284
- ## Q1:报错 `Missing persisted userId. Run dino auth login first.`
377
+ ```bash
378
+ dino note create \
379
+ --title "周报" \
380
+ --content @./weekly.md \
381
+ --type note
382
+ ```
285
383
 
286
- 你还没有完成登录。执行:
384
+ #### 同时设置标签和卡片盒
287
385
 
288
386
  ```bash
289
- dino auth login "<token>"
387
+ dino note create \
388
+ --title "项目复盘" \
389
+ --content @./review.md \
390
+ --type note \
391
+ --tags "工作/项目A,复盘" \
392
+ --boxes "Project"
290
393
  ```
291
394
 
292
- ## Q2:创建笔记时报 `Unknown tags` 或 `Unknown zettel box names`
395
+ 注意:
396
+
397
+ - `--title` 和 `--content` 是必填项
398
+ - `--type` 可选值只有 `note` 和 `crawl`
399
+ - 如果你不写 `--type`,默认是 `crawl`
400
+ - 如果你想写普通笔记,建议明确加 `--type note`
293
401
 
294
- 说明你填的标签/卡片盒不存在,先创建再重试:
402
+ #### 创建前先预演
295
403
 
296
404
  ```bash
297
- dino tag add "你的标签"
298
- dino box add "你的卡片盒"
405
+ dino note create \
406
+ --title "测试笔记" \
407
+ --content "正文" \
408
+ --type note \
409
+ --dry-run
299
410
  ```
300
411
 
301
- ---
412
+ ### 5.4 更新笔记标签、卡片盒、收藏状态
302
413
 
303
- ## 8. 完整命令参数参考
414
+ #### 更新单条笔记的标签
304
415
 
305
- ## 8.1 全局参数(适用于 CLI)
416
+ ```bash
417
+ dino note update <note-id> --tags "工作,AI"
418
+ ```
306
419
 
307
- 以下参数可放在命令前后使用,例如:`dino --format json auth status`。
420
+ #### 更新单条笔记的卡片盒
308
421
 
309
- | 参数 | 类型 | 说明 |
310
- | --- | --- | --- |
311
- | `--json` | flag | 兼容旧行为,输出 machine-readable YAML(历史保留写法)。 |
312
- | `--format <yaml\|json>` | string | 结构化输出格式。推荐 AI / 脚本使用 `--format json`。 |
313
- | `--offline` | flag | 跳过 connect/sync,仅用本地缓存(仅被支持该参数的命令读取)。 |
314
- | `--sync-timeout <ms>` | integer | 覆盖连接/同步超时毫秒,必须是正整数。 |
315
- | `--verbose` | flag | 预留 verbose 开关。 |
422
+ ```bash
423
+ dino note update <note-id> --boxes "Inbox"
424
+ ```
316
425
 
317
- ## 8.2 `auth` 命令
426
+ #### 设置收藏状态
318
427
 
319
- ### `dino auth login <token>`
428
+ ```bash
429
+ dino note update <note-id> --starred true
430
+ dino note update <note-id> --starred false
431
+ ```
320
432
 
321
- 保存授权信息并验证连接。
433
+ #### 使用专门的收藏命令
322
434
 
323
- | 参数 | 必填 | 说明 |
324
- | --- | --- | --- |
325
- | `<token>` | 是 | 登录 token,直接传 token 字符串(不需要 `Bearer` 前缀)。 |
435
+ ```bash
436
+ dino note star <note-id>
437
+ dino note unstar <note-id>
438
+ ```
326
439
 
327
- 支持全局参数:`--json`、`--format`、`--sync-timeout`
440
+ #### 批量更新多条笔记
328
441
 
329
- ### `dino auth logout`
442
+ ```bash
443
+ dino note update --ids @./note-ids.txt --boxes "Project"
444
+ dino note star --ids @./note-ids.txt
445
+ ```
330
446
 
331
- 清理已保存登录信息。
447
+ 重要说明:
332
448
 
333
- | 选项 | 必填 | 说明 |
334
- | --- | --- | --- |
335
- | `--clear-local-db` | 否 | 同时删除本地 SQLite 数据库。 |
449
+ - `note update` 是“全量替换”标签/卡片盒,不是追加
450
+ - 如果你传 `--tags "工作,AI"`,最终标签就会变成这两个
451
+ - 如果你想清空标签或卡片盒,可以传 `[]`
336
452
 
337
- ### `dino auth status`
453
+ 例如:
338
454
 
339
- 查看当前登录与同步状态。
455
+ ```bash
456
+ dino note update <note-id> --tags '[]'
457
+ dino note update <note-id> --boxes '[]'
458
+ ```
340
459
 
341
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
460
+ ### 5.5 删除笔记
342
461
 
343
- ## 8.3 `sync` 命令
462
+ ```bash
463
+ dino note delete <note-id>
464
+ ```
344
465
 
345
- ### `dino sync`
466
+ 说明:
346
467
 
347
- 连接并执行同步。
468
+ - 这是软删除,不是物理彻底抹除
469
+ - 建议先加 `--dry-run` 再执行正式删除
348
470
 
349
- 支持全局参数:`--json`、`--format`、`--sync-timeout`
471
+ ```bash
472
+ dino note delete <note-id> --dry-run
473
+ ```
350
474
 
351
- ## 8.4 `schema` 命令
475
+ ### 5.6 管理待办任务
352
476
 
353
- ### `dino schema [path]`
477
+ Dinox 的待办来自笔记内容中的任务列表。CLI 提供了 4 个最常用动作:搜索、追加、创建、更新状态。
354
478
 
355
- 查看命令 schema,了解参数、风险级别、输出结构与示例。推荐 AI / 脚本在不确定调用方式时先查看。
479
+ #### 搜索待办
356
480
 
357
- | 参数 | 必填 | 说明 |
358
- | --- | --- | --- |
359
- | `[path]` | 否 | 命令路径,例如 `note.search`、`todo.update`、`sync`。不传则列出所有可用 schema。 |
481
+ ```bash
482
+ dino todo search
483
+ dino todo search "付款"
484
+ dino todo search "付款" --status uncompleted
485
+ dino todo search --from 2026-03-01 --to 2026-03-07 --limit 100
486
+ ```
360
487
 
361
- 支持全局参数:`--json`、`--format`
488
+ #### 按标签筛选待办
362
489
 
363
- 示例:
490
+ ```bash
491
+ dino todo search --tags "工作,财务"
492
+ ```
493
+
494
+ #### 创建一条新的待办笔记
364
495
 
365
496
  ```bash
366
- dino schema
367
- dino schema note.search
368
- dino schema note.search --format json
497
+ dino todo create "补交报销单"
369
498
  ```
370
499
 
371
- ## 8.5 `note` 命令
500
+ #### 一次创建多条待办
372
501
 
373
- ### `dino note search [query]`
502
+ ```bash
503
+ dino todo create --task "补交报销单" --task "整理发票"
504
+ dino todo create --tasks '["补交报销单","整理发票"]'
505
+ dino todo create --tasks @./todo.txt --title "本周财务待办"
506
+ ```
374
507
 
375
- 按关键词/标签/创建时间搜索笔记。
508
+ #### 追加待办到现有笔记
376
509
 
377
- | 参数 | 必填 | 说明 |
378
- | --- | --- | --- |
379
- | `[query]` | 否 | 搜索关键词。可为空。 |
510
+ ```bash
511
+ dino todo append "补交报销单"
512
+ dino todo append --note-id <note-id> --task "补交报销单" --task "整理发票"
513
+ dino todo append --note-id <note-id> --tasks @./todo.txt
514
+ ```
380
515
 
381
- | 选项 | 必填 | 说明 |
382
- | --- | --- | --- |
383
- | `--tags <expr>` | 否 | 标签表达式,支持 `AND` / `OR` / `NOT` 与括号。 |
384
- | `--from <date>` | 否 | 创建时间起点,支持 `YYYY-MM-DD` 或 ISO datetime。 |
385
- | `--to <date>` | 否 | 创建时间终点,支持 `YYYY-MM-DD` 或 ISO datetime。 |
386
- | `--days <n>` | 否 | 最近 N 天(按 `created_at`),不能与 `--from/--to` 同时使用。 |
387
- | `--boxes <string\|@file>` | 否 | 按卡片盒名称筛选(支持 JSON 数组或逗号/换行分隔);会自动解析为 box id 查询。 |
388
- | `--sql <expr>` | 否 | SQL 风格条件表达式;仅支持字段 `id/content_md/summary/tags/zettel_boxes/created_at/type`,其中 `zettel_boxes` 按名称自动转 id。只支持只读 WHERE 条件(禁止 `INSERT/UPDATE/DELETE`、注释和多语句)。 |
389
- | `--include-deleted` | 否 | 包含软删除笔记。 |
516
+ 说明:
390
517
 
391
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
518
+ - 如果不传 `--note-id`,CLI 会自动选一条“适合追加任务”的最近笔记
519
+ - 如果该笔记末尾已有任务列表,会直接并入;没有则会新建任务列表
392
520
 
393
- ### `dino note get <id>`
521
+ #### 更新待办状态
394
522
 
395
- 按 ID 获取笔记基础信息。
523
+ ```bash
524
+ dino todo update <task-id> --status completed
525
+ dino todo update <task-id> --status uncompleted
526
+ ```
527
+
528
+ 兼容写法也支持:
396
529
 
397
- | 参数 | 必填 | 说明 |
398
- | --- | --- | --- |
399
- | `[id]` | 否 | 单个笔记 ID(可与 `--ids` 组合,去重后批量更新)。 |
530
+ ```bash
531
+ dino todo update <task-id> --status done
532
+ dino todo update <task-id> --status false
533
+ ```
400
534
 
401
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
535
+ 但为了可读性,推荐始终使用:
402
536
 
403
- ### `dino note detail [id]`
537
+ - `completed`
538
+ - `uncompleted`
404
539
 
405
- 按 ID 获取笔记完整详情,支持批量读取。
540
+ ### 5.7 管理标签
406
541
 
407
- | 参数 | 必填 | 说明 |
408
- | --- | --- | --- |
409
- | `[id]` | 否 | 单个笔记 ID(可与 `--ids` 组合,去重后批量读取)。 |
542
+ #### 查看全部标签
410
543
 
411
- | 选项 | 必填 | 说明 |
412
- | --- | --- | --- |
413
- | `--ids <string\|@file>` | 否 | 笔记 ID 列表(JSON 数组或逗号/换行分隔)。 |
544
+ ```bash
545
+ dino tag list
546
+ ```
414
547
 
415
- 说明:`[id]` 与 `--ids` 至少提供一个。
548
+ #### 创建标签
416
549
 
417
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
550
+ ```bash
551
+ dino tag add "工作/项目A"
552
+ dino tag add --name "工作/项目A" --emoji "🧠"
553
+ ```
418
554
 
419
- ### `dino note create --title <string> --content <string|@file> [options]`
555
+ 说明:
420
556
 
421
- 创建笔记。
557
+ - 支持层级标签,如 `工作/项目A`
558
+ - 已删除但同名的标签,CLI 会尽量做恢复而不是重复新建
422
559
 
423
- | 选项 | 必填 | 说明 |
424
- | --- | --- | --- |
425
- | `--title <string>` | 是 | 笔记标题。 |
426
- | `--content <string|@file>` | 是 | Markdown 内容,可传 `@文件路径`。 |
427
- | `--type <note\|crawl>` | 否 | 笔记类型,默认 `crawl`。 |
428
- | `--tags <string\|@file>` | 否 | 标签列表(JSON 数组或逗号/换行分隔)。 |
429
- | `--boxes <string\|@file>` | 否 | 卡片盒名称列表(JSON 数组或逗号/换行分隔)。 |
430
- | `--dry-run` | 否 | 仅预览将要创建的笔记,不实际写入。 |
560
+ ### 5.8 管理卡片盒
431
561
 
432
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
562
+ #### 查看全部卡片盒
433
563
 
434
- ### `dino note update [id] [options]`
564
+ ```bash
565
+ dino box list
566
+ ```
435
567
 
436
- 按 ID 更新笔记标签/卡片盒(全量替换)。
568
+ #### 创建卡片盒
437
569
 
438
- | 参数 | 必填 | 说明 |
439
- | --- | --- | --- |
440
- | `<id>` | 是 | 笔记 ID。 |
570
+ ```bash
571
+ dino box add "Inbox"
572
+ dino box add --name "Inbox" --description "用于存放待整理的想法和资料"
573
+ ```
441
574
 
442
- | 选项 | 必填 | 说明 |
443
- | --- | --- | --- |
444
- | `--ids <string\|@file>` | 否 | 批量更新的笔记 ID 列表(JSON 数组或逗号/换行分隔)。 |
445
- | `--tags <string\|@file>` | 否 | 标签列表(JSON 数组或逗号/换行分隔)。传 `[]` 可清空标签。 |
446
- | `--boxes <string\|@file>` | 否 | 卡片盒名称列表(JSON 数组或逗号/换行分隔)。传 `[]` 可清空卡片盒。 |
447
- | `--starred <true\|false>` | 否 | 设置收藏状态。 |
448
- | `--dry-run` | 否 | 仅预览将要执行的变更,不实际写入。 |
575
+ 说明:
449
576
 
450
- 说明:`<id>` 与 `--ids` 至少提供一个;`--tags` 与 `--boxes` 至少提供一个。
577
+ - `--description` 很值得写
578
+ - 这段说明会帮助 AI 和你自己更准确地理解这个卡片盒的用途
451
579
 
452
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
580
+ ### 5.9 管理 Prompt
453
581
 
454
- ### `dino note delete <id>`
582
+ #### 查看全部 Prompt
455
583
 
456
- 软删除笔记(`is_del=1`)。
584
+ ```bash
585
+ dino prompt list
586
+ ```
457
587
 
458
- | 参数 | 必填 | 说明 |
459
- | --- | --- | --- |
460
- | `<id>` | 是 | 笔记 ID。 |
588
+ #### 新建 Prompt
461
589
 
462
- | 选项 | 必填 | 说明 |
463
- | --- | --- | --- |
464
- | `--dry-run` | 否 | 仅预览将要执行的删除,不实际写入。 |
590
+ ```bash
591
+ dino prompt add --name "周报助手" --prompt "请基于本周笔记输出一份简洁周报"
592
+ ```
465
593
 
466
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
594
+ ### 5.10 查看版本与配置
467
595
 
468
- ## 8.6 `tag` 命令
596
+ #### 查看版本信息
469
597
 
470
- ### `dino tag list`
598
+ ```bash
599
+ dino info
600
+ ```
471
601
 
472
- 列出标签。
602
+ #### 查看全部可读配置
473
603
 
474
- | 选项 | 必填 | 说明 |
475
- | --- | --- | --- |
476
- | `--json` | 否 | 兼容旧行为,输出 machine-readable YAML。 |
477
- | `--format <yaml\|json>` | 否 | 结构化输出格式,推荐 AI / 脚本使用 `json`。 |
478
- | `--offline` | 否 | 跳过 connect/sync,仅用本地缓存。 |
479
- | `--sync-timeout <ms>` | 否 | 覆盖连接/同步超时毫秒。 |
604
+ ```bash
605
+ dino config get
606
+ ```
480
607
 
481
- ### `dino tag add [name] [options]`
608
+ #### 查看单个配置项
482
609
 
483
- 新增标签。
610
+ ```bash
611
+ dino config get sync.timeoutMs
612
+ ```
484
613
 
485
- | 参数 | 必填 | 说明 |
486
- | --- | --- | --- |
487
- | `[name]` | 否 | 标签名/路径(支持斜杠层级)。 |
614
+ #### 设置同步超时
488
615
 
489
- | 选项 | 必填 | 说明 |
490
- | --- | --- | --- |
491
- | `--name <string>` | 否 | 标签名/路径,可替代位置参数 `[name]`。 |
492
- | `--emoji <string>` | 否 | 标签 emoji。 |
493
- | `--json` | 否 | 兼容旧行为,输出 machine-readable YAML。 |
494
- | `--format <yaml\|json>` | 否 | 结构化输出格式,推荐 AI / 脚本使用 `json`。 |
495
- | `--dry-run` | 否 | 仅预览将要创建或恢复的标签,不实际写入。 |
496
- | `--offline` | 否 | 跳过 connect/sync,仅用本地缓存。 |
497
- | `--sync-timeout <ms>` | 否 | 覆盖连接/同步超时毫秒。 |
616
+ ```bash
617
+ dino config set sync.timeoutMs 20000
618
+ ```
498
619
 
499
- 说明:`[name]` 与 `--name` 至少提供一个;若两者都提供且值不同会报错。
620
+ 目前最常用、也是正式开放可写的配置项就是:
500
621
 
501
- ## 8.7 `box` 命令
622
+ - `sync.timeoutMs`
502
623
 
503
- ### `dino box list`
624
+ ---
504
625
 
505
- 列出卡片盒。
626
+ ## 6. 完整命令速查
506
627
 
507
- | 选项 | 必填 | 说明 |
508
- | --- | --- | --- |
509
- | `--offline` | 否 | 跳过 connect/sync,仅用本地缓存。 |
510
- | `--sync-timeout <ms>` | 否 | 覆盖连接/同步超时毫秒。 |
628
+ 这一节适合“我已经知道要做什么,只想确认命令怎么写”。
511
629
 
512
- ### `dino box add [name] [options]`
630
+ ### 6.1 全局参数
513
631
 
514
- 新增卡片盒。
632
+ 这些参数可以放在很多命令前后使用:
515
633
 
516
- | 参数 | 必填 | 说明 |
517
- | --- | --- | --- |
518
- | `[name]` | 否 | 卡片盒名称。 |
634
+ | 参数 | 说明 |
635
+ | --- | --- |
636
+ | `--format json` | 推荐的结构化输出格式,适合脚本和 AI |
637
+ | `--format yaml` | YAML 结构化输出 |
638
+ | `--json` | 历史兼容写法,等价于 `--format yaml` |
639
+ | `--offline` | 跳过联网/同步,只使用本地缓存 |
640
+ | `--sync-timeout <ms>` | 覆盖同步超时时间,单位毫秒 |
641
+ | `--verbose` | 预留的详细日志开关 |
519
642
 
520
- | 选项 | 必填 | 说明 |
521
- | --- | --- | --- |
522
- | `--name <string>` | 否 | 卡片盒名称,可替代位置参数 `[name]`。 |
523
- | `--description <string>` | 否 | 用途说明(可帮助 AI 路由笔记)。 |
524
- | `--color <string>` | 否 | 卡片盒颜色。 |
525
- | `--json` | 否 | 兼容旧行为,输出 machine-readable YAML。 |
526
- | `--format <yaml\|json>` | 否 | 结构化输出格式,推荐 AI / 脚本使用 `json`。 |
527
- | `--dry-run` | 否 | 仅预览将要创建或恢复的卡片盒,不实际写入。 |
528
- | `--offline` | 否 | 跳过 connect/sync,仅用本地缓存。 |
529
- | `--sync-timeout <ms>` | 否 | 覆盖连接/同步超时毫秒。 |
643
+ 示例:
530
644
 
531
- 说明:`[name]` 与 `--name` 至少提供一个;若两者都提供且值不同会报错。
645
+ ```bash
646
+ dino --format json note search "AI"
647
+ dino note search "AI" --offline --format json
648
+ ```
532
649
 
533
- ## 8.8 `prompt` 命令
650
+ ### 6.2 `auth`:登录与状态
534
651
 
535
- ### `dino prompt list`
652
+ ```bash
653
+ dino auth login "<token>"
654
+ dino auth status
655
+ dino auth logout
656
+ dino auth logout --clear-local-db
657
+ ```
536
658
 
537
- 列出 Prompt(`name` 与 `prompt`)。
659
+ 用途说明:
538
660
 
539
- | 选项 | 必填 | 说明 |
540
- | --- | --- | --- |
541
- | `--offline` | 否 | 跳过 connect/sync,仅用本地缓存。 |
542
- | `--sync-timeout <ms>` | 否 | 覆盖连接/同步超时毫秒。 |
661
+ - `login`:保存 token 并验证连接
662
+ - `status`:查看登录状态、本地库位置、同步状态
663
+ - `logout`:退出登录
664
+ - `logout --clear-local-db`:退出并删除本地 SQLite 缓存
543
665
 
544
- ### `dino prompt add [options]`
666
+ ### 6.3 `sync`:手动同步
545
667
 
546
- 新增 Prompt(写入 `c_cmd`)。
668
+ ```bash
669
+ dino sync
670
+ dino sync --sync-timeout 600000
671
+ ```
547
672
 
548
- | 选项 | 必填 | 说明 |
549
- | --- | --- | --- |
550
- | `--name <string>` | 是 | Prompt 名称。 |
551
- | `--prompt <string>` | 是 | Prompt 文本内容。 |
552
- | `--json` | 否 | 兼容旧行为,输出 machine-readable YAML。 |
553
- | `--format <yaml\|json>` | 否 | 结构化输出格式,推荐 AI / 脚本使用 `json`。 |
554
- | `--dry-run` | 否 | 仅预览将要创建或恢复的 Prompt,不实际写入。 |
555
- | `--offline` | 否 | 跳过 connect/sync,仅用本地缓存。 |
556
- | `--sync-timeout <ms>` | 否 | 覆盖连接/同步超时毫秒。 |
673
+ 用途说明:
557
674
 
558
- ## 8.9 `config` 命令
675
+ - 主动执行一次连接与同步
676
+ - 首次使用、网络恢复后、或想刷新本地缓存时最常用
559
677
 
560
- ### `dino config get [key]`
678
+ ### 6.4 `note`:笔记管理
561
679
 
562
- 读取配置。推荐 AI / 脚本使用 `dino config get [key] --format json`。
680
+ #### 搜索与查看
563
681
 
564
- | 参数 | 必填 | 说明 |
565
- | --- | --- | --- |
566
- | `[key]` | 否 | 配置键(点路径);不传则返回全部配置。 |
682
+ ```bash
683
+ dino note search [query]
684
+ dino note get <id>
685
+ dino note get <id> --context-only
686
+ dino note preview <id> --lines 30
687
+ dino note detail <id>
688
+ dino note detail --ids @./ids.txt
689
+ ```
567
690
 
568
- 可读 key:
691
+ #### 创建与修改
569
692
 
570
- ```text
571
- sync.timeoutMs
693
+ ```bash
694
+ dino note create --title "标题" --content @./note.md --type note
695
+ dino note update <id> --tags "工作,AI"
696
+ dino note update <id> --boxes "Inbox"
697
+ dino note update <id> --starred true
698
+ dino note star <id>
699
+ dino note unstar <id>
700
+ dino note delete <id>
572
701
  ```
573
702
 
574
- ### `dino config set <key> <value>`
703
+ 重点参数:
704
+
705
+ - `note search`
706
+ - `--tags <expr>`:标签表达式
707
+ - `--from <date>` / `--to <date>` / `--days <n>`:时间过滤
708
+ - `--starred <true|false>`:按收藏状态过滤
709
+ - `--boxes <list>`:按卡片盒过滤
710
+ - `--sql <expr>`:高级筛选
711
+ - `--limit <n>` / `--offset <n>`:分页
712
+ - `--fields <list>`:裁剪输出字段
713
+ - `--include-deleted`:包含软删除笔记
714
+ - `note create`
715
+ - `--title`:必填
716
+ - `--content`:必填,可用 `@文件`
717
+ - `--type <note|crawl>`:默认 `crawl`
718
+ - `--tags` / `--boxes`
719
+ - `--dry-run`
720
+ - `note update`
721
+ - `[id]` 或 `--ids`
722
+ - `--tags` / `--boxes` / `--starred`
723
+ - `--dry-run`
724
+
725
+ ### 6.5 `todo`:待办管理
575
726
 
576
- 写入配置。
727
+ ```bash
728
+ dino todo search [query]
729
+ dino todo append [task]
730
+ dino todo create [task]
731
+ dino todo update <task-id> --status completed
732
+ ```
577
733
 
578
- | 参数 | 必填 | 说明 |
579
- | --- | --- | --- |
580
- | `<key>` | 是 | 配置键(点路径)。 |
581
- | `<value>` | 是 | 配置值。 |
734
+ 重点参数:
735
+
736
+ - `todo search`
737
+ - `--status <all|completed|uncompleted>`
738
+ - `--tags <list>`
739
+ - `--from <date>` / `--to <date>` / `--days <n>`
740
+ - `--limit <n>`
741
+ - `--scan-limit <n>`
742
+ - `--include-deleted`
743
+ - `todo append`
744
+ - `[task]` / `--task` / `--tasks`
745
+ - `--note-id <id>`
746
+ - `--dry-run`
747
+ - `todo create`
748
+ - `[task]` / `--task` / `--tasks`
749
+ - `--title <string>`
750
+ - `--dry-run`
751
+ - `todo update`
752
+ - `--status <status>` 必填
753
+ - `--dry-run`
754
+
755
+ ### 6.6 `tag`:标签管理
756
+
757
+ ```bash
758
+ dino tag list
759
+ dino tag add "工作/项目A"
760
+ dino tag add --name "工作/项目A" --emoji "🧠"
761
+ ```
582
762
 
583
- 可写 key:
763
+ ### 6.7 `box`:卡片盒管理
584
764
 
585
- ```text
586
- sync.timeoutMs (必须为正整数)
765
+ ```bash
766
+ dino box list
767
+ dino box add "Inbox"
768
+ dino box add --name "Inbox" --description "用于存放待整理资料"
587
769
  ```
588
770
 
589
- ## 8.10 `info` 命令
771
+ 重点参数:
590
772
 
591
- ### `dino info`
773
+ - `--description <string>`:用途说明
774
+ - `--color <string>`:颜色
775
+ - `--dry-run`
592
776
 
593
- 显示 CLI 版本信息。
777
+ ### 6.8 `prompt`:Prompt 管理
594
778
 
595
- 支持全局参数:`--json`、`--format`
779
+ ```bash
780
+ dino prompt list
781
+ dino prompt add --name "周报助手" --prompt "请基于本周笔记输出简洁周报"
782
+ ```
596
783
 
597
- ## 8.11 `todo` 命令
784
+ ### 6.9 `config`:CLI 配置
598
785
 
599
- ### `dino todo search [query]`
786
+ ```bash
787
+ dino config get
788
+ dino config get sync.timeoutMs
789
+ dino config set sync.timeoutMs 20000
790
+ ```
600
791
 
601
- 搜索待办任务(任务来源:`c_note.image_detail` 中的 taskItem/taskList)。
792
+ ### 6.10 `graph`:知识图谱查询
602
793
 
603
- | 参数 | 必填 | 说明 |
604
- | --- | --- | --- |
605
- | `[query]` | 否 | 按任务文本模糊匹配(不区分大小写)。 |
794
+ ```bash
795
+ dino graph backlinks <note-id>
796
+ dino graph outlinks <note-id>
797
+ dino graph related <note-id> --depth 2
798
+ dino graph stats
799
+ ```
606
800
 
607
- | 选项 | 必填 | 说明 |
608
- | --- | --- | --- |
609
- | `--status <status>` | 否 | 任务状态:`all` / `completed` / `uncompleted`(默认 `all`)。 |
610
- | `--tags <string\|@file>` | 否 | 任务标签筛选(JSON 数组或逗号/换行分隔),任务需包含全部标签。 |
611
- | `--from <date>` | 否 | 任务时间范围起点(`YYYY-MM-DD` 或 ISO datetime)。 |
612
- | `--to <date>` | 否 | 任务时间范围终点(`YYYY-MM-DD` 或 ISO datetime)。 |
613
- | `--days <n>` | 否 | 最近 N 天(不能与 `--from/--to` 同时使用)。 |
614
- | `--limit <n>` | 否 | 返回任务数上限(默认 `50`,最大 `500`)。 |
615
- | `--scan-limit <n>` | 否 | 扫描 `c_note` 行数上限(默认 `200`,最大 `5000`)。 |
616
- | `--include-deleted` | 否 | 包含软删除笔记中的任务。 |
801
+ 说明:
617
802
 
618
- 输出结构说明(AI 友好):
803
+ - 这些命令用于查看笔记之间的链接关系
804
+ - 在线模式下,CLI 会自动确保 daemon 可用
805
+ - 如果你只想用本地缓存而不启动 daemon,可加 `--offline`
619
806
 
620
- - 顶层包含 `meta`(查询条件回显、返回数量、是否截断)与 `tasks`(任务数组)。
621
- - 每条任务包含 `task_key`、`note_id`、`note_title`、`status`、层级关系与时间字段。
807
+ 例如:
622
808
 
623
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
809
+ ```bash
810
+ dino graph related <note-id> --depth 2 --offline --format json
811
+ ```
624
812
 
625
- ### `dino todo append [task]`
813
+ ### 6.11 `meta`:查看元数据
626
814
 
627
- 向笔记末尾追加一个或多个待办任务。
815
+ ```bash
816
+ dino meta stats
817
+ dino meta schema
818
+ ```
628
819
 
629
- 说明:
820
+ 用途说明:
630
821
 
631
- - `content_json` 是真源,`image_detail` 会从更新后的 `content_json` 派生回写。
632
- - 若不传 `--note-id`,默认选择 `image_detail` 非空且不为 `[]` 的最新笔记(按 `created_at` 降序)。
633
- - 若笔记末尾已有 `taskList`,会并入该 `taskList`;否则在末尾创建新的 `taskList`。
822
+ - `meta stats`:看 notes / tags / boxes 等统计信息
823
+ - `meta schema`:看 Dinox 结构化数据 schema,适合 AI / 自动化接入
634
824
 
635
- | 参数 | 必填 | 说明 |
636
- | --- | --- | --- |
637
- | `[task]` | 否 | 单个任务文本。 |
825
+ ### 6.12 `storage`:自定义存储配置与上传
638
826
 
639
- | 选项 | 必填 | 说明 |
640
- | --- | --- | --- |
641
- | `--task <text>` | 否 | 任务文本(可重复传入)。 |
642
- | `--tasks <string\|@file>` | 否 | 任务列表(JSON 数组或逗号/换行分隔)。 |
643
- | `--note-id <id>` | 否 | 指定目标笔记 ID。 |
644
- | `--dry-run` | 否 | 仅预览将要追加的任务和目标笔记,不实际写入。 |
827
+ ```bash
828
+ dino storage list
829
+ dino storage test
830
+ dino storage test --storage-id <id>
831
+ dino storage upload ./report.pdf
832
+ dino storage upload ./photo.jpg --category images
833
+ dino storage stats
834
+ ```
645
835
 
646
- 说明:`[task]`、`--task`、`--tasks` 至少提供一个。
836
+ 重点说明:
647
837
 
648
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
838
+ - 这是给 Dinox 的自定义存储配置用的,不是一个“任意云盘命令”
839
+ - `storage list` 会列出当前可用的自定义存储,并标出活动配置
840
+ - `storage test` 会测试目标存储是否可写
841
+ - `storage upload` 会上传本地文件,并写入资源记录
842
+ - 如果不是上传到当前活动存储,可用 `--storage-id <id>` 指定目标
843
+ - `--category` 支持:`images`、`audios`、`files`、`videos`
844
+ - 如果你想自己指定对象 key,可用 `--key <string>`
845
+ - `--dry-run` 非常适合在正式上传前确认目标位置
649
846
 
650
- ### `dino todo create [task]`
847
+ ### 6.13 `schema`:查看命令 schema
651
848
 
652
- 创建一篇新笔记,并写入一个或多个待办任务。
849
+ ```bash
850
+ dino schema
851
+ dino schema note.search
852
+ dino schema todo.update --format json
853
+ ```
653
854
 
654
- 说明:
855
+ 适合场景:
655
856
 
656
- - `content_json` 是真源,`image_detail` 从 `content_json` 派生回写。
657
- - 默认自动生成总结性标题(可用 `--title` 覆盖)。
857
+ - 你不确定某个命令的参数怎么写
858
+ - 你要让 AI / 脚本可靠调用 CLI
859
+ - 你想快速查看命令风险级别、输出结构、示例
658
860
 
659
- | 参数 | 必填 | 说明 |
660
- | --- | --- | --- |
661
- | `[task]` | 否 | 单个任务文本。 |
861
+ ### 6.14 `mcp`:启动 MCP 服务
662
862
 
663
- | 选项 | 必填 | 说明 |
664
- | --- | --- | --- |
665
- | `--task <text>` | 否 | 任务文本(可重复传入)。 |
666
- | `--tasks <string\|@file>` | 否 | 任务列表(JSON 数组或逗号/换行分隔)。 |
667
- | `--title <string>` | 否 | 自定义笔记标题。 |
668
- | `--dry-run` | 否 | 仅预览将要创建的待办笔记,不实际写入。 |
863
+ ```bash
864
+ dino mcp serve
865
+ dino mcp serve --host 127.0.0.1 --port 45137
866
+ ```
669
867
 
670
- 说明:`[task]`、`--task`、`--tasks` 至少提供一个。
868
+ 如果绑定到非本机地址(例如 `0.0.0.0`),必须提供 token:
671
869
 
672
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
870
+ ```bash
871
+ dino mcp serve --host 0.0.0.0 --port 45137 --token "<your-token>"
872
+ ```
673
873
 
674
- ### `dino todo update <taskId> --status <status>`
874
+ 或使用环境变量:
675
875
 
676
- 更新任务完成状态(按 taskId 定位)。
876
+ ```bash
877
+ export DINOX_MCP_TOKEN="<your-token>"
878
+ dino mcp serve --host 0.0.0.0 --port 45137
879
+ ```
677
880
 
678
- 说明:
881
+ ### 6.15 `daemon`:管理后台进程
882
+
883
+ ```bash
884
+ dino daemon start
885
+ dino daemon status
886
+ dino daemon restart
887
+ dino daemon stop
888
+ ```
889
+
890
+ 调试时可以前台运行:
679
891
 
680
- - 只接受合法状态值:`completed` / `uncompleted`(兼容 `done` / `undone` / `true` / `false` / `1` / `0`)。
681
- - `content_json` 是真源,更新后会同步回写 `image_detail`、`content_md`、`content_text`。
682
- - 若同一个 taskId 出现在多篇笔记,会报错并拒绝更新(避免误改)。
892
+ ```bash
893
+ dino daemon start --no-detach
894
+ ```
895
+
896
+ ### 6.16 `info`:查看版本与技能仓库地址
683
897
 
684
- | 参数 | 必填 | 说明 |
685
- | --- | --- | --- |
686
- | `<taskId>` | 是 | 任务 ID。 |
898
+ ```bash
899
+ dino info
900
+ ```
687
901
 
688
- | 选项 | 必填 | 说明 |
689
- | --- | --- | --- |
690
- | `--status <status>` | 是 | 目标状态。 |
691
- | `--dry-run` | 否 | 仅预览将要更新的任务状态,不实际写入。 |
902
+ ### 6.17 `update`:升级 CLI
692
903
 
693
- 支持全局参数:`--json`、`--format`、`--offline`、`--sync-timeout`
904
+ ```bash
905
+ dino update
906
+ ```
694
907
 
695
908
  ---
696
909
 
697
- ## 9. MCP Server 与 Cursor 配置
910
+ ## 7. AI / Cursor / MCP 集成
698
911
 
699
- `dino mcp serve` 会启动一个 HTTP JSON-RPC 服务,提供 Dinox 的 MCP tools 给 AI 客户端调用。
912
+ 如果你希望让 Cursor、MCP Client 或其他 AI 工具直接调用 Dinox 数据,这一节最重要。
700
913
 
701
- ### 9.1 启动 MCP 服务
914
+ ### 7.1 启动 MCP 服务
702
915
 
703
- 默认监听本机 `127.0.0.1:45137`:
916
+ 默认只监听本机回环地址:
704
917
 
705
918
  ```bash
706
919
  dino mcp serve
707
920
  ```
708
921
 
709
- 手动指定端口:
922
+ 默认地址通常是:
923
+
924
+ - Host:`127.0.0.1`
925
+ - Port:`45137`
926
+
927
+ 手动指定地址和端口:
710
928
 
711
929
  ```bash
712
930
  dino mcp serve --host 127.0.0.1 --port 45137
713
931
  ```
714
932
 
715
- ### 9.2 局域网访问与鉴权
933
+ ### 7.2 非本机访问时必须加 token
716
934
 
717
- 当 `--host` 为非回环地址(例如 `0.0.0.0`)时,必须提供 token:
935
+ 如果你不是监听 `127.0.0.1` / `localhost`,而是希望局域网其他机器访问,那么必须加 token。
718
936
 
719
937
  ```bash
720
938
  dino mcp serve --host 0.0.0.0 --port 45137 --token "<your-token>"
721
939
  ```
722
940
 
723
- 也可以使用环境变量:
724
-
725
- ```bash
726
- export DINOX_MCP_TOKEN="<your-token>"
727
- dino mcp serve --host 0.0.0.0 --port 45137
728
- ```
729
-
730
- 请求头支持:
941
+ 服务端支持以下鉴权头:
731
942
 
732
943
  1. `Authorization: Bearer <token>`
733
944
  2. `x-dinox-token: <token>`
734
945
 
735
- ### 9.3 快速连通性验证(curl)
946
+ ### 7.3 用 curl 快速测试连通性
736
947
 
737
- 初始化握手:
948
+ #### 初始化握手
738
949
 
739
950
  ```bash
740
951
  curl -X POST http://127.0.0.1:45137 \
@@ -742,7 +953,7 @@ curl -X POST http://127.0.0.1:45137 \
742
953
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
743
954
  ```
744
955
 
745
- 列出 tools:
956
+ #### 列出工具
746
957
 
747
958
  ```bash
748
959
  curl -X POST http://127.0.0.1:45137 \
@@ -750,7 +961,7 @@ curl -X POST http://127.0.0.1:45137 \
750
961
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
751
962
  ```
752
963
 
753
- 调用 tools(示例:搜索笔记):
964
+ #### 调用一个工具(示例:搜索笔记)
754
965
 
755
966
  ```bash
756
967
  curl -X POST http://127.0.0.1:45137 \
@@ -758,14 +969,14 @@ curl -X POST http://127.0.0.1:45137 \
758
969
  --data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"dinox_search_notes","arguments":{"query":"dinox","limit":5}}}'
759
970
  ```
760
971
 
761
- ### 9.4 Cursor 配置示例
972
+ ### 7.4 Cursor 配置示例
762
973
 
763
- 可在以下位置创建 MCP 配置文件(任选其一):
974
+ 你可以在以下任一位置创建 MCP 配置文件:
764
975
 
765
976
  1. 项目级:`.cursor/mcp.json`
766
977
  2. 全局:`~/.cursor/mcp.json`
767
978
 
768
- 推荐配置(带 token):
979
+ 示例配置:
769
980
 
770
981
  ```json
771
982
  {
@@ -780,61 +991,201 @@ curl -X POST http://127.0.0.1:45137 \
780
991
  }
781
992
  ```
782
993
 
783
- 若本地仅回环访问且不启用 token,可去掉 `headers` 字段。
994
+ 如果你只在本机回环地址使用,而且服务端没有启用 token,那么可以不写 `headers`。
784
995
 
785
- ### 9.5 常见问题
996
+ ---
786
997
 
787
- - 报错 `--token (or DINOX_MCP_TOKEN) is required when --host is non-loopback`:表示你使用了非回环 host,但没提供 token。
788
- - 返回 `401 Unauthorized`:检查请求头 token 是否与启动服务时一致。
789
- - 端口冲突:改用 `--port` 指定其他高位端口。
998
+ ## 8. 常见问题
790
999
 
791
- ---
1000
+ ### Q1:报错 `Missing persisted userId. Run dino auth login first.`
792
1001
 
793
- ## 10. 查看帮助
1002
+ 原因:你还没有完成登录,或登录信息没有成功保存。
794
1003
 
795
- 随时可以看帮助:
1004
+ 解决:
796
1005
 
797
1006
  ```bash
798
- dino --help
799
- dino <命令> --help
800
- dino <命令> <子命令> --help
1007
+ dino auth login "<token>"
1008
+ dino sync
1009
+ ```
1010
+
1011
+ ### Q2:创建笔记时报 `Unknown tags` 或 `Unknown zettel box names`
1012
+
1013
+ 原因:你引用了不存在的标签或卡片盒。
1014
+
1015
+ 解决:先创建,再重试。
1016
+
1017
+ ```bash
1018
+ dino tag add "你的标签"
1019
+ dino box add "你的卡片盒"
1020
+ ```
1021
+
1022
+ ### Q3:我已经同步过了,能不能完全离线查询?
1023
+
1024
+ 可以。很多读命令都支持:
1025
+
1026
+ ```bash
1027
+ --offline
801
1028
  ```
802
1029
 
803
1030
  例如:
804
1031
 
805
1032
  ```bash
806
- dino note --help
807
- dino note create --help
1033
+ dino note search "日报" --offline
1034
+ dino graph stats --offline --format json
1035
+ ```
1036
+
1037
+ 前提是:你之前至少成功同步过一次,本地缓存里已经有数据。
1038
+
1039
+ ### Q4:`note update` 为什么不是“追加标签”?
1040
+
1041
+ 因为它的设计就是“全量替换”。
1042
+
1043
+ 例如:
1044
+
1045
+ ```bash
1046
+ dino note update <note-id> --tags "工作,AI"
1047
+ ```
1048
+
1049
+ 执行后,目标笔记的标签会被替换成这两个,而不是在原来基础上追加。
1050
+
1051
+ ### Q5:`todo append` 不传 `--note-id` 时会发生什么?
1052
+
1053
+ CLI 会自动选一条最近的、适合追加任务的笔记作为目标。
1054
+
1055
+ 如果你不希望它自动选,最稳妥的做法是显式传:
1056
+
1057
+ ```bash
1058
+ dino todo append --note-id <note-id> --task "补交报销单"
1059
+ ```
1060
+
1061
+ ### Q6:Windows 下 `@file` 参数解析不稳定怎么办?
1062
+
1063
+ 在 PowerShell 中,建议把 `@文件路径` 放进引号里。
1064
+
1065
+ 例如:
1066
+
1067
+ ```powershell
1068
+ dino note create --title "测试" --content "@.\note.md" --type note
1069
+ ```
1070
+
1071
+ ### Q7:`mcp serve` 绑定 `0.0.0.0` 时为什么报 token 错误?
1072
+
1073
+ 因为只要不是本机回环地址,就必须提供鉴权 token。
1074
+
1075
+ 例如:
1076
+
1077
+ ```bash
1078
+ dino mcp serve --host 0.0.0.0 --port 45137 --token "<your-token>"
1079
+ ```
1080
+
1081
+ ### Q8:怎么知道某个命令到底支持哪些参数?
1082
+
1083
+ 最直接的方法:
1084
+
1085
+ ```bash
1086
+ dino <命令> --help
1087
+ ```
1088
+
1089
+ 如果你想看更结构化的 schema:
1090
+
1091
+ ```bash
1092
+ dino schema
1093
+ dino schema note.search
1094
+ dino schema todo.update --format json
808
1095
  ```
809
1096
 
810
1097
  ---
811
1098
 
812
- ## 11. GitHub Action 自动发布 npm
1099
+ ## 9. 配置文件、数据库与环境变量
1100
+
1101
+ ### 9.1 默认文件位置
1102
+
1103
+ #### macOS
813
1104
 
814
- 仓库已内置工作流:`/Users/shanks/Documents/GitHub/dinox-cli/.github/workflows/publish-npm.yml`
1105
+ - 配置文件:`~/Library/Application Support/dinox/config.json`
1106
+ - 本地数据库:`~/Library/Application Support/dinox/dinox-cli.sqlite`
815
1107
 
816
- ### 11.1 先配置 Secret
1108
+ #### Windows
817
1109
 
818
- 在 GitHub 仓库设置里添加:
1110
+ - 配置文件:`%APPDATA%\dinox\config.json`
1111
+ - 本地数据库:`%LOCALAPPDATA%\dinox\dinox-cli.sqlite`
819
1112
 
820
- - `NPM_TOKEN`:npm 的 publish token(建议使用 granular token,并开启 bypass 2FA)
1113
+ #### Linux
821
1114
 
822
- ### 11.2 手动触发发布
1115
+ - 配置文件:`~/.config/dinox/config.json`
1116
+ - 本地数据库:`~/.local/share/dinox/dinox-cli.sqlite`
823
1117
 
824
- 1. 打开 GitHub 仓库 → **Actions** → **Publish NPM**
825
- 2. 点击 **Run workflow**
826
- 3. 选择参数:
827
- - `dry_run`:`true` 只做演练,不真正发布
828
- - `run_tests`:`true` 时会先执行测试
1118
+ ### 9.2 常用环境变量
829
1119
 
830
- ### 11.3 Push 自动触发
1120
+ | 环境变量 | 用途 |
1121
+ | --- | --- |
1122
+ | `DINOX_CONFIG_DIR` | 覆盖配置目录 |
1123
+ | `DINOX_DATA_DIR` | 覆盖本地数据目录 |
1124
+ | `DINOX_AUTHORIZATION` | 用环境变量注入登录 token |
1125
+ | `DINOX_SYNC_TIMEOUT_MS` | 覆盖同步超时 |
1126
+ | `DINOX_MCP_TOKEN` | 给 `dino mcp serve` 提供默认 token |
1127
+
1128
+ ### 9.3 macOS / Linux 与 Windows 的多行命令差异
1129
+
1130
+ #### macOS / Linux(bash / zsh)
1131
+
1132
+ 用反斜杠 `\` 续行:
1133
+
1134
+ ```bash
1135
+ dino note create \
1136
+ --title "标题" \
1137
+ --content "正文" \
1138
+ --type note
1139
+ ```
1140
+
1141
+ #### Windows PowerShell
1142
+
1143
+ 用反引号 `` ` `` 续行:
1144
+
1145
+ ```powershell
1146
+ dino note create `
1147
+ --title "标题" `
1148
+ --content "正文" `
1149
+ --type note
1150
+ ```
1151
+
1152
+ ---
1153
+
1154
+ ## 10. 如何查看帮助
1155
+
1156
+ 任何时候都可以直接看 CLI 帮助:
1157
+
1158
+ ```bash
1159
+ dino --help
1160
+ dino help note
1161
+ ```
1162
+
1163
+ 更常见的写法是:
1164
+
1165
+ ```bash
1166
+ dino note --help
1167
+ dino note create --help
1168
+ dino todo --help
1169
+ dino storage upload --help
1170
+ ```
1171
+
1172
+ 如果你是脚本作者或 AI Agent 开发者,强烈建议搭配这两个命令一起使用:
1173
+
1174
+ ```bash
1175
+ dino schema
1176
+ dino schema <path> --format json
1177
+ ```
1178
+
1179
+ ---
831
1180
 
832
- - 每次 push 到默认分支(当前为 `main`)会自动触发发布流程
833
- - 为兼容分支命名迁移,workflow 也监听 `master`,但发布阶段会只允许默认分支执行
834
- - 为防止递归触发,workflow 会跳过 `github-actions[bot]` 自己提交的版本 bump commit
1181
+ 如果你是第一次用,建议按下面顺序熟悉:
835
1182
 
836
- ### 11.4 工作流行为
1183
+ 1. `dino auth login`
1184
+ 2. `dino sync`
1185
+ 3. `dino note search`
1186
+ 4. `dino note create`
1187
+ 5. `dino todo search`
1188
+ 6. `dino tag add` / `dino box add`
1189
+ 7. `dino mcp serve`
837
1190
 
838
- - 只允许在仓库默认分支执行发布(默认分支改名后无需改 workflow 逻辑)
839
- - 调用仓库脚本 `publish-npm.sh` 自动递增 patch 版本并发布
840
- - 发布成功后自动提交 `package.json` 版本变更、打 `vX.Y.Z` tag 并 push 回仓库
1191
+ 这样会最快建立完整使用感。