@dazitech/cli 3.0.0 → 3.0.2
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 +16 -14
- package/dist/clis/dazi-app.js +95 -14
- package/dist/clis/dazi-flow.js +602 -172
- package/dist/clis/dazi-onto.js +5 -3
- package/dist/clis/dazi.js +139 -38
- package/dist/docs/app/app-init.md +15 -15
- package/dist/docs/app/build-upload.md +13 -13
- package/dist/docs/app/release-guide.md +9 -9
- package/dist/docs/app//344/270/273/350/246/201/350/264/242/345/212/241/346/214/207/346/240/207/345/244/215/346/235/202/346/212/245/350/241/250/345/274/200/345/217/221/345/256/236/350/267/265.md +45 -41
- package/dist/docs/auth/auth-login.md +4 -4
- package/dist/docs/auth/token-management.md +5 -5
- package/dist/docs/data/cube-guide.md +2 -2
- package/dist/docs/data/data-spaces.md +4 -3
- package/dist/docs/data/table-preview.md +6 -6
- package/dist/docs/flow/ai-workflow-playbook.md +69 -0
- package/dist/docs/flow/flow-project-guide.md +92 -87
- package/dist/docs/flow/flows-guide.md +98 -94
- package/dist/docs/flow/local-files-spec.md +194 -0
- package/dist/docs/flow/node-code-guide.md +57 -55
- package/dist/docs/flow/run-guide.md +18 -18
- package/dist/docs/flow/variables-guide.md +61 -61
- package/dist/docs/flow//346/265/201/347/250/213/345/274/200/345/217/221/346/234/200/344/275/263/345/256/236/350/267/265-VS-flow0/346/241/210/344/276/213.md +31 -31
- package/dist/docs/guides/cli-invocation.md +30 -29
- package/dist/docs/guides/cli-reference.md +72 -71
- package/dist/docs/guides/flow-consistency-checklist.md +42 -0
- package/dist/docs/guides/mcp-setup.md +34 -34
- package/dist/docs/guides/migrate-v2-v3.md +6 -5
- package/dist/docs/guides/quickstart.md +8 -8
- package/dist/docs/guides/troubleshooting.md +40 -22
- package/dist/docs/guides/workspace-v3.md +17 -17
- package/dist/docs/index.json +19 -7
- package/dist/docs/onto/action-guide.md +4 -3
- package/dist/docs/onto/dazi_script_sdk_reference.md +20 -14
- package/dist/docs/onto/dazi_script_seed_data_guide.md +14 -14
- package/dist/docs/onto/function-guide.md +5 -5
- package/dist/docs/onto/rule-guide.md +7 -6
- package/dist/docs/onto/space-management.md +5 -3
- package/dist/docs/onto//346/234/254/344/275/223/350/204/232/346/234/254/347/274/226/345/206/231/346/214/207/345/215/227.md +35 -35
- package/dist/docs/onto//346/234/254/344/275/223/350/247/204/345/210/222/346/214/207/345/215/227.md +21 -21
- package/dist/docs/onto//350/247/204/345/210/222/347/244/272/344/276/213_/345/210/251/346/266/246/345/210/206/346/236/220/346/234/254/344/275/223/346/226/271/346/241/210.md +11 -11
- package/dist/examples/flow/minimal-excel-python/README.md +5 -0
- package/dist/examples/flow/minimal-excel-python/flow.json +48 -0
- package/dist/examples/flow/minimal-excel-python/flow.meta.json +23 -0
- package/dist/examples/flow/minimal-excel-python//350/212/202/347/202/271/Excel/347/244/272/344/276/213/code.py +7 -0
- package/dist/examples/flow/minimal-excel-python//350/212/202/347/202/271/Excel/347/244/272/344/276/213/node.info.json +14 -0
- package/dist/examples/index.json +7 -1
- package/dist/prompts/data/data-analysis.md +2 -2
- package/dist/prompts/flow/ai-workflow-playbook.md +69 -0
- package/dist/prompts/flow/flow-design.md +33 -19
- package/dist/prompts/flow/plan-generate.md +7 -7
- package/dist/prompts/flow/run-debug.md +15 -15
- package/dist/prompts/flow/run-fix-loop.md +20 -17
- package/dist/prompts/general/ask-dazi.md +6 -6
- package/dist/prompts/general/troubleshoot.md +4 -3
- package/dist/prompts/index.json +94 -15
- package/dist/prompts/onto/action-design.md +7 -5
- package/dist/prompts/onto/function-design.md +6 -4
- package/dist/prompts/onto/rule-seed.md +4 -2
- package/dist/prompts/onto/script-publish-run.md +19 -19
- package/package.json +1 -1
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
|
|
7
7
|
**相关文档**
|
|
8
8
|
|
|
9
|
-
- [数据流程项目开发指南](./flow-project-guide.md) — 目录、`debug_run_id`、开发循环
|
|
10
|
-
- [节点代码编写指南](./node-code-guide.md) — 各节点 `code.*` 约定
|
|
9
|
+
- [数据流程项目开发指南](./flow-project-guide.md) — 目录、`debug_run_id`、开发循环
|
|
10
|
+
- [节点代码编写指南](./node-code-guide.md) — 各节点 `code.*` 约定
|
|
11
11
|
- [Flow 运行与测试](./run-guide.md) — `node-exec`、`variable pull/sync`
|
|
12
12
|
|
|
13
13
|
---
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
|
|
17
17
|
流程引擎把 **参数、中间表、最终结果** 统一抽象为 **变量(Variable)**,在一次 Run 内按 **变量名** 读写,而不必处处依赖画布连线传递文件路径。
|
|
18
18
|
|
|
19
|
-
| 概念
|
|
20
|
-
|
|
21
|
-
| **变量名**
|
|
22
|
-
| **变量作用域** | 绑定到某次 **`flow_runs`**;日常调试对应 **`ads_flows.debug_run_id`**
|
|
23
|
-
| **登记时机**
|
|
19
|
+
| 概念 | 说明 |
|
|
20
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
21
|
+
| **变量名** | 字符串标识,如 `sales_raw`、`V1`、`销售表`;由节点配置 **`output_variable_name`** 或脚本 **`set_table_output` / `set_scalar_output`** 登记 |
|
|
22
|
+
| **变量作用域** | 绑定到某次 **`flow_runs`**;日常调试对应 **`ads_flows.debug_run_id`** |
|
|
23
|
+
| **登记时机** | 节点执行成功后,引擎读取 **`output_variable_name`**,将输出写入当前 Run 的 **`flow_run_variables`** |
|
|
24
24
|
|
|
25
25
|
**本地开发时**:变量不在 `flow.json` 里,而在调试 Run 中;CLI/扩展通过 API 拉取 schema + 预览到 **`变量/<名>.json`**。
|
|
26
26
|
|
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
|
|
29
29
|
## 2. 存储类型
|
|
30
30
|
|
|
31
|
-
| 类型
|
|
32
|
-
|
|
31
|
+
| 类型 | 典型场景 | 存储 | `get_variable` 行为 |
|
|
32
|
+
| ------------------- | ------------------------------------ | --------------------------------- | ---------------------------------------- |
|
|
33
33
|
| **table(表变量)** | SQL 结果、Python `result_df`、文件源 | Parquet 落盘,库中 `value` 为路径 | 自动 `pd.read_parquet` → **`DataFrame`** |
|
|
34
|
-
| **text(标量)**
|
|
34
|
+
| **text(标量)** | 计数、标志位、质检综合分 | 库中 `value` 为字符串 | 返回 Python 原生值(str/int/float 等) |
|
|
35
35
|
|
|
36
36
|
表变量是流程开发中最常用的类型;标量多用于质检分数、状态位等。
|
|
37
37
|
|
|
@@ -87,17 +87,17 @@ GET /flows/{id}/debug-run → 绑定 ads_flows.debug_run_id
|
|
|
87
87
|
cd "项目\flow_xxx\流程\MyFlow"
|
|
88
88
|
|
|
89
89
|
# 先运行产出变量的上游节点,或整流程 debug
|
|
90
|
-
|
|
90
|
+
dazi flow run node-exec --node <上游uuid> --dir .
|
|
91
91
|
|
|
92
92
|
# 拉取单个变量(列信息 + 前 10 行)
|
|
93
|
-
|
|
93
|
+
dazi flow variable pull --name sales_clean --dir .
|
|
94
94
|
|
|
95
95
|
# 同步调试 Run 中全部变量
|
|
96
|
-
|
|
96
|
+
dazi flow variable sync --dir .
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
- 设计器:选中节点 → **`output_variable_name`** 旁 **📊**
|
|
100
|
-
- 资源管理器:**`变量/<名>.json`**(只读派生,勿手改后当真理源)
|
|
99
|
+
- 设计器:选中节点 → **`output_variable_name`** 旁 **📊**
|
|
100
|
+
- 资源管理器:**`变量/<名>.json`**(只读派生,勿手改后当真理源)
|
|
101
101
|
- 变量尚未产出时,占位 JSON 会提示:**先运行上游节点**
|
|
102
102
|
|
|
103
103
|
---
|
|
@@ -119,12 +119,12 @@ cd "项目\flow_xxx\流程\MyFlow"
|
|
|
119
119
|
[database-sink] input_variable_name = py_result(或依赖入边 Parquet)
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
| 步骤 | 节点
|
|
123
|
-
|
|
124
|
-
| 1
|
|
125
|
-
| 2
|
|
126
|
-
| 3
|
|
127
|
-
| 4
|
|
122
|
+
| 步骤 | 节点 | 画布配置 | 代码如何读写变量 |
|
|
123
|
+
| ---- | --------------- | --------------------------------- | ------------------------------------------------- |
|
|
124
|
+
| 1 | `excel-import` | `output_variable_name: excel_raw` | 无代码;导入后自动登记 |
|
|
125
|
+
| 2 | `sql-query` | `output_variable_name: sales_agg` | SQL 中 **`FROM excel_raw`** |
|
|
126
|
+
| 3 | `python-script` | `output_variable_name: py_result` | **`get_variable('sales_agg')`** → **`result_df`** |
|
|
127
|
+
| 4 | `database-sink` | `input_variable_name: py_result` | 无代码;从变量或入边读表 |
|
|
128
128
|
|
|
129
129
|
---
|
|
130
130
|
|
|
@@ -185,10 +185,10 @@ LIMIT 50000
|
|
|
185
185
|
**产生变量**:`spaceId` + `code.sql` 在空间存储引擎上查询,结果登记为 **`output_variable_name`**。
|
|
186
186
|
**不消费** Run 内变量(直连 `ads_dataspaces` + `get_storage`)。
|
|
187
187
|
|
|
188
|
-
| 配置项
|
|
189
|
-
|
|
190
|
-
| `spaceId`
|
|
191
|
-
| `output_variable_name` | 产出表变量名
|
|
188
|
+
| 配置项 | 说明 |
|
|
189
|
+
| ---------------------- | ------------------------------------------------- |
|
|
190
|
+
| `spaceId` | `ads_dataspaces.id`(`dazi-flow dataspace list`) |
|
|
191
|
+
| `output_variable_name` | 产出表变量名 |
|
|
192
192
|
|
|
193
193
|
```sql
|
|
194
194
|
-- output_variable_name = space_sales
|
|
@@ -204,15 +204,15 @@ LIMIT 100000
|
|
|
204
204
|
|
|
205
205
|
**运行时注入**
|
|
206
206
|
|
|
207
|
-
| 符号
|
|
208
|
-
|
|
209
|
-
| `pd`
|
|
210
|
-
| `df`
|
|
211
|
-
| `get_variable("名")`
|
|
212
|
-
| `result_df`
|
|
213
|
-
| `set_table_output(name, df)`
|
|
214
|
-
| `set_scalar_output(name, value)` | 标量变量
|
|
215
|
-
| `output.print(...)`
|
|
207
|
+
| 符号 | 说明 |
|
|
208
|
+
| -------------------------------- | -------------------------------------------------- |
|
|
209
|
+
| `pd` | pandas |
|
|
210
|
+
| `df` | 入边 Parquet(**整图跑**时常有值) |
|
|
211
|
+
| `get_variable("名")` | 从当前调试 Run 按名读表/标量(**单节点测试首选**) |
|
|
212
|
+
| `result_df` | 主输出表 → 对应 **`output_variable_name`** |
|
|
213
|
+
| `set_table_output(name, df)` | 额外表变量 |
|
|
214
|
+
| `set_scalar_output(name, value)` | 标量变量 |
|
|
215
|
+
| `output.print(...)` | 运行日志(勿用裸 `print`) |
|
|
216
216
|
|
|
217
217
|
**示例 A:单节点测试(推荐写法)**
|
|
218
218
|
|
|
@@ -324,10 +324,10 @@ output.print("[DQ] 完成")
|
|
|
324
324
|
|
|
325
325
|
**消费变量**:画布配置 **`input_variable_name`**,从调试 Run 取表写入目标库;也可依赖入边 Parquet(未配变量名时)。
|
|
326
326
|
|
|
327
|
-
| 配置项
|
|
328
|
-
|
|
329
|
-
| `connectionId`
|
|
330
|
-
| `tableName`
|
|
327
|
+
| 配置项 | 说明 |
|
|
328
|
+
| --------------------- | ------------------------------------------------ |
|
|
329
|
+
| `connectionId` | 目标 `ads_connections` |
|
|
330
|
+
| `tableName` | 目标表名 |
|
|
331
331
|
| `input_variable_name` | 可选;显式指定要写入的表变量名(如 `py_result`) |
|
|
332
332
|
|
|
333
333
|
---
|
|
@@ -336,13 +336,13 @@ output.print("[DQ] 完成")
|
|
|
336
336
|
|
|
337
337
|
**消费变量**:与 `database-sink` 相同,通过 **`input_variable_name`** 或入边 Parquet 取表。
|
|
338
338
|
|
|
339
|
-
| 配置项
|
|
340
|
-
|
|
341
|
-
| `spaceId`
|
|
342
|
-
| `tableName`
|
|
343
|
-
| `mode`
|
|
344
|
-
| `syncMetadata`
|
|
345
|
-
| `input_variable_name` | 要写入的表变量名
|
|
339
|
+
| 配置项 | 说明 |
|
|
340
|
+
| --------------------- | ------------------------------- |
|
|
341
|
+
| `spaceId` | 目标 `ads_dataspaces.id` |
|
|
342
|
+
| `tableName` | 空间内目标表(物理表名) |
|
|
343
|
+
| `mode` | `append`(默认)或 `replace` |
|
|
344
|
+
| `syncMetadata` | 写后是否同步元数据(默认 true) |
|
|
345
|
+
| `input_variable_name` | 要写入的表变量名 |
|
|
346
346
|
|
|
347
347
|
---
|
|
348
348
|
|
|
@@ -361,12 +361,12 @@ df.shape[0] > 0 and df["amount"].sum() > 10000
|
|
|
361
361
|
|
|
362
362
|
## 7. `df` 与 `get_variable` 怎么选
|
|
363
363
|
|
|
364
|
-
| 场景
|
|
365
|
-
|
|
366
|
-
| **单节点测试**(`node-exec`) | **`get_variable('上游 output_variable_name')`**
|
|
367
|
-
| **整流程 debug/preview**
|
|
368
|
-
| **多表输入**
|
|
369
|
-
| **写 SQL**
|
|
364
|
+
| 场景 | 推荐 |
|
|
365
|
+
| ----------------------------- | ------------------------------------------------------------------ |
|
|
366
|
+
| **单节点测试**(`node-exec`) | **`get_variable('上游 output_variable_name')`** |
|
|
367
|
+
| **整流程 debug/preview** | 入边 **`df`** 通常已有值;仍可用 `get_variable` 读 **未连线** 的表 |
|
|
368
|
+
| **多表输入** | 一张走 `df` 或主变量,其余 **`get_variable('名')`** |
|
|
369
|
+
| **写 SQL** | 直接用 **变量名作表名**,不用 `get_variable` |
|
|
370
370
|
|
|
371
371
|
**常见错误**:单节点测试时只写 `result_df = df.groupby(...)`,但 `df` 为空 → 报错或空结果。
|
|
372
372
|
**修复**:改为 `df = get_variable("上游变量名")`,或先运行上游再测。
|
|
@@ -375,10 +375,10 @@ df.shape[0] > 0 and df["amount"].sum() > 10000
|
|
|
375
375
|
|
|
376
376
|
## 8. 开发调试清单
|
|
377
377
|
|
|
378
|
-
1. 打开设计器,确认各节点 **`output_variable_name`** 已填且 **不重名**。
|
|
379
|
-
2. **自上游向下** 单节点测试,或一次 **`flow run flow-exec --type debug`**。
|
|
380
|
-
3. 用 **📊** 或 **`flow variable pull --name <名>`** 核对列名与样例行(交给 AI 时附上 **`变量/<名>.json`**)。
|
|
381
|
-
4. 写下游代码时 **变量名与画布完全一致**(区分大小写;中文名含全角字符)。
|
|
378
|
+
1. 打开设计器,确认各节点 **`output_variable_name`** 已填且 **不重名**。
|
|
379
|
+
2. **自上游向下** 单节点测试,或一次 **`flow run flow-exec --type debug`**。
|
|
380
|
+
3. 用 **📊** 或 **`flow variable pull --name <名>`** 核对列名与样例行(交给 AI 时附上 **`变量/<名>.json`**)。
|
|
381
|
+
4. 写下游代码时 **变量名与画布完全一致**(区分大小写;中文名含全角字符)。
|
|
382
382
|
5. 改 `output_variable_name` → **`project push --canvas`**;改 `code.*` → **`node push`**。
|
|
383
383
|
|
|
384
384
|
---
|
|
@@ -387,20 +387,20 @@ df.shape[0] > 0 and df["amount"].sum() > 10000
|
|
|
387
387
|
|
|
388
388
|
```powershell
|
|
389
389
|
# 单节点测试(会更新 debug_run_id 对应变量)
|
|
390
|
-
|
|
390
|
+
dazi flow run node-exec --node <uuid> --dir .
|
|
391
391
|
|
|
392
392
|
# 整流程调试
|
|
393
|
-
|
|
393
|
+
dazi flow run flow-exec --dir . --type debug
|
|
394
394
|
|
|
395
395
|
# 变量
|
|
396
|
-
|
|
397
|
-
|
|
396
|
+
dazi flow variable pull --name sales_agg --dir .
|
|
397
|
+
dazi flow variable sync --dir .
|
|
398
398
|
```
|
|
399
399
|
|
|
400
400
|
---
|
|
401
401
|
|
|
402
402
|
## 10. 延伸阅读
|
|
403
403
|
|
|
404
|
-
- 搭子功能总览:`dazi/docs/279-dazi-dataflow数据流程功能总结.md` §3
|
|
405
|
-
- devend 变量重构:`devend/docs/20251201-009-变量系统重构.md`
|
|
404
|
+
- 搭子功能总览:`dazi/docs/279-dazi-dataflow数据流程功能总结.md` §3
|
|
405
|
+
- devend 变量重构:`devend/docs/20251201-009-变量系统重构.md`
|
|
406
406
|
- Excel→SQL→Python 端到端案例:[流程开发最佳实践(VS-flow0 案例)](./流程开发最佳实践-VS-flow0案例.md)
|
|
@@ -121,18 +121,18 @@ bool(df is not None and not df.empty and df["通过"].all())
|
|
|
121
121
|
|
|
122
122
|
## 三、节点选型速查
|
|
123
123
|
|
|
124
|
-
| 场景
|
|
125
|
-
|
|
|
124
|
+
| 场景 | 推荐节点 | 避免 |
|
|
125
|
+
| ----------------------- | -------------------- | --------------------------------- |
|
|
126
126
|
| Excel + managed_file_id | **`excel-python`** | **`file-source`**(不解析 xlsx) |
|
|
127
|
-
| 多 Sheet、不同 header
|
|
128
|
-
| 极简单 Sheet、零代码
|
|
129
|
-
| 行数/非空/外键
|
|
130
|
-
| 通过/不通过两路
|
|
131
|
-
| 多表 JOIN 宽表
|
|
132
|
-
| 写 ClickHouse / PG 等
|
|
133
|
-
| 写数据空间表
|
|
134
|
-
| 读外部库
|
|
135
|
-
| 读数据空间
|
|
127
|
+
| 多 Sheet、不同 header | `excel-python` | 多个 `excel-import` 重复配置 |
|
|
128
|
+
| 极简单 Sheet、零代码 | `excel-import` | 不必要的 Python |
|
|
129
|
+
| 行数/非空/外键 | `data-quality-check` | 在 Python 里散落 if/raise |
|
|
130
|
+
| 通过/不通过两路 | `condition` | 在 SQL 里写 impossible WHERE |
|
|
131
|
+
| 多表 JOIN 宽表 | `sql-query` | 全用 pandas merge(大表时难维护) |
|
|
132
|
+
| 写 ClickHouse / PG 等 | `database-sink` | 在 Python 里手写 JDBC/HTTP |
|
|
133
|
+
| 写数据空间表 | `dataspace-sink` | 先落外部库再回灌空间 |
|
|
134
|
+
| 读外部库 | `database-source` | 与 sql-query 混用职责 |
|
|
135
|
+
| 读数据空间 | `dataspace-source` | 误填 `connectionId` |
|
|
136
136
|
|
|
137
137
|
---
|
|
138
138
|
|
|
@@ -274,23 +274,23 @@ LIMIT 100000
|
|
|
274
274
|
cd "<流程目录>"
|
|
275
275
|
|
|
276
276
|
# 同步平台
|
|
277
|
-
|
|
278
|
-
|
|
277
|
+
dazi flow project pull --flow <flowId> --dir .
|
|
278
|
+
dazi flow project push --dir . --canvas
|
|
279
279
|
|
|
280
280
|
# 测试
|
|
281
|
-
|
|
282
|
-
|
|
281
|
+
dazi flow run node-exec --node <node_uuid> --dir .
|
|
282
|
+
dazi flow run flow-exec --dir . --type debug
|
|
283
283
|
|
|
284
284
|
# 变量
|
|
285
|
-
|
|
286
|
-
|
|
285
|
+
dazi flow variable pull --name 销售明细宽表 --dir .
|
|
286
|
+
dazi flow variable sync --dir .
|
|
287
287
|
|
|
288
288
|
# 数据源
|
|
289
|
-
|
|
289
|
+
dazi flow source list
|
|
290
290
|
|
|
291
291
|
# 数据空间
|
|
292
|
-
|
|
293
|
-
|
|
292
|
+
dazi flow dataspace list
|
|
293
|
+
dazi flow dataspace tables <spaceId>
|
|
294
294
|
```
|
|
295
295
|
|
|
296
296
|
命令前缀与 Trae/VS Code 约定见 [CLI 调用约定](../guides/cli-invocation.md)。
|
|
@@ -299,18 +299,18 @@ cd "<流程目录>"
|
|
|
299
299
|
|
|
300
300
|
## 八、常见问题与对策
|
|
301
301
|
|
|
302
|
-
| 现象 | 原因 | 对策
|
|
303
|
-
| ------------------------------- | ------------------------ |
|
|
304
|
-
| SQL 单测找不到表 | 上游变量未写入 debug Run | 先跑 Excel 节点或整流程 debug
|
|
305
|
-
| excel-python 单测只有主表 | 多表需整图或先跑 Excel | 用 `flow-exec` 或按序 node-exec
|
|
306
|
-
| Condition Error: invalid syntax | 条件脚本非单行表达式 | 改为单行 `bool(...)`
|
|
307
|
-
| 质检失败流程中断 | `fail_on_error: true` | 改为 `false` + 下游 condition
|
|
308
|
-
| 画布 push 失败 | 未关联 flowId | 先 `project pull --flow <id>`
|
|
309
|
-
| sink 写库失败 | connectionId / 表名错误 | 对照 `资源/datasources/<连接名>/*.md`
|
|
302
|
+
| 现象 | 原因 | 对策 |
|
|
303
|
+
| ------------------------------- | ------------------------ | -------------------------------------------------- |
|
|
304
|
+
| SQL 单测找不到表 | 上游变量未写入 debug Run | 先跑 Excel 节点或整流程 debug |
|
|
305
|
+
| excel-python 单测只有主表 | 多表需整图或先跑 Excel | 用 `flow-exec` 或按序 node-exec |
|
|
306
|
+
| Condition Error: invalid syntax | 条件脚本非单行表达式 | 改为单行 `bool(...)` |
|
|
307
|
+
| 质检失败流程中断 | `fail_on_error: true` | 改为 `false` + 下游 condition |
|
|
308
|
+
| 画布 push 失败 | 未关联 flowId | 先 `project pull --flow <id>` |
|
|
309
|
+
| sink 写库失败 | connectionId / 表名错误 | 对照 `资源/datasources/<连接名>/*.md` |
|
|
310
310
|
| dataspace-sink 写入失败 | spaceId / tableName 错误 | 先 `flow dataspace list` / `flow dataspace tables` |
|
|
311
|
-
| 变量列为空 | 单测时只用了 `df` | Python 改用 `get_variable`
|
|
312
|
-
| AI 不知道 connectionId | 未拉取连接文档 | 侧栏数据连接 → **拉取连接信息**
|
|
313
|
-
| AI 不知道 spaceId | 未拉取空间文档 | 侧栏数据空间 → **拉取空间信息**
|
|
311
|
+
| 变量列为空 | 单测时只用了 `df` | Python 改用 `get_variable` |
|
|
312
|
+
| AI 不知道 connectionId | 未拉取连接文档 | 侧栏数据连接 → **拉取连接信息** |
|
|
313
|
+
| AI 不知道 spaceId | 未拉取空间文档 | 侧栏数据空间 → **拉取空间信息** |
|
|
314
314
|
|
|
315
315
|
---
|
|
316
316
|
|
|
@@ -5,16 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
## 原则
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
默认交付(仅 `dazi-work` + vsix)**不**要求全局 PATH;请用 **`dazi`**。
|
|
9
|
+
开发机可选安装 **`@dazitech/cli`**(pnpm 全局)后直接使用 `dazi` / `dazi-flow`。
|
|
10
10
|
|
|
11
11
|
## 命令前缀
|
|
12
12
|
|
|
13
|
-
| 场景
|
|
14
|
-
|
|
15
|
-
| 本体 / 流程 / 鉴权 / 数据 /
|
|
16
|
-
|
|
|
17
|
-
|
|
|
13
|
+
| 场景 | 工作目录 | 命令形式 |
|
|
14
|
+
| ---------------------------------------- | ---------------------------------------------- | ----------------------------------- |
|
|
15
|
+
| 本体 / 流程 / 鉴权 / 数据 / 文档(默认) | **`dazi-work` 根** | `dazi <子命令...>` |
|
|
16
|
+
| 同上(已 `pnpm add -g @dazitech/cli`) | **`dazi-work` 根**(自动识别)或任意目录 | `dazi <子命令...>`、`dazi flow ...` |
|
|
17
|
+
| DRAP 应用 | **`dazi-work/项目/app_<名称>/`**(应用项目根) | `pnpm run dazi-app -- <子命令...>` |
|
|
18
|
+
| 环境自检 | **`dazi-work` 根** | `.\scripts\doctor-cli.ps1` |
|
|
18
19
|
|
|
19
20
|
CMD 用户:`scripts\dazi.cmd`、`scripts\doctor-cli.cmd`(转发到同名 `.ps1`)。
|
|
20
21
|
|
|
@@ -31,32 +32,32 @@ cd D:\path\to\dazi-work
|
|
|
31
32
|
.\scripts\doctor-cli.ps1
|
|
32
33
|
|
|
33
34
|
# 4) 登录
|
|
34
|
-
|
|
35
|
+
dazi auth login
|
|
35
36
|
# 或
|
|
36
|
-
|
|
37
|
+
dazi auth set-token --token "<jwt>"
|
|
37
38
|
|
|
38
39
|
# 5) 验证
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
dazi auth whoami
|
|
41
|
+
dazi onto function list --space <space-id>
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
## 文档中的写法对照
|
|
44
45
|
|
|
45
|
-
内置帮助文档里的可运行示例统一采用
|
|
46
|
+
内置帮助文档里的可运行示例统一采用 **`dazi`**,等价关系如下:
|
|
46
47
|
|
|
47
|
-
| 文档示例
|
|
48
|
-
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
| `pnpm run dazi-app -- upload ...`
|
|
48
|
+
| 文档示例 | 含义 |
|
|
49
|
+
| ---------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
50
|
+
| `dazi auth whoami` | 原 `dazi auth whoami` |
|
|
51
|
+
| `dazi onto script publish ...` | 原 `dazi onto script publish ...`(**勿用** `dazi-onto`) |
|
|
52
|
+
| `dazi flow project pull --flow 98 --dir 项目\flow_x\流程\MyFlow` | 流程项目拉取 |
|
|
53
|
+
| `dazi flow run node-exec --node <uuid> --dir <流程目录>` | 单节点测试 |
|
|
54
|
+
| `pnpm run dazi-app -- upload ...` | 原 `dazi-app upload ...`(须在**应用项目根**,含 `sdk/`、`templates/`) |
|
|
54
55
|
|
|
55
56
|
扩展侧栏、命令面板触发的操作与上述 CLI **同源**(bundled `clis/*.js`)。
|
|
56
57
|
|
|
57
58
|
### 流程子命令(`flow` → `dazi-flow`)
|
|
58
59
|
|
|
59
|
-
|
|
60
|
+
`dazi flow …` **不会**执行独立的 `dazi-flow.exe`,而是:
|
|
60
61
|
|
|
61
62
|
1. `dazi.ps1` 设置 `DAZI_BUNDLED_DIR`,在 **dazi-work 根**执行 `node bundled/clis/dazi.js`
|
|
62
63
|
2. `dazi.js` 将 `flow` 后所有参数 **转发**给 `node bundled/clis/dazi-flow.js`
|
|
@@ -64,7 +65,7 @@ cd D:\path\to\dazi-work
|
|
|
64
65
|
因此文档里的 `dazi-flow project pull …` 在 Trae / VS Code 交付环境中应写为:
|
|
65
66
|
|
|
66
67
|
```powershell
|
|
67
|
-
|
|
68
|
+
dazi flow project pull --flow 98 --dir "项目\flow_xxx\流程\MyFlow"
|
|
68
69
|
```
|
|
69
70
|
|
|
70
71
|
流程项目开发详见 [flow/flow-project-guide](../flow/flow-project-guide.md)。
|
|
@@ -73,18 +74,18 @@ cd D:\path\to\dazi-work
|
|
|
73
74
|
|
|
74
75
|
1. 环境变量 `DAZI_BUNDLED_DIR`
|
|
75
76
|
2. `dazi-work/tools/dazi-clis/`(可选离线包)
|
|
76
|
-
3. 已安装扩展(路径因 IDE 而异)
|
|
77
|
-
- Trae:`%USERPROFILE%\.trae\extensions\dazitech.dazi-vscode-*\bundled\clis`
|
|
78
|
-
- Cursor / VS Code:`.cursor\extensions` 或 `.vscode\extensions`
|
|
77
|
+
3. 已安装扩展(路径因 IDE 而异)
|
|
78
|
+
- Trae:`%USERPROFILE%\.trae\extensions\dazitech.dazi-vscode-*\bundled\clis`
|
|
79
|
+
- Cursor / VS Code:`.cursor\extensions` 或 `.vscode\extensions`
|
|
79
80
|
- 也可:`%VSCODE_EXTENSIONS%`、`dazi-work\tools\dazi-clis`(`sync-clis-from-extension.ps1`)
|
|
80
81
|
|
|
81
82
|
## 常见错误
|
|
82
83
|
|
|
83
|
-
| 现象
|
|
84
|
-
|
|
85
|
-
| `dazi-onto` 找不到 | v3 无此全局命令
|
|
86
|
-
| `dazi` 找不到
|
|
87
|
-
| `dazi-app` 找不到
|
|
84
|
+
| 现象 | 原因 | 处理 |
|
|
85
|
+
| ------------------ | ----------------------------------------- | ----------------------------------------------- |
|
|
86
|
+
| `dazi-onto` 找不到 | v3 无此全局命令 | 改用 `dazi onto ...` |
|
|
87
|
+
| `dazi` 找不到 | 未装 vsix / 未用包装脚本 / 未全局安装 CLI | `doctor-cli.ps1` 或 `pnpm add -g @dazitech/cli` |
|
|
88
|
+
| `dazi-app` 找不到 | 未在应用项目根或未 pnpm install | `cd 项目/app_<名> && pnpm install` |
|
|
88
89
|
|
|
89
90
|
## 相关文档
|
|
90
91
|
|
|
@@ -3,84 +3,85 @@
|
|
|
3
3
|
**文档 ID**: `guides/cli-reference`
|
|
4
4
|
|
|
5
5
|
> **生产环境**:在 `dazi-work` 根目录,所有 `dazi` / `dazi onto` / `dazi flow` 命令写作
|
|
6
|
-
>
|
|
6
|
+
> **`dazi <子命令>`**;DRAP 在**应用项目根**(`项目/app_<名称>/`,含 `sdk/`)用 **`pnpm run dazi-app -- <子命令>`**。
|
|
7
7
|
> 详见 [CLI 调用约定](./cli-invocation.md)。首次安装后运行 **`.\scripts\doctor-cli.ps1`**。
|
|
8
8
|
|
|
9
|
-
## 主 CLI
|
|
10
|
-
|
|
11
|
-
| 命令
|
|
12
|
-
|
|
|
13
|
-
|
|
|
14
|
-
|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
34
|
-
##
|
|
35
|
-
|
|
36
|
-
| 命令
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
-
|
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
##
|
|
51
|
-
|
|
52
|
-
> **流程项目日常开发**见 [flow/flow-project-guide](../flow/flow-project-guide.md)。
|
|
53
|
-
> 下列 `flow` 子命令均写作 `.\scripts\dazi.ps1 flow <...>`。
|
|
9
|
+
## 主 CLI(`dazi`)
|
|
10
|
+
|
|
11
|
+
| 命令 | 说明 |
|
|
12
|
+
| ------------------------- | -------------------------------------------------- |
|
|
13
|
+
| `dazi auth login` | 用户名密码登录 |
|
|
14
|
+
| `dazi auth set-token` | 绑定 JWT Token |
|
|
15
|
+
| `dazi auth whoami` | 显示当前账号 |
|
|
16
|
+
| `dazi auth migrate` | 迁移旧版认证 |
|
|
17
|
+
| `dazi doctor` | 环境诊断 |
|
|
18
|
+
| `dazi env` | 显示环境信息 |
|
|
19
|
+
| `dazi docs list` | 列出文档 |
|
|
20
|
+
| `dazi docs open <id>` | 打开文档 |
|
|
21
|
+
| `dazi docs sync` | 同步内置文档到 `资源/docs/` |
|
|
22
|
+
| `dazi prompt list` | 列出提示词 |
|
|
23
|
+
| `dazi prompt show <id>` | 显示提示词 |
|
|
24
|
+
| `dazi prompt sync` | 同步内置提示词到 `资源/prompts/` |
|
|
25
|
+
| `dazi examples list` | 列出示例脚本 |
|
|
26
|
+
| `dazi examples open <id>` | 显示示例内容 |
|
|
27
|
+
| `dazi examples sync` | 同步内置示例到 `资源/examples/` |
|
|
28
|
+
| `dazi migrate workspace` | 迁移工作区 |
|
|
29
|
+
| `dazi migrate config` | 迁移旧配置 |
|
|
30
|
+
| `dazi onto <args>` | 本体 CLI(**勿用** `dazi-onto`) |
|
|
31
|
+
| `dazi flow <args>` | 流程 CLI |
|
|
32
|
+
| `dazi app <args>` | 应用 CLI(亦可在应用项目根用 `pnpm run dazi-app`) |
|
|
33
|
+
|
|
34
|
+
## 本体(`dazi onto ...`)
|
|
35
|
+
|
|
36
|
+
| 命令 | 说明 |
|
|
37
|
+
| ---------------------------------------------------------- | ---------------- |
|
|
38
|
+
| `dazi onto space list` | 空间列表 |
|
|
39
|
+
| `dazi onto space snapshot` | 拉取空间快照 |
|
|
40
|
+
| `dazi onto space init` | 初始化空间工作区 |
|
|
41
|
+
| `dazi onto function list` | 函数定义列表 |
|
|
42
|
+
| `dazi onto function run` | 执行函数 |
|
|
43
|
+
| `dazi onto function publish` | 发布函数 |
|
|
44
|
+
| `dazi onto function update-code` | 更新函数代码 |
|
|
45
|
+
| `dazi onto action list/update-code/delete` | 动作管理 |
|
|
46
|
+
| `dazi onto rule list/run-seed/delete` | 规则管理 |
|
|
47
|
+
| `dazi onto script sync/publish/publish-preview/run/dedupe` | 脚本管理 |
|
|
48
|
+
| `dazi onto mcp serve` | 启动本体 MCP |
|
|
49
|
+
|
|
50
|
+
## 流程(`dazi flow ...`)
|
|
51
|
+
|
|
52
|
+
> **流程项目日常开发**见 [flow/flow-project-guide](../flow/flow-project-guide.md)。
|
|
54
53
|
|
|
55
54
|
### 流程项目(`项目/flow_*/流程/<名>/`)
|
|
56
55
|
|
|
57
|
-
| 命令
|
|
58
|
-
|
|
59
|
-
| `flow project pull --flow <id> --dir <流程目录>` | 拉取 snapshot 并拆分为 flow.json + 节点代码 |
|
|
60
|
-
| `flow project push --dir <dir> [--canvas]`
|
|
61
|
-
| `flow project
|
|
62
|
-
| `flow
|
|
63
|
-
| `flow
|
|
64
|
-
| `flow
|
|
65
|
-
| `flow
|
|
66
|
-
| `flow
|
|
67
|
-
| `flow
|
|
56
|
+
| 命令 | 说明 |
|
|
57
|
+
| ----------------------------------------------------- | ------------------------------------------- |
|
|
58
|
+
| `dazi flow project pull --flow <id> --dir <流程目录>` | 拉取 snapshot 并拆分为 flow.json + 节点代码 |
|
|
59
|
+
| `dazi flow project push --dir <dir> [--canvas]` | 提交脏代码节点;**配置变更必须** `--canvas` |
|
|
60
|
+
| `dazi flow project doctor --dir <dir>` | 检查 flow.json / meta / 节点/ 一致性 |
|
|
61
|
+
| `dazi flow project repair-meta --dir <dir>` | 修复 flow.meta.json 索引 |
|
|
62
|
+
| `dazi flow project status --dir <dir>` | 本地代码改动 |
|
|
63
|
+
| `dazi flow node push --node <uuid> --dir <dir>` | 提交单节点代码 |
|
|
64
|
+
| `dazi flow node pull --node <uuid> --dir <dir>` | 拉取单节点代码 |
|
|
65
|
+
| `dazi flow run node-exec --node <uuid> --dir <dir>` | 单节点测试 |
|
|
66
|
+
| `dazi flow run flow-exec --dir <dir> --type debug` | 整流程运行 |
|
|
67
|
+
| `dazi flow variable pull --name <名> --dir <dir>` | 拉取变量到 `变量/<名>.json` |
|
|
68
|
+
| `dazi flow variable sync --dir <dir>` | 同步全部调试变量 |
|
|
68
69
|
|
|
69
70
|
### 平台级 / 旧式
|
|
70
71
|
|
|
71
|
-
| 命令
|
|
72
|
-
|
|
73
|
-
| `flow flows list`
|
|
74
|
-
| `flow flows get <id>`
|
|
75
|
-
| `flow flows create`
|
|
76
|
-
| `flow snapshot pull --flow <id>`
|
|
77
|
-
| `flow snapshot push-graph`
|
|
78
|
-
| `flow run start <id>` / `run debug <id>`
|
|
79
|
-
| `flow run variables-list`
|
|
80
|
-
| `flow source list/tables/table-structure` | 数据源
|
|
81
|
-
| `flow plan compile/apply/markdown`
|
|
82
|
-
| `flow file list/upload/pull`
|
|
83
|
-
| `flow mcp serve`
|
|
72
|
+
| 命令 | 说明 |
|
|
73
|
+
| ---------------------------------------------- | ------------------------ |
|
|
74
|
+
| `dazi flow flows list` | Flow 列表 |
|
|
75
|
+
| `dazi flow flows get <id>` | Flow 详情 |
|
|
76
|
+
| `dazi flow flows create` | 新建 Flow |
|
|
77
|
+
| `dazi flow snapshot pull --flow <id>` | 拉取快照到 `flows/<id>/` |
|
|
78
|
+
| `dazi flow snapshot push-graph` | 推送图快照 |
|
|
79
|
+
| `dazi flow run start <id>` / `run debug <id>` | 启动 / 调试 Run |
|
|
80
|
+
| `dazi flow run variables-list` | 查看变量 |
|
|
81
|
+
| `dazi flow source list/tables/table-structure` | 数据源 |
|
|
82
|
+
| `dazi flow plan compile/apply/markdown` | 执行计划 |
|
|
83
|
+
| `dazi flow file list/upload/pull` | 文件管理 |
|
|
84
|
+
| `dazi flow mcp serve` | Flow MCP |
|
|
84
85
|
|
|
85
86
|
## 应用(`项目/app_<名称>/` 应用项目根)
|
|
86
87
|
|
|
@@ -95,4 +96,4 @@
|
|
|
95
96
|
| `pnpm run dazi-app -- asset list` | drap-assets 列表 |
|
|
96
97
|
| `pnpm run dazi-app -- manifest validate --cwd apps/<app> --scan-src` | 校验 manifest |
|
|
97
98
|
|
|
98
|
-
等价写法(仍在 `dazi-work`
|
|
99
|
+
等价写法(仍在 `dazi-work` 根):`dazi app <子命令>`。
|