@shulex/cxclawctl 0.1.2 → 0.1.3

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/dist/cli.js +2202 -127
  3. package/dist/cli.js.map +1 -1
  4. package/package.json +19 -6
  5. package/capabilities.lock.json +0 -898
  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,126 +0,0 @@
1
- # M3:策略匹配排查
2
-
3
- M3 负责确认已经得到的意图和变量值如何命中策略,以及命中后选择了什么动作。先对齐会话里实际使用的输入、策略和动作,再读取当前策略配置逐条比较。
4
-
5
- ---
6
-
7
- ## 边界
8
-
9
- M3 只处理意图识别完成之后、Agent 或回复动作执行之前的问题:
10
-
11
- - 有候选意图但没有策略命中。
12
- - 命中了非预期策略,或更宽泛的策略提前命中。
13
- - 策略条件引用的意图、触点或变量值与会话事实不匹配。
14
- - 策略命中正确,但配置的动作类型或目标对象不符合预期。
15
- - 请求显式指定策略或 Agent,导致常规策略匹配被绕过。
16
-
17
- 用户意图本身识别错误时回 M2;策略依赖的变量系统字段缺失或值错时转 M4;策略已正确路由到 Agent 后的执行问题转 M5,CHAT_FLOW 内部问题转 M10。
18
-
19
- ---
20
-
21
- ## 排查顺序
22
-
23
- ### 1. 对齐会话记录中的目标事实
24
-
25
- | 字段 | 要回答的问题 |
26
- |------|--------------|
27
- | `context.intents[]/intent` | 策略实际拿到的意图结果是什么 |
28
- | `context.metadata.ai_fields` 及相关 metadata | 条件依赖的实际值是什么,字段是否存在、为空或类型不同 |
29
- | `context.strategyId/strategyName` | 当轮最终记录了哪条策略;为空时是否最终进入 `CONFUSED/NOTHING` |
30
- | `context.strategyAction` | 命中后选择了回复、模板、转人工、不处理还是 Agent |
31
- | 回复 `type/handoff/reason/reasonDesc` | 策略动作最终表现成什么用户可见结果 |
32
- | `contextComparison.strategyAction` | 当前策略动作是什么,只用于与历史结果比较 |
33
- | `contextComparison.contextModifiedList` | 历史使用的策略是否后来被修改或删除 |
34
-
35
- 先形成一条最短链路:
36
-
37
- ```text
38
- 意图与条件实际值 -> strategyId / strategyName -> strategyAction -> 最终回复类型
39
- ```
40
-
41
- 不要用 `originIntent` 代替策略输入。策略消费的是配置意图 ID、触点及 metadata 等条件值;`originIntent != intent` 也不是策略过滤意图的证据。
42
-
43
- ### 2. 读取当前配置
44
-
45
- ```bash
46
- npx --yes @shulex/cxclawctl@latest api list-strategies --pretty
47
- ```
48
-
49
- 先按 `strategyId` 定位当轮实际策略,再找业务上预期命中的策略。条件字段含义不明确时读取:
50
-
51
- ```bash
52
- npx --yes @shulex/cxclawctl@latest api list-entities --pretty
53
- ```
54
-
55
- 比较以下内容:
56
-
57
- - `status/trigger`:策略是否启用,是否处理消息触发。
58
- - `rank`:策略匹配有先后顺序;先满足条件的策略会阻止后续策略继续匹配。
59
- - `condition`:逐条记录 `apiName/apiType/relation/values`,不要只复述整段 JSON。
60
- - 实际值:从目标轮次 `intents[]`、触点和 metadata 中找到每条条件对应的值。
61
- - `action`:动作类型及关联的 Agent、模板、知识目录或转人工配置是否符合预期。
62
-
63
- 对实际策略和预期策略都做同样比较。只证明“预期策略条件满足”还不够,还要确认是否有更靠前的策略也满足。
64
-
65
- ### 3. 结合字段值判断
66
-
67
- 对每条关键条件写清楚:
68
-
69
- ```text
70
- 条件字段 -> 会话实际值 -> 策略期望值 -> relation -> 是否应匹配
71
- ```
72
-
73
- | 会话事实 | 判断 |
74
- |----------|------|
75
- | `intents[]` 已错误 | 策略只是消费了错误输入,主根因在 M2 |
76
- | `intents[]` 正确,`strategyName` 为空,回复为 `CONFUSED` | 检查预期策略状态、顺序和每条条件,不要说“意图没识别到” |
77
- | 命中非预期 `strategyName` | 先验证该策略为何满足,再检查它是否排在预期策略之前 |
78
- | 策略条件引用的变量系统字段缺失或为空 | M3 记录条件未满足,字段为什么为空转 M4 |
79
- | 实际值与期望值文本相同但类型不同 | 仍可能不匹配;按 `apiType` 和实际 JSON 类型比较 |
80
- | `strategyName` 正确但 `strategyAction` 不符合业务预期 | 属于策略动作配置问题;再对照最终回复类型确认影响 |
81
- | `strategyAction` 正确路由到 Agent,但 Agent 内部走错 | M3 已完成,转 M5;CHAT_FLOW 节点问题转 M10 |
82
- | 当前配置无法解释当轮 `strategyId` | 查历史修改信息;仍无法解释时考虑显式指定或历史版本,不能直接断言系统随机路由 |
83
-
84
- `__intent_ids` 等 ID 条件按数字比较;不要把字符串形式的 ID 当作等价配置。数组、多选值和嵌套字段要同时核对 relation 语义,不能只看“列表里好像包含”。
85
-
86
- ### 4. 最后才查日志
87
-
88
- 第一版诊断默认不查日志。只有以下问题在会话事实和当前策略配置中仍无法回答时,才读取 `sls-query.md`:
89
-
90
- - 无法确认当轮是否走了常规策略匹配,还是显式指定策略或 Agent。
91
- - 需要证明多条策略的实际检查顺序和第一条命中项。
92
- - 会话记录只有“未命中”,但无法确认具体哪条条件失败。
93
- - 当前策略与历史 `strategyId/strategyAction` 矛盾,且没有修改记录可解释。
94
-
95
- 日志只补齐当轮匹配事实。没有日志时,列出尚未确认的条件或历史版本,不要猜测内部执行路径。
96
-
97
- ---
98
-
99
- ## 历史与当前状态边界
100
-
101
- - `context.strategyId/strategyName/strategyAction` 是当轮保存的执行结果。
102
- - `list-strategies/list-entities` 是当前配置,适合解释现在的条件、顺序和动作。
103
- - `contextComparison.strategyAction` 不是当轮动作;它用于展示当前资源状态。
104
- - 策略后来被改过时,当前条件不能用于证明历史为什么命中或未命中。
105
-
106
- ---
107
-
108
- ## 常见根因与建议
109
-
110
- | 根因 | 建议 |
111
- |------|------|
112
- | 正确意图没有对应启用策略 | `[可自行调整]` 为意图补充策略并确认动作 |
113
- | 条件字段缺失或实际值为空 | 先转 M4 判断字段来源,再决定改字段还是放宽条件 |
114
- | 实际值与条件值类型不一致 | `[可自行调整]` 统一字段类型和条件值格式 |
115
- | 宽泛策略排在前面先命中 | `[可自行调整]` 收紧宽泛条件或调整策略顺序 |
116
- | 策略命中正确但动作配置错误 | `[可自行调整]` 修改该策略的 action 目标,不要调整意图掩盖问题 |
117
- | 当前配置无法解释历史结果 | `[需联系研发]` 提供当轮策略字段和当前配置差异,继续确认历史版本或指定路由 |
118
-
119
- ---
120
-
121
- ## 报告口径
122
-
123
- - 必须写出实际策略和预期策略的 ID / 名称、关键条件、实际值、期望值和顺序。
124
- - 先解释为什么命中或未命中,再说明动作造成的用户影响。
125
- - 不要把 `originIntent` 与 `intent` 的差异描述成策略修改了意图。
126
- - 字段值错误时,M3 只说明它如何影响条件;字段为什么错误交给 M4。
@@ -1,121 +0,0 @@
1
- # M4:变量系统字段排查
2
-
3
- M4 负责确认目标轮次实际携带了哪些变量系统字段、字段值是否符合用户表达和当前配置,以及错误值如何影响策略、Agent、工具或 CHAT_FLOW。先判断目标字段是否真的参与了本次异常,再分析字段本身。
4
-
5
- ---
6
-
7
- ## 边界
8
-
9
- M4 处理 Agent 执行前已经形成的变量系统字段问题:
10
-
11
- - 业务需要的字段在 `metadata.ai_fields` 中缺失、为空或值错误。
12
- - 字段值类型、父子结构或多值形式与下游预期不一致。
13
- - 当前字段配置的描述、状态、数据类型或应用范围不适合目标场景。
14
- - 上游已有值与当轮重新抽取结果之间可能发生覆盖。
15
- - 字段正确,但策略、工具或节点引用了错误字段。
16
-
17
- 如果字段值正确而策略条件仍未命中,转 M3;字段值正确而工具参数为空,转 M6;CHAT_FLOW 内部赋值或覆盖问题转 M10。
18
-
19
- ---
20
-
21
- ## 排查顺序
22
-
23
- ### 1. 对齐会话记录中的目标事实
24
-
25
- 先从用户描述和异常结果反推“哪个变量系统字段可能影响了结果”,不要无差别检查全部字段。
26
-
27
- | 字段 | 要回答的问题 |
28
- |------|--------------|
29
- | 用户消息、必要前置轮次和附件 | 用户是否真实提供了目标信息,值是什么,是否有多个互相冲突的值 |
30
- | `context.metadata.ai_fields` | 当轮后续环节实际拿到哪些字段 |
31
- | `ai_fields[].id/name` | 当前结果对应哪个变量系统字段,避免只按相似名称猜测 |
32
- | `ai_fields[].value/values` | 单值兼容字段与多值结果分别是什么;下游实际需要哪种形态 |
33
- | `ai_fields[].dataType/bizType` | 值的类型和业务类别是否符合下游用途 |
34
- | `ai_fields[].children` | 订单等父字段的目标值是否实际位于子字段中 |
35
- | `ai_fields[].aiExtract` | 该结果是否标记为 AI 抽取;不能仅凭此字段还原完整调用方 |
36
- | 策略条件、工具参数或 ChatFlow 变量引用 | 目标字段是否真的被异常路径消费 |
37
-
38
- `metadata.ai_fields` 通常是字段对象列表,不要把它想当然地当成 `ai_fields.xxx` 平铺字典。按 ID / 名称找到目标对象,再检查 `value`、`values` 和 `children`。
39
-
40
- 先形成一条最短影响链:
41
-
42
- ```text
43
- 用户提供的信息 -> ai_fields 中的目标对象和值 -> 下游引用位置 -> 异常结果
44
- ```
45
-
46
- 目标字段没有被下游引用时,即使值为空也通常不是本次 badcase 根因。
47
-
48
- ### 2. 读取当前配置
49
-
50
- ```bash
51
- npx --yes @shulex/cxclawctl@latest api list-ai-fields --pretty
52
- ```
53
-
54
- 按会话中的字段 ID / 名称定位当前配置,比较:
55
-
56
- - `state`:字段当前是否启用。
57
- - `description`:说明是否明确要从什么表达中提取什么值。
58
- - `dataType`:字符串、日期、下拉等类型是否和会话值及下游条件一致。
59
- - `applyRang`:字段是否覆盖策略、Agent、模板或其它实际使用范围。
60
- - `parentId/children`:目标是父级业务对象还是具体子字段。
61
- - 可选值配置:分类或下拉字段的允许值是否覆盖本次表达。
62
-
63
- 当前配置只说明现在应该怎样抽取和使用。不要因为当前字段存在,就断言当轮一定加载了它;也不要因为当前字段被关闭,就断言当轮没有抽取。
64
-
65
- ### 3. 结合字段值判断
66
-
67
- | 会话事实 | 判断 |
68
- |----------|------|
69
- | 用户没有提供目标信息,字段值为空 | 通常是正常结果;检查下游是否不合理地把它设为必需条件 |
70
- | 用户明确提供了信息,但目标字段对象不存在 | 可能是当轮未加载该字段、应用范围不覆盖或结果未保存;当前配置不足以单独定因 |
71
- | 字段对象存在,但 `value/values` 为空 | 确认描述、类型、父子位置和用户表达;只能确认没有得到有效值,不能直接断言某个服务失败 |
72
- | `value` 与 `values[0]` 不一致 | 记录下游实际消费的形态;不要任选一个值作为正确结果 |
73
- | 父字段为空,但 `children` 中目标子字段有值 | 不能判定整体抽取失败;按下游引用的具体字段判断 |
74
- | 字段值正确但 JSON 类型与策略条件不同 | 字段抽取可能正确,影响点在类型契约;转 M3 核对条件 |
75
- | 字段值正确但工具参数为空 | 转 M6 核对参数来源和字段映射 |
76
- | 字段在 CHAT_FLOW 中被再次赋值或覆盖 | 转 M10,对齐节点执行记录和变量覆盖结果 |
77
- | 当前字段配置与会话结果不一致 | 先看 `contextComparison` 或修改时间;没有历史证据时只报告当前差异 |
78
-
79
- 多轮会话中,目标值可能来自前置轮次,也可能被新值覆盖。必须读取影响当前结果的最少前置轮次,不能只看最后一句是否出现该值。
80
-
81
- ### 4. 最后才查日志
82
-
83
- 第一版诊断默认不查日志。只有以下问题仍无法由会话事实和当前配置解释时,才读取 `sls-query.md`:
84
-
85
- - 需要确认字段是随请求传入、沿用历史值,还是当轮重新抽取。
86
- - 用户明确提供了值,但会话记录无法说明字段为何缺失或被覆盖。
87
- - 需要确认实际加载了哪些字段、输入文本或附件,以及返回的原始字段结果。
88
- - 会话记录与当前字段配置冲突,且没有历史变更信息。
89
-
90
- 若后续证据表明是字段抽取内部异常,再进入对应服务或 M11。没有日志时,不要从“没看到某段调用”推断它一定没有发生。
91
-
92
- ---
93
-
94
- ## 历史与当前状态边界
95
-
96
- - `context.metadata.ai_fields` 是当轮后续环节实际保存和消费的字段结果,优先作为历史事实。
97
- - `list-ai-fields` 返回当前字段定义,不是当轮加载字段的快照。
98
- - 当前描述、类型、状态或应用范围发生变化时,只能说明现在的配置不同。
99
- - `contextComparison` 可以提示资源变化,但不会重新抽取字段。
100
-
101
- ---
102
-
103
- ## 常见根因与建议
104
-
105
- | 根因 | 建议 |
106
- |------|------|
107
- | 用户没有提供字段值,但策略强依赖该字段 | `[可自行调整]` 增加兜底条件或在进入该路径前收集信息 |
108
- | 字段描述未覆盖真实表达 | `[可自行调整]` 明确提取对象、典型表达和期望值示例 |
109
- | 字段类型与策略条件不一致 | `[可自行调整]` 统一字段数据类型和条件值格式 |
110
- | 父子字段引用错误 | `[可自行调整]` 让下游引用实际承载值的子字段 |
111
- | 字段值正确但策略或工具未使用 | 转 M3 / M6 修正引用,不重复修改抽取配置 |
112
- | 用户提供值但当轮字段仍缺失,且当前配置无法解释 | `[需联系研发]` 提供目标字段 ID、用户原话和会话中的 `ai_fields` 结果继续定位 |
113
-
114
- ---
115
-
116
- ## 报告口径
117
-
118
- - 先写目标字段为什么与本次异常有关,再写用户原话、字段对象和值、下游引用位置。
119
- - 区分“字段对象不存在”“字段存在但为空”“字段值错误”“字段正确但未被消费”。
120
- - 配置问题标明当前字段 ID / 名称、类型和应用范围;不要只说“实体提取失败”。
121
- - 未进入日志阶段时,不要写具体调用方或服务异常作为确定根因。
@@ -1,208 +0,0 @@
1
- # M5:Agent 执行模块
2
-
3
- **职责代码**:`AgentService.executeAgent()`
4
-
5
- ---
6
-
7
- ## 三种 Agent 类型
8
-
9
- 策略 action 为 `AGENT` / `FLOW_AGENT` 时,进入 `executeAgent()`。根据 `agent.type` 分三个分支:
10
-
11
- | 类型 | 特征 | 执行方式 |
12
- |------|------|---------|
13
- | `CHAT_FLOW` | 图形化节点流程 | `agentAlgClient.invokeChatFlow()` 流式 |
14
- | `MULTI_AGENT` | 多 Agent 图路由 | `agentAlgClient.invokeAiAgent()` 流式(单次) |
15
- | `SINGLE_AGENT`(else) | 单 Agent 循环调用 | `agentAlgClient.invokeAiAgent()` 流式循环(最多 10 次) |
16
-
17
- **MAX_TURN_EXCEED**:在进入分支前检查:
18
- - 条件:`currentAgentTurn > maxInvokeCount`(默认 30)
19
- - 结果:`TO_AGENT + MAX_TURN_EXCEED`
20
- - **无日志**,仅在会话记录目标回复的 `reason` 中体现
21
-
22
- ---
23
-
24
- ## CHAT_FLOW 分支
25
-
26
- ### 核心流程
27
-
28
- ```
29
- agentAlgClient.invokeChatFlow(flowRequest, debug, flowResponse -> {
30
- switch (flowResponse.eventEnum) {
31
- CHAT_STARTED → 记录 prepareTimeMillis
32
- NODE_STARTED → 存 runInfoList(后续写入 chatflow_run_info)
33
- NODE_FINISHED → 存 runInfoList(含 node_id、status、out_handle、outputs、elapsed_time)
34
- MESSAGE_DELTA → 流式推送内容片段
35
- MESSAGE → 处理 text(AI 回复)/ tool_request / tool_response
36
- CHAT_FINISHED → 存 finishedData(status、error、handoff、graph_finished)
37
- }
38
- })
39
- ```
40
-
41
- ### finishedData.status 映射
42
-
43
- | status | 结果 | 备注 |
44
- |--------|------|------|
45
- | `success` | `MESSAGE` 或 `NOTHING` | graph_finished=true 时加 AGENT_HAS_FINISHED reason |
46
- | `failed` | `STOPPED`(或 `TO_AGENT`) | ToolInvokeError / GraphNodeMissingError → TO_AGENT |
47
- | `transfer_to_human` | `MESSAGE` 或 `TO_AGENT` + handoff | reason 来自 handoff.reason |
48
-
49
- ### 信号判断
50
-
51
- 会话记录的 `context.ext.chatflow_run_info` 已存储节点序列,**优先从这里分析**,通常不需要查日志:
52
-
53
- | 信号 | 含义 |
54
- |------|------|
55
- | `graph_finished=false` 且对话结束 | 流程未到终止节点(缺少出边) |
56
- | 节点序列与预期不符 | IF_ELSE/INTENT 走了错误分支 |
57
- | `type=STOPPED` + status=failed | 看 error.node_id 和 error.name |
58
- | `reason=MAX_TURN_EXCEED` | agentTurn > maxInvokeCount(无日志) |
59
-
60
- ### Log 层
61
-
62
- ```bash
63
- # ChatFlow 错误日志(精确匹配)
64
- $BASE --from $BEGIN --to $END \
65
- --query 'trace:"<trace>" AND (rest:"chatflow return error" OR rest:"chatflow run failed" OR rest:"chatflow no finished data")' \
66
- --line 10
67
- ```
68
-
69
- **精确错误字符串**:
70
- ```
71
- executeAgent[<chatId>]: chatflow return error, msg={}
72
- executeAgent[<chatId>]: chatflow run failed, errorObj={} ← 含 node_id、node_title
73
- executeAgent[<chatId>]: chatflow no finished data
74
- executeAgent[<chatId>]: chatflow unknown finishdata type={}
75
- ```
76
-
77
- ---
78
-
79
- ## MULTI_AGENT 分支
80
-
81
- ### 核心流程
82
-
83
- ```
84
- agentAlgClient.invokeAiAgent(aiAgentRequest, aiAgentResponse -> {
85
- switch (aiAgentResponse.eventEnum) {
86
- conversation_message_completed:
87
- type=answer → isReturnUserMsg=true → 返回 MESSAGE
88
- type=function_call → isCallTool=true → 处理工具类型
89
- conversation_chat_failed → isCallFail=true → STOPPED
90
- }
91
- })
92
- ```
93
-
94
- ### function_call 工具路由
95
-
96
- | toolType | 处理 |
97
- |----------|------|
98
- | `TRANSFER_TO_HUMAN` | TO_AGENT 或 MESSAGE + handoff;reason 来自 reason_description |
99
- | `FINISH_AGENT` | MESSAGE 或 NOTHING + AGENT_HAS_FINISHED |
100
- | `KNOWLEDGE_AI_REPLY` | 调用 `aiReplyService.aiReply()`(→ M7) |
101
-
102
- **转人工 reason 判断**(来自 `toolArgs.reason_description`):
103
- - `Lack of knowledge` → `LACK_OF_KNOWLEDGE`
104
- - `Knowledge irrelevant` → `KNOWLEDGE_NOT_RELEVANT`
105
- - `tool action` → `CALL_TOOL_STATUS_TO_HUMAN` 或 `HANDOFF_TOOL_STATUS`
106
- - `llm invoke` → `CALL_AGENT_TRANSFER_TO_HUMAN`
107
-
108
- ### Log 层
109
-
110
- ```bash
111
- # MULTI_AGENT 流式日志(含完整 aiAgentResponse,token 消耗大)
112
- $BASE --from $BEGIN --to $END \
113
- --query 'trace:"<trace>" AND rest:"multiAgent stream"' --line 20
114
-
115
- # MULTI_AGENT 失败
116
- $BASE --from $BEGIN --to $END \
117
- --query 'trace:"<trace>" AND rest:"multiAgent, call fail"' --line 5
118
- ```
119
-
120
- **精确日志字符串**:
121
- ```
122
- executeAgent[<chatId>]: multiAgent stream, aiAgentResponse={}
123
- executeAgent[<chatId>]: multiAgent, call fail, reason={}
124
- executeAgent[<chatId>]: multiAgent, call kb_reply fail, knowledgeAiReplyRes={}
125
- ```
126
-
127
- ---
128
-
129
- ## SINGLE_AGENT 分支
130
-
131
- ### 核心流程
132
-
133
- ```
134
- while (currentLoopCount++ < 10): // 最多循环 10 次
135
- agentAlgClient.invokeAiAgent(aiAgentRequest, response -> {
136
- conversation_message_completed:
137
- type=answer → return MESSAGE(退出循环)
138
- type=function_call → callPluginId → 执行工具 → 追加 tool_response 消息 → 下一轮循环
139
- conversation_chat_failed → return STOPPED
140
- })
141
-
142
- // 超过 10 轮未返回 → STOPPED + AGENT_TIMEOUT
143
- ```
144
-
145
- ### 工具调用类型
146
-
147
- | pluginType | 处理 |
148
- |------------|------|
149
- | `EXTERNAL_HTTP_CALL` | 调用外部 HTTP 接口(→ M6) |
150
- | `FINISH_AGENT` | 结束 Agent,返回模板回复 |
151
- | `TRANSFER_TO_HUMAN` | 转人工(带话术或空) |
152
- | `KNOWLEDGE_AI_REPLY` | 调用知识库(→ M7) |
153
- | `PRODUCT_RECALL` | Shopify 商品检索 |
154
- | `QUERY_SHOPIFY_ORDER` | 订单查询 |
155
- | `LOGISTICS_17_TRACK` | 物流追踪 |
156
-
157
- ### Log 层
158
-
159
- ```bash
160
- # SINGLE_AGENT 每轮调用(含完整请求,token 大,按需查)
161
- $BASE --from $BEGIN --to $END \
162
- --query 'trace:"<trace>" AND rest:"call ai agent,"' --line 10
163
-
164
- # SINGLE_AGENT 工具调用结果
165
- $BASE --from $BEGIN --to $END \
166
- --query 'trace:"<trace>" AND rest:"call tool, currentLoopCount"' --line 10
167
-
168
- # SINGLE_AGENT 失败
169
- $BASE --from $BEGIN --to $END \
170
- --query 'trace:"<trace>" AND rest:"call ai agent stream" AND rest:"call fail"' --line 5
171
- ```
172
-
173
- **精确日志字符串**:
174
- ```
175
- executeAgent[<chatId>]: call ai agent, currentLoopCount={}, aiAgentRequest={}
176
- executeAgent[<chatId>]: call ai agent stream, currentLoopCount={}, aiAgentResponse={}
177
- executeAgent[<chatId>]: call tool, currentLoopCount={}, pluginName={}, request={}, response={}
178
- executeAgent[<chatId>]: call ai agent stream, currentLoopCount={}, call fail, reason={}
179
- ```
180
-
181
- ---
182
-
183
- ## Config 层
184
-
185
- ```bash
186
- npx --yes @shulex/cxclawctl@latest api get-agent --id <agentId> --pretty
187
- ```
188
-
189
- 检查点:
190
- - `agent.type`:确认是 CHAT_FLOW / MULTI_AGENT / SINGLE_AGENT
191
- - `meta.maxInvokeCount`:MAX_TURN_EXCEED 阈值(默认 30)
192
- - CHAT_FLOW:`meta.chatFlowGraph` 中的节点定义和边配置
193
- - SINGLE_AGENT:`usedPlugins` 列表和 `prompt`
194
- - MULTI_AGENT:`meta.multiAgentGraph` 中的子 Agent 配置
195
-
196
- ---
197
-
198
- ## 常见根因与建议
199
-
200
- | 根因 | 建议 |
201
- |------|------|
202
- | MAX_TURN_EXCEED | 检查循环分支,确保有终止出口;或调大 `maxInvokeCount` |
203
- | CHAT_FLOW graph_finished=false | 补充缺失的终止出边 |
204
- | CHAT_FLOW chatflow run failed | 从 errorObj.node_id 定位失败节点 |
205
- | SINGLE_AGENT AGENT_TIMEOUT(10轮用尽)| 检查是否陷入工具调用循环;看每轮的 aiAgentRequest 是否有进展 |
206
- | SINGLE_AGENT call fail | 看 errorReason/codeMsg,通常是 LLM 服务异常(→ M8) |
207
- | MULTI_AGENT call fail | 同上 |
208
- | 转人工 reason 不符合预期 | 检查 TRANSFER_TO_HUMAN 工具的 reason_description 逻辑 |
@@ -1,115 +0,0 @@
1
- # M6:工具调用模块
2
-
3
- **职责**:SINGLE_AGENT / CHAT_FLOW 中对 EXTERNAL_HTTP_CALL 工具的执行。
4
-
5
- ---
6
-
7
- ## 核心逻辑
8
-
9
- ### SINGLE_AGENT 路径(主要路径)
10
-
11
- ```
12
- executeAgent() → function_call 消息 → callPluginId → 找 usedPlugins
13
- → plugin.type == EXTERNAL_HTTP_CALL:
14
- HttpParamUtils.updateArguments() → 更新参数(绑定 metadata 值)
15
- → 发起 HTTP 请求(带 headerParams 认证)
16
- → 解析 resultStr → 写入 toolResponse(metadata)
17
- → 下一循环继续
18
- ```
19
-
20
- **参数来源(`source`)**:
21
- - `LLM`:由 LLM 从对话上下文推断
22
- - `CUSTOMIZE`:固定值(`value` 或 `ref`)
23
- - `METADATA`:从 metadata(ai_fields)读取
24
-
25
- ### CHAT_FLOW 路径
26
-
27
- ```
28
- ChatFlowService.callTool(request)
29
- → EXTERNAL_HTTP_CALL → callExternHttp()
30
- → KNOWLEDGE_AI_REPLY → callKnowledgeReply()
31
- → TEMPLATE_REPLY → callTemplateReply()
32
- ```
33
-
34
- ---
35
-
36
- ## 信号判断
37
-
38
- 从会话记录读取:
39
-
40
- | 信号 | 含义 |
41
- |------|------|
42
- | `ai_fields.xxx = null` | `source=LLM` 参数无法填充 |
43
- | SINGLE_AGENT 循环次数多但无结果 | 工具反复调用未成功 |
44
- | CHAT_FLOW: chatflow_run_info 中 TOOL 节点 `status=failed` | 工具执行失败 |
45
-
46
- ---
47
-
48
- ## Config 层
49
-
50
- ```bash
51
- # 查工具列表(精简信息)
52
- npx --yes @shulex/cxclawctl@latest api list-plugins --pretty
53
-
54
- # 查工具详情(request/response params、actionStatus)
55
- npx --yes @shulex/cxclawctl@latest api get-plugin --id <tool_id> --pretty
56
-
57
- # 查变量系统字段(LLM source 的参数需要对应变量系统字段)
58
- npx --yes @shulex/cxclawctl@latest api list-ai-fields --pretty
59
- ```
60
-
61
- 检查点:
62
- - `requestParam.items` 中 `required=true & source=LLM` 的参数:是否有对应变量系统字段?
63
- - `responseParam.items`:映射路径是否与实际接口响应匹配?
64
- - 接口地址、认证 header 是否正确?
65
-
66
- ---
67
-
68
- ## Log 层
69
-
70
- ### SINGLE_AGENT
71
-
72
- ```bash
73
- # 工具调用结果(request + response)
74
- $BASE --from $BEGIN --to $END \
75
- --query 'trace:"<trace>" AND rest:"call tool, currentLoopCount"' --line 10
76
- # → pluginName, request(入参), response(出参)
77
- ```
78
-
79
- **精确日志字符串**:
80
- ```
81
- executeAgent[<chatId>]: call tool, currentLoopCount={}, pluginName={}, request={}, response={}
82
- executeAgent[<chatId>]: call plugin, currentLoopCount={}, arguments={}, headers={}, httpResult={}, plugin={}
83
- ```
84
-
85
- ### CHAT_FLOW
86
-
87
- ```bash
88
- # callTool 入口和出口
89
- $BASE --from $BEGIN --to $END \
90
- --query 'trace:"<trace>" AND rest:"chatflow callTool"' --line 15
91
-
92
- # HTTP 工具详情
93
- $BASE --from $BEGIN --to $END \
94
- --query 'trace:"<trace>" AND rest:"chatflow call http tool"' --line 15
95
- ```
96
-
97
- **精确日志字符串**:
98
- ```
99
- chatflow callTool request={} ← 完整入参
100
- chatflow callTool chatId={} ... ← 完整出参
101
- chatflow call http tool, toolId={}, chatId={}, url={}, method={}, params={}, inputs={}
102
- chatflow call http tool, toolId={}, chatId={}, resultStr={}
103
- chatflow callTool error chatId={} ← 异常
104
- ```
105
-
106
- ---
107
-
108
- ## 常见根因与建议
109
-
110
- | 根因 | 建议 |
111
- |------|------|
112
- | `source=LLM` 参数提取失败(null) | 优化变量系统字段 prompt;或改为 `METADATA` source |
113
- | HTTP 接口返回错误 | 检查接口鉴权、URL、参数格式 |
114
- | responseParam 路径映射错误 | 对照实际 HTTP 响应修正路径 |
115
- | SINGLE_AGENT 工具循环(参数反复错误) | 检查 arguments 是否每轮都相同,找循环根因 |
@@ -1,72 +0,0 @@
1
- # M7:回复生成排查
2
-
3
- M7 负责知识或业务上下文进入回复模型之后的 Prompt 组装、LLM 生成、格式化和检查。query、召回范围、排序、相关性和使用知识本身的问题转 M9;ChatFlow 内先按 M10 确认 graph 和节点。
4
-
5
- ## 当前主路径
6
-
7
- 普通 AI 回复的知识路径:
8
-
9
- ```text
10
- AiReplyService.aiReply
11
- -> 构建 KnowledgeSearchReq
12
- -> qa-bot searchKnowledge
13
- -> contextContent / systemContent
14
- -> livechat: invokeGpt
15
- 非 livechat: ShulexService docReply
16
- -> aiContent
17
- -> postHandle / product card / format
18
- -> 最终 AgentAction
19
- ```
20
-
21
- qa-bot 当前会把最终使用的 QA、文档和商品组装到上下文,再进入生成链路。知识上下文为空时通常返回 `CONFUSED + LACK_OF_KNOWLEDGE`;生成内容为空时返回 `TO_AGENT + AI_CONTENT_IS_EMPTY`。
22
-
23
- ## 诊断顺序
24
-
25
- 1. 先按 M9 确认哪些知识 `effect=true`、哪些文档 chunk 或商品实际进入上下文。
26
- 2. 对比 `context.aiContent` 与最终 `messages[].content`。
27
- 3. 检查 Prompt/PE、知识上下文和历史消息是否同时包含冲突指令。
28
- 4. 若 `aiContent` 已正确,继续检查格式化、语言处理、输入输出检查和过滤。
29
-
30
- | 现象 | 判断 |
31
- |------|------|
32
- | 使用知识错误或缺失 | M9 召回问题 |
33
- | 使用知识正确,但 `aiContent` 结论错误 | Prompt、上下文冲突或生成不遵循 |
34
- | `aiContent` 正确,最终回复错误 | 后处理、格式化或算法检查 |
35
- | `filteredContent` 有值且 `metadata.real_time_inspection_tags` 或 reason 指向合规/质检 | 转 M12 |
36
- | `filteredContent` 有值但没有质检信号 | 原回复被检查或拦截,结合 reason 转 M8/M11 |
37
- | `AI_CONTENT_IS_EMPTY` | LLM 返回空、超时或异常,转 M8 |
38
- | 回复语言错误 | 检查请求语言、模型输出和语言后处理 |
39
-
40
- ## Prompt 证据边界
41
-
42
- - 会话记录保存的 Agent 历史、知识 tool response 和 `aiContent` 是重要运行事实。
43
- - `currentPrompt` 为空时,读取会话记录的接口可能用当前 Agent Prompt 补填;它不一定是历史运行快照。
44
- - `get-agent` 返回的是当前配置,不能单独证明目标轮次收到同一 Prompt。
45
- - 要确认运行时完整 Prompt、PE 和知识上下文是否注入,查询该轮实际 LLM 请求日志。
46
-
47
- 因此只能在运行时请求得到验证后写“Prompt 已注入但模型未遵循”;否则应写“当前配置存在该规则,但运行时注入尚未确认”。
48
-
49
- ## 配置与日志
50
-
51
- 按调用路径读取当前 Agent 或 ChatFlow 图。ChatFlow 的 Agent/RAG/回复节点由 M10 负责定位,M7 只分析其生成输入和输出。
52
-
53
- 聚焦日志:
54
-
55
- ```text
56
- aiReply[<chatId>]: useKnowledgeSearch=
57
- aiReply[<chatId>]: aiContent=
58
- aiReply[<chatId>]: formatAiContent=
59
- invokeGpt[<chatId>]
60
- detected response language
61
- chatflow call kbreply
62
- ```
63
-
64
- 日志用于确认实际 system prompt、历史消息、知识上下文、模型原始输出和后处理。没有运行时请求证据时,不要把知识冲突、Prompt 优先级或模型行为写成确定根因。
65
-
66
- ## 建议边界
67
-
68
- - 知识内容冲突:回 M9 统一知识口径。
69
- - Prompt 与知识冲突:明确优先级并消除冲突,随后用原 badcase 回归。
70
- - 生成未遵循已确认的运行时规则:缩短和强化规则、减少冲突上下文,并增加针对性测试。
71
- - 后处理改变正确答案:提供 `aiContent` 与最终 content 对比,交对应检查模块修复。
72
- - 任何配置建议都必须保持原业务口径,不擅自加强限制、承诺或风险结论。