@shulex/cxclawctl 0.1.2 → 0.1.4

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 (208) hide show
  1. package/README.md +25 -22
  2. package/capabilities.lock.json +535 -131
  3. package/dist/cli.js +2203 -127
  4. package/dist/cli.js.map +1 -1
  5. package/package.json +20 -6
  6. package/requirements-cli.txt +0 -2
  7. package/skills/__lib__/__init__.py +0 -0
  8. package/skills/__lib__/skill-runtime/bootstrap.py +0 -134
  9. package/skills/__lib__/solvea-api/__init__.py +0 -0
  10. package/skills/__lib__/solvea-api/client.py +0 -1944
  11. package/skills/__lib__/solvea-api/dashboard.py +0 -100
  12. package/skills/__lib__/solvea-api/solvea_api.py +0 -1341
  13. package/skills/agent-analytics/SKILL.md +0 -74
  14. package/skills/agent-analytics/references/chat-report-fields.md +0 -36
  15. package/skills/agent-analytics/references/report-fields.md +0 -130
  16. package/skills/agent-analytics/references/transcript.md +0 -110
  17. package/skills/agent-builder/SKILL.md +0 -42
  18. package/skills/agent-builder/interfaces/fallback-chatflow.md +0 -47
  19. package/skills/agent-builder/references/chatflow/graph-spec.md +0 -259
  20. package/skills/agent-builder/references/chatflow/node-selection.md +0 -89
  21. package/skills/agent-builder/references/chatflow/nodes/agent.md +0 -350
  22. package/skills/agent-builder/references/chatflow/nodes/business-track.md +0 -43
  23. package/skills/agent-builder/references/chatflow/nodes/code.md +0 -157
  24. package/skills/agent-builder/references/chatflow/nodes/collect-order.md +0 -47
  25. package/skills/agent-builder/references/chatflow/nodes/finish.md +0 -34
  26. package/skills/agent-builder/references/chatflow/nodes/human-review.md +0 -60
  27. package/skills/agent-builder/references/chatflow/nodes/if-else.md +0 -100
  28. package/skills/agent-builder/references/chatflow/nodes/intent.md +0 -79
  29. package/skills/agent-builder/references/chatflow/nodes/knowledge-reply.md +0 -43
  30. package/skills/agent-builder/references/chatflow/nodes/llm.md +0 -117
  31. package/skills/agent-builder/references/chatflow/nodes/note.md +0 -38
  32. package/skills/agent-builder/references/chatflow/nodes/question.md +0 -97
  33. package/skills/agent-builder/references/chatflow/nodes/rag-reply.md +0 -68
  34. package/skills/agent-builder/references/chatflow/nodes/reply.md +0 -97
  35. package/skills/agent-builder/references/chatflow/nodes/start.md +0 -35
  36. package/skills/agent-builder/references/chatflow/nodes/sub-graph.md +0 -48
  37. package/skills/agent-builder/references/chatflow/nodes/tool.md +0 -138
  38. package/skills/agent-builder/references/chatflow/nodes/transfer-to-human.md +0 -63
  39. package/skills/agent-builder/references/chatflow/nodes/variable-assignment.md +0 -52
  40. package/skills/agent-builder/references/chatflow/nodes/variable-extract.md +0 -50
  41. package/skills/agent-builder/references/chatflow/nodes/variable-process.md +0 -70
  42. package/skills/agent-builder/references/chatflow/overview.md +0 -53
  43. package/skills/agent-builder/references/chatflow/visual-translation.md +0 -64
  44. package/skills/agent-builder/references/chatflow/workflow.md +0 -134
  45. package/skills/agent-builder/references/multi-agent/create-update.md +0 -185
  46. package/skills/agent-builder/references/multi-agent/graph-spec.md +0 -246
  47. package/skills/agent-builder/references/multi-agent/graph-structure.md +0 -12
  48. package/skills/agent-builder/references/multi-agent/migrate-to-chatflow.md +0 -13
  49. package/skills/agent-builder/references/multi-agent/migration/large.md +0 -554
  50. package/skills/agent-builder/references/multi-agent/migration/principles.md +0 -446
  51. package/skills/agent-builder/references/multi-agent/migration/small.md +0 -225
  52. package/skills/agent-builder/references/multi-agent/orchestration.md +0 -11
  53. package/skills/agent-builder/references/multi-agent/overview.md +0 -48
  54. package/skills/agent-builder/references/multi-agent/update.md +0 -128
  55. package/skills/agent-builder/references/multi-agent/workflow.md +0 -87
  56. package/skills/agent-builder/references/single-agent/overview.md +0 -48
  57. package/skills/agent-builder/references/single-agent/prompt.md +0 -16
  58. package/skills/agent-builder/references/single-agent/tools.md +0 -36
  59. package/skills/agent-builder/references/single-agent/voice.md +0 -46
  60. package/skills/agent-builder/references/tools/http-tool.md +0 -315
  61. package/skills/agent-builder/references/tools/mock-tool.md +0 -279
  62. package/skills/agent-builder/references/tools/overview.md +0 -46
  63. package/skills/agent-builder/references/tools/tool-config.md +0 -43
  64. package/skills/agent-builder/references/tools/x-token.md +0 -34
  65. package/skills/agent-builder/scripts/chatflow/chatflow_builder.py +0 -3458
  66. package/skills/agent-builder/scripts/chatflow/validate_graph.py +0 -1697
  67. package/skills/agent-builder/scripts/copy_marketplace_agent.py +0 -61
  68. package/skills/agent-builder/scripts/multi-agent/legacy_graph_analyzer.py +0 -5974
  69. package/skills/agent-builder/scripts/multi-agent/replay_compare.py +0 -679
  70. package/skills/agent-builder/scripts/patch_agent_tools.py +0 -135
  71. package/skills/agent-builder/scripts/tools/validate_tool_config.py +0 -384
  72. package/skills/agent-tester/SKILL.md +0 -35
  73. package/skills/agent-tester/batch-test/overview.md +0 -86
  74. package/skills/agent-tester/scripts/batch_test_sheet.py +0 -213
  75. package/skills/agent-tester/single-test/badcase-retest.md +0 -85
  76. package/skills/agent-tester/single-test/direct-test.md +0 -24
  77. package/skills/agent-tester/single-test/overview.md +0 -142
  78. package/skills/delivery/SKILL.md +0 -112
  79. package/skills/delivery/interfaces/classify.md +0 -38
  80. package/skills/delivery/interfaces/create-agents.md +0 -89
  81. package/skills/delivery/interfaces/delivery-test.md +0 -67
  82. package/skills/delivery/references/flow.md +0 -40
  83. package/skills/delivery/references/validation.md +0 -15
  84. package/skills/delivery/scripts/batch_test.py +0 -704
  85. package/skills/delivery/scripts/classify.py +0 -22
  86. package/skills/delivery/scripts/create_agents.py +0 -695
  87. package/skills/delivery/scripts/gen_delivery_report.py +0 -335
  88. package/skills/delivery/scripts/gen_excel.py +0 -234
  89. package/skills/delivery/scripts/gen_report.py +0 -208
  90. package/skills/delivery/scripts/plan.py +0 -163
  91. package/skills/delivery/scripts/render.py +0 -713
  92. package/skills/delivery/scripts/render_summary.py +0 -38
  93. package/skills/delivery/scripts/sample_history_cases.py +0 -109
  94. package/skills/kb-builder/SKILL.md +0 -80
  95. package/skills/kb-builder/interfaces/qa-upload.md +0 -55
  96. package/skills/kb-builder/interfaces/web-kb.md +0 -84
  97. package/skills/kb-builder/references/directory.md +0 -373
  98. package/skills/kb-builder/references/export.md +0 -282
  99. package/skills/kb-builder/references/isolation-keywords.md +0 -113
  100. package/skills/kb-builder/references/knowledge.md +0 -153
  101. package/skills/kb-builder/references/product.md +0 -52
  102. package/skills/kb-builder/references/qa-from-help-center.md +0 -58
  103. package/skills/kb-builder/references/qa-from-pdf.md +0 -94
  104. package/skills/kb-builder/references/qa-from-tickets.md +0 -168
  105. package/skills/kb-builder/references/qa-from-web.md +0 -98
  106. package/skills/kb-builder/references/qa-quality.md +0 -73
  107. package/skills/kb-builder/references/reply-template.md +0 -237
  108. package/skills/kb-builder/references/tag-isolation-migration.md +0 -61
  109. package/skills/kb-builder/references/tags.md +0 -45
  110. package/skills/kb-builder/references/upload.md +0 -130
  111. package/skills/kb-builder/scripts/batch_extract_ticket_qa.py +0 -333
  112. package/skills/kb-builder/scripts/build_directory_plan.py +0 -144
  113. package/skills/kb-builder/scripts/crawl_site.py +0 -433
  114. package/skills/kb-builder/scripts/create_dirs.py +0 -146
  115. package/skills/kb-builder/scripts/export_knowledge.py +0 -454
  116. package/skills/kb-builder/scripts/extract_ticket_qa.py +0 -441
  117. package/skills/kb-builder/scripts/extract_web_qa.py +0 -118
  118. package/skills/kb-builder/scripts/import_qa.py +0 -219
  119. package/skills/kb-builder/scripts/import_source_documents.py +0 -143
  120. package/skills/kb-builder/scripts/import_templates.py +0 -409
  121. package/skills/poc/SKILL.md +0 -125
  122. package/skills/poc/assets/default_manual.css +0 -279
  123. package/skills/poc/assets/notice_escalate.png +0 -0
  124. package/skills/poc/assets/notice_escalate2.png +0 -0
  125. package/skills/poc/assets/notice_new_chat.png +0 -0
  126. package/skills/poc/assets/poc_test_template.html +0 -645
  127. package/skills/poc/assets/poc_test_template.md +0 -104
  128. package/skills/poc/assets/step3_preview.png +0 -0
  129. package/skills/poc/assets/step4_order_note.png +0 -0
  130. package/skills/poc/interfaces/classify.md +0 -38
  131. package/skills/poc/interfaces/create-agents.md +0 -108
  132. package/skills/poc/interfaces/poc-test.md +0 -94
  133. package/skills/poc/references/flow.md +0 -47
  134. package/skills/poc/references/kb-directory.md +0 -22
  135. package/skills/poc/references/validation.md +0 -17
  136. package/skills/poc/scripts/classify.py +0 -22
  137. package/skills/poc/scripts/create_agents.py +0 -818
  138. package/skills/poc/scripts/gen_excel.py +0 -234
  139. package/skills/poc/scripts/gen_poc_manual.py +0 -249
  140. package/skills/poc/scripts/gen_report.py +0 -208
  141. package/skills/poc/scripts/inspect_chatflow.py +0 -209
  142. package/skills/poc/scripts/plan.py +0 -178
  143. package/skills/poc/scripts/poc_test.py +0 -495
  144. package/skills/poc/scripts/render.py +0 -713
  145. package/skills/poc/scripts/render_summary.py +0 -41
  146. package/skills/runtime-inspector/SKILL.md +0 -51
  147. package/skills/runtime-inspector/references/frontend-rendering.md +0 -126
  148. package/skills/runtime-inspector/references/model.md +0 -59
  149. package/skills/runtime-inspector/references/sandbox.md +0 -131
  150. package/skills/runtime-inspector/scripts/model_inspect.py +0 -68
  151. package/skills/runtime-inspector/scripts/prepare.py +0 -98
  152. package/skills/runtime-inspector/scripts/process.py +0 -84
  153. package/skills/runtime-inspector/scripts/read_state.py +0 -32
  154. package/skills/runtime-inspector/scripts/sandbox_inspect.py +0 -463
  155. package/skills/runtime-inspector/scripts/test_claude_proxy.py +0 -49
  156. package/skills/runtime-inspector/scripts/test_openai_proxy.py +0 -41
  157. package/skills/runtime-inspector/scripts/verify_persistence.py +0 -101
  158. package/skills/runtime-inspector/scripts/write_test.py +0 -41
  159. package/skills/setup/SKILL.md +0 -17
  160. package/skills/shulex-support/SKILL.md +0 -39
  161. package/skills/shulex-support/references/badcase-analysis/overview.md +0 -34
  162. package/skills/shulex-support/references/badcase-analysis/text/conversation-record.md +0 -105
  163. package/skills/shulex-support/references/badcase-analysis/text/core-flow.md +0 -89
  164. package/skills/shulex-support/references/badcase-analysis/text/log-query-rules.md +0 -36
  165. package/skills/shulex-support/references/badcase-analysis/text/m1-entry.md +0 -53
  166. package/skills/shulex-support/references/badcase-analysis/text/m10-chatflow-service.md +0 -259
  167. package/skills/shulex-support/references/badcase-analysis/text/m11-algorithm-service.md +0 -148
  168. package/skills/shulex-support/references/badcase-analysis/text/m12-quality-inspection.md +0 -57
  169. package/skills/shulex-support/references/badcase-analysis/text/m2-intent.md +0 -120
  170. package/skills/shulex-support/references/badcase-analysis/text/m3-strategy.md +0 -126
  171. package/skills/shulex-support/references/badcase-analysis/text/m4-aifield.md +0 -121
  172. package/skills/shulex-support/references/badcase-analysis/text/m5-agent.md +0 -208
  173. package/skills/shulex-support/references/badcase-analysis/text/m6-tool.md +0 -115
  174. package/skills/shulex-support/references/badcase-analysis/text/m7-reply.md +0 -72
  175. package/skills/shulex-support/references/badcase-analysis/text/m8-error.md +0 -92
  176. package/skills/shulex-support/references/badcase-analysis/text/m9-knowledge-search.md +0 -147
  177. package/skills/shulex-support/references/badcase-analysis/text/sls-query.md +0 -283
  178. package/skills/shulex-support/references/badcase-analysis/voice/core-flow.md +0 -77
  179. package/skills/shulex-support/references/badcase-analysis/voice/dependencies.md +0 -19
  180. package/skills/shulex-support/references/badcase-analysis/voice/platform-api.md +0 -23
  181. package/skills/shulex-support/references/badcase-analysis/voice/sls-playbook.md +0 -31
  182. package/skills/shulex-support/references/product-docs.md +0 -70
  183. package/skills/shulex-support/references/tickets.md +0 -184
  184. package/skills/shulex-support/scripts/support.py +0 -427
  185. package/skills/solvea-desk/SKILL.md +0 -39
  186. package/skills/solvea-desk/references/report/fields.md +0 -82
  187. package/skills/solvea-desk/references/report/report-design.md +0 -200
  188. package/skills/solvea-desk/references/report/report-template.html +0 -44
  189. package/skills/solvea-desk/references/report/report.css +0 -517
  190. package/skills/solvea-desk/references/report/workflow.md +0 -464
  191. package/skills/solvea-desk/references/tickets/query.md +0 -103
  192. package/skills/solvea-desk/references/tickets/tags.md +0 -83
  193. package/skills/solvea-desk/scripts/report/fetch_sources.py +0 -580
  194. package/skills/solvea-desk/scripts/report/render_report.py +0 -763
  195. package/skills/solvea-desk/scripts/tickets/desk_api.py +0 -73
  196. package/skills/solvea-desk/scripts/tickets/fetch_tickets.py +0 -403
  197. package/skills/solvea-desk/scripts/tickets/ticket_tags.py +0 -305
  198. package/skills/solvea-kit/SKILL.md +0 -84
  199. package/skills/solvea-kit/references/agent.md +0 -145
  200. package/skills/solvea-kit/references/chat.md +0 -244
  201. package/skills/solvea-kit/references/intent.md +0 -69
  202. package/skills/solvea-kit/references/plugin.md +0 -53
  203. package/skills/solvea-kit/references/quality-inspection.md +0 -75
  204. package/skills/solvea-kit/references/strategy.md +0 -62
  205. package/skills/solvea-kit/references/tagging.md +0 -231
  206. package/skills/solvea-kit/references/variables.md +0 -53
  207. package/skills/solvea-kit/scripts/generate_label_import_file.py +0 -151
  208. package/skills/solvea-kit/scripts/intent_classify.py +0 -843
