@thinkingai/ae-cli 6.0.33 → 6.0.34

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.
Files changed (80) hide show
  1. package/README.md +3 -2
  2. package/README.zh.md +3 -2
  3. package/dist/index.js +2 -2
  4. package/dist/{te-engage-GJRVQMK3.js → te-engage-2FSDUOIZ.js} +965 -1578
  5. package/dist/{te-engage-JIXX3WBI.js → te-engage-BMJ6UOUU.js} +965 -1578
  6. package/dist/{te-kb-CIZXRWMO.js → te-kb-E7NSCBRB.js} +25 -6
  7. package/package.json +1 -1
  8. package/skills/ae-engage/SKILL.md +127 -104
  9. package/skills/ae-engage/references/activity-activity-type.md +1 -1
  10. package/skills/ae-engage/references/activity-activity.md +1 -1
  11. package/skills/ae-engage/references/activity-approval.md +5 -7
  12. package/skills/ae-engage/references/activity-task.md +12 -18
  13. package/skills/ae-engage/references/activity-topic.md +39 -22
  14. package/skills/ae-engage/references/add-approver.md +4 -4
  15. package/skills/ae-engage/references/add-channel.md +10 -5
  16. package/skills/ae-engage/references/approval-approver-delete.md +1 -1
  17. package/skills/ae-engage/references/approver-list.md +4 -4
  18. package/skills/ae-engage/references/build-task-save-guide.md +13 -13
  19. package/skills/ae-engage/references/cancel-query-by-request-id.md +7 -6
  20. package/skills/ae-engage/references/channel-detail.md +14 -9
  21. package/skills/ae-engage/references/channel-list.md +15 -10
  22. package/skills/ae-engage/references/channel-mgmt.md +109 -0
  23. package/skills/ae-engage/references/channel-test-send.md +1 -1
  24. package/skills/ae-engage/references/channel-update-config.md +1 -1
  25. package/skills/ae-engage/references/channel_touch_limits_list.md +1 -1
  26. package/skills/ae-engage/references/client-param.md +34 -16
  27. package/skills/ae-engage/references/common-metric.md +85 -18
  28. package/skills/ae-engage/references/config-item-analysis-report.md +8 -27
  29. package/skills/ae-engage/references/config-item-strategy-comparison.md +7 -18
  30. package/skills/ae-engage/references/config-item-trigger-report.md +8 -35
  31. package/skills/ae-engage/references/delete-channel.md +5 -5
  32. package/skills/ae-engage/references/delete-flow.md +5 -5
  33. package/skills/ae-engage/references/flow-ab-split-node-report.md +11 -45
  34. package/skills/ae-engage/references/flow-detail.md +15 -10
  35. package/skills/ae-engage/references/flow-list.md +9 -4
  36. package/skills/ae-engage/references/flow-node-config-schema.md +9 -8
  37. package/skills/ae-engage/references/flow-node-detail-report.md +11 -46
  38. package/skills/ae-engage/references/flow-node-overview-report.md +11 -43
  39. package/skills/ae-engage/references/flow-process-report.md +12 -50
  40. package/skills/ae-engage/references/flow-update-remark.md +19 -0
  41. package/skills/ae-engage/references/manage-flow.md +19 -19
  42. package/skills/ae-engage/references/manage-task.md +5 -5
  43. package/skills/ae-engage/references/modify-flow-base-info.md +8 -8
  44. package/skills/ae-engage/references/preset-event.md +1 -1
  45. package/skills/ae-engage/references/push-language.md +1 -1
  46. package/skills/ae-engage/references/save-flow.md +54 -52
  47. package/skills/ae-engage/references/save-task.md +23 -17
  48. package/skills/ae-engage/references/scene-config-channel.md +90 -10
  49. package/skills/ae-engage/references/scene-config-group.md +1 -1
  50. package/skills/ae-engage/references/scene-config-item.md +27 -4
  51. package/skills/ae-engage/references/scene-config-metric.md +1 -1
  52. package/skills/ae-engage/references/scene-config-param.md +2 -2
  53. package/skills/ae-engage/references/scene-preset-metric.md +1 -1
  54. package/skills/ae-engage/references/scene-strategy.md +19 -3
  55. package/skills/ae-engage/references/scene-template.md +10 -4
  56. package/skills/ae-engage/references/task-data-detail.md +5 -67
  57. package/skills/ae-engage/references/task-data-overview.md +5 -35
  58. package/skills/ae-engage/references/task-detail.md +5 -5
  59. package/skills/ae-engage/references/task-experiment-report.md +5 -38
  60. package/skills/ae-engage/references/task-list.md +4 -4
  61. package/skills/ae-engage/references/task-metric-detail.md +5 -43
  62. package/skills/ae-engage/references/task-stats.md +5 -5
  63. package/skills/ae-engage/references/update-channel-status.md +6 -6
  64. package/skills/ae-engage/references/validate-flow-node-config.md +12 -11
  65. package/skills/ae-engage/references/whitelist-list.md +4 -4
  66. package/skills/ae-engage/references/whitelist.md +1 -1
  67. package/skills/ae-engage/references/workbench-workbench.md +1 -1
  68. package/skills/ae-kb/SKILL.md +9 -5
  69. package/skills/ae-engage/references/config-channel-detail.md +0 -31
  70. package/skills/ae-engage/references/config-channel-list.md +0 -26
  71. package/skills/ae-engage/references/config-item-detail.md +0 -29
  72. package/skills/ae-engage/references/config-item-list.md +0 -18
  73. package/skills/ae-engage/references/copy-config-template.md +0 -28
  74. package/skills/ae-engage/references/delete-config-channel.md +0 -23
  75. package/skills/ae-engage/references/delete-config-item.md +0 -24
  76. package/skills/ae-engage/references/engage-scene-config-item.md +0 -69
  77. package/skills/ae-engage/references/manage-strategy.md +0 -73
  78. package/skills/ae-engage/references/strategy-detail.md +0 -72
  79. package/skills/ae-engage/references/strategy-list.md +0 -20
  80. package/skills/ae-engage/references/update-config-channel-status.md +0 -31
@@ -11,18 +11,37 @@ import "./chunk-LYVNONC4.js";
11
11
  // src/commands/te-kb/query.ts
12
12
  var API_PATH = "/agent/api/external/knowledge-bases/query";
