@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.
- package/README.md +25 -22
- package/dist/cli.js +2202 -127
- package/dist/cli.js.map +1 -1
- package/package.json +19 -6
- package/capabilities.lock.json +0 -898
- package/requirements-cli.txt +0 -2
- package/skills/__lib__/__init__.py +0 -0
- package/skills/__lib__/skill-runtime/bootstrap.py +0 -134
- package/skills/__lib__/solvea-api/__init__.py +0 -0
- package/skills/__lib__/solvea-api/client.py +0 -1944
- package/skills/__lib__/solvea-api/dashboard.py +0 -100
- package/skills/__lib__/solvea-api/solvea_api.py +0 -1341
- package/skills/agent-analytics/SKILL.md +0 -74
- package/skills/agent-analytics/references/chat-report-fields.md +0 -36
- package/skills/agent-analytics/references/report-fields.md +0 -130
- package/skills/agent-analytics/references/transcript.md +0 -110
- package/skills/agent-builder/SKILL.md +0 -42
- package/skills/agent-builder/interfaces/fallback-chatflow.md +0 -47
- package/skills/agent-builder/references/chatflow/graph-spec.md +0 -259
- package/skills/agent-builder/references/chatflow/node-selection.md +0 -89
- package/skills/agent-builder/references/chatflow/nodes/agent.md +0 -350
- package/skills/agent-builder/references/chatflow/nodes/business-track.md +0 -43
- package/skills/agent-builder/references/chatflow/nodes/code.md +0 -157
- package/skills/agent-builder/references/chatflow/nodes/collect-order.md +0 -47
- package/skills/agent-builder/references/chatflow/nodes/finish.md +0 -34
- package/skills/agent-builder/references/chatflow/nodes/human-review.md +0 -60
- package/skills/agent-builder/references/chatflow/nodes/if-else.md +0 -100
- package/skills/agent-builder/references/chatflow/nodes/intent.md +0 -79
- package/skills/agent-builder/references/chatflow/nodes/knowledge-reply.md +0 -43
- package/skills/agent-builder/references/chatflow/nodes/llm.md +0 -117
- package/skills/agent-builder/references/chatflow/nodes/note.md +0 -38
- package/skills/agent-builder/references/chatflow/nodes/question.md +0 -97
- package/skills/agent-builder/references/chatflow/nodes/rag-reply.md +0 -68
- package/skills/agent-builder/references/chatflow/nodes/reply.md +0 -97
- package/skills/agent-builder/references/chatflow/nodes/start.md +0 -35
- package/skills/agent-builder/references/chatflow/nodes/sub-graph.md +0 -48
- package/skills/agent-builder/references/chatflow/nodes/tool.md +0 -138
- package/skills/agent-builder/references/chatflow/nodes/transfer-to-human.md +0 -63
- package/skills/agent-builder/references/chatflow/nodes/variable-assignment.md +0 -52
- package/skills/agent-builder/references/chatflow/nodes/variable-extract.md +0 -50
- package/skills/agent-builder/references/chatflow/nodes/variable-process.md +0 -70
- package/skills/agent-builder/references/chatflow/overview.md +0 -53
- package/skills/agent-builder/references/chatflow/visual-translation.md +0 -64
- package/skills/agent-builder/references/chatflow/workflow.md +0 -134
- package/skills/agent-builder/references/multi-agent/create-update.md +0 -185
- package/skills/agent-builder/references/multi-agent/graph-spec.md +0 -246
- package/skills/agent-builder/references/multi-agent/graph-structure.md +0 -12
- package/skills/agent-builder/references/multi-agent/migrate-to-chatflow.md +0 -13
- package/skills/agent-builder/references/multi-agent/migration/large.md +0 -554
- package/skills/agent-builder/references/multi-agent/migration/principles.md +0 -446
- package/skills/agent-builder/references/multi-agent/migration/small.md +0 -225
- package/skills/agent-builder/references/multi-agent/orchestration.md +0 -11
- package/skills/agent-builder/references/multi-agent/overview.md +0 -48
- package/skills/agent-builder/references/multi-agent/update.md +0 -128
- package/skills/agent-builder/references/multi-agent/workflow.md +0 -87
- package/skills/agent-builder/references/single-agent/overview.md +0 -48
- package/skills/agent-builder/references/single-agent/prompt.md +0 -16
- package/skills/agent-builder/references/single-agent/tools.md +0 -36
- package/skills/agent-builder/references/single-agent/voice.md +0 -46
- package/skills/agent-builder/references/tools/http-tool.md +0 -315
- package/skills/agent-builder/references/tools/mock-tool.md +0 -279
- package/skills/agent-builder/references/tools/overview.md +0 -46
- package/skills/agent-builder/references/tools/tool-config.md +0 -43
- package/skills/agent-builder/references/tools/x-token.md +0 -34
- package/skills/agent-builder/scripts/chatflow/chatflow_builder.py +0 -3458
- package/skills/agent-builder/scripts/chatflow/validate_graph.py +0 -1697
- package/skills/agent-builder/scripts/copy_marketplace_agent.py +0 -61
- package/skills/agent-builder/scripts/multi-agent/legacy_graph_analyzer.py +0 -5974
- package/skills/agent-builder/scripts/multi-agent/replay_compare.py +0 -679
- package/skills/agent-builder/scripts/patch_agent_tools.py +0 -135
- package/skills/agent-builder/scripts/tools/validate_tool_config.py +0 -384
- package/skills/agent-tester/SKILL.md +0 -35
- package/skills/agent-tester/batch-test/overview.md +0 -86
- package/skills/agent-tester/scripts/batch_test_sheet.py +0 -213
- package/skills/agent-tester/single-test/badcase-retest.md +0 -85
- package/skills/agent-tester/single-test/direct-test.md +0 -24
- package/skills/agent-tester/single-test/overview.md +0 -142
- package/skills/delivery/SKILL.md +0 -112
- package/skills/delivery/interfaces/classify.md +0 -38
- package/skills/delivery/interfaces/create-agents.md +0 -89
- package/skills/delivery/interfaces/delivery-test.md +0 -67
- package/skills/delivery/references/flow.md +0 -40
- package/skills/delivery/references/validation.md +0 -15
- package/skills/delivery/scripts/batch_test.py +0 -704
- package/skills/delivery/scripts/classify.py +0 -22
- package/skills/delivery/scripts/create_agents.py +0 -695
- package/skills/delivery/scripts/gen_delivery_report.py +0 -335
- package/skills/delivery/scripts/gen_excel.py +0 -234
- package/skills/delivery/scripts/gen_report.py +0 -208
- package/skills/delivery/scripts/plan.py +0 -163
- package/skills/delivery/scripts/render.py +0 -713
- package/skills/delivery/scripts/render_summary.py +0 -38
- package/skills/delivery/scripts/sample_history_cases.py +0 -109
- package/skills/kb-builder/SKILL.md +0 -80
- package/skills/kb-builder/interfaces/qa-upload.md +0 -55
- package/skills/kb-builder/interfaces/web-kb.md +0 -84
- package/skills/kb-builder/references/directory.md +0 -373
- package/skills/kb-builder/references/export.md +0 -282
- package/skills/kb-builder/references/isolation-keywords.md +0 -113
- package/skills/kb-builder/references/knowledge.md +0 -153
- package/skills/kb-builder/references/product.md +0 -52
- package/skills/kb-builder/references/qa-from-help-center.md +0 -58
- package/skills/kb-builder/references/qa-from-pdf.md +0 -94
- package/skills/kb-builder/references/qa-from-tickets.md +0 -168
- package/skills/kb-builder/references/qa-from-web.md +0 -98
- package/skills/kb-builder/references/qa-quality.md +0 -73
- package/skills/kb-builder/references/reply-template.md +0 -237
- package/skills/kb-builder/references/tag-isolation-migration.md +0 -61
- package/skills/kb-builder/references/tags.md +0 -45
- package/skills/kb-builder/references/upload.md +0 -130
- package/skills/kb-builder/scripts/batch_extract_ticket_qa.py +0 -333
- package/skills/kb-builder/scripts/build_directory_plan.py +0 -144
- package/skills/kb-builder/scripts/crawl_site.py +0 -433
- package/skills/kb-builder/scripts/create_dirs.py +0 -146
- package/skills/kb-builder/scripts/export_knowledge.py +0 -454
- package/skills/kb-builder/scripts/extract_ticket_qa.py +0 -441
- package/skills/kb-builder/scripts/extract_web_qa.py +0 -118
- package/skills/kb-builder/scripts/import_qa.py +0 -219
- package/skills/kb-builder/scripts/import_source_documents.py +0 -143
- package/skills/kb-builder/scripts/import_templates.py +0 -409
- package/skills/poc/SKILL.md +0 -125
- package/skills/poc/assets/default_manual.css +0 -279
- package/skills/poc/assets/notice_escalate.png +0 -0
- package/skills/poc/assets/notice_escalate2.png +0 -0
- package/skills/poc/assets/notice_new_chat.png +0 -0
- package/skills/poc/assets/poc_test_template.html +0 -645
- package/skills/poc/assets/poc_test_template.md +0 -104
- package/skills/poc/assets/step3_preview.png +0 -0
- package/skills/poc/assets/step4_order_note.png +0 -0
- package/skills/poc/interfaces/classify.md +0 -38
- package/skills/poc/interfaces/create-agents.md +0 -108
- package/skills/poc/interfaces/poc-test.md +0 -94
- package/skills/poc/references/flow.md +0 -47
- package/skills/poc/references/kb-directory.md +0 -22
- package/skills/poc/references/validation.md +0 -17
- package/skills/poc/scripts/classify.py +0 -22
- package/skills/poc/scripts/create_agents.py +0 -818
- package/skills/poc/scripts/gen_excel.py +0 -234
- package/skills/poc/scripts/gen_poc_manual.py +0 -249
- package/skills/poc/scripts/gen_report.py +0 -208
- package/skills/poc/scripts/inspect_chatflow.py +0 -209
- package/skills/poc/scripts/plan.py +0 -178
- package/skills/poc/scripts/poc_test.py +0 -495
- package/skills/poc/scripts/render.py +0 -713
- package/skills/poc/scripts/render_summary.py +0 -41
- package/skills/runtime-inspector/SKILL.md +0 -51
- package/skills/runtime-inspector/references/frontend-rendering.md +0 -126
- package/skills/runtime-inspector/references/model.md +0 -59
- package/skills/runtime-inspector/references/sandbox.md +0 -131
- package/skills/runtime-inspector/scripts/model_inspect.py +0 -68
- package/skills/runtime-inspector/scripts/prepare.py +0 -98
- package/skills/runtime-inspector/scripts/process.py +0 -84
- package/skills/runtime-inspector/scripts/read_state.py +0 -32
- package/skills/runtime-inspector/scripts/sandbox_inspect.py +0 -463
- package/skills/runtime-inspector/scripts/test_claude_proxy.py +0 -49
- package/skills/runtime-inspector/scripts/test_openai_proxy.py +0 -41
- package/skills/runtime-inspector/scripts/verify_persistence.py +0 -101
- package/skills/runtime-inspector/scripts/write_test.py +0 -41
- package/skills/setup/SKILL.md +0 -17
- package/skills/shulex-support/SKILL.md +0 -39
- package/skills/shulex-support/references/badcase-analysis/overview.md +0 -34
- package/skills/shulex-support/references/badcase-analysis/text/conversation-record.md +0 -105
- package/skills/shulex-support/references/badcase-analysis/text/core-flow.md +0 -89
- package/skills/shulex-support/references/badcase-analysis/text/log-query-rules.md +0 -36
- package/skills/shulex-support/references/badcase-analysis/text/m1-entry.md +0 -53
- package/skills/shulex-support/references/badcase-analysis/text/m10-chatflow-service.md +0 -259
- package/skills/shulex-support/references/badcase-analysis/text/m11-algorithm-service.md +0 -148
- package/skills/shulex-support/references/badcase-analysis/text/m12-quality-inspection.md +0 -57
- package/skills/shulex-support/references/badcase-analysis/text/m2-intent.md +0 -120
- package/skills/shulex-support/references/badcase-analysis/text/m3-strategy.md +0 -126
- package/skills/shulex-support/references/badcase-analysis/text/m4-aifield.md +0 -121
- package/skills/shulex-support/references/badcase-analysis/text/m5-agent.md +0 -208
- package/skills/shulex-support/references/badcase-analysis/text/m6-tool.md +0 -115
- package/skills/shulex-support/references/badcase-analysis/text/m7-reply.md +0 -72
- package/skills/shulex-support/references/badcase-analysis/text/m8-error.md +0 -92
- package/skills/shulex-support/references/badcase-analysis/text/m9-knowledge-search.md +0 -147
- package/skills/shulex-support/references/badcase-analysis/text/sls-query.md +0 -283
- package/skills/shulex-support/references/badcase-analysis/voice/core-flow.md +0 -77
- package/skills/shulex-support/references/badcase-analysis/voice/dependencies.md +0 -19
- package/skills/shulex-support/references/badcase-analysis/voice/platform-api.md +0 -23
- package/skills/shulex-support/references/badcase-analysis/voice/sls-playbook.md +0 -31
- package/skills/shulex-support/references/product-docs.md +0 -70
- package/skills/shulex-support/references/tickets.md +0 -184
- package/skills/shulex-support/scripts/support.py +0 -427
- package/skills/solvea-desk/SKILL.md +0 -39
- package/skills/solvea-desk/references/report/fields.md +0 -82
- package/skills/solvea-desk/references/report/report-design.md +0 -200
- package/skills/solvea-desk/references/report/report-template.html +0 -44
- package/skills/solvea-desk/references/report/report.css +0 -517
- package/skills/solvea-desk/references/report/workflow.md +0 -464
- package/skills/solvea-desk/references/tickets/query.md +0 -103
- package/skills/solvea-desk/references/tickets/tags.md +0 -83
- package/skills/solvea-desk/scripts/report/fetch_sources.py +0 -580
- package/skills/solvea-desk/scripts/report/render_report.py +0 -763
- package/skills/solvea-desk/scripts/tickets/desk_api.py +0 -73
- package/skills/solvea-desk/scripts/tickets/fetch_tickets.py +0 -403
- package/skills/solvea-desk/scripts/tickets/ticket_tags.py +0 -305
- package/skills/solvea-kit/SKILL.md +0 -84
- package/skills/solvea-kit/references/agent.md +0 -145
- package/skills/solvea-kit/references/chat.md +0 -244
- package/skills/solvea-kit/references/intent.md +0 -69
- package/skills/solvea-kit/references/plugin.md +0 -53
- package/skills/solvea-kit/references/quality-inspection.md +0 -75
- package/skills/solvea-kit/references/strategy.md +0 -62
- package/skills/solvea-kit/references/tagging.md +0 -231
- package/skills/solvea-kit/references/variables.md +0 -53
- package/skills/solvea-kit/scripts/generate_label_import_file.py +0 -151
- package/skills/solvea-kit/scripts/intent_classify.py +0 -843
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
# 迁移模式:small legacy MULTI_AGENT -> CHAT_FLOW
|
|
2
|
-
|
|
3
|
-
输入是旧版 `multiAgentGraph`(扁平 `agents[]` + `agentEdges[]`)时使用本文件。目标不是复述旧
|
|
4
|
-
prompt,也不是按 old agent 数量建同样数量的节点,而是还原并保留入口、客户意图、工具、动作分支、
|
|
5
|
-
模板回复、人工接管、结束和内部流转等**可执行业务语义**。
|
|
6
|
-
|
|
7
|
-
开始前先读 `../graph-spec.md` 和 `principles.md`。本文件只负责短图的旧图取证、coverage、语义映射
|
|
8
|
-
和用户确认;它不定义目标节点字段、默认边或构图/校验命令。
|
|
9
|
-
|
|
10
|
-
短图不强制跑 analyzer,但必须产出等价的 topology 摘要:唯一入口、可达节点、显式 edge、
|
|
11
|
-
`SWITCH_AGENT` 控制边、动作分支和终端。如果已有 analyzer 产物,优先使用其中的 `topology` /
|
|
12
|
-
`flow_understanding.seed.json` / `migration_contracts`;图小不是跳过 classifier 闭集、模板资源、用户
|
|
13
|
-
交互和动作顺序对账的理由。
|
|
14
|
-
|
|
15
|
-
## 触发和分流
|
|
16
|
-
|
|
17
|
-
符合任一条件即进入迁移模式:
|
|
18
|
-
|
|
19
|
-
- 文本包含 `multiAgentGraph` / `agentEdges` / `classifierPlugin`;
|
|
20
|
-
- 用户给当前环境旧版 agent_id 并要求迁移 / 转新版 / 一键迁移;
|
|
21
|
-
- 顶层 JSON 形如 `[{"category":"TEXT","meta":{"multiAgentGraph":...}}]`。
|
|
22
|
-
|
|
23
|
-
否则走 `/skills/agent-builder/references/chatflow/workflow.md`;图片或流程图输入先读
|
|
24
|
-
`/skills/agent-builder/references/chatflow/visual-translation.md`。
|
|
25
|
-
|
|
26
|
-
符合任一条件时,停止本文件的短图流程并改读 `large.md`:
|
|
27
|
-
|
|
28
|
-
- `displayPrompt` 远大于 `prompt`,或含大量 HTML 展示内容;
|
|
29
|
-
- 顶层含大量前端画布、审计或非执行字段,需要裁剪;
|
|
30
|
-
- `usedPlugins[].meta.toolAfterExecuteActions` 或工具 `actionStatuses` 是主要流程来源;
|
|
31
|
-
- agent/action/tool 数量较多,需要先生成 Mermaid、chunk 和 batch;
|
|
32
|
-
- prompt 与 action 中的模板、目标 agent 或知识配置存在冲突。
|
|
33
|
-
|
|
34
|
-
长图先执行:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npx --yes @shulex/cxclawctl@latest script skills/agent-builder/scripts/multi-agent/legacy_graph_analyzer.py inspect \
|
|
38
|
-
--input /workspace/state/agent-builder/multi-agent/read_<old_agent_id>_raw.json \
|
|
39
|
-
--out-dir /workspace/state/agent-builder/multi-agent
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## 迁移阶段的产物
|
|
43
|
-
|
|
44
|
-
| 文件 | 用途 |
|
|
45
|
-
|------|------|
|
|
46
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/` | analyzer 索引、topology、coverage 和迁移计划 |
|
|
47
|
-
| `/workspace/state/agent-builder/multi-agent/mapping_rules.json` | 用户确认过、可跨任务复用的模糊映射规则 |
|
|
48
|
-
| `/workspace/outputs/agent-builder/` | 仅在用户明确要求下载/留档时使用 |
|
|
49
|
-
|
|
50
|
-
目标 source、graph、编译、校验和部署均由 `../../chatflow/workflow.md` 管理;不要在本文件中创建临时
|
|
51
|
-
Python 构图脚本或复制目标图命令。
|
|
52
|
-
|
|
53
|
-
## Step 1:解析旧图并还原拓扑
|
|
54
|
-
|
|
55
|
-
短小图可以由模型直接解析;长图必须由脚本解析。无论方式,都必须记录:
|
|
56
|
-
|
|
57
|
-
- `agents[]` 的 id、名称、prompt、`displayPrompt`、`usedPlugins` 和结构化 meta;
|
|
58
|
-
- `agentEdges[]` 的显式流转;
|
|
59
|
-
- classifier 与工具的 `toolAfterExecuteActions`、`actionStatuses`;
|
|
60
|
-
- 模板、人工接管、结束和知识能力配置;
|
|
61
|
-
- 每个非空 PE 的完整原文和 SHA-256。模型必须结合结构化资源、动作边、上下游职责阅读全文,语义识别其中的
|
|
62
|
-
模板、转人工、普通工具、固定完整话术、等待点和流程控制;不得按 `template id`、`reason`、
|
|
63
|
-
`use/call tool`、三引号等固定写法或语言专用正则分类。短图也要按 `principles.md` 生成等价的
|
|
64
|
-
`prompt_reviews[].discovered_blocks`,不能只保留 prompt 摘要;
|
|
65
|
-
- 可达性、入口和缺失目标的 action。
|
|
66
|
-
|
|
67
|
-
`agentEdges[]` 只记录“上游模型可以选择调用的相邻职责”,不是确定性流程边。旧图 Mermaid 中应以虚线
|
|
68
|
-
标识这类关系;SOP 映射时由模型根据职责和用户轮次决定保留为模型可选路由、吸收进同一职责,或在独立
|
|
69
|
-
`SWITCH_AGENT` 证据/用户确认后形成确定性流程。不要把它直接抄成目标图的一条连线。
|
|
70
|
-
|
|
71
|
-
`displayPrompt` 中的 `{{ToolName}}` 必须提取为 `tool_references` 并与 `usedPlugins` / 系统能力 /
|
|
72
|
-
action 对账。仅 display-only 的未绑定 chip、HTML 壳和“use this tool”之类泛化措辞都保留 audit warning;
|
|
73
|
-
只有 prompt 中明确可执行的调用缺少结构化依赖时才进入 `open_questions`。
|
|
74
|
-
|
|
75
|
-
向用户先展示以下内容,不要一上来写目标图:
|
|
76
|
-
|
|
77
|
-
```text
|
|
78
|
-
## 旧 Multi 流程理解
|
|
79
|
-
| 阶段 | 输入/用户轮次 | 旧证据 | 分支/出口 | 风险 |
|
|
80
|
-
|
|
81
|
-
## SOP 拆解
|
|
82
|
-
| SOP 步骤 | 触发条件 | 处理动作 | 用户可见回复/等待 | 下游 |
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
同时贴一段简版 Mermaid,展示入口、主干、动作分支和终端。存在不可达节点、多个入口或 action 缺少目标时,
|
|
86
|
-
先作为 blocking 问题处理,不能靠补猜测的边继续。先让用户确认 SOP;coverage 留在 plan 中审计,只有
|
|
87
|
-
存在缺口或用户要求明细时才展示表格。
|
|
88
|
-
|
|
89
|
-
## Step 2:做语义映射和 coverage
|
|
90
|
-
|
|
91
|
-
按拓扑顺序映射,但先归一化业务职责,不按 `agents[]` 数量建节点。每个映射要同时考虑 old agent、
|
|
92
|
-
结构化 action 和 prompt,避免先丢语义再补。
|
|
93
|
-
|
|
94
|
-
迁移计划只写业务职责和目标节点类别候选;以下是常见候选,不是字段或出边规则:
|
|
95
|
-
|
|
96
|
-
| Legacy 语义 | 候选类别 |
|
|
97
|
-
|---|---|
|
|
98
|
-
| 自然语言分类 | `INTENT` |
|
|
99
|
-
| 已绑定的外部 HTTP 调用 | `TOOL` |
|
|
100
|
-
| 工具结果后的确定性判断 | `IF_ELSE` |
|
|
101
|
-
| 收集客户信息 | `QUESTION` |
|
|
102
|
-
| 向客户发送模板或话术 | `REPLY` |
|
|
103
|
-
| 内部总结、改写、抽取或中间文本生成 | `LLM` |
|
|
104
|
-
| 开放式判断、真实工具自主选择或流程内选择 | `AGENT` |
|
|
105
|
-
| 人工接管 | `TRANSFER_TO_HUMAN` |
|
|
106
|
-
| 正常结束 | `FINISH` |
|
|
107
|
-
| 变量抽取、归一化或上下文传递 | `VARIABLE_PROCESS` |
|
|
108
|
-
| 已启用且目录完整的旧知识能力 | 知识回复候选,具体类别在目标图阶段决定 |
|
|
109
|
-
|
|
110
|
-
`SWITCH_AGENT` 是旧控制流证据,不是外部工具。仅承担跳转的 old agent 标记为 `edge_only`;独立 SOP、
|
|
111
|
-
用户交互、资源调用或分支职责才需要保留为候选节点。每个 old agent、真实 tool、explicit edge 和
|
|
112
|
-
action edge 都必须在 coverage 中标记为 `preserved`、`merged`、`split`、`rewritten`、`edge_only` 或
|
|
113
|
-
`open_question`,并给出证据。
|
|
114
|
-
|
|
115
|
-
explicit edge 的 `mapped_to` 可以写对应职责块或模型可选路由能力;不得默认写成固定的目标节点连线。
|
|
116
|
-
|
|
117
|
-
知识能力只按旧语义判断:直接 `directoryIds` 或
|
|
118
|
-
`meta.knowledgeAiReplyConfig.directoryIds` 都是目录证据;后者的 `enable` 优先。明确 `enable=false`
|
|
119
|
-
且目录为空只保留 audit。已启用或启用状态未知且目录为空,才是 blocking 问题:要求用户提供目录或
|
|
120
|
-
明确移除该能力。不要把仅 display 的知识占位符当成缺失依赖。
|
|
121
|
-
|
|
122
|
-
模板、人工接管和结束动作需要分别记录资源、先后顺序和用户可见语义。不同模板 id、不同人工接管原因、
|
|
123
|
-
不同前置话术或不同结束语义默认不能合并;是否采用等价回复策略必须经用户确认。
|
|
124
|
-
|
|
125
|
-
每个完整 PE 都要进入 `coverage.prompt_reviews`,回写全文 hash 和 `reviewed_full_prompt=true`;语义识别出的
|
|
126
|
-
每个块按源顺序进入 `discovered_blocks`,带精确 source span/quote。SOP → 节点类别确认后,再为每个块选择
|
|
127
|
-
`target_type`:上下文决定且需留在多轮 AGENT 内的模板/工具/转人工用 `AGENT_LIBRARY_BLOCK`;确定性动作
|
|
128
|
-
分别选择 `REPLY_TEMPLATE` / `TOOL_NODE` / `TRANSFER_NODE`;等待点选择合同允许的多轮或交互节点承载方式。
|
|
129
|
-
固定话术先使用通用 `NODE_PROMPT_FIELD`,不把它写死为 REPLY;进入 CHAT_FLOW source 实现并读完所选节点
|
|
130
|
-
合同后,再用 `render_path` 指向该节点的真实 PE/文本字段。LibraryBlock、plugin 绑定和内容 hash 由与 large
|
|
131
|
-
模式相同的合并/渲染规则根据结构化语义派生,不让模型或人工逐 case 拼字符串。未映射完不得转入 CHAT_FLOW
|
|
132
|
-
source 阶段。
|
|
133
|
-
|
|
134
|
-
## Step 3:生成 SOP → 节点映射 Mermaid 并确认
|
|
135
|
-
|
|
136
|
-
保留旧 prompt 中的业务目标、判断标准、客服话术边界和工具结果解释;剥离旧引擎专用的工具指令、
|
|
137
|
-
编辑器占位符和 HTML 壳。清理不能抹掉结构化动作:每一项要么落入 mapping plan 的业务职责,
|
|
138
|
-
要么有 audit 或 open question 记录。
|
|
139
|
-
|
|
140
|
-
在用户确认 SOP 后,按流程块(不是按 old agent)写 `sop_mapping`。草稿先写候选类别;节点映射得到
|
|
141
|
-
用户确认后,将每个块的确认类别写入 `selected_nodes`:
|
|
142
|
-
|
|
143
|
-
```json
|
|
144
|
-
{
|
|
145
|
-
"sop_mapping": {
|
|
146
|
-
"blocks": [
|
|
147
|
-
{
|
|
148
|
-
"id": "collect_order",
|
|
149
|
-
"responsibility": "Collect the order information",
|
|
150
|
-
"candidate_nodes": ["QUESTION"],
|
|
151
|
-
"selected_nodes": ["QUESTION"]
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
"id": "lookup_order",
|
|
155
|
-
"responsibility": "Look up the order and route by result",
|
|
156
|
-
"candidate_nodes": ["TOOL", "IF_ELSE"],
|
|
157
|
-
"selected_nodes": ["TOOL", "IF_ELSE"]
|
|
158
|
-
}
|
|
159
|
-
],
|
|
160
|
-
"relations": [
|
|
161
|
-
{"from": "collect_order", "to": "lookup_order", "condition": "order information complete"}
|
|
162
|
-
]
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
生成 Mermaid 并直接贴给用户确认:
|
|
168
|
-
|
|
169
|
-
```bash
|
|
170
|
-
npx --yes @shulex/cxclawctl@latest script skills/agent-builder/scripts/multi-agent/legacy_graph_analyzer.py emit-mapping-mermaid \
|
|
171
|
-
--plan-file /workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/migration_plan.json \
|
|
172
|
-
--out-file /workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/sop_mapping.mmd
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
图中每个流程块必须显示其职责和候选/确认节点类别,边必须显示条件。它取代节点映射表作为用户确认界面;
|
|
176
|
-
coverage 仍在 plan 中,不逐项占用对话。映射未确认时不得写 source。
|
|
177
|
-
|
|
178
|
-
只对会改变可执行语义的缺口提问:缺失真实工具/模板、启用或未知启用的空知识目录、不可达或断开的
|
|
179
|
-
结构边、无法恢复的关键动作合同。每个问题给出 2–3 个可执行选项、推荐项、影响和是否阻塞;不要把
|
|
180
|
-
audit warning 逐条抛给用户。
|
|
181
|
-
|
|
182
|
-
## Step 4:交给目标图阶段实现
|
|
183
|
-
|
|
184
|
-
coverage 完整、SOP → 节点映射 Mermaid 和必要的用户决定确认后,停止使用本文件推断实现细节,依次读取:
|
|
185
|
-
|
|
186
|
-
1. `../../chatflow/overview.md`
|
|
187
|
-
2. `../../chatflow/workflow.md`
|
|
188
|
-
3. `../../chatflow/graph-spec.md`
|
|
189
|
-
4. `../../chatflow/node-selection.md`
|
|
190
|
-
5. 每个已选类别对应的 `../../chatflow/nodes/*.md`
|
|
191
|
-
|
|
192
|
-
目标图阶段才决定 source 字段、资源绑定、边、编译、校验和部署。迁移计划是该阶段的语义输入;目标图
|
|
193
|
-
实现或校验发现缺少业务信息时,回到本文件补 evidence / coverage / 用户确认,而不是在目标图中猜测。
|
|
194
|
-
source 完成后、compile 前先运行 `legacy_graph_analyzer.py audit-migration-source --plan-file ...
|
|
195
|
-
--index-file ... --source-file ... --out-file ... --pretty`,再运行
|
|
196
|
-
`validate-prompt-block-rendering --plan-file ... --index-file ... --source-file ... --pretty`。前者会阻断损坏
|
|
197
|
-
source 结构、真实不存在的边端点,以及显式 `rendered_to` / `source_nodes` 指向不存在节点;节点类别、
|
|
198
|
-
AGENT/next step 选择和只有 `mapped_to` 的 coverage 去向疑点只给 warning;后者检查可执行 prompt block
|
|
199
|
-
是否真实渲染。若 source key 与流程块 id 不同,先在 coverage 项填写 `rendered_to`。
|
|
200
|
-
同一轮完成 source → compile 不要求 handoff。只有任务需要跨轮恢复、多 worker / agent 交接,或 source
|
|
201
|
-
可能被人工编辑时,才建议运行 `emit-handoff --plan-file ... --index-file ... --source-file ... --out-file ...
|
|
202
|
-
--pretty`,并由接手方在 compile 前显式运行 `verify-handoff`。handoff 只记录现有 validation 和 warning,
|
|
203
|
-
不新增阻断;文件未变化即验证通过,发生变化才返回 `STALE_MIGRATION_PLAN`。该合同只属于迁移侧,不改
|
|
204
|
-
通用 Chatflow compile。
|
|
205
|
-
|
|
206
|
-
## 迁移摘要和自检
|
|
207
|
-
|
|
208
|
-
向用户报告:
|
|
209
|
-
|
|
210
|
-
- 旧图入口、主干、分支、用户轮次、人工接管和终端的理解;
|
|
211
|
-
- 已确认的 SOP → 节点映射 Mermaid;
|
|
212
|
-
- 每个 old agent、tool、explicit edge、action edge 的 coverage;
|
|
213
|
-
- 合并、拆分、改写和经用户确认的删减及其影响;
|
|
214
|
-
- 真正阻塞项、已解决项和仍需确认项;
|
|
215
|
-
- 进入目标图阶段后的实现、校验和回放状态(若已执行)。
|
|
216
|
-
|
|
217
|
-
完成迁移计划前逐项检查:
|
|
218
|
-
|
|
219
|
-
- 所有结构化工具、动作、模板、知识能力和终端都有证据与 coverage;
|
|
220
|
-
- `displayPrompt` 的噪音没有被误判成可执行依赖;
|
|
221
|
-
- 每个合并都有相同输入、用户轮次、资源、分支和下游语义的证据;
|
|
222
|
-
- 每个 SOP 流程块都在 Mermaid 中显示了确认的节点类别和条件关系;
|
|
223
|
-
- 每个 `open_question` 都是必要且可执行的;
|
|
224
|
-
- 已选节点类别只是候选,尚未在本文件填写目标字段或默认边;
|
|
225
|
-
- 进入目标图阶段前已读取相应的 CHAT_FLOW 文档。
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# MULTI_AGENT
|
|
2
|
-
|
|
3
|
-
legacy MULTI_AGENT 只作为存量形态维护。用户没有明确指定旧 multi 形态时,多节点、多分支、工具状态分支或人工节点默认用 CHAT_FLOW。
|
|
4
|
-
|
|
5
|
-
## 先判定模式
|
|
6
|
-
|
|
7
|
-
| 输入特征 | 模式 | 先读 |
|
|
8
|
-
|---------|------|------|
|
|
9
|
-
| 用户要求新建 MULTI_AGENT / multi agent / multiAgentGraph | 不支持新建 | `workflow.md` 的“不支持新建” |
|
|
10
|
-
| 用户提供已有 MULTI_AGENT agent_id / 完整旧 JSON,要求查看、解释或审计 | 读取解释 | `workflow.md`、`graph-spec.md` |
|
|
11
|
-
| 用户明确要求更新已有 MULTI_AGENT | 存量更新 | `workflow.md`、`update.md` |
|
|
12
|
-
| 用户要求迁移 / 转新版 / 转 CHAT_FLOW,或输入含 `multiAgentGraph` / `agentEdges` / `classifierPlugin` | 迁移 | `workflow.md`、`graph-spec.md`、`migration/principles.md`,再按大小读 `migration/small.md` 或 `migration/large.md` |
|
|
13
|
-
|
|
14
|
-
用户只要表达“迁移 / 转新版 / 转 CHAT_FLOW / 从旧 agent 转过来”,本文件就是第一入口。不要先去
|
|
15
|
-
`../chatflow/overview.md` 做节点选择;先按本文件和 `workflow.md` 完成旧结构理解、大小判定和迁移计划。
|
|
16
|
-
目标 CHAT_FLOW source 明确后,才回到 `../chatflow/graph-spec.md`、`../chatflow/node-selection.md` 和对应
|
|
17
|
-
`../chatflow/nodes/*.md` 校验目标节点字段。
|
|
18
|
-
|
|
19
|
-
## 固定原则
|
|
20
|
-
|
|
21
|
-
- 不新建 MULTI_AGENT;新建多节点流程推荐 `../chatflow/overview.md`。
|
|
22
|
-
- 已有 MULTI_AGENT 可读取、解释、必要兼容更新、迁移。
|
|
23
|
-
- 旧图证据读取优先级:结构化 action/tool/plugin > `agentEdges` > `prompt` > `displayPrompt`。
|
|
24
|
-
- `displayPrompt` 默认是前端展示噪音和人工审计来源,不作为迁移后的模型输入。
|
|
25
|
-
- 迁移允许 PE 改写、节点合并和拆分;节点数可增可减,但必须由可执行合同决定,并输出 coverage 和 changed_items。
|
|
26
|
-
|
|
27
|
-
## 文档职责
|
|
28
|
-
|
|
29
|
-
| 文件 | 职责 |
|
|
30
|
-
|------|------|
|
|
31
|
-
| `overview.md` | 入口分流和边界 |
|
|
32
|
-
| `workflow.md` | 查看、解释、更新、迁移的操作步骤 |
|
|
33
|
-
| `graph-spec.md` | legacy JSON 字段、前端噪音清洗、证据优先级 |
|
|
34
|
-
| `update.md` | 仅更新已有 MULTI_AGENT 的完整对象更新规则 |
|
|
35
|
-
| `migration/principles.md` | 迁移保真、coverage、合并、PE 改写规则 |
|
|
36
|
-
| `migration/small.md` | 短小 legacy 图直接迁移流程 |
|
|
37
|
-
| `migration/large.md` | 长图 analyzer + 并发 batch;只确认合并问题和最终全局图 |
|
|
38
|
-
| `graph-structure.md` / `orchestration.md` / `migrate-to-chatflow.md` | 历史兼容跳转页;不要作为主流程读取 |
|
|
39
|
-
|
|
40
|
-
## 触发信号
|
|
41
|
-
|
|
42
|
-
- 用户明确说 MULTI_AGENT、multi agent、agent_graph、旧 agent、legacy graph、迁移到 chatflow。
|
|
43
|
-
- 用户明确说创建新的 multi、创建 MULTI_AGENT、更新 MULTI_AGENT。
|
|
44
|
-
- 输入 JSON 含 `multiAgentGraph`、`agentEdges`、`classifierPlugin`。
|
|
45
|
-
- 用户要求先转 Mermaid、先分解、分步骤迁移旧图。
|
|
46
|
-
- 旧图中有 `usedPlugins[].meta.toolAfterExecuteActions` 或工具 `actionStatuses`。
|
|
47
|
-
|
|
48
|
-
如果用户只是说“流程图、多节点、条件分支、工具状态分支、人工节点”,但没有明确指定 legacy multi,回到 `../chatflow/overview.md`。
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
# MULTI_AGENT Update
|
|
2
|
-
|
|
3
|
-
仅当用户明确要求更新已有 `MULTI_AGENT` / `multiAgentGraph` 时使用本文件。默认新建多节点流程使用 CHAT_FLOW;MULTI_AGENT 是 legacy 形态,不支持新建,因为不好维护。
|
|
4
|
-
|
|
5
|
-
## 触发条件
|
|
6
|
-
|
|
7
|
-
符合任一条件才进入本文件:
|
|
8
|
-
|
|
9
|
-
- 用户要求更新一个已有 `MULTI_AGENT`,且提供 agent_id 或完整旧 JSON
|
|
10
|
-
|
|
11
|
-
如果用户只是说“多节点、多分支、流程图、工具状态分支”,但没有明确指定 MULTI_AGENT,回到 `../chatflow/overview.md`。如果用户明确要求新建 legacy MULTI_AGENT / 旧 multi agent / 不要 CHAT_FLOW,不使用本文件,回到 `overview.md` 和 `workflow.md` 说明不支持新建并推荐 CHAT_FLOW。
|
|
12
|
-
|
|
13
|
-
## 用户需求理解
|
|
14
|
-
|
|
15
|
-
更新前,先按 `graph-spec.md` 理解旧图证据,再把需求整理成结构化设计,不直接写 payload。
|
|
16
|
-
|
|
17
|
-
必须确认:
|
|
18
|
-
|
|
19
|
-
- 业务目标:这个 agent 解决什么问题
|
|
20
|
-
- 入口 agent:用户第一句话进入哪个 agent
|
|
21
|
-
- 子 agent 职责:每个 agent 的名称、角色、prompt 目标
|
|
22
|
-
- 工具:每个 agent 绑定哪些真实 `usedPlugins`,工具 id 是否已存在
|
|
23
|
-
- 工具状态分支:`actionStatuses` 和每个 status 后的 action
|
|
24
|
-
- 显式边:是否需要 `agentEdges`
|
|
25
|
-
- 模板回复:template id / template content 来源
|
|
26
|
-
- 转人工:哪些场景转人工,是否先回复
|
|
27
|
-
- 结束:哪些场景 finish,是否先回复
|
|
28
|
-
- KB:是否启用、目录 id、标签 id;只有已启用或启用状态未知且目录缺失时才提 `open_questions`,明确未启用只保留审计
|
|
29
|
-
- 兜底:未知意图、工具异常、用户信息不足时怎么处理
|
|
30
|
-
|
|
31
|
-
输出给用户确认时必须包含 Mermaid:
|
|
32
|
-
|
|
33
|
-
```mermaid
|
|
34
|
-
flowchart TD
|
|
35
|
-
A["entry old agent: collect_order"]
|
|
36
|
-
B["old agent: lookup_order<br/>tool: get_order"]
|
|
37
|
-
C["old agent: reply_shipping"]
|
|
38
|
-
H["transfer"]
|
|
39
|
-
A --> B
|
|
40
|
-
B -->|"found"| C
|
|
41
|
-
B -->|"not found"| H
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
用户未确认 Mermaid、agent 清单、工具清单和 action 清单前,不调用 update。
|
|
45
|
-
|
|
46
|
-
## Tool Action 示例
|
|
47
|
-
|
|
48
|
-
外部工具分支必须放在工具配置的 `toolAfterExecuteActions`,不要只写进 prompt:
|
|
49
|
-
|
|
50
|
-
```json
|
|
51
|
-
{
|
|
52
|
-
"id": 8299,
|
|
53
|
-
"name": "get_order_info",
|
|
54
|
-
"type": "EXTERNAL_HTTP_CALL",
|
|
55
|
-
"meta": {
|
|
56
|
-
"externalHttpCallConfig": {
|
|
57
|
-
"requestParam": {"items": []},
|
|
58
|
-
"responseParam": {"items": []},
|
|
59
|
-
"actionStatuses": [
|
|
60
|
-
{"name": "ORDER_FOUND", "condition": {"and": []}},
|
|
61
|
-
{"name": "ORDER_NOT_FOUND", "condition": {"or": []}}
|
|
62
|
-
]
|
|
63
|
-
},
|
|
64
|
-
"toolAfterExecuteActions": [
|
|
65
|
-
{
|
|
66
|
-
"matchStatus": "ORDER_FOUND",
|
|
67
|
-
"actions": [{"type": "SWITCH_AGENT", "value": "agent_reply_order"}]
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"matchStatus": "ORDER_NOT_FOUND",
|
|
71
|
-
"actions": [{"type": "TRANSFER_TO_HUMAN"}]
|
|
72
|
-
}
|
|
73
|
-
]
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## 更新流程
|
|
79
|
-
|
|
80
|
-
更新已有 MULTI_AGENT 必须先取完整对象,不允许只提交局部 patch:
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
npx --yes @shulex/cxclawctl@latest api get-agent --id <agent_id> --pretty
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
将完整对象保存到:
|
|
87
|
-
|
|
88
|
-
```text
|
|
89
|
-
/workspace/state/agent-builder/multi-agent/update_<agent_id>_payload.json
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
修改后展示 diff 摘要和 Mermaid,请用户确认。确认后执行:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
npx --yes @shulex/cxclawctl@latest api update-agent \
|
|
96
|
-
--data-file /workspace/state/agent-builder/multi-agent/update_<agent_id>_payload.json \
|
|
97
|
-
--pretty
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
约束:
|
|
101
|
-
|
|
102
|
-
- `agentId` 必须等于 `id`
|
|
103
|
-
- `type` 必须保持 `MULTI_AGENT`
|
|
104
|
-
- 不删除未知字段;完整对象更新时保留服务端已有字段
|
|
105
|
-
- 修改 prompt 时同步 `prompt` 和 `displayPrompt`,但不要插入 `{{Template_Reply}}` 这类旧编辑器占位符
|
|
106
|
-
- 工具 id 必须真实存在;先 `get-plugin`
|
|
107
|
-
- action 目标 agent 必须存在于 `multiAgentGraph.agents[]`
|
|
108
|
-
- 新增 template / KB / transfer 行为必须写出 open question 和用户确认
|
|
109
|
-
|
|
110
|
-
## 更新结果
|
|
111
|
-
|
|
112
|
-
执行成功后必须告诉用户:
|
|
113
|
-
|
|
114
|
-
```text
|
|
115
|
-
=== MULTI_AGENT Result ===
|
|
116
|
-
Action: update
|
|
117
|
-
Agent: <id> "<name>"
|
|
118
|
-
Agents: N
|
|
119
|
-
Tools: N
|
|
120
|
-
Explicit agentEdges: N
|
|
121
|
-
Tool action edges: N
|
|
122
|
-
Template replies: N
|
|
123
|
-
Transfer actions: N
|
|
124
|
-
Finish actions: N
|
|
125
|
-
Open questions resolved: N
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
如果用户后续要迁到 CHAT_FLOW,再切到 `migration/principles.md`,并按大小选择 `migration/small.md` 或 `migration/large.md`。
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
# MULTI_AGENT Workflow
|
|
2
|
-
|
|
3
|
-
## 不支持新建
|
|
4
|
-
|
|
5
|
-
用户要求新建 MULTI_AGENT 时,直接说明:
|
|
6
|
-
|
|
7
|
-
```text
|
|
8
|
-
MULTI_AGENT 是 legacy 形态,不支持新建,因为路由和工具动作分散在旧 graph/prompt/meta tools 中,不好维护。新建多节点流程请改用 CHAT_FLOW。
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
然后切到 `../chatflow/overview.md`。
|
|
12
|
-
|
|
13
|
-
## 查看 / 解释已有 MULTI_AGENT
|
|
14
|
-
|
|
15
|
-
1. 如果用户只给 agent_id,先取完整对象:
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npx --yes @shulex/cxclawctl@latest api get-agent --id <agent_id> --pretty
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
2. 将完整对象保存到:
|
|
22
|
-
|
|
23
|
-
```text
|
|
24
|
-
/workspace/state/agent-builder/multi-agent/read_<agent_id>_raw.json
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
3. 按 `graph-spec.md` 读取旧图字段。如果 graph 很大或 `displayPrompt` 含大量 HTML,必须先跑 analyzer:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
npx --yes @shulex/cxclawctl@latest script skills/agent-builder/scripts/multi-agent/legacy_graph_analyzer.py inspect \
|
|
31
|
-
--input /workspace/state/agent-builder/multi-agent/read_<agent_id>_raw.json \
|
|
32
|
-
--out-dir /workspace/state/agent-builder/multi-agent \
|
|
33
|
-
--pretty
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
4. 解释结果必须区分:
|
|
37
|
-
|
|
38
|
-
- old agents / tools / explicit agentEdges / action edges 数量。
|
|
39
|
-
- 入口 agent。
|
|
40
|
-
- 真实外部工具和 actionStatus。
|
|
41
|
-
- template / transfer / finish / KB 结构能力。
|
|
42
|
-
- prompt 中疑似旧工具指令和前端占位符。
|
|
43
|
-
- 风险项:dangling ref、KB 空目录、模板缺失、prompt/action 冲突。
|
|
44
|
-
|
|
45
|
-
纯查看/解释任务的结果必须直接展示在对话里。可以保留 `overview.mmd`、`index.ai.json` 等 state 文件作为审计
|
|
46
|
-
证据,但不要让用户下载文件才能看到流程。迁移任务的交互门按 small / large 文档执行;large 模式不得把
|
|
47
|
-
每个 batch 的局部图或计划逐轮展示给用户。
|
|
48
|
-
|
|
49
|
-
## 更新已有 MULTI_AGENT
|
|
50
|
-
|
|
51
|
-
只有用户明确要求更新已有 MULTI_AGENT 时才进入 `update.md`。更新前必须先解释当前结构,并让用户确认 Mermaid、agent 清单、工具清单和 action 清单。
|
|
52
|
-
|
|
53
|
-
## 迁移到 CHAT_FLOW
|
|
54
|
-
|
|
55
|
-
本节只负责分流和执行顺序;迁移保真规则以 `migration/principles.md` 为准,具体步骤以
|
|
56
|
-
`migration/small.md` 或 `migration/large.md` 为准。
|
|
57
|
-
|
|
58
|
-
1. 先读 `graph-spec.md` 和 `migration/principles.md`,确认旧图证据、coverage 和 PE 改写要求。
|
|
59
|
-
2. 按大小选择:
|
|
60
|
-
- 短小图:`migration/small.md`
|
|
61
|
-
- 长图、HTML 噪音多、工具/action 多、用户要求先拆解:`migration/large.md`
|
|
62
|
-
3. 迁移前必须先理解旧结构,不直接把完整 raw JSON 交给模型生成 CHAT_FLOW。
|
|
63
|
-
4. small 模式按 `migration/small.md` 确认;large 模式只集中确认 blocking `open_questions` 和最终合并后的
|
|
64
|
-
全局 SOP → 节点类别 Mermaid。映射确认后才进入目标 source。
|
|
65
|
-
5. 生成目标 source 时,切到 `../chatflow/graph-spec.md`、`../chatflow/node-selection.md` 和对应 `../chatflow/nodes/*.md`。
|
|
66
|
-
6. compile / validate / deploy 只使用 `../chatflow/workflow.md` 里的 CHAT_FLOW CLI。
|
|
67
|
-
|
|
68
|
-
迁移过程按 `migration/principles.md` 的“对话展示合同”输出。large 模式的 worker 只写 state,不与用户交互;
|
|
69
|
-
协调器合并并去重问题后才发起确认。state 文件路径只能作为复现依据放在末尾;除非用户明确要求下载或留档,
|
|
70
|
-
不把 Mermaid / plan / report 复制到 outputs。
|
|
71
|
-
|
|
72
|
-
## 状态文件
|
|
73
|
-
|
|
74
|
-
| 文件 | 用途 |
|
|
75
|
-
|------|------|
|
|
76
|
-
| `/workspace/state/agent-builder/multi-agent/read_<id>_raw.json` | 读取/解释旧 agent 原始对象 |
|
|
77
|
-
| `/workspace/state/agent-builder/multi-agent/update_<id>_payload.json` | 更新已有 MULTI_AGENT 的完整 payload |
|
|
78
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/index.ai.json` | analyzer 裁剪后的 AI 输入 |
|
|
79
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/overview.mmd` | 旧图 Mermaid 总览 |
|
|
80
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/sop_mapping.mmd` | 经确认的 SOP → 节点映射 Mermaid |
|
|
81
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/chunks.json` | 旧图 chunk 清单 |
|
|
82
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/progress.json` | batch 检查点和可恢复进度 |
|
|
83
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/batches/worker_manifest.json` | 当前并发 wave 的 worker 输入/输出清单 |
|
|
84
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/batches/<batch>.context.json` | 单个 worker 的只读有界输入 |
|
|
85
|
-
| `/workspace/state/agent-builder/multi-agent/migrate_<id>_<name>/batches/<batch>.plan.json` | 单个 worker 的隔离输出;不含 Mermaid |
|
|
86
|
-
|
|
87
|
-
迁移生成 CHAT_FLOW source / graph 后,目标文件放 `/workspace/state/agent-builder/chatflow/`,不放回 `multi-agent/`。
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
# SINGLE_AGENT
|
|
2
|
-
|
|
3
|
-
SINGLE_AGENT 适合目标单一、分支少、一个 prompt 能说清职责的场景。超过 3 个稳定流程分支、需要条件路由或人工审批时,改用 CHAT_FLOW。
|
|
4
|
-
|
|
5
|
-
## 创建
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx --yes @shulex/cxclawctl@latest api create-agent \
|
|
9
|
-
--data-file /workspace/state/agent-builder/single_agent_payload.json \
|
|
10
|
-
--pretty
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
最小结构:
|
|
14
|
-
|
|
15
|
-
```json
|
|
16
|
-
{
|
|
17
|
-
"name": "FAQ_Bot",
|
|
18
|
-
"type": "SINGLE_AGENT",
|
|
19
|
-
"source": "MANUAL",
|
|
20
|
-
"prompt": "...",
|
|
21
|
-
"displayPrompt": "...",
|
|
22
|
-
"usedPlugins": []
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## 更新
|
|
27
|
-
|
|
28
|
-
更新前先查完整对象:
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
npx --yes @shulex/cxclawctl@latest api get-agent --id <agent_id> --pretty
|
|
32
|
-
npx --yes @shulex/cxclawctl@latest api update-agent \
|
|
33
|
-
--data-file /workspace/state/agent-builder/update_agent_<agent_id>.json \
|
|
34
|
-
--pretty
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
约束:
|
|
38
|
-
|
|
39
|
-
- `update-agent` 必须提交完整对象。
|
|
40
|
-
- `agentId` 必须等于 `id`。
|
|
41
|
-
- 改 prompt 时同步改 `prompt` 和 `displayPrompt`。
|
|
42
|
-
- 工具只写真实工具 id;先用 `list-plugins` / `get-plugin` 确认。
|
|
43
|
-
|
|
44
|
-
## 相关文档
|
|
45
|
-
|
|
46
|
-
- prompt:`prompt.md`
|
|
47
|
-
- 工具绑定:`tools.md`
|
|
48
|
-
- 语音 Agent:`voice.md`
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# SINGLE_AGENT Prompt
|
|
2
|
-
|
|
3
|
-
Prompt 要写职责、边界、工具使用条件和回复要求,不要把路由流程、模板回复、转人工策略全塞进去。流程复杂时改用 CHAT_FLOW。
|
|
4
|
-
|
|
5
|
-
## 必守规则
|
|
6
|
-
|
|
7
|
-
- `prompt` 和 `displayPrompt` 保持一致。
|
|
8
|
-
- prompt 提到的外部能力必须有真实工具绑定。
|
|
9
|
-
- 固定话术优先走模板库或 CHAT_FLOW REPLY(TEMPLATE),不要让 SINGLE_AGENT 硬背长固定文本。
|
|
10
|
-
- 需要变量系统字段时先查 `list-ai-fields`,并确认对应字段会在运行时进入上下文。
|
|
11
|
-
|
|
12
|
-
## 常见错误
|
|
13
|
-
|
|
14
|
-
- prompt 写“调用订单工具”,但 `usedPlugins` 没有订单工具 id。
|
|
15
|
-
- prompt 要求多分支跳转,但 Agent 本体没有稳定路由能力。
|
|
16
|
-
- 只改 `displayPrompt`,导致页面展示和实际执行不一致。
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# SINGLE_AGENT Tools
|
|
2
|
-
|
|
3
|
-
SINGLE_AGENT 通过 `usedPlugins` 绑定可调用工具。对外叫“工具”,底层字段仍叫 `plugin`。
|
|
4
|
-
|
|
5
|
-
## 查询工具
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx --yes @shulex/cxclawctl@latest api list-plugins --pretty
|
|
9
|
-
npx --yes @shulex/cxclawctl@latest api get-plugin --id <tool_id> --pretty
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
`list-plugins` 只看精简列表;确认 requestParam / responseParam / actionStatuses 时使用 `get-plugin` 查看完整定义。
|
|
13
|
-
|
|
14
|
-
## 绑定格式
|
|
15
|
-
|
|
16
|
-
SINGLE_AGENT 通常使用工具 id 数组:
|
|
17
|
-
|
|
18
|
-
```json
|
|
19
|
-
{
|
|
20
|
-
"usedPlugins": [2019, 2020]
|
|
21
|
-
}
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
不要写成对象数组,除非已确认该 Agent 类型和接口需要完整工具对象。
|
|
25
|
-
|
|
26
|
-
## 调试
|
|
27
|
-
|
|
28
|
-
`run-plugin` 会真实调用目标接口,只在用户明确要求或授权后执行;不能把它当作绑定工具或上线前的默认步骤。目标为写接口时,执行前还要额外确认请求体和影响范围。
|
|
29
|
-
|
|
30
|
-
`run_tool_config.json` 必须是包含 `externalHttpCallConfig` 和 `externalHttpCallRequestBody` 的 envelope,完整结构见 `../tools/http-tool.md`:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
npx --yes @shulex/cxclawctl@latest api run-plugin \
|
|
34
|
-
--data-file /workspace/state/agent-builder/run_tool_config.json \
|
|
35
|
-
--pretty
|
|
36
|
-
```
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# Voice Agent
|
|
2
|
-
|
|
3
|
-
Voice Agent 是 `SINGLE_AGENT` 的语音特化:`type` 仍为 `SINGLE_AGENT`,通过 `meta.category = "voice"` 进入语音链路。
|
|
4
|
-
|
|
5
|
-
## 创建结构
|
|
6
|
-
|
|
7
|
-
```json
|
|
8
|
-
{
|
|
9
|
-
"name": "Voice_Support",
|
|
10
|
-
"type": "SINGLE_AGENT",
|
|
11
|
-
"source": "MANUAL",
|
|
12
|
-
"prompt": "Use short, spoken sentences.",
|
|
13
|
-
"displayPrompt": "Use short, spoken sentences.",
|
|
14
|
-
"meta": {
|
|
15
|
-
"category": "voice",
|
|
16
|
-
"version": "v1",
|
|
17
|
-
"assistant": {
|
|
18
|
-
"callType": "INBOUND_PHONE_CALL",
|
|
19
|
-
"firstMessage": "Hello, how can I help?",
|
|
20
|
-
"language": "en-US"
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## 关键字段
|
|
27
|
-
|
|
28
|
-
| 字段 | 说明 |
|
|
29
|
-
|---|---|
|
|
30
|
-
| `type` | 固定 `SINGLE_AGENT` |
|
|
31
|
-
| `meta.category` | 固定 `voice`,必须在 `meta` 内 |
|
|
32
|
-
| `meta.assistant` | 必填,不能为 null |
|
|
33
|
-
| `meta.assistant.callType` | `INBOUND_PHONE_CALL` / `OUTBOUND_PHONE_CALL` / `WEB_CALL` |
|
|
34
|
-
| `meta.assistant.language` | 语音识别和合成语言 |
|
|
35
|
-
| `meta.assistant.firstMessage` | 接通后第一句话 |
|
|
36
|
-
|
|
37
|
-
## CLI
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
npx --yes @shulex/cxclawctl@latest api list-voice-agents --pretty
|
|
41
|
-
npx --yes @shulex/cxclawctl@latest api create-agent \
|
|
42
|
-
--data-file /workspace/state/agent-builder/voice_agent_payload.json \
|
|
43
|
-
--pretty
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
更新语音 Agent 前仍然先 `get-agent`,再提交完整对象。
|