@@ -1,60 +0,0 @@
1
- # HUMAN_REVIEW
2
-
3
- ## 功能概述
4
-
5
- 人工审核或人工补充信息节点。适合需要内部人员审批、确认、填充字段的流程。
6
-
7
- HUMAN_REVIEW 是流程内的人工任务:审核或填写完成后,流程继续走出边。它不是客服会话转人工;
8
- 需要把当前用户会话交给人工客服时使用 `TRANSFER_TO_HUMAN` 或具备真实转人工能力的节点。
9
-
10
- ## 创建方式
11
-
12
- ```json
13
- {
14
- "key": "review_refund",
15
- "type": "human_review",
16
- "method": "approval",
17
- "description": "Review whether refund can be approved."
18
- }
19
- ```
20
-
21
- ## 创建参数
22
-
23
- | 字段 | 说明 |
24
- |------|------|
25
- | method | `approval` / `fill` |
26
- | description | 给审核人的说明;支持 `[[var:[...]]]` 上游变量模板 |
27
- | fields | fill 模式需要填写的字段 |
28
- | fields[].id | fill 字段 id;下游 selector 第三段使用该值,建议显式写稳定 id |
29
- | fields[].fieldName | fill 字段名,必填 |
30
- | fields[].fieldType | `text` / `attachment` / `options` |
31
- | fields[].options | `options` 类型必填,不能为空且不能重复 |
32
- | midway_message_strategy | 审核等待期间普通用户消息的处理:`ignore`(默认)/ `handle` |
33
-
34
- ## Edges
35
-
36
- - approval:必须有 `AGREE` + `REJECT`。
37
- - fill:仅 `SOURCE`。
38
-
39
- ## Resource Dependencies
40
-
41
- fill 模式字段需确认业务字段定义。
42
-
43
- ## 限制
44
-
45
- - approval 双出边必须完整。
46
- - `description` 必填。
47
- - `description` 可插入变量模板:`[[var:["CODE","<code_node_id>","summary"]]]`。
48
- - 变量模板支持上游 `SYSTEM`、`TOOL`、`EXTRACT`、`CODE`、`LLM`、`AGENT`、`HUMAN_REVIEW`;工具状态可用 `["TOOL", node_id, "ACTION_STATUS_NAME"]`。
49
- - `AGENT` selector 只能引用当前上游路径已连通 nextStep 的 `params[].name`。
50
- - fill 模式必须有 `SOURCE` 出边。
51
- - fill 模式字段必须有 `fieldName`;`options` 字段必须配置选项。
52
- - 下游引用 fill 结果用 `["HUMAN_REVIEW", "<this_node_id>", "<field_id>"]`。
53
- - 如果后续要引用 fill 结果,`fields[].id` 必须稳定;不要用展示名当 selector。
54
- - 不用它代替普通用户确认;用户确认用 QUESTION。
55
-
56
- ## Common Mistakes
57
-
58
- - approval 忘记 REJECT 分支。
59
- - description 变量模板引用非上游节点,或 EXTRACT 使用了 `name` 而不是 `id`。
60
- - fill 字段没有稳定 `id`,导致下游无法可靠引用人工填写结果。
@@ -1,100 +0,0 @@
1
- # IF_ELSE
2
-
3
- ## 功能概述
4
-
5
- 对已有变量、工具输出或系统字段做确定性条件判断。多个 `cases` 按顺序表达 `if / elif`,未命中时的 `FALSE` 表达 `else`;它不理解自然语言,只比较已经存在的结构化值。
6
-
7
- 它不理解自然语言,而是读取已经存在的结构化值,按 cases 的条件组合输出对应 handle;没有命中时走 FALSE。适合枚举、存在性、数值、日期和布尔判断,也可表达多个条件的 AND/OR 组合。
8
-
9
- ## Source 选择
10
-
11
- IF_ELSE 的第一步是确定判断对象,不是先写 case 名称:
12
-
13
- | 要判断的内容 | source JSON 简写 | 完整 graph selector | 说明 |
14
- |---|---|---|---|
15
- | 工具 actionStatus | `{"tool_status": "lookup_order"}` | `["TOOL", "<tool_node_id>", "ACTION_STATUS_NAME"]` | 运行时读取最近一次 TOOL 输出的 `tool_result.__status`;不是 `status` 字段 |
16
- | 工具返回体字段 | `{"tool": "lookup_order", "path": ["order", "shipping_method_no"]}` | `["TOOL", "<tool_node_id>", "order", "shipping_method_no"]` | 运行时从 `tool_result` 开始逐层取值;路径必须来自 `responseParam.items[]` |
17
- | 变量系统字段 | `{"system": {"category": "Order", "path": [3248, 3249]}}` | `["SYSTEM", "Order", 3248, 3249]` | 完整 selector 只能是 3 段或 4 段;第三/第四段是字段 id |
18
- | CODE 输出 | `{"code": "normalize_items", "field": "item_count"}` | `["CODE", "<code_node_id>", "item_count"]` | 运行时从 `exec_result[fieldName]` 读取;field 必须是 CODE `outputs[].fieldName` |
19
- | LLM 输出 | 用完整 selector | `["LLM", "<llm_node_id>", "text"]` 或 `["LLM", "<llm_node_id>", "structured_output", "..."]` | text 固定三段;structured_output 可继续下钻 |
20
- | AGENT 输出 | 无推荐简写;用完整 selector | `["AGENT", "<agent_node_id>", "param_name"]` | param 必须来自已连通 nextStep 的 `params[].name` |
21
-
22
- 常见错误是把工具 actionStatus 当作普通字段写 `{"tool":"x","field":"status"}`,或把返回体字段当成 actionStatus。除非 `responseParam` 真实存在 `status` 字段,否则不能写 `status`。
23
-
24
- 当工具详情里同时出现普通返回字段和 actionStatus 时,先判断业务语义:
25
- - 旧流程按“工具执行动作状态”走分支,且状态名与 actionStatus 对齐:选 `tool_status` / `ACTION_STATUS_NAME`。
26
- - 旧流程按订单状态、物流单号、退款金额、商品数组等返回体内容判断:选 TOOL 出参 path。
27
- - 需要对多个字段组合、数组长度、对象字段归一化后判断:先 `TOOL -> CODE`,再在 IF_ELSE 里选 CODE output。
28
- - 需要判断变量系统字段,例如订单号、邮箱、国家、附件字段:选 SYSTEM,不要伪造 TOOL `status`。
29
-
30
- validator 会检查 selector 引用的节点必须是当前 IF_ELSE 的上游 predecessor;不能引用同级、下游或未连通节点。需要先经过 CODE 转换时,边必须是 `TOOL -> CODE -> IF_ELSE`,再在 IF_ELSE 中引用 CODE 输出。
31
-
32
- ## 创建方式
33
-
34
- ```json
35
- {
36
- "key": "check_order_status",
37
- "type": "if_else",
38
- "cases": [
39
- {
40
- "id": "SHIPPED",
41
- "conditions": [
42
- {"variableSelector": {"tool": "lookup_order", "path": ["order", "shipping_method_no"]}, "comparisonOperator": "NOT_EMPTY"}
43
- ]
44
- }
45
- ]
46
- }
47
- ```
48
-
49
- ## 创建参数
50
-
51
- | 字段 | 说明 |
52
- |------|------|
53
- | cases[].id / name | 出边 handle |
54
- | cases[].logicalOperator | `AND` / `OR`,默认 `AND` |
55
- | conditions[].variableSelector | 判断字段 |
56
- | conditions[].comparisonOperator | 比较操作 |
57
- | conditions[].value | 比较值 |
58
-
59
- ## Edges
60
-
61
- 每个 case 一条边,另加 `FALSE`。运行时按 `cases` 顺序依次评估,命中第一个 case 后用该 `case.id` 作为 `output_handle` 和路由 handle;全部未命中时用 `FALSE` handle,并在输出数据里记录 `matched_case_id: "else"`。
62
-
63
- ## Resource Dependencies
64
-
65
- 判断变量系统字段先查 `list-ai-fields`;判断工具结果需确认上游 TOOL 输出字段。
66
-
67
- 变量系统字段在进入 CHAT_FLOW 前由 `shulex-gpt` chat 链路统一抽取,因此可直接用 IF_ELSE 判断。嵌套字段必须使用 `list-ai-fields` 返回的完整 id 路径,例如 `["SYSTEM", "Order", 3248, 3249]`。
68
-
69
- 判断工具字段前必须查工具详情的 `responseParam` 或可验证的完整 graph 输出配置;只看到旧 prompt 里的“状态”“成功”“失败”不等于有可引用字段。判断代码输出前必须读取 CODE 节点的 `outputs`,不能引用 `source_code` 中临时变量。
70
-
71
- 完整 graph 校验会用 plugin metadata 构建 TOOL 可用出参路径:object 子字段可继续下钻,array 字段按叶子处理。若工具没有 metadata 或离线校验,路径错误可能不会被发现;涉及真实工具分支时必须带项目资源执行 compile / validate。
72
-
73
- ## 限制
74
-
75
- - 所有 case 和 `FALSE` 必须连边。
76
- - 至少有一个 case;每个 case 至少有一个 condition。
77
- - 每个 condition 必须有 `variableSelector` 和 `comparisonOperator`。
78
- - 除 `EMPTY` / `NOT_EMPTY` 外,condition 必须有非空 `value`。
79
- - `varType: boolean` 的 `value` 推荐使用前端保存的字符串 `"true"`、`"false"`;运行时也能把布尔值或 `"1"/"yes"` 转成 true,但不要依赖非前端格式。
80
- - `varType: array` 只能做空值或长度比较;运行时不支持 `CONTAINS` / `NOT_CONTAINS`,会抛节点执行错误。需要判断数组元素内容时先用 CODE 拆出稳定 output。
81
- - `variableSelector` 引用上游变量,支持 `SYSTEM`、`TOOL`、`EXTRACT`、`CODE`、`LLM`、`AGENT`、`HUMAN_REVIEW`。
82
- - 判断工具状态映射用 `["TOOL", "<tool_node_id>", "ACTION_STATUS_NAME"]`。
83
- - `AGENT` selector 只能引用当前上游路径已连通 nextStep 的 `params[].name`。
84
- - TOOL 输出 selector 不加 `"output"` 层。
85
- - TOOL 嵌套输出使用分段 `path`,例如 `{"tool":"lookup_order","path":["order","shipping_method_no"]}`;不要写点号字段。
86
- - TOOL 数组出参按叶子字段处理,不要直接写 `["items", "0", "sku"]` 或假设 validator 会理解数组元素路径;需要拆数组时先用 CODE 输出稳定标量。
87
- - EXTRACT selector 第三段是 extract `id`,不是 `name`。
88
- - SYSTEM selector 不能省略嵌套字段的父级 id。
89
- - CODE selector 可以是 `["CODE", node_id]` 或 `["CODE", node_id, fieldName]`;IF_ELSE 判断具体字段时必须使用三段式,并且 `fieldName` 存在于 CODE outputs。运行时不支持 `["CODE", node_id, "obj", "field"]` 这种继续下钻。
90
-
91
- ## Common Mistakes
92
-
93
- - 用 IF_ELSE 判断自然语言语义。语义判断应使用 `AGENT(next_steps)` 或 `INTENT`。
94
- - 忘记 `FALSE` 兜底。
95
- - 引用不存在的 TOOL 输出路径,例如未确认 `responseParam` 就写 `["status"]`。
96
- - 需要判断工具 actionStatus 却写成普通 TOOL 字段;应使用 `tool_status` 或完整图的 `ACTION_STATUS_NAME`。
97
- - 引用 CODE 中没有声明为 output 的临时变量;下游只能读 `outputs[].field_name`。
98
- - 引用不是当前 IF_ELSE 上游的 TOOL / CODE 节点;需要先补边或重排图。
99
- - boolean 条件把 `value` 写成 `["true"]`、布尔值或其它文本;前端标准格式是字符串 `"true"`、`"false"`,数组会被运行时整体字符串化并可能造成反向误判。
100
- - 用 `["EXTRACT", node_id, "order_no"]` 引用提取结果;应使用提取项 id。
@@ -1,79 +0,0 @@
1
- # INTENT
2
-
3
- ## 功能概述
4
-
5
- 根据上下文识别用户意图并分流。意图直接定义在节点内,不调用系统意图创建接口。
6
-
7
- INTENT 是业务分类路由节点,等价于“把客户表达归入有限客户意图,再进入对应处理流程”。每个 intent
8
- 都应该代表一个可解释的客户意图和后续 SOP 路径,不是技术状态名的包装,也不是把所有分支汇入一个
9
- 泛化 AGENT 的前置分类壳。
10
-
11
- ## INTENT 全局 prompt 与历史
12
-
13
- `prompt` 默认 `null`。只有需求明确需要配置该节点的单独pe时才生成,并在生成后询问用户是否启用;用户拒绝则保留 `prompt: null`。每个 intent 仍须有清晰 `desc` 和独立可解释的下游路径。`history_round_limit` 默认 `null`,仅在用户明确指定历史范围时配置。
14
-
15
- ## 创建方式
16
-
17
- ```json
18
- {
19
- "key": "intent_router",
20
- "type": "intent",
21
- "prompt": "Classify the user's request using the intent boundaries below. Choose the most specific matching intent; use OTHER when unclear or out of scope.",
22
- "intents": [
23
- {"id": "order_issue", "name": "Order_Issue", "desc": "User asks about an order."},
24
- {"id": "refund_request", "name": "Refund_Request", "desc": "User wants a refund."}
25
- ]
26
- }
27
- ```
28
-
29
- ## 创建参数
30
-
31
- | 字段 | 说明 |
32
- |----------------------|----------------------------------------------------------------------------------------------------------|
33
- | intents[].id | 必填,作为出边 handle |
34
- | intents[].name | 意图名,默认英文 ASCII |
35
- | intents[].desc | 新定义意图必填,描述识别的规则、边界 |
36
- | intents[].intentId | 可选,复用已有系统意图 |
37
- | intents[].examples | 可选示例话术 |
38
- | prompt | 可选的意图节点全局识别提示(PE)。未明确需要时为 `null`;仅在确有跨意图边界、优先级或范围约束时配置 |
39
- | use_chat_history | 是否结合历史,默认 true |
40
- | history_round_limit | 可选,编译为 `historyRoundLimit`;默认 `None/null`(交由后端默认策略),`-1` 表示全部历史,正数表示最近 N 轮(1-10)。 |
41
-
42
- ## Edges
43
-
44
- 每个 intent 一条边,另加 `OTHER`。
45
-
46
- `intents` 可写对象数组。edges 的 `on` 可使用 intent `id` 或 `name`,最终按 `id` 生成 handle。复用系统意图时写 `intentId`;新定义意图时必须写清楚 `name` 和 `desc`。
47
-
48
- 每个客户意图默认必须进入不同的处理路径。多个 intent 共享同一个下游只在以下条件全部满足时允许:
49
-
50
- - 客户意图虽然表达不同,但业务处理动作完全一致;
51
- - 需要收集的字段、调用工具、模板/回复合同、转人工原因和终态完全一致;
52
- - `mapping_explanations` 写明共享理由。
53
-
54
- 否则不能把多个 intent 都连到同一个 generic AGENT 或同一个泛化处理节点。遇到多个意图当前看起来
55
- 处理相似时,优先拆出共享的后置子流程:`INTENT -> 不同业务入口 -> 共享工具/回复/转人工节点`,
56
- 而不是直接让所有 intent 指向同一个大 AGENT。
57
-
58
- ## Resource Dependencies
59
-
60
- 如要复用已有意图,先查意图:
61
-
62
- ```bash
63
- npx --yes @shulex/cxclawctl@latest api list-intents --pretty
64
- ```
65
-
66
- ## 限制
67
-
68
- - 每条意图必须有 `name + desc` 或 `intentId`。
69
- - name 不能重复。
70
- - 每个 intent handle 和 `OTHER` 都必须连边。
71
- - 每个 intent 的出边目标必须能读出对应客户意图的处理路径;无证据不要全部汇入同一个 AGENT。
72
- - `useChatHistory` 完整 graph 默认为 true;source 通常不用改。
73
-
74
- ## Common Mistakes
75
-
76
- - 写 `description` 字段。source JSON 使用 `desc`。
77
- - 只写 name 不写 desc,导致后端校验“意图描述为空”。
78
- - 把分类结果全部接到同一个处理 AGENT,导致意图节点只剩形式分类,没有实际 SOP 分流。
79
- - 用技术字段或工具状态当 intent 名称;INTENT 应描述客户意图,结构化字段判断用 IF_ELSE 或 TOOL status。
@@ -1,43 +0,0 @@
1
- # KNOWLEDGE_REPLY
2
-
3
- ## 功能概述
4
-
5
- 兼容多轮知识回复节点。仅用于用户明确要求保留,或已有图中原样维护。
6
-
7
- ## 创建方式
8
-
9
- ```json
10
- {
11
- "key": "compat_knowledge",
12
- "type": "knowledge_reply",
13
- "prompt": "Answer based on the knowledge base.",
14
- "kb_dirs": [1001]
15
- }
16
- ```
17
-
18
- ## 创建参数
19
-
20
- | 字段 | 说明 |
21
- |------|------|
22
- | prompt | 知识回答要求 |
23
- | kb_dirs | knowledgeDirectoryIds |
24
- | max_rounds | 多轮最大轮数 |
25
- | disable_prev_node_results | 是否不把前序节点结果注入知识回答上下文,默认 false |
26
-
27
- ## Edges
28
-
29
- 必须同时有 `RESOLVED` 和 `UNRESOLVED`。
30
-
31
- ## Resource Dependencies
32
-
33
- 先确认知识库目录 id。
34
-
35
- ## 限制
36
-
37
- - 新建默认不要用。
38
- - 保留时必须补齐双出边。
39
-
40
- ## Common Mistakes
41
-
42
- - 新图误用 KNOWLEDGE_REPLY。
43
- - 缺少 `UNRESOLVED` 转人工路径。
@@ -1,117 +0,0 @@
1
- # LLM
2
-
3
- ## 功能概述
4
-
5
- 纯模型处理节点。用于生成文本、总结、改写、抽取或把上游信息整理成后续节点可用的结果。
6
-
7
- LLM 的结果供下游节点使用,不直接作为对客回复发送。它不等待用户、不调用外部工具,也不自己决定多条出边;需要这些能力时选择对应节点。
8
-
9
- LLM 和 AGENT 的边界:
10
-
11
- - `LLM`:只调模型,不调用外部工具,不使用 `next_steps` 做路由。
12
- - `AGENT`:需要模型自主调用真实工具,或需要通过 `next_steps` 选择后续节点。
13
- - `REPLY(PROMPT)`:只负责对用户发送一段回复,不用于生成内部中间结果。
14
-
15
- ## 创建方式
16
-
17
- ```json
18
- {
19
- "key": "summarize_case",
20
- "type": "llm",
21
- "prompt": "Summarize the customer's issue and [[var:{\"system\":{\"category\":\"Order\",\"path\":[2742]}}]] for downstream decision making.",
22
- "history_round_limit": 3,
23
- "structured_output": {
24
- "enabled": true,
25
- "schema": {
26
- "type": "object",
27
- "properties": {
28
- "summary": {"type": "string"},
29
- "needs_handoff": {"type": "boolean"}
30
- },
31
- "required": ["summary"]
32
- }
33
- }
34
- }
35
- ```
36
-
37
- 需要按上游图片/附件 URL 调模型时,开启 vision 并给出 URL selector:
38
-
39
- ```json
40
- {
41
- "key": "inspect_attachment",
42
- "type": "llm",
43
- "prompt": "Describe the image for downstream processing.",
44
- "vision": {
45
- "enabled": true,
46
- "detail": "high",
47
- "media_selectors": [["SYSTEM", "Customer", 2780]]
48
- }
49
- }
50
- ```
51
-
52
- ## 创建参数
53
-
54
- | 字段 | 说明 |
55
- |------|------|
56
- | prompt | 模型处理指令;完整 graph 字段为 `promptTemplate` |
57
- | history_round_limit | `0` 不带历史(默认);`-1` 全部历史;正数带最近 N 轮 |
58
- | use_long_memory | 是否注入长记忆,默认 false |
59
- | vision.enabled | 是否附加图片输入,默认 false |
60
- | vision.detail | `auto` / `low` / `high`,默认 `auto` |
61
- | vision.media_selectors | 图片 URL 或 URL 数组的上游 selector;source 可写 `media_selectors` 或 `mediaSelectors` |
62
- | structured_output.enabled | 是否要求模型按 JSON Schema 输出对象 |
63
- | structured_output.schema | 开启时必填;根必须是 `type: object` 且有 `properties` |
64
-
65
- ## Edges
66
-
67
- 仅 `SOURCE` 单出边。LLM 不承担多分支路由;需要根据 LLM 结果分支时,后接 `IF_ELSE`、`INTENT` 或 `AGENT(next_steps)`。
68
-
69
- ## Output Variables
70
-
71
- 普通文本输出使用:
72
-
73
- ```json
74
- {"variableSelector": {"llm": "summarize_case", "field": "text"}}
75
- ```
76
-
77
- 完整 graph selector:
78
-
79
- ```json
80
- ["LLM", "<llm_node_id>", "text"]
81
- ```
82
-
83
- 开启 `structured_output` 后,下游可以选择整个结构化对象或对象字段:
84
-
85
- ```json
86
- {"variableSelector": {"llm": "summarize_case", "path": ["structured_output", "summary"]}}
87
- ```
88
-
89
- 完整 graph selector:
90
-
91
- ```json
92
- ["LLM", "<llm_node_id>", "structured_output", "summary"]
93
- ```
94
-
95
- `structured_output` 未开启时,不得引用该路径。
96
-
97
- ## Resource Dependencies
98
-
99
- 变量模板通过标准 selector 读取上游 `SYSTEM`、`TOOL`、`EXTRACT`、`CODE`、`LLM`、`AGENT`、`HUMAN_REVIEW` 或 `NODE` 输出;图片 selector 必须在当前 LLM 的上游路径上,并在运行时解析成 HTTP(S) 图片 URL。
100
-
101
- ## 限制
102
-
103
- - 必须有入边和 `SOURCE` 出边。
104
- - `prompt` / `promptTemplate` 必须非空。
105
- - 不绑定 `plugins` / `usedPlugins`;需要工具调用时用 AGENT 或 TOOL。
106
- - 不配置 `next_steps`;需要模型选择下游时用 AGENT。
107
- - prompt 会渲染 `[[var:[...]]]`。source 模板可用 selector 简写,例如 `[[var:{"code":"normalize_case","field":"summary"}]]`;编译后会替换为真实 node id。
108
- - `vision.enabled=true` 时至少配置一个 `media_selectors`;每个 selector 的值必须在运行时解析为 HTTP(S) 图片 URL 或 URL 数组。
109
- - `structured_output.enabled=true` 时 schema 根必须是 object,`required`(若存在)必须是数组。
110
- - 旧 `aiFieldIds`、`modelId`、`outputs` / `outputVariables` 不属于当前 LLM 运行时契约;source 顶层使用这些字段会被 builder 拒绝,已有 graph 出现它们时 validator 只会警告其被忽略。
111
-
112
- ## Common Mistakes
113
-
114
- - 用 LLM 调外部 HTTP 工具;应使用 AGENT with plugins 或 TOOL。
115
- - 用 LLM 做多出口路由;应使用 AGENT(next_steps)、INTENT 或 IF_ELSE。
116
- - 用 REPLY(PROMPT) 生成内部摘要,导致内容发给用户。
117
- - 把 `summary` 直接写成 `['LLM', node_id, 'summary']`;当前运行时要么取 `text`,要么取 `structured_output` 路径。
@@ -1,38 +0,0 @@
1
- # NOTE
2
-
3
- ## 功能概述
4
-
5
- 画布注释节点,只用于给搭建者留下说明,不参与 CHAT_FLOW 运行。
6
-
7
- 前端创建 NOTE 时使用 `type: CUSTOM_NOTE`、`data.category: NOTE`、`data.config.noteText`;后端 `GraphJSONLoader` 解析节点时会跳过 `CUSTOM_NOTE`。
8
-
9
- ## 创建方式
10
-
11
- 通常不要在 source JSON 中新建 NOTE。只有在增量维护已有图并需要保留画布备注时,才保留已有 NOTE。
12
-
13
- ## 创建参数
14
-
15
- | 字段 | 说明 |
16
- |------|------|
17
- | type | 完整 graph 中为 `CUSTOM_NOTE` |
18
- | data.category | `NOTE` |
19
- | data.config.noteText | 注释文本 |
20
-
21
- ## Edges
22
-
23
- 无运行边。NOTE 不需要从 START 可达,也不要求入边或出边。
24
-
25
- ## Resource Dependencies
26
-
27
- 无。
28
-
29
- ## 限制
30
-
31
- - NOTE 不参与运行、变量、工具、模板、路由或发布后的执行逻辑。
32
- - 不要连接 NOTE 节点;连线不会表达业务路径。
33
- - 校验运行图时不要把孤立 NOTE 当作异常。
34
-
35
- ## Common Mistakes
36
-
37
- - 把 NOTE 未连接 START 当作图异常提醒用户。
38
- - 用 NOTE 表达业务流程中的条件、回复或人工说明。
@@ -1,97 +0,0 @@
1
- # QUESTION
2
-
3
- ## 功能概述
4
-
5
- 向用户提问。`USER_REPLY` 用于按用户选择分支;`VARIABLE` 用于收集变量系统字段。
6
-
7
- 它是画布中明确的“等待用户”节点:发送提问后流程暂停,收到新消息后才通过对应 reply handle 或收集结果继续。适合信息补全、确认、否认和有限选项;不承担外部调用或复杂推理。
8
-
9
- ## 创建方式
10
-
11
- ```json
12
- {
13
- "key": "ask_platform",
14
- "type": "question",
15
- "mode": "USER_REPLY",
16
- "question": "Please choose a platform: TikTok, Amazon, or Shopify.",
17
- "replies": ["TikTok", "Amazon", "Shopify"],
18
- "max_rounds": 3
19
- }
20
- ```
21
-
22
- ```json
23
- {
24
- "key": "collect_email",
25
- "type": "question",
26
- "mode": "VARIABLE",
27
- "question": "Please provide your email.",
28
- "variables": [2744]
29
- }
30
- ```
31
-
32
- ```json
33
- {
34
- "key": "ask_platform_with_template",
35
- "type": "question",
36
- "mode": "USER_REPLY",
37
- "question_type": "TEMPLATE",
38
- "question_template_id": 12345,
39
- "replies": ["TikTok", "Amazon", "Shopify"]
40
- }
41
- ```
42
-
43
- ## 创建参数
44
-
45
- | 字段 | 说明 |
46
- |------|------|
47
- | mode | `USER_REPLY` / `VARIABLE` |
48
- | question_type | `PROMPT` / `TEMPLATE`,默认 `PROMPT` |
49
- | question | `PROMPT` 提问文案 |
50
- | question_template_id | `TEMPLATE` 提问模板 id |
51
- | replies | USER_REPLY 的选项 |
52
- | variables | VARIABLE 模式收集的变量系统字段 ids |
53
- | max_rounds | 最大追问轮数,默认 5 |
54
- | condition | VARIABLE 多字段收集完成条件:`AND` / `OR`,默认 `AND` |
55
- | use_chat_history | 识别/收集时是否使用会话历史,默认 true |
56
-
57
- ## Edges
58
-
59
- - USER_REPLY:每个 reply 一条边,另加 `OTHER`。
60
- - VARIABLE:仅 `SOURCE`。
61
-
62
- `replies` 可写字符串数组,也可写对象数组:
63
-
64
- ```json
65
- [
66
- {"id": "TIKTOK", "name": "TikTok"},
67
- {"id": "AMAZON", "name": "Amazon"}
68
- ]
69
- ```
70
-
71
- 对象写法更稳定;edges 的 `on` 可使用 reply `id` 或 `name`,最终按 `id` 生成 handle。字符串写法会用清洗后的名称作为 `id`。
72
-
73
- ## Resource Dependencies
74
-
75
- VARIABLE 模式先查变量系统字段:
76
-
77
- ```bash
78
- npx --yes @shulex/cxclawctl@latest api list-ai-fields --pretty
79
- ```
80
-
81
- ## 限制
82
-
83
- - USER_REPLY 的 `replies[].name` 必须能清洗为 ASCII。
84
- - USER_REPLY 每个 reply 必须有非空 `id` 和 `name`,`name` 不能重复。
85
- - USER_REPLY 必须连完全部 reply 和 `OTHER`。
86
- - `PROMPT` 必须有 `question`;`TEMPLATE` 必须有 `question_template_id`。
87
- - 必须至少配置 `variables` 或 `replies`。
88
- - VARIABLE 模式必须配置 `variables`;USER_REPLY 模式必须配置 `replies`。
89
- - QUESTION 自身负责多轮追问和等待用户输入;不要用图层回环实现追问。
90
- - “请提供/请上传”只有在 QUESTION 中才构成真实收集;如果需要先解释收集原因,可用 `REPLY → QUESTION`,不能用 REPLY 代替 QUESTION。
91
-
92
- ## Common Mistakes
93
-
94
- - 想要分支却用 REPLY。
95
- - 忘记 `OTHER` 兜底边。
96
- - 为多轮追问画环;应使用 `max_rounds`。
97
- - 模板提问写成 `reply_type=TEMPLATE`。QUESTION 使用 `question_type=TEMPLATE`。
@@ -1,68 +0,0 @@
1
- # RAG_REPLY
2
-
3
- ## 功能概述
4
-
5
- 单轮知识库检索并回复。新建知识库问答默认使用该节点。
6
-
7
- RAG_REPLY 会先用配置的知识目录检索,再向用户发送答案。它的输出取决于知识是否命中:命中走
8
- `TRUE`,未命中走 `LACK_KNOWLEDGE`。它不是普通固定话术节点,也不负责调用业务工具或执行开放式流程决策。
9
-
10
- ## 创建方式
11
-
12
- ```json
13
- {
14
- "key": "product_knowledge",
15
- "type": "rag_reply",
16
- "prompt": "Answer based on the selected knowledge base.",
17
- "kb_dirs": [1001, 1002],
18
- "knowledge_keyword_ids": [11, 13],
19
- "knowledge_keyword_selector": ["SYSTEM", "Order", "isolation_keyword"],
20
- "customize_query": true,
21
- "query_selector": ["EXTRACT", "extract_question", "question_text"]
22
- }
23
- ```
24
-
25
- ## 创建参数
26
-
27
- | 字段 | 说明 |
28
- |------|------|
29
- | prompt | 知识回答要求;普通文本 |
30
- | kb_dirs | knowledgeDirectoryIds;可选,未配置时节点不会检索知识并通常走 `LACK_KNOWLEDGE` |
31
- | knowledge_keyword_ids | knowledgeKeywordIds;隔离关键词 ID 数组,限定检索范围/隔离条件 |
32
- | knowledge_keyword_selector | knowledgeKeywordSelector;变量选择器,运行时值为隔离关键词名称或名称数组;由模型根据关键词来源自动选择 selector 类型 |
33
- | customize_query | 是否用变量作为检索 query |
34
- | query_selector | `customize_query=true` 时必填的上游变量选择器 |
35
- | disable_prev_node_results | 是否不把前序节点结果注入知识回答上下文,默认 false |
36
-
37
- ## Edges
38
-
39
- 必须同时有 `TRUE` 和 `LACK_KNOWLEDGE`。运行时 `TRUE` 分支如果有出边,chatflow 后端会注入 `WAIT -> USER_INPUT -> 原 TRUE 下游`,也就是知识回复命中并回复用户后,等待下一轮用户输入再继续后续流程;`LACK_KNOWLEDGE` 直接走缺知识兜底分支。
40
-
41
- 如果命中知识后不需要继续流程,`TRUE` 可连 `$finish`;如果希望命中后继续处理下一轮用户输入,`TRUE` 连后续节点并接受上述等待语义。
42
-
43
- ## Resource Dependencies
44
-
45
- 先确认知识库目录 id。目录为空会导致总走 `LACK_KNOWLEDGE`。
46
-
47
- ## 限制
48
-
49
- - 新建默认用 RAG_REPLY,不用 KNOWLEDGE_REPLY。
50
- - `kb_dirs` / `knowledgeDirectoryIds` 是可选的;未配置或为空时,节点没有可检索目录,通常会走 `LACK_KNOWLEDGE`。只有用户明确要求空知识路径时才省略它。
51
- - 使用固定隔离关键词时设置 `knowledgeKeywordIds`,值必须是通过 `kb-builder` 查询到的关键词数字 ID,不要把关键词文本直接填进去。
52
- - 使用运行时变量决定隔离关键词时设置 `knowledgeKeywordSelector`,变量值必须是关键词名称或名称数组;需要先用 `kb-builder` 搜索/创建关键词,确认名称与知识中心一致。selector 类型按变量实际来源选择:系统字段用 `SYSTEM`,工具输出用 `TOOL`,提取/代码/LLM/AGENT/人工审核输出分别用对应类型。
53
- - `knowledgeKeywordIds` 与 `knowledgeKeywordSelector` 默认互斥:固定关键词使用 ID,动态关键词使用 selector。后端尚未明确两者同时配置时的合并语义,因此 validator 会拒绝同时配置。
54
- - `prompt` 不插变量;需要变量作为检索 query 时用 `customize_query=true` + `query_selector`。
55
- - `query_selector` 支持 `SYSTEM`、`TOOL`、`EXTRACT`、`CODE`、`LLM`、`AGENT`、`HUMAN_REVIEW`。
56
- - EXTRACT selector 第三段是 extract `id`,不是 `name`。
57
- - 不使用工具状态 `ACTION_STATUS_NAME` 作为检索 query。
58
- - `AGENT` selector 只能引用当前上游路径已连通 nextStep 的 `params[].name`。
59
-
60
- ## Common Mistakes
61
-
62
- - 忘记 `LACK_KNOWLEDGE` 兜底。
63
- - 知识目录为空还以为会命中知识。
64
- - 把隔离关键词文本填入 `knowledgeKeywordIds`;该字段只接受关键词 ID。
65
- - 未先查询/创建隔离关键词就配置 ID,导致节点引用不存在的关键词。
66
- - 用户要求按变量切换隔离关键词,却误用 `querySelector`;前者使用 `knowledgeKeywordSelector`,后者只控制检索 query。
67
- - `customize_query=true` 但没配置 `query_selector`。
68
- - 把检索 query 写成 prompt 里的变量模板。