13
13
  function buildBody(ctx) {
14
- return {
15
- query: ctx.str("query"),
16
- sources: ctx.json("sources")
14
+ const body = {
15
+ query: ctx.str("query")
17
16
  };
17
+ const sources = ctx.json("sources");
18
+ if (sources) body.sources = sources;
19
+ const topK = ctx.num("top-k");
20
+ if (topK) body.topK = topK;
21
+ const locale = ctx.str("locale");
22
+ if (locale) body.locale = locale;
23
+ return body;
18
24
  }
19
25
  var query = {
20
26
  service: "kb",
21
27
  command: "+query",
22
- description: "Query knowledge.",
28
+ description: "Query knowledge bases via POST /agent/api/external/knowledge-bases/query. Returns ranked passages for a natural-language question.",
23
29
  flags: [
24
- { name: "query", type: "string", required: true, alias: "q", desc: "Natural language question to query against the knowledge bases" },
25
- { name: "sources", type: "json", required: true, desc: 'JSON array of knowledge base refs, e.g. [{"scope":"company","name":"engineering-handbook"}]' }
30
+ {
31
+ name: "query",
32
+ type: "string",
33
+ required: true,
34
+ alias: "q",
35
+ desc: "Natural language question to query against the knowledge bases"
36
+ },
37
+ {
38
+ name: "sources",
39
+ type: "json",
40
+ required: false,
41
+ desc: 'Optional JSON array of knowledge base refs to scope the query, e.g. [{"scope":"company","name":"engineering-handbook"}]. Omit to search all accessible knowledge bases.'
42
+ },
43
+ { name: "top-k", type: "number", required: false, desc: "Max number of hits to return (1-10000, default 10)" },
44
+ { name: "locale", type: "string", required: false, desc: "Optional locale: zh | en | ja | ko" }
26
45
  ],
27
46
  risk: "read",
28
47
  dryRun: (ctx) => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkingai/ae-cli",
3
- "version": "6.0.33",
3
+ "version": "6.0.34",
4
4
  "description": "CLI tool for ThinkingAI (AE) analytics platform",
5
5
  "type": "module",
6
6
  "bin": {
@@ -18,7 +18,7 @@ Global parameters:
18
18
  |---|---|
19
19
  | `--format <json\|table>` | Output format. Default is JSON. |
20
20
  | `--jq <expr>` | jq filter expression for JSON output. |
21
- | `--host <url>` | Override the active AE host. Available on every command and may be placed after the subcommand, e.g. `ae-cli engage +<command> --host <url>`. |
21
+ | `--host <url>` | Override the active AE host. Available on every command and may be placed after the subcommand, e.g. `ae-cli engage-flow flow list --host <url>`. |
22
22
 
23
23
  Output and errors:
24
24
  - Successful commands return machine-readable JSON by default. Envelope may include optional `_notice.host_compat`.
@@ -33,7 +33,7 @@ Safety constraints:
33
33
 
34
34
  ## Overview
35
35
 
36
- The `ae-engage` package provides Hermes Engage MCP capabilities across config items, flows, channel settings, and task data. Legacy MCP tools use `ae-cli engage +<command>`; new capability-gateway commands use `ae-cli engage-flow|engage-task|engage-setting <resource> <action>`.
36
+ The `ae-engage` package provides Hermes Engage capabilities across config items, flows, channel settings, and task data. Use capability-gateway commands through `ae-cli engage-flow|engage-task|engage-setting|engage-scene <resource> <action>`; low-frequency reports use the L3 references below.
37
37
 
38
38
  Typical use cases include:
39
39
 
@@ -45,19 +45,25 @@ Typical use cases include:
45
45
 
46
46
  ## Parameter Conventions
47
47
 
48
- - Use regular flags for simple parameters, for example `--project_id`, `--task_id`, and `--flow_uuid`
49
- - Use JSON flags for array parameters, for example `--strategy_id_list '["id1","id2"]'`
50
- - Use named JSON flags for object parameters, for example `--req '{...}'` and `--flow_list '[...]'`
48
+ - Use regular flags for simple parameters, for example `--project-id`, `--task-id`, and `--flow-uuid`
49
+ - Use JSON flags for array parameters, for example `--strategy-uuid-list '["id1","id2"]'`
50
+ - Use named JSON flags for object parameters, for example `--req '{...}'` and `--flow-list '[...]'`
51
51
  - Optional global parameters work the same way as in other domains, for example `--host`, `--mcp-url`, and `--dry-run`
52
52
 
53
+ Naming boundary:
54
+
55
+ - CLI flags use kebab-case; outer Capability input and all Capability response keys use snake_case.
56
+ - Nested business DTOs passed through `--req` or `--payload` keep their documented native camelCase fields. Do not mechanically convert those nested DTO keys to snake_case.
57
+ - Successful migrated commands return their business payload under `data`; read the matching reference's Response shape before selecting fields.
58
+
53
59
  ## JSON Parameter Format
54
60
 
55
61
  Common JSON flag examples:
56
62
 
57
63
  ```bash
58
- --provider_list '["webhook","fcm"]'
59
- --strategy_id_list '["strategy_a","strategy_b"]'
60
- --flow_id_list '["flow_1","flow_2"]'
64
+ --provider-list '["webhook","fcm"]'
65
+ --strategy-uuid-list '["strategy_a","strategy_b"]'
66
+ --flow-id-list '["flow_1","flow_2"]'
61
67
  --req '{"pageNum":1,"pageSize":20}'
62
68
  ```
63
69
 
@@ -67,13 +73,13 @@ Common JSON flag examples:
67
73
 
68
74
  ```bash
69
75
  # Query the channel list
70
- ae-cli engage +channel_list --project_id 1
76
+ ae-cli engage-setting channel list --project-id 1
71
77
 
72
78
  # Filter by provider
73
- ae-cli engage +channel_list --project_id 1 --provider_list '["webhook","fcm"]'
79
+ ae-cli engage-setting channel list --project-id 1 --provider-list '["webhook","fcm"]'
74
80
 
75
- # Query config channels
76
- ae-cli engage +config_channel_list --project_id 1
81
+ # Query config channels (config center channel management — use engage-scene, not legacy +config_channel_*)
82
+ ae-cli engage-scene config-channel list --project-id 1 --channel-type 0
77
83
 
78
84
  # Query project channel touch-limit rules
79
85
  ae-cli engage-setting channel-touch-limits list --project-id <project_id>
@@ -98,16 +104,17 @@ ae-cli engage-setting whitelist update --project-id <project_id> --whitelist-id
98
104
  ae-cli engage-setting whitelist delete --project-id <project_id> --whitelist-ids '["wl-1"]' --yes
99
105
  ae-cli engage-setting whitelist verify --project-id <project_id> --prop-code <prop_code> --column-type string --whitelist-prop-list '["v1"]'
100
106
 
101
- # Push-language (本地化) get / set
107
+ # Push-language (localization) get / set
102
108
  ae-cli engage-setting push-language get --project-id <project_id>
103
109
  ae-cli engage-setting push-language set --project-id <project_id> --push-language-column <prop_code>
104
110
 
105
- # Client param (客户端参数) update / delete / list
106
- ae-cli engage-setting client-param update --project-id <project_id> --column-name level --column-type string --select-type single --column-desc Level
111
+ # Client param update / delete / list
112
+ ae-cli engage-setting client-param create --project-id <project_id> --column-name level --column-type varchar --column-desc Level
113
+ ae-cli engage-setting client-param update --project-id <project_id> --column-name level --column-desc Level
107
114
  ae-cli engage-setting client-param delete --project-id <project_id> --column-name level --yes
108
115
  ae-cli engage-setting client-param list --project-id <project_id>
109
116
 
110
- # Config table (配置表) upload / save / list / query-data / update-data / delete
117
+ # Config table upload / save / list / query-data / update-data / delete
111
118
  ae-cli engage-setting config-table upload --project-id <project_id> --request-id <rid> --file-name data.csv --file-content "$(base64 -i data.csv)"
112
119
  ae-cli engage-setting config-table save --project-id <project_id> --request-id <rid> --info-name <table_name>
113
120
  ae-cli engage-setting config-table list --project-id <project_id>
@@ -115,14 +122,15 @@ ae-cli engage-setting config-table query-data --project-id <project_id> --info-i
115
122
  ae-cli engage-setting config-table update-data --project-id <project_id> --request-id <rid> --info-name <table_name> --info-id <info_id>
116
123
  ae-cli engage-setting config-table delete --project-id <project_id> --info-id <info_id> --yes
117
124
 
118
- # Preset event (预置事件) list / update
125
+ # Preset event list / update
119
126
  ae-cli engage-setting preset-event list --project-id <project_id>
120
127
  ae-cli engage-setting preset-event update --project-id <project_id> --add-event-desc <qp>
121
128
 
122
- # Common metric (常用指标) list / get / update / delete
129
+ # Common metric list / get / create / update / delete
123
130
  ae-cli engage-setting common-metric list --project-id <project_id>
124
131
  ae-cli engage-setting common-metric get --project-id <project_id> --metric-name <name>
125
- ae-cli engage-setting common-metric update --project-id <project_id> --metric-type <type> --metric-name <name> --metric-qp <qp> --metric-window-num 1 --metric-window-time-unit DAY --display-name <display>
132
+ ae-cli engage-setting common-metric create --project-id <project_id> --metric-type 1 --metric-name <name> --metric-qp '<qp_json>' --metric-window-num 1 --metric-window-time-unit day --display-name <display>
133
+ ae-cli engage-setting common-metric update --project-id <project_id> --metric-type 1 --metric-name <name> --metric-qp '<qp_json>' --metric-window-num 1 --metric-window-time-unit day --display-name <display>
126
134
  ae-cli engage-setting common-metric delete --project-id <project_id> --metric-name <name> --yes
127
135
  ```
128
136
 
@@ -130,50 +138,50 @@ ae-cli engage-setting common-metric delete --project-id <project_id> --metric-na
130
138
 
131
139
  ```bash
132
140
  # Query the task list
133
- ae-cli engage +task_list --project_id 1 --req '{"pageNum":1,"pageSize":20}'
141
+ ae-cli engage-task task list --project-id 1 --req '{"pageNum":1,"pageSize":20}'
134
142
 
135
143
  # Build a save_task guide before composing the final req
136
- ae-cli engage +build_task_save_guide --project_id 1 --req '{"context":{"triggerType":2,"channelId":"channel_123"}}'
144
+ ae-cli engage-task task build-save-guide --project-id 1 --req '{"context":{"triggerType":2,"channelId":"channel_123"}}'
137
145
 
138
146
  # Save a task draft (create when req.taskId is omitted)
139
- ae-cli engage +save_task --project_id 1 --req '{"baseInfo":{"taskName":"Demo Task"},"channelConfig":{"channelType":1,"channelId":"channel_123","groupContentList":[{"contentList":[{"pushLanguageCode":"default","content":"[]"}]}]},"targetConfig":{"targetClusterType":3},"triggerConfig":{"triggerType":2},"controlConfig":{"completionIndicatorDef":{"completionIndicators":[]}}}'
147
+ ae-cli engage-task task save --project-id 1 --req '{"baseInfo":{"taskName":"Demo Task"},"channelConfig":{"channelType":1,"channelId":"channel_123","groupContentList":[{"contentList":[{"pushLanguageCode":"default","content":"[]"}]}]},"targetConfig":{"targetClusterType":3},"triggerConfig":{"triggerType":2},"controlConfig":{"completionIndicatorDef":{"completionIndicators":[]}}}'
140
148
 
141
149
  # Query task details
142
- ae-cli engage +task_detail --project_id 1 --task_id task_123
150
+ ae-cli engage-task task get --project-id 1 --task-id task_123
143
151
 
144
- # Query the task overview
145
- ae-cli engage +task_data_overview --project_id 1 --task_id task_123
146
152
  ```
147
153
 
154
+ For L3 task reports, read `references/task-data-overview.md`, `references/task-data-detail.md`,
155
+ `references/task-metric-detail.md`, or `references/task-experiment-report.md` before invocation.
156
+
148
157
  ### 3. config
149
158
 
150
159
  ```bash
151
160
  # Query the config item list
152
- ae-cli engage +config_item_list --project_id 1
161
+ ae-cli engage-scene config-item list --project-id 1
153
162
 
154
163
  # Query the strategy list
155
- ae-cli engage +strategy_list --project_id 1 --config_id cfg_123
156
-
157
- # Query a config item report
158
- ae-cli engage +config_item_trigger_report \
159
- --project_id 1 --config_id cfg_123 \
160
- --start_time 2026-04-01 --end_time 2026-04-07
164
+ ae-cli engage-scene strategy list --project-id 1 --config-id cfg_123
161
165
  ```
162
166
 
167
+ For L3 config reports, read `references/config-item-trigger-report.md`,
168
+ `references/config-item-analysis-report.md`, or `references/config-item-strategy-comparison.md` before invocation.
169
+
163
170
  ### 4. flow
164
171
 
165
172
  ```bash
166
173
  # Query the flow list
167
- ae-cli engage +flow_list --project_id 1
174
+ ae-cli engage-flow flow list --project-id 1
168
175
 
169
176
  # Query flow details
170
- ae-cli engage +flow_detail --project_id 1 --flow_uuid flow_uuid_123
177
+ ae-cli engage-flow flow get --project-id 1 --flow-uuid flow_uuid_123
171
178
 
172
179
  # Query flow operation records and application logs
173
180
  ae-cli engage-flow operation-log query --project-id 1 --flow-id flow_id_123
174
181
 
175
182
  # Query flow versions and task push records
176
183
  ae-cli engage-flow version list --project-id 1 --flow-id flow_id_123
184
+ ae-cli engage-flow flow update-remark --project-id 1 --flow-uuid flow_uuid_123 --flow-version-desc "Second version"
177
185
  ae-cli engage-task operation-log query --project-id 1 --task-id task_id_123
178
186
  ae-cli engage-task push-record query --project-id 1 --task-id task_id_123 --page-num 1 --page-size 20
179
187
  ae-cli engage-task segment-list query --project-id 1 --task-id task_id_123
@@ -183,54 +191,61 @@ ae-cli engage-task channel-ref stats --project-id 1 --channel-id channel_123
183
191
  ae-cli engage-task task delete --project-id 1 --task-id task_id_123 --yes
184
192
 
185
193
  # Query the node schema
186
- ae-cli engage +flow_node_config_schema --node_type message_push
194
+ ae-cli engage-flow node-config schema --project-id 1 --node-type message_push
187
195
  ```
188
196
 
189
- ### 5. scene (场景管理 / 配置中心)
197
+ ### 5. scene (scene management / config center)
190
198
 
191
- New capability-gateway command group `engage-scene` covers 配置中心 (config center): config items, params, groups, preset/related metrics, config channels, strategies, and templates. Complex DTOs are passed with `--payload` (native camelCase JSON).
199
+ New capability-gateway command group `engage-scene` covers the config center: config items, params, groups, preset/related metrics, config channels, strategies, and templates. Complex DTOs are passed with `--payload` (native camelCase JSON).
192
200
 
193
201
  ```bash
194
- # Config item (配置项) list / create / update
202
+ # Config item list / get / create / update / delete
195
203
  ae-cli engage-scene config-item list --project-id <project_id>
204
+ ae-cli engage-scene config-item get --project-id <project_id> --config-id <config_id>
196
205
  ae-cli engage-scene config-item create --project-id <project_id> --config-id <config_id> --config-name <name> --business-type params
197
206
  ae-cli engage-scene config-item update --project-id <project_id> --config-id <config_id> --config-name <name>
207
+ ae-cli engage-scene config-item delete --project-id <project_id> --config-id <config_id> --open-id <open_id> --yes
198
208
 
199
- # Config param (配置项参数) list / batch-add / update / batch-delete
209
+ # Config param list / batch-add / update / batch-delete
200
210
  ae-cli engage-scene config-param list --project-id <project_id> --config-id <config_id>
201
211
  ae-cli engage-scene config-param batch-add --project-id <project_id> --config-id <config_id> --params '[{"param_name":"a","param_type":"string"}]'
202
212
  ae-cli engage-scene config-param update --project-id <project_id> --config-id <config_id> --param-id <param_id> --param-name a
203
213
  ae-cli engage-scene config-param batch-delete --project-id <project_id> --param-ids '[1,2]' --yes
204
214
 
205
- # Config group (配置项分组) list / batch-add / update / batch-delete
215
+ # Config group list / batch-add / update / batch-delete
206
216
  ae-cli engage-scene config-group list --project-id <project_id>
207
217
  ae-cli engage-scene config-group batch-add --project-id <project_id> --group-names '["g1"]'
208
218
  ae-cli engage-scene config-group update --project-id <project_id> --group-id <group_id> --group-name g2
209
219
  ae-cli engage-scene config-group batch-delete --project-id <project_id> --group-ids '[1,2]' --yes
210
220
 
211
- # Preset metric (预置指标) get / set
221
+ # Preset metric get / set
212
222
  ae-cli engage-scene preset-metric get --project-id <project_id> --config-id <config_id>
213
223
  ae-cli engage-scene preset-metric set --project-id <project_id> --config-id <config_id> --impression-event-qp '<qp>'
214
224
 
215
- # Config metric (关联指标) list / get / batch-add / update-rule / batch-delete
225
+ # Config metric list / get / batch-add / update-rule / batch-delete
216
226
  ae-cli engage-scene config-metric list --project-id <project_id> --config-id <config_id>
217
227
  ae-cli engage-scene config-metric get --project-id <project_id> --metric-id <metric_id>
218
228
  ae-cli engage-scene config-metric batch-add --project-id <project_id> --config-id <config_id> --ta-metric-ids '[1,2]'
219
229
  ae-cli engage-scene config-metric update-rule --project-id <project_id> --metric-id <metric_id> --event-list '[{"event_name":"e1","filter":"true"}]'
220
230
  ae-cli engage-scene config-metric batch-delete --project-id <project_id> --config-id <config_id> --metric-ids '[1,2]' --yes
221
231
 
222
- # Config channel (配置通道) create / update / query-log
232
+ # Config channel list / get / create / update / update-status / delete / query-log
233
+ # Workflows: references/channel-mgmt.md · schema: references/scene-config-channel.md
234
+ ae-cli engage-scene config-channel list --project-id <project_id> [--channel-type 0|1]
235
+ ae-cli engage-scene config-channel get --project-id <project_id> --channel-id <channel_id>
223
236
  ae-cli engage-scene config-channel create --project-id <project_id> --channel-name <name> --channel-type 0 --config '<json>'
224
237
  ae-cli engage-scene config-channel update --project-id <project_id> --channel-id <channel_id> --channel-name <name> [--config '<json>']
238
+ ae-cli engage-scene config-channel update-status --project-id <project_id> --channel-id <channel_id> --channel-status 1|2
239
+ ae-cli engage-scene config-channel delete --project-id <project_id> --channel-id <channel_id> --yes
225
240
  ae-cli engage-scene config-channel query-log --project-id <project_id> --channel-id <channel_id>
226
241
 
227
- # Strategy (策略) create / update / log / batch-copy
242
+ # Strategy create / update / log / batch-copy
228
243
  ae-cli engage-scene strategy create --project-id <project_id> --payload '{"configId":"cfg-1","templateId":"tpl-1","strategyName":"s1"}'
229
244
  ae-cli engage-scene strategy update --project-id <project_id> --payload '{"strategyUuid":"uuid-1"}'
230
245
  ae-cli engage-scene strategy log --project-id <project_id> --strategy-uuid <uuid>
231
246
  ae-cli engage-scene strategy batch-copy --project-id <project_id> --config-id <config_id> --strategy-ids '["s1"]'
232
247
 
233
- # Template (模板) list / get / create / update / update-status / delete
248
+ # Template list / get / create / update / update-status / delete
234
249
  ae-cli engage-scene template list --project-id <project_id> --config-id <config_id>
235
250
  ae-cli engage-scene template get --project-id <project_id> --config-id <config_id> --template-id <template_id>
236
251
  ae-cli engage-scene template create --project-id <project_id> --payload '{"configId":"cfg-1","templateId":"tpl-1","templateName":"t1"}'
@@ -239,12 +254,12 @@ ae-cli engage-scene template update-status --project-id <project_id> --config-id
239
254
  ae-cli engage-scene template delete --project-id <project_id> --config-id <config_id> --template-id <template_id> --yes
240
255
  ```
241
256
 
242
- ### 6. activity (运营活动)
257
+ ### 6. activity (campaign activities)
243
258
 
244
- New capability-gateway command group `engage-activity` covers 运营活动: activities, approval workflow, topics, activity types, and standalone tasks. Complex DTOs are passed with `--payload` (native camelCase JSON).
259
+ New capability-gateway command group `engage-activity` covers campaign activities: activities, approval workflow, topics, activity types, and standalone tasks. Complex DTOs are passed with `--payload` (native camelCase JSON).
245
260
 
246
261
  ```bash
247
- # Activity (运营活动) create / update / delete / list / get / pause / end / stats / info-list
262
+ # Activity create / update / delete / list / get / pause / end / stats / info-list
248
263
  ae-cli engage-activity activity create --project-id <project_id> --payload '{"activityName":"a1","activityType":"other_type","tzOffset":8,"periodType":0}'
249
264
  ae-cli engage-activity activity update --project-id <project_id> --payload '{"activityId":"act-1","activityName":"a1","activityType":"other_type","tzOffset":8,"periodType":0}'
250
265
  ae-cli engage-activity activity delete --project-id <project_id> --activity-id <activity_id> --yes
@@ -255,51 +270,49 @@ ae-cli engage-activity activity end --project-id <project_id> --activity-id <act
255
270
  ae-cli engage-activity activity stats --project-id <project_id>
256
271
  ae-cli engage-activity activity info-list --project-id <project_id> --activity-id <activity_id>
257
272
 
258
- # Approval (活动审批) submit / approve / reject / cancel
259
- ae-cli engage-activity approval submit --project-id <project_id> --activity-id <activity_id>
273
+ # Approval approve / reject / cancel
274
+ # Note: engage-activity.approval.submit is temporarily disabled (testing issues); do not call it.
260
275
  ae-cli engage-activity approval approve --project-id <project_id> --activity-id <activity_id>
261
276
  ae-cli engage-activity approval reject --project-id <project_id> --activity-id <activity_id> --reason <reason>
262
277
  ae-cli engage-activity approval cancel --project-id <project_id> --activity-id <activity_id>
263
278
 
264
- # Topic (活动主题) remove-task / delete / get / copy
265
- # Temporarily disabled: topic create / topic update
266
- # See references/activity-topic.md for topicClusterKey vs task clusterKey and remaining commands.
267
- # ae-cli engage-activity topic create --project-id <project_id> --payload '{"activityId":"act-1","topicName":"t1","targetClusterType":2,"topicClusterKey":"<cluster>","channelType":1,"channelId":"c1","triggerType":0,"enableChannelTouchLimits":false,"frequencyLimits":"{}","tasks":[...]}'
268
- # ae-cli engage-activity topic update --project-id <project_id> --payload '{"topicId":"topic-1", ...}'
279
+ # Topic create / update / remove-task / delete / get / copy
280
+ # See references/activity-topic.md for topicClusterKey vs task clusterKey and triggerType notes.
281
+ ae-cli engage-activity topic create --project-id <project_id> --payload '{"activityId":"act-1","topicName":"t1","targetClusterType":2,"topicClusterKey":"<cluster>","channelType":1,"channelId":"c1","triggerType":0,"triggerTime":"2026-12-31 12:00","enableChannelTouchLimits":false,"frequencyLimits":"{}","tasks":[...]}'
282
+ ae-cli engage-activity topic update --project-id <project_id> --payload '{"topicId":"topic-1", ...}'
269
283
  ae-cli engage-activity topic remove-task --project-id <project_id> --task-id <task_id> --yes
270
284
  ae-cli engage-activity topic delete --project-id <project_id> --topic-id <topic_id> --yes
271
285
  ae-cli engage-activity topic get --project-id <project_id> --topic-id <topic_id>
272
286
  ae-cli engage-activity topic copy --project-id <project_id> --topic-id <topic_id> [--new-name <name>]
273
287
 
274
- # Activity type (活动类型) list / batch-add / update / batch-delete
288
+ # Activity type list / batch-add / update / batch-delete
275
289
  ae-cli engage-activity activity-type list --project-id <project_id>
276
290
  ae-cli engage-activity activity-type batch-add --project-id <project_id> --type-names '["t1","t2"]'
277
291
  ae-cli engage-activity activity-type update --project-id <project_id> --id <type_id> --type-name t3
278
292
  ae-cli engage-activity activity-type batch-delete --project-id <project_id> --ids '["id1","id2"]' --yes
279
293
 
280
- # Standalone task (独立任务) get / copy
281
- # Temporarily disabled: task create / task update
294
+ # Standalone task get / create / update / copy
282
295
  ae-cli engage-activity task get --project-id <project_id> --task-id <task_id>
283
- # ae-cli engage-activity task create --project-id <project_id> --payload '{"taskName":"t1","activityId":"act-1", ...}'
284
- # ae-cli engage-activity task update --project-id <project_id> --payload '{"taskId":"task-1", ...}'
296
+ ae-cli engage-activity task create --project-id <project_id> --payload '{"taskName":"t1","activityId":"act-1", ...}'
297
+ ae-cli engage-activity task update --project-id <project_id> --payload '{"taskId":"task-1", ...}'
285
298
  ae-cli engage-activity task copy --project-id <project_id> --task-id <task_id> [--new-name <name>]
286
299
  ```
287
300
 
288
- ### 7. workbench (工作台)
301
+ ### 7. workbench
289
302
 
290
- New capability-gateway command group `engage-workbench` covers 工作台 metric slots (指标卡槽): each user configures up to 4 metric cards per project. Slots are per-user; `update`/`delete` only affect the caller's own slots. The first `list` auto-initialises 4 default slots.
303
+ New capability-gateway command group `engage-workbench` covers workbench metric slots: each user configures up to 4 metric cards per project. Slots are per-user; `update`/`delete` only affect the caller's own slots. The first `list` auto-initialises 4 default slots.
291
304
 
292
305
  ```bash
293
- # Workbench slot (工作台卡槽) list / add / update / delete
306
+ # Workbench slot list / add / update / delete
294
307
  ae-cli engage-workbench workbench list --project-id <project_id>
295
308
  ae-cli engage-workbench workbench add --project-id <project_id> --metric-type <metric_type> --date-type <date_type> --order-id 1
296
309
  ae-cli engage-workbench workbench update --project-id <project_id> --slot-id <slot_id> --metric-type <metric_type> --date-type <date_type> --order-id 1
297
310
  ae-cli engage-workbench workbench delete --project-id <project_id> --slot-id <slot_id> --yes
298
311
  ```
299
312
 
300
- ## `+save_flow` Critical Constraints
313
+ ## `engage-flow flow save` Critical Constraints
301
314
 
302
- When the user wants to "create a flow / generate a flow canvas / save a flow", do not treat `+save_flow` as a normal single command. You must follow the workflow below.
315
+ When the user wants to "create a flow / generate a flow canvas / save a flow", do not treat `engage-flow flow save` as a normal single command. You must follow the workflow below.
303
316
 
304
317
  ### Required Workflow
305
318
 
@@ -319,11 +332,11 @@ ae-cli analysis user-cluster get --project-id <projectId> --cluster-names '["<co
319
332
  4. Before building touchpoint nodes such as `message_push`, `wechat_push`, or `webhook_push`, you must call:
320
333
 
321
334
  ```bash
322
- ae-cli engage +channel_list --project_id <projectId>
335
+ ae-cli engage-setting channel list --project-id <projectId>
323
336
  ```
324
337
 
325
- 5. `+save_flow` is **operation-based** (protocol v2). The `--req` object must carry an `operation` of `build`, `preview`, or `commit`. Do **not** use the old `nodeList` / `edgeList` field names — use `nodes` / `edges` with `operation=build`. A legacy `nodeList`/`edgeList` payload (or a missing `operation`) is rejected with `Unsupported save_flow operation: null`.
326
- 6. Run the lifecycle: `build` (returns `ready_to_preview` or `need_input`) → resolve any `need_input` slot → `preview` (re-issues `draftVersion` + `confirmToken`) → `commit` (uses the **preview** `draftVersion` + `confirmToken`) → returns `flowUuid`.
338
+ 5. `engage-flow flow save` is **operation-based** (protocol v2). The `--req` object must carry an `operation` of `build`, `preview`, or `commit`. Do **not** use the old `nodeList` / `edgeList` field names — use `nodes` / `edges` with `operation=build`. A legacy `nodeList`/`edgeList` payload (or a missing `operation`) is rejected with `Unsupported save_flow operation: null`.
339
+ 6. Run the lifecycle: `build` (returns `data.result.status = ready_to_preview` or `need_input`) → resolve any `data.result.next_slot` → `preview` (re-issues response fields `data.result.draft_version` + `data.result.confirm_token`) → `commit` (maps those values to request fields `draftVersion` + `confirmToken`) → reads the final ID from `data.result.result.flow_uuid`.
327
340
  7. `nodes[].config` / `edges[].config` may be a JSON object or a JSON string. If `targetClusterQp` appears inside a node `config`, its value is usually a `JSON.stringify`'d string, not a raw object.
328
341
  8. You must self-check before previewing/committing:
329
342
  - There is exactly one entry node
@@ -345,11 +358,11 @@ ae-cli engage +channel_list --project_id <projectId>
345
358
  User request
346
359
  -> Organize intent
347
360
  -> analysis user-cluster create/get
348
- -> +channel_list --project_id <projectId>
361
+ -> engage-setting channel list --project-id <projectId>
349
362
  -> Build nodes / edges
350
363
  -> Self-check
351
- -> +save_flow operation=build -> (need_input?) -> preview -> commit
352
- -> +flow_detail (verify)
364
+ -> engage-flow flow save operation=build -> (need_input?) -> preview -> commit
365
+ -> engage-flow flow get (verify)
353
366
  ```
354
367
 
355
368
  For more detailed generation rules, consult these references first:
@@ -361,18 +374,22 @@ For more detailed generation rules, consult these references first:
361
374
  ## Dry-Run Debugging
362
375
 
363
376
  ```bash
364
- ae-cli --dry-run engage +channel_list --project_id 1
365
- ae-cli --dry-run engage +task_list --project_id 1 --req '{"pageNum":1,"pageSize":20}'
366
- ae-cli --dry-run engage +build_task_save_guide --project_id 1 --req '{}'
367
- ae-cli --dry-run engage +save_task --project_id 1 --req '{"baseInfo":{"taskName":"Demo Task"},"channelConfig":{"channelType":1,"channelId":"channel_123","groupContentList":[{"contentList":[{"pushLanguageCode":"default","content":"[]"}]}]},"targetConfig":{"targetClusterType":3},"triggerConfig":{"triggerType":2},"controlConfig":{"completionIndicatorDef":{"completionIndicators":[]}}}'
368
- ae-cli --dry-run engage +flow_list --project_id 1
377
+ ae-cli --dry-run engage-setting channel list --project-id 1
378
+ ae-cli --dry-run engage-task task list --project-id 1 --req '{"pageNum":1,"pageSize":20}'
379
+ ae-cli --dry-run engage-task task build-save-guide --project-id 1 --req '{}'
380
+ ae-cli --dry-run engage-task task save --project-id 1 --req '{"baseInfo":{"taskName":"Demo Task"},"channelConfig":{"channelType":1,"channelId":"channel_123","groupContentList":[{"contentList":[{"pushLanguageCode":"default","content":"[]"}]}]},"targetConfig":{"targetClusterType":3},"triggerConfig":{"triggerType":2},"controlConfig":{"completionIndicatorDef":{"completionIndicators":[]}}}'
381
+ ae-cli --dry-run engage-flow flow list --project-id 1
369
382
  ```
370
383
 
371
384
  ## References
372
385
 
373
386
  More detailed single-command guidance is available in the business-oriented `references/` directory:
374
387
 
375
- - `references/channel-list.md`
388
+ - `references/channel-list.md` (`engage-setting.channel.list`)
389
+ - `references/channel-detail.md` (`engage-setting.channel.get`)
390
+ - `references/add-channel.md` (`engage-setting.channel.create`)
391
+ - `references/update-channel-status.md` (`engage-setting.channel.update-status`)
392
+ - `references/delete-channel.md` (`engage-setting.channel.delete`)
376
393
  - `references/channel_touch_limits_list.md` (`engage-setting.channel-touch-limits.list`)
377
394
  - `references/channel-touch-limits-batch-update.md` (`engage-setting.channel-touch-limits.batch-update`)
378
395
  - `references/channel-touch-limits-toggle.md` (`engage-setting.channel-touch-limits.toggle`)
@@ -380,34 +397,40 @@ More detailed single-command guidance is available in the business-oriented `ref
380
397
  - `references/channel-update-config.md` (`engage-setting.channel.update-config`)
381
398
  - `references/channel-test-send.md` (`engage-setting.channel.test-send`)
382
399
  - `references/approval-approver-delete.md` (`engage-setting.approval-approver.delete`)
383
- - `references/whitelist.md` (`engage-setting.whitelist.{add,update,delete,verify}`)
400
+ - `references/add-approver.md` / `references/approver-list.md` (`engage-setting.approval-approver.{add,list}`)
401
+ - `references/whitelist-list.md` / `references/whitelist.md` (`engage-setting.whitelist.{list,add,update,delete,verify}`)
402
+ - `references/cancel-query-by-request-id.md` (`engage-setting.query.cancel`, L3)
384
403
  - `references/push-language.md` (`engage-setting.push-language.{get,set}`)
385
- - `references/client-param.md` (`engage-setting.client-param.{update,delete,list}`; create temporarily disabled)
404
+ - `references/client-param.md` (`engage-setting.client-param.{create,update,delete,list}`)
386
405
  - `references/config-table.md` (`engage-setting.config-table.{upload,save,list,query-data,update-data,delete}`)
387
406
  - `references/preset-event.md` (`engage-setting.preset-event.{list,update}`)
388
- - `references/common-metric.md` (`engage-setting.common-metric.{list,get,update,delete}`; create temporarily disabled)
389
- - `references/scene-config-item.md` (`engage-scene.config-item.{list,create,update}`)
407
+ - `references/common-metric.md` (`engage-setting.common-metric.{list,get,create,update,delete}`)
408
+ - `references/scene-config-item.md` (`engage-scene.config-item.{list,get,create,update,delete}`)
390
409
  - `references/scene-config-param.md` (`engage-scene.config-param.{list,batch-add,update,batch-delete}`)
391
410
  - `references/scene-config-group.md` (`engage-scene.config-group.{list,batch-add,update,batch-delete}`)
392
411
  - `references/scene-preset-metric.md` (`engage-scene.preset-metric.{get,set}`)
393
412
  - `references/scene-config-metric.md` (`engage-scene.config-metric.{list,get,batch-add,update-rule,batch-delete}`)
394
- - `references/scene-config-channel.md` (`engage-scene.config-channel.{create,update,query-log}`)
395
- - `references/scene-strategy.md` (`engage-scene.strategy.{create,update,log,batch-copy}`)
396
- - `references/scene-template.md` (`engage-scene.template.{list,get,create,update,update-status,delete}`)
413
+ - `references/scene-config-channel.md` (`engage-scene.config-channel.{list,get,create,update,update-status,delete,query-log}`)
414
+ - `references/channel-mgmt.md` (config channel management workflows)
415
+ - `references/scene-strategy.md` (`engage-scene.strategy.{list,get,create,update,log,batch-copy,manage}`)
416
+ - `references/scene-template.md` (`engage-scene.template.{list,get,copy,create,update,update-status,delete}`)
417
+ - `references/config-item-trigger-report.md` (`engage-scene.report.config-item-trigger`, L3)
418
+ - `references/config-item-analysis-report.md` (`engage-scene.report.config-item-analysis`, L3)
419
+ - `references/config-item-strategy-comparison.md` (`engage-scene.report.strategy-comparison`, L3)
397
420
  - `references/activity-activity.md` (`engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}`)
398
- - `references/activity-approval.md` (`engage-activity.approval.{submit,approve,reject,cancel}`)
399
- - `references/activity-topic.md` (`engage-activity.topic.{remove-task,delete,get,copy}`; create/update temporarily disabled)
421
+ - `references/activity-approval.md` (`engage-activity.approval.{approve,reject,cancel}`; `submit` temporarily disabled)
422
+ - `references/activity-topic.md` (`engage-activity.topic.{create,update,remove-task,delete,get,copy}`)
400
423
  - `references/activity-activity-type.md` (`engage-activity.activity-type.{list,batch-add,update,batch-delete}`)
401
- - `references/activity-task.md` (`engage-activity.task.{get,copy}`; create/update temporarily disabled)
424
+ - `references/activity-task.md` (`engage-activity.task.{get,create,update,copy}`)
402
425
  - `references/workbench-workbench.md` (`engage-workbench.workbench.{list,add,update,delete}`)
403
426
  - `references/build-task-save-guide.md`
404
427
  - `references/save-task.md`
405
428
  - `references/task-list.md`
406
- - `references/config-item-list.md`
407
429
  - `references/flow-list.md`
408
430
  - `references/operation-log-query.md` (`engage-flow.operation-log.query`)
409
431
  - `references/task-operation-log-query.md` (`engage-task.operation-log.query`)
410
432
  - `references/version-list.md` (`engage-flow.version.list`)
433
+ - `references/flow-update-remark.md` (`ae-cli engage-flow flow update-remark`; capability `engage-flow.version.update-remark`)
411
434
  - `references/push-record-query.md` (`engage-task.push-record.query`)
412
435
  - `references/segment-list-query.md` (`engage-task.segment-list.query`)
413
436
  - `references/group-list.md` (`engage-task.group.list`)
@@ -419,24 +442,23 @@ This split documentation structure is easier to extend later, because commands w
419
442
 
420
443
  ### setting
421
444
 
422
- `channel-touch-limits list` / `channel-touch-limits batch-update` / `channel-touch-limits toggle` / `channel-touch-limits save` / `channel update-config` / `channel test-send` / `approval-approver delete` / `whitelist add` / `whitelist update` / `whitelist delete` / `whitelist verify` / `push-language get` / `push-language set` / `client-param update` / `client-param delete` / `client-param list` / `config-table upload` / `config-table save` / `config-table list` / `config-table query-data` / `config-table update-data` / `config-table delete` / `preset-event list` / `preset-event update` / `common-metric list` / `common-metric get` / `common-metric update` / `common-metric delete` (via `engage-setting`), `+channel_list`, `+channel_detail`, `+update_channel_status`, `+delete_channel`, `+add_channel`, `+whitelist_list`, `+add_approver`, `+approver_list`, `+cancel_query_by_request_id`, `+config_channel_detail`, `+config_channel_list`, `+delete_config_channel`, `+update_config_channel_status`
445
+ `channel-touch-limits list` / `channel-touch-limits batch-update` / `channel-touch-limits toggle` / `channel-touch-limits save` / `channel update-config` / `channel test-send` / `channel list` / `channel get` / `channel create` / `channel update-status` / `channel delete` / `approval-approver add` / `approval-approver list` / `approval-approver delete` / `whitelist list` / `whitelist add` / `whitelist update` / `whitelist delete` / `whitelist verify` / `push-language get` / `push-language set` / `client-param create` / `client-param update` / `client-param delete` / `client-param list` / `config-table upload` / `config-table save` / `config-table list` / `config-table query-data` / `config-table update-data` / `config-table delete` / `preset-event list` / `preset-event update` / `common-metric list` / `common-metric get` / `common-metric create` / `common-metric update` / `common-metric delete` (via `engage-setting`), plus L3 capability `engage-setting.query.cancel`
423
446
 
424
447
  ### task
425
448
 
426
- `operation-log query` / `push-record query` / `segment-list *` / `ops *` / `metric *` / `race release` / `channel-ref stats` / `group *` (via `engage-task`), `+task_data_overview`, `+task_data_detail`, `+task_metric_detail`, `+task_experiment_report`, `+task_detail`, `+task_list`, `+task_stats`, `+build_task_save_guide`, `+save_task`, `+manage_task`
449
+ `operation-log query` / `push-record query` / `segment-list *` / `ops *` / `metric *` / `race release` / `channel-ref stats` / `group *` / `task delete` / `task modify-group` / `task get` / `task list` / `task stats` / `task build-save-guide` / `task save` / `task manage` (via `engage-task`), plus L3 capabilities `engage-task.task-data.{overview,detail,metric-detail,experiment-report}`
427
450
 
428
451
  ### config
429
452
 
430
- `+config_item_trigger_report`, `+config_item_analysis_report`, `+config_item_strategy_comparison`, `+config_item_list`, `+config_item_detail`, `+delete_config_item`, `+copy_config_template`, `+strategy_list`, `+strategy_detail`, `+manage_strategy`
453
+ Legacy config MCP commands are migrated into the `scene` L2 group and the three L3 report capabilities below.
431
454
 
432
455
  ### scene
433
456
 
434
- `config-item list` / `config-item create` / `config-item update` / `config-param list` / `config-param batch-add` / `config-param update` / `config-param batch-delete` / `config-group list` / `config-group batch-add` / `config-group update` / `config-group batch-delete` / `preset-metric get` / `preset-metric set` / `config-metric list` / `config-metric get` / `config-metric batch-add` / `config-metric update-rule` / `config-metric batch-delete` / `config-channel create` / `config-channel update` / `config-channel query-log` / `strategy create` / `strategy update` / `strategy log` / `strategy batch-copy` / `template list` / `template get` / `template create` / `template update` / `template update-status` / `template delete` (via `engage-scene`), capability ids `engage-scene.config-item.{list,create,update}`, `engage-scene.config-param.{list,batch-add,update,batch-delete}`, `engage-scene.config-group.{list,batch-add,update,batch-delete}`, `engage-scene.preset-metric.{get,set}`, `engage-scene.config-metric.{list,get,batch-add,update-rule,batch-delete}`, `engage-scene.config-channel.{create,update,query-log}`, `engage-scene.strategy.{create,update,log,batch-copy}`, `engage-scene.template.{list,get,create,update,update-status,delete}`
457
+ `config-item list` / `config-item get` / `config-item create` / `config-item update` / `config-item delete` / `config-param list` / `config-param batch-add` / `config-param update` / `config-param batch-delete` / `config-group list` / `config-group batch-add` / `config-group update` / `config-group batch-delete` / `preset-metric get` / `preset-metric set` / `config-metric list` / `config-metric get` / `config-metric batch-add` / `config-metric update-rule` / `config-metric batch-delete` / `config-channel list` / `config-channel get` / `config-channel create` / `config-channel update` / `config-channel update-status` / `config-channel delete` / `config-channel query-log` / `strategy list` / `strategy get` / `strategy create` / `strategy update` / `strategy log` / `strategy batch-copy` / `strategy manage` / `template list` / `template get` / `template copy` / `template create` / `template update` / `template update-status` / `template delete` (via `engage-scene`), capability ids `engage-scene.config-item.{list,get,create,update,delete}`, `engage-scene.config-param.{list,batch-add,update,batch-delete}`, `engage-scene.config-group.{list,batch-add,update,batch-delete}`, `engage-scene.preset-metric.{get,set}`, `engage-scene.config-metric.{list,get,batch-add,update-rule,batch-delete}`, `engage-scene.config-channel.{list,get,create,update,update-status,delete,query-log}`, `engage-scene.strategy.{list,get,create,update,log,batch-copy,manage}`, `engage-scene.template.{list,get,copy,create,update,update-status,delete}`, plus L3 capabilities `engage-scene.report.{config-item-trigger,config-item-analysis,strategy-comparison}`
435
458
 
436
459
  ### activity
437
460
 
438
- `activity create` / `activity update` / `activity delete` / `activity list` / `activity get` / `activity pause` / `activity end` / `activity stats` / `activity info-list` / `approval submit` / `approval approve` / `approval reject` / `approval cancel` / `topic remove-task` / `topic delete` / `topic get` / `topic copy` / `activity-type list` / `activity-type batch-add` / `activity-type update` / `activity-type batch-delete` / `task get` / `task copy` (via `engage-activity`), capability ids `engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}`, `engage-activity.approval.{submit,approve,reject,cancel}`, `engage-activity.topic.{remove-task,delete,get,copy}`, `engage-activity.activity-type.{list,batch-add,update,batch-delete}`, `engage-activity.task.{get,copy}`
439
- <!-- Temporarily disabled: topic create / topic update / task create / task update -->
461
+ `activity create` / `activity update` / `activity delete` / `activity list` / `activity get` / `activity pause` / `activity end` / `activity stats` / `activity info-list` / `approval approve` / `approval reject` / `approval cancel` / `topic create` / `topic update` / `topic remove-task` / `topic delete` / `topic get` / `topic copy` / `activity-type list` / `activity-type batch-add` / `activity-type update` / `activity-type batch-delete` / `task get` / `task create` / `task update` / `task copy` (via `engage-activity`), capability ids `engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}`, `engage-activity.approval.{approve,reject,cancel}`, `engage-activity.topic.{create,update,remove-task,delete,get,copy}`, `engage-activity.activity-type.{list,batch-add,update,batch-delete}`, `engage-activity.task.{get,create,update,copy}`
440
462
 
441
463
  ### workbench
442
464
 
@@ -444,7 +466,7 @@ This split documentation structure is easier to extend later, because commands w
444
466
 
445
467
  ### flow
446
468
 
447
- `operation-log query` / `version list` (via `engage-flow`), `+save_flow`, `+flow_node_config_schema`, `+flow_detail`, `+flow_list`, `+flow_node_overview_report`, `+manage_flow`, `+flow_ab_split_node_report`, `+flow_process_report`, `+validate_flow_node_config`, `+flow_node_detail_report`, `+delete_flow`, `+modify_flow_base_info`
469
+ `operation-log query` / `version list` / `flow update-remark` / `flow save` / `node-config schema` / `flow get` / `flow list` / `flow manage` / `node-config validate` / `flow delete` / `flow modify-base-info` (via `engage-flow`), plus L3 capabilities `engage-flow.report.{node-overview,process,node-detail,ab-split-node}`
448
470
 
449
471
  ## Date Format
450
472
 
@@ -454,20 +476,21 @@ Commands that accept date parameters usually use `yyyy-MM-dd`, for example `--st
454
476
 
455
477
  High-risk delete commands (`risk: high-risk-write`) require explicit user authorization before execution. Ordinary write commands (`risk: write`) do not:
456
478
 
457
- - Channels and config channels: `+add_channel` (write), `+delete_channel` (high-risk-write), `+update_channel_status` (write), `+delete_config_channel` (high-risk-write), `+update_config_channel_status` (write)
458
- - Strategies and config items: `+delete_config_item` (high-risk-write), `+copy_config_template` (write), `+manage_strategy` (write)
459
- - Flows: `+save_flow` (write), `+modify_flow_base_info` (write), `+manage_flow` (write), `+delete_flow` (high-risk-write)
460
- - Tasks: `+save_task` (write), `+manage_task` (write)
479
+ - Channels: `engage-setting channel create` (write), `engage-setting channel delete` (high-risk-write), `engage-setting channel update-status` (write)
480
+ - Config channels (config center channel management): `engage-scene config-channel create|update|update-status` (write), `engage-scene config-channel delete` (high-risk-write)
481
+ - Strategies and config items: `engage-scene config-item delete` (high-risk-write), `engage-scene template copy` and `engage-scene strategy manage` (write)
482
+ - Flows: `engage-flow flow update-remark` (write), `engage-flow flow save` (write), `engage-flow flow modify-base-info` (write), `engage-flow flow manage` (write), `engage-flow flow delete` (high-risk-write)
483
+ - Tasks: `engage-task task save` (write), `engage-task task manage` (write)
461
484
 
462
485
  For task draft creation or update, use this workflow:
463
486
 
464
- 1. `ae-cli engage +channel_list --project_id <projectId>`
465
- 2. `ae-cli engage +build_task_save_guide --project_id <projectId> --req '{...}'`
487
+ 1. `ae-cli engage-setting channel list --project-id <projectId>`
488
+ 2. `ae-cli engage-task task build-save-guide --project-id <projectId> --req '{...}'`
466
489
  3. If the guide says QP-derived fields are needed, create the audience with `analysis user-cluster create`, then read its server-authored definition with `analysis user-cluster get`
467
- 4. `ae-cli engage +save_task --project_id <projectId> --req '{...}'`
490
+ 4. `ae-cli engage-task task save --project-id <projectId> --req '{...}'`
468
491
 
469
- `+build_task_save_guide` is a read-only helper. It returns scenario-specific required fields, channel content schema, unsupported combinations, examples, and a handoff template for `save_task`.
492
+ `engage-task task build-save-guide` is a read-only helper. It returns scenario-specific required fields, channel content schema, unsupported combinations, examples, and a handoff template for `save_task`.
470
493
 
471
- `+save_task` only saves a draft. It does not submit approval, does not start sending, and does not trigger task execution. If `req.taskId` is omitted it creates a new draft; if `req.taskId` is present it updates an existing draft. Update mode only supports draft tasks, and omitted fields can inherit from the existing draft before validation.
494
+ `engage-task task save` only saves a draft. It does not submit approval, does not start sending, and does not trigger task execution. If `req.taskId` is omitted it creates a new draft; if `req.taskId` is present it updates an existing draft. Update mode only supports draft tasks, and omitted fields can inherit from the existing draft before validation.
472
495
 
473
496
  Audience creation is not a fixed preflight step. Use direct `analysis user-cluster create` only when the guide requires a condition audience, and prefer the returned `cluster_name`/`clusterKey`. If the Engage schema explicitly requires QP-derived fields such as `targetConfig.qp`, `triggerConfig.triggerRule`, `clientConfig.clientQp`, or `completionIndicatorDef.event`, read the saved server-authored definition with `analysis user-cluster get`; never assemble raw QP manually.
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Capability ids: `engage-activity.activity-type.{list,batch-add,update,batch-delete}` · Domain: `engage`.
4
4
 
5
- 运营活动 - 活动类型(系统 + 自定义)。批量增删在 capability service 内循环调用现有单条后端方法(无批量后端 API)。
5
+ Campaign activities activity types (system + custom). Batch add/delete loops single-item backend calls inside the capability service (no dedicated batch backend API).
6
6
 
7
7
  ## Commands
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Capability ids: `engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}` · Domain: `engage`.
4
4
 
5
- 运营活动 - 活动主体管理。`create`/`update` 使用 `--payload` 直传后端 DTO(原生 camelCase 结构,`project_id` 单独作为参数)。
5
+ Campaign activities — activity entity management. `create`/`update` pass backend DTOs via `--payload` (native camelCase structure; `project_id` is supplied separately as a flag).
6
6
 
7
7
  ## Commands
8
8