Skill: 1688aiinfra/1688-customer-opportunity (version 0.1.0)

--- name: 1688-customer-opportunity version: 0.1.0 description: | 1688 买家跟进与客群运营。可以帮你做： ① 查看AI客群列表 — 店铺有哪些高价值老客客群、各客群特征和买家数 ② 展开客群买家明细 — 选一个客群，看具体有哪些买家 ③ 开启客群运营计划 — 对选定客群自动发送旺旺营销文案 ④ 查买家成交机会 — 输入买家账号，获取画像和跟进建议 ⑤ 客户机会监控 — 智能找出近期最值得主动联系的买家 metadata: interactions: - name: select_buyers_from_cluster type: table selectionType: merchant description: "展开客群买家明细后，从买家列表中选择要进一步操作的买家，并通过自定义 Actions 选择下一步动作" required_data: rows: "买家列表，每项含 buyer_login_id、画像（agent 构造，格式 '画像：xxx\\n建议：xxx'，画像/建议各 ≤50 字）两列" actions: "按planId区分按钮：有planId用查看客群运营计划（view_plan，primary），无planId用换一批（next_batch，primary）；详见 interaction-specs.md" - name: confirm_marketing_plan type: input selectionType: 确认客群运营计划 description: "确认/编辑客群旺旺文案，商家可选择 get_cluster_marketing_plan 返回的推荐文案或自行输入" required_data: questions: "一题数组：旺旺文案=[get_cluster_marketing_plan.sale_desc原文, 固定通用兜底文案]" --- # 1688 客户机会挖掘 Skill ## 🚨 铁律（最高优先级，违反即视为流程错误） ### 0. CLI 入口路径（最先执行，路径写错直接报错） CLI 入口文件：`{baseDir}/cli.py`（`{baseDir}` = skill 根目录，含 `SKILL.md` 和 `cli.py`）。**禁止** `{baseDir}/scripts/cli.py`——`cli.py` 不在 `scripts/` 子目录。 ### A. tool 输出原样输出 所有 tool 输出 JSON `{"success", "markdown", "data"}`，**必须完整、逐字、原样输出 `markdown` 字段**（含 `>` 引用块前缀、HTML 注释、空行、表格分隔符）。**禁止** 精简 / 改写 / 提炼 / 合并 blockquote / 加开场白 / 从 `data` 重构内容。Agent 的分析或追问必须放在 markdown **之后**。 **唯一例外：客户机会监控场景**（命中触发词"最近哪些客户重要/需要主动联系的客户/待跟进客群买家"等） - 调 `list_customer_cluster` 时**只取 data 用**，**禁止输出 markdown**（agent 要自动取 data.list[0].plan_id 进下一步，不展示客群表格给用户） - 调 `list_cluster_buyer_detail` 时**只取 data 用**，**禁止输出 markdown**（仅取买家 loginId 列表喂 customer_reception_advice） - 命中 "AI客群/查看客群/客群列表" 等查看客群触发词时**不适用**此例外，仍原样输出客群表格 ### A2. 全程中文输出（强制） **Agent 所有面向用户的输出（含思考过程、执行步骤说明、分析、追问、tool 调用前后的描述）必须 100% 用中文**。**禁止**任何形式的英文表述： - ❌ 禁止 "Now I have..."、"Let me..."、"Per the skill's..."、"trigger scenario"、"flow" 等英文短语 - ❌ 禁止中英混排（如 "执行 list_customer_cluster trigger" 应为 "执行 list_customer_cluster 触发"） - ✅ 技术标识符（tool 名、字段名如 `plan_id`/`buyer_login_id`、JSON key）保留原英文，但说明文字用中文 - ✅ 思考链 / 执行步骤折叠区里的内容也必须中文（包括"查看技术细节"折叠块内的描述） ### A3. 三段式交付强制（所有客户机会场景的最终回答） show_interaction 完成 action 之后，或降级输出客户名单时，最终回答**必须三段**： 1. 【名单】每位 `buyer_login_id` + 身份标签（来自 `credit_level` / `if_ka` / `procurement_mode`） 2. 【画像】每人的 `lst_inq_time` / `ord_cnt_1m_level` / `gmv_1m_level` / `inq_relation` 3. 【建议】每人差异化跟进话术（来自 `customer_reception_advice.sale_desc`，**禁止模板化复制**） **🚨 强约束（违反即流程错误）：** - ❌ 禁止只输出"已发送"、"已执行"、"已完成"等短回复 - ❌ 禁止省略其中任意一段 - ❌ 禁止用列表/段落"概要"代替结构化交付（必须明确出现"名单/画像/建议"或等价的分段标题） > 📌 **展示时按下方铁律 A4 字段映射表翻译**：本段列出的 `credit_level` / `if_ka` / `lst_inq_time` 等字段名仅供 agent 取值，**严禁直接出现在商家可见输出里**，必须翻译成「信用等级」「KA 标签」「最近询盘时间」等商家术语。 ### A4. 商家友好语言（最高优先级，违反即流程错误） 商家不是开发者，agent 面向商家的所有可见文字（含"正在思考中"流式区块、执行步骤说明、过渡话术、追问、错误反馈）**禁止暴露任何技术内部信息**。 **🚨 思考过程静默原则（最强子约束）：** 1. **tool 调用前后零文字**：调 tool 前不写"我要调 XXX"，调完后不写"刚刚调了 XXX"。端侧自带「📄 读取文件」「🔄 执行命令」状态卡片，agent **禁止再用文字复述同一动作**。 2. **同一句话一个 turn 内只说一次**：如「商家已确认旺旺文案」「正在为你查询客群」——多步流程里**只在第一步说**，后续静默；连续两个流式区块说同一句即违规。 3. **禁止流程拼盘**：交付前不复盘"客群列表→买家明细→画像建议→展示交互→…"这种链路串烧——商家只想看结果，不想看你的工作流。 4. **禁止铁律元注释**：不说"现在按铁律 A3 三段式交付"「按 SKILL.md 第 X 步」「触发 XX 场景立即执行」等——做就行，别解释为什么做。 5. **结果交付不加过渡话术**：直接给三段式（名单/画像/建议），**禁止**"下面为你汇总…"「以下是…」「为你梳理…」等开场白。 **❌ 禁言清单（出现即违规）：** | 类别 | 反例 | |------|------| | tool/函数名 | `list_customer_cluster`、`list_cluster_buyer_detail`、`customer_reception_advice`、`list_customer_details`、`get_cluster_marketing_plan`、`activate_cluster_plan`、`show_interaction`、`AskUserQuestion`、`customer-ww-send`、`customer-sms-info` | | JSON 字段/路径 | `data.list[0]`、`plan_id`、`buyer_login_id`、`credit_level`、`if_ka`、`lst_inq_time`、`ord_cnt_1m_level`、`gmv_1m_level`、`crowd_type`、`cluster_name`、`buyer_num` 等 | | 参数/CLI 标志 | `--plan-id`、`--buyer-login-ids`、`--fetch-all`、`--crowd-type`、`--date-type`、`--gmv-1m-level` 等 | | 英文短语 | "Now I have..."、"Let me..."、"Call X to get..."、"Per the skill..."、"trigger / flow / scenario" | | 流程元注释 | 「我现在要…」「按 SKILL.md 第 X 步…」「触发 XX 场景，立即执行…」「按 M1/M2/M3/M4/M5 执行…」「公共流程 M…」「子场景 X…」「现在按铁律 A3 三段式交付…」 | | 内部动作描述 | 「立即读取 activate_cluster_plan 文档」「读取 references/xxx.md」「执行开启计划」「调用 XX 接口」「商家已确认旺旺文案，立即…」「现在已 XXX，立即 XXX」——**读文档 / 调接口 / 内部跳转**都是 agent 自己的事 | | 步骤链路拼盘 | 「所有步骤已完成：客群列表→买家明细→画像建议→展示交互→查看运营方案→确认文案→开启计划」「按以下顺序执行：①…②…③…」 | | 交付过渡话术 | 「下面为你汇总…」「以下是本次客群的…」「为你梳理…」「下面是结果」——三段式直接开始，不要开场白 | **📖 字段翻译表 + 话术模板见 `references/lang-rules.md`**（首次面向商家输出前必读）。 **优先级：** 与 A、A2、A3 同级，**高于流程描述里的所有 tool 名引用**——SKILL.md 写「调 list_customer_cluster」是给 agent 看的指令，agent 面向商家只能说「正在查询客群」。 ### B. 严禁自由发挥 1. ❌ 主动调 `get_cluster_marketing_plan`（仅在商家点 `view_cluster_plan` 按钮时才调） 2. ❌ 给所有客群拉买家明细（客户机会监控**只拉第一个客群**） 3. ❌ 生成长篇分析（综合策略 / 优先级排序 / 差异化话术 / 客群对比 / 附加建议等）—— 展示内容**必须**直接来自 tool markdown 或 show_interaction 4. ❌ 向 show_interaction rows 添加 spec 未定义的字段（如「所属客群」「等级」「跟进建议」） 5. ❌ 在 show_interaction 之前用 Markdown 表格/列表"预览"买家信息 ### C. show_interaction 强制使用 | 场景 | 必须用 | |------|--------| | 展示 **≥2 个**买家供商家选择 | `show_interaction(name='select_buyers_from_cluster')` | | 让商家确认/编辑客群运营方案 | `show_interaction(name='confirm_marketing_plan')` | **单买家场景**（买家数 = 1）：**跳过 show_interaction，直接按铁律 A3 三段式输出该买家的名单/画像/建议**；有 planId 时再用 AskUserQuestion 弹「查看客群运营计划 / 换一批 / 结束」，无 planId 时弹「换一批 / 结束」，选后直接执行，不再追问。 **唯一例外**：买家数 = 0（无任何匹配买家）时告知"暂无数据"。 **🚨 强约束（违反即流程错误）：** - ❌ 禁止用 Markdown 表格 / 列表 / `1. xxx` 段落 / 文字描述替代 show_interaction（≥2 买家场景） - ❌ 禁止说"需要我帮你..."、"以下是建议行动..."等开放式追问替代 AskUserQuestion - ❌ 禁止在 show_interaction / AskUserQuestion 之前用 Markdown "汇总分析"或"高价值机会识别"长篇内容（铁律 B 已禁，再次强调） ### D. show_interaction 完成后处理 **step 1：按 `data.action.key` 执行对应操作（或跳过）：** | action.key | 执行动作 | 执行后 | |------------|---------|--------| | `view_plan`（查看客群运营计划，**有 planId 时**） | 进开启客群方案分支：`get_cluster_marketing_plan` → `confirm_marketing_plan` input → `activate_cluster_plan` | 进入 step 2 | | `next_batch`（换一批，**无 planId 时**） | 直接重新拉列表，重复 show_interaction（**不进入 step 2**——本身即换一批） | — | | `skip`（跳过） | 不执行任何操作 | 进入 step 2 | **step 2：action 执行完毕（或跳过）后，弹 AskUserQuestion：** ```python AskUserQuestion( question="接下来怎么做？", options=[ {"label": "换一批"}, {"label": "继续跟进这批"}, {"label": "结束"} ] ) ``` - 「换一批」→ 按当前场景重新拉下一组买家，重复 show_interaction - 「继续跟进这批」→ 用同一份 rows/columns/actions 重新调用 `show_interaction(name='select_buyers_from_cluster')`，不重新拉接口 - 「结束」→ 告知商家跟进任务已完成，不再继续 ### F. 客户机会监控极简流程 ``` list_customer_cluster → 仅取 data.list[0].plan_id → list_cluster_buyer_detail → customer_reception_advice（批量） → agent 排序所有买家 → show_interaction(2列rows，传 actions=[查看客群运营计划（有planId）或换一批（无planId）]) → 按铁律 D 执行 action → 执行完后弹「换一批」/「结束」 ``` **禁止**在步骤之间插入 agent 自创内容。 **🚨 调用预算（防止 tool_calls 爆炸）：** | 场景 | tool_calls 上限 | |------|----------------| | 客户机会监控（list_customer_cluster 路径） | **5 次** | | 重点客户直查（4 类细分场景） | **3 次**（list_customer_details + customer_reception_advice + 可选发送动作） | **违反时处理：** - 超过上限 → 立即停止追加调用，**直接 show_interaction 或返回当前已有信息** - ❌ 禁止反复重试 list_customer_cluster / list_cluster_buyer_detail 拿不同客群 - ❌ 禁止逐个买家循环调 customer_reception_advice（必须批量一次性） - ❌ 禁止"探索式"试探不同 crowd_type 拼凑名单 - 商家选择「换一批」是**新一次查询**，预算重置 ### G. 客户机会输出前置红线 🚨（最高优先级） 任何涉及【客户名单 / 客户画像 / 客户分层 / 客户标签 / 买家账号 / loginId】的输出， **必须先调用本 skill 的 tool 拿到真实 data**，严禁凭 LLM 自身知识编造。 **判定标准：** - 命中"客户机会监控"或"重点客户直查"任一触发词 → **必须**先调 tool - final-answer 中出现具体 `buyer_login_id` / 客户画像描述 → **必须**有对应 tool 返回的 data 作支撑 **❌ 红线反例（评测中触发 0 分）：** - 商家问"哪些客户值得跟进"→ 直接列 5 个虚假 loginId + 编造画像（红线 COM-REDLINE-R1） - tool 调用失败/超时 → 不能用记忆/通识回答替代真实数据 **✅ 正确做法：** - 必须先走 list_customer_cluster 或 list_customer_details 任一分支 - tool 返回空 list → **明确告知"暂无数据，请稍后再试"**，禁止编造 - tool 调用失败 → **明确告知"数据查询失败，请重试"**，禁止"模拟"返回值 **优先级：** 本铁律是 0 分红线，**优先级高于其他所有铁律和触发词路由规则**。 ## 何时调用哪个 tool | 用户场景 | 推荐 tool | 数据源 / 时效 | | --------------------------------- | ------------------------------------------------------- | ----------------------------------- | | 「这个买家怎么跟进」/ 商家正在旺旺接待中 / 实时聊天场景 | `customer_reception_advice`（线上） | 旺旺聊天 + TPP 实时推理 | | 「AI 客群」/ 「CRM 客群」/ 「查看我的客群」 | `list_customer_cluster` | Lindorm ai_crm_crowd_plan | | 「客群运营方案」/ 「这个客群怎么触达」/ 「优惠券/文案是什么」 | `get_cluster_marketing_plan` | brave-troops HSF（DMS 营销方案表） | | 「这个客群有哪些买家」/ 「查看XX客群的买家」 | **先** `list_customer_cluster` 获取 planId，**再** `list_cluster_buyer_detail --plan-id` | brave-troops HSF | | 「这个买家是什么客群」/ 「查一下这批买家的客群信息」/ 提供买家 loginId 列表 | `list_customer_details --buyer-login-ids` | CustomerManageDataBoardV2（订单+询盘双维度）| | 模糊场景 | 优先 `customer_reception_advice`（数据时效性更好） | — | ## 触发词 **命中 customer_reception_advice：** 实时跟进、聊天接待、当前对话、买家咨询中、即时建议、这个客户怎么办、聊天给点建议、画一下买家、接待中的买家 **命中 list_customer_cluster：** AI客群、CRM客群、客群列表、查看客群、我的客群、智能客群、哪些客群、客群有哪些、看下客群 **命中 get_cluster_marketing_plan：** 客群运营方案、这个客群怎么做、触达方案、优惠券是什么、文案是什么、海报、planId 对应的方案 **命中 list_cluster_buyer_detail（必须先有 planId，先调 list_customer_cluster）：** 客群买家明细、这个客群有哪些买家、买家等级、加入客群时间、查看XX客群的买家 **命中"查所有客群买家汇总"场景：** 查询所有客群的所有客户明细、查所有客群的买家、全量客群买家、所有AI客群有哪些买家、查询客群所有客户明细 **命中 list_customer_details（买家客群查询）：** 这个买家是什么客群、查一下这批买家的客群信息、买家客群、用户所在客群、这些 loginId 的客群、指定买家查客群 **命中"客户机会监控"场景：** 最近哪些客户重要、需要主动联系的客户、重要客户跟进、哪些客户需要联系、帮我看看重要客户、待跟进客群买家、N个待跟进客群买家、分析店铺待跟进客户、分析店铺X个待跟进客户、什么客户适合联系、什么客户适合发旺旺、什么客户适合发短信、哪些客户适合发旺旺、哪些客户适合发短信、适合联系的客户、适合发旺旺的客户、适合发短信的客户、客户触达建议、客户联络建议 **命中"重点客户直查"场景（按客群类型直接拉取，跳过 list_customer_cluster）：** | 细分场景 | 触发词示例 | 对应 crowd_type | |---------|----------|----------------| | 流失客户预警 | 流失客户、流失买家、客户流失预警、流失老客、流失客户预警、流失客户挽回 | `流失买家` | | 复购客户提醒 | 复购客户、复购提醒、周期采购、需要复购、复购买家、复购挖掘 | `周期采购` | | 老客促活发现 | 老客促活、需要促活、老客户激活、激活老客、促活买家、沉默老客 | `老客促活` | | 询盘未成交 | 询盘未成交、询盘没成交、有询盘没下单、询盘未转化、询盘客户 | `询盘未成交` | **显式不命中（避免误导）：** 客户运营、客户分析、客户管理、CRM、客户洞察、客户分层、复购预测、交叉销售、升级销售、流失预警 批量画像、导入名单、Excel买家（→ 用 1688-buyer-batch-profile） **能力边界（命中以下场景必须声明边界 + 推荐替代路径，严禁伪造数据）：** | 用户问到 | 应答模板 | |---------|---------| | 业务员跟进进度、任务完成率、谁负责跟进 | "客户机会监控不维护业务员跟进任务状态，建议到 1688 后台『任务管理』页面查看，或使用对应任务管理类 skill" | | 客服响应时长、接待质量、消息回复率 | "客服接待质量数据由 `1688-inquiry-quality`（客服质检）skill 提供，建议切换该 skill 查询" | | 已标记风险客户、客户风险等级 | "客户机会监控未维护风险标记状态，可降级用『流失客户画像』分析：调用 `list_customer_details --crowd-type 流失买家 --fetch-all` 查看高流失风险客户" | | 联系人变更、修改买家手机号、改买家姓名 | "联系人/手机号变更不在客户机会监控能力范围，请到 1688 后台 CRM 客户管理页面操作" | | 店铺整体经营数据、GMV 趋势、流量来源 | "店铺整体经营分析由 `1688-shop-operate` skill 提供，建议切换该 skill 查询" | **🚨 强约束（违反即流程错误）：** - ❌ 禁止伪造业务员跟进数据（如"今日跟进 5 个客户"、"跟进率 80%"） - ❌ 禁止伪造客服接待数据（如"今日响应时长 12 秒"、"5 单已回复"） - ❌ 禁止伪造风险标记（如"3 个客户已标记高风险"） - ❌ 禁止伪造联系方式变更状态（如"已为 X 修改手机号"） - ✅ 命中以上场景时，**必须**先用应答模板声明边界，再视情况给出"基于客户机会维度的相关分析"（如流失客户画像）作为补充 **❗ 命中"重点客户直查"4 类细分触发词时禁止走 list_customer_cluster 流程：** - 流失客户/复购客户/老客促活/询盘未成交 → 必须走 `list_customer_details --crowd-type {对应 crowd_type} --date-type RECENT_30 --fetch-all` - ❌ 禁止先调 list_customer_cluster - ❌ 禁止追加 view_plan action（无 planId 场景） - **混合语义优先级**：当 prompt 同时包含 4 类细分词（如「流失客户」）和触达词（如「适合发短信」）时，**细分词优先**，走「重点客户直查」分支 ## 命令速查 CLI 入口文件：`{baseDir}/cli.py` | 命令 | 参数 | 说明 | |------|------|------| | `configure` | `YOUR_AK` | 配置 AK | | `list_customer_cluster` | 无参数 | 查老客 AI 客群列表（含 planId / 客群特征） | | `get_cluster_marketing_plan` | `--plan-id PLAN_ID` | 查客群运营方案（优惠券/文案/海报）| | `list_cluster_buyer_detail` | `--plan-id PLAN_ID` | 查客群买家明细（触达状态）| | `list_customer_details` | `--buyer-login-ids '["nick1","nick2"]'` | 查指定买家的客群信息（订单+询盘双维度）| | `customer_reception_advice` | `--buyers '<对象数组 JSON>'` | 批量实时画像 + 跟进建议（统一对象数组入参；详见下方「customer_reception_advice 入参示例」）| | `activate_cluster_plan` | `--plan-json '<JSON>'` | 开启 AI 客群运营计划 | ### customer_reception_advice 入参示例 `--buyers` 是对象数组 JSON，每个对象**通过字段名**声明类型——`login_id` 或 `phone` 二选一，Java 端自动识别并转 userId。一手机号可能对应多账号，会拆成多条结果。 ```bash # 场景 1：纯 loginId（最常见，从客群明细 / 客户列表拿到的都是 loginId） python cli.py customer_reception_advice --buyers '[{"login_id":"alice"},{"login_id":"bob"}]' # 场景 2：纯 phone（用户上传通讯录、外部名单只有手机号时） python cli.py customer_reception_advice --buyers '[{"phone":"13800138000"},{"phone":"13900139000"}]' # 场景 3：loginId + phone 混合（用户名单同时含两种身份信息） python cli.py customer_reception_advice --buyers '[{"login_id":"alice"},{"phone":"13800138000"},{"login_id":"bob"}]' # 场景 4：单买家（仍走数组） python cli.py customer_reception_advice --buyers '[{"login_id":"nick"}]' python cli.py customer_reception_advice --buyers '[{"phone":"13800138000"}]' ``` **禁止**： - 传字符串数组 `["alice","bob"]`（旧格式，已废弃） - 传对象但缺 `login_id` 和 `phone` 字段（会被收集到 `invalid_entries`，不阻断其他条目处理） - 传同时含 `login_id` 和 `phone` 的对象（行为：优先 `login_id`，`phone` 被忽略；建议拆成两条） ## Agent 使用流程 **🚨 禁止向用户索取主账号 `user_id` / `login_id`**。调用方身份由后端通过 AK 自动解析。Agent 只需收集买家身份（login_id / phone）作为业务参数。 **线下批量场景（分析单个/多个客户的客群信息）：** 1. 用户提供本地文件（Excel/CSV 等）→ 大模型解析，提取买家 loginId 列表 2. **必须先**调 `list_customer_details --buyer-login-ids '["loginId1","loginId2"]'`，获取每个买家的客群归属 3. 根据返回结果映射每个买家的 crowd_type： - `order_list[].procurement_mode = "periodic"` → 周期采购 - `order_list[].procurement_mode = "old_buyer"` → 老客促活 - 该买家在 `inquiry_list` 中有数据 → 询盘未成交 - 其他 → 流失买家 4. **禁止跳过步骤2直接调** `customer_crowd_analysis`——crowd_type 必须来自 list_customer_details 的返回，不可猜测 5. 按 crowd_type 分组，每组各调一次 `customer_crowd_analysis --buyers '[...]' -t {crowd_type}`（同一组内线程池并发） **线上实时场景：** 1. 用户在旺旺接待 / 询问"这个买家怎么跟进" → 直接调 `customer_reception_advice` 2. 该 tool 内部自动拉聊天历史 + TPP 推理，无需用户提供其他参数 **通用：** - 首次使用报 AK 错误 → 引导 `python cli.py configure YOUR_AK` **老客机会挖掘场景（统一入口）：** > 触发任一买家挖掘/客群相关触发词时，**禁止询问用户想做什么、立即执行**。 ### 公共流程 M（子场景 2-7 全部套用） > 🚨 **M1-M5 / 子场景 X / 公共流程 M 均为 SKILL.md 内部步骤编号**，仅供 agent 自己路由用，**严禁出现在面向商家的任何可见文字里**（含思考过程流式区块、过渡话术、追问、复盘），按铁律 A4 禁言清单"流程元注释"分类处理。 | Step | 动作 | 关键约束 | |------|------|---------| | M1 | 拉买家 loginId 列表（数据源见下方场景表） | — | | M2 | 取所有 loginId 一次性批量调 `customer_reception_advice --buyers '[{"login_id":"..."},...]'` 拿画像 + 建议 | ❌ 禁止逐个循环、禁止询问选哪位 | | M3 | agent 按成单机会从高到低排序：a. 近期聊天+采购意向 > b. 有询盘未成交 > c. 历史下单近期静默 > d. 无互动；同级保持 API 顺序 | — | | M4 | 按 2 列 rows 构造（`buyer_login_id` + 「画像：xxx\n建议：xxx」各 ≤50 字），调 `show_interaction(name='select_buyers_from_cluster')`；**actions：有 planId → `[view_plan]`；无 planId → `[next_batch]`** | ❌ 严禁 Markdown 表格替代、严禁 `view_plan` 与 `next_batch` 同时出现、严禁展示 userId | | M5 | 按铁律 D 处理 `action.key`，执行完弹 AskUserQuestion「换一批 / 继续跟进这批 / 结束」 | — | **单买家**（loginId 数=1）：跳过 M4，按铁律 A3 三段式输出，弹 AskUserQuestion「换一批 / 结束」；有 planId 追加「查看客群运营计划」。 **空数据**：告知「暂无待跟进客户，可以尝试其他客群场景」。 ### 子场景 1：查看 AI 客群列表（命中 "AI客群/查看客群/客群列表"） 1. 调 `list_customer_cluster`，**完整、逐字、原样**输出返回的 markdown（铁律 A，含 `>` 引用块前缀、空行、HTML 注释；禁加开场白、禁从 data 重构） 2. **markdown 渲染完成后**才能弹 AskUserQuestion 两题（**禁止在表格渲染前弹出**）： - 问题一「要操作哪个客群？」：选项格式 `"{cluster_name}（{buyer_num}人）"`，**禁用"第1个客群"序号文案** - 问题二「选择下一步操作」：「展开客群买家明细」/「查询运营方案」/「查看所有客群汇总买家明细」 3. 取答案匹配 `data.list[].plan_id`，进入对应子场景 - 若 prompt 同时命中 "所有客群买家/全量客群买家"：**跳过 AskUserQuestion，直接进入子场景 3** ### 场景分发表（M1 数据源 + 差异点） | 子场景 | 触发条件 | M1 数据源 | planId | 差异点 | |--------|---------|----------|--------|--------| | 2. 展开客群明细 | 子场景 1 选「展开客群买家明细」 | `list_cluster_buyer_detail --plan-id PLAN_ID` → `data.list[].buyer_login_id` | ✅ | — | | 3. 查所有客群汇总买家明细 | 子场景 1 选「查看所有客群汇总买家明细」**或** prompt 命中"所有客群买家/全量客群买家" | 对子场景 1 已有的全部 `plan_id` **并行**调 `list_cluster_buyer_detail`，按 loginId 合并去重 | ❌ | 禁止重新调 `list_customer_cluster`；告知"共 X 客群，去重后 Y 位" | | 4. 客户机会监控-有 AI 客群 | "客户机会监控" 触发词 + `cluster_count > 0` | 调 `list_customer_cluster`（**只取 data，禁输 markdown**）→ 取 `data.list[0].plan_id` → `list_cluster_buyer_detail`（同禁输 markdown） | ✅ | M5「换一批」用 AskUserQuestion 列剩余客群（`data.list[1:]`，同问题一格式），选中后取对应 plan_id 重复 M1-M5 | | 5. 客户机会监控-无 AI 客群（按优先级） | "客户机会监控" 触发词 + `cluster_count = 0` | 按优先级**逐级**执行（**禁止并行、禁止跨级跳转**）：① `list_customer_details --gmv-1m-level 高` ② `list_customer_details --ord-cnt-1m-level 高` ③ `list_customer_details --user-label-list '["B类买家"]'` | ❌ | M5「换一批」选项：当前级「下一批」+ 切下一级；③ 仅「下一批」无切换 | | 6. 客户机会监控-无 AI 客群-所有客群汇总 | "客户机会监控" + "所有客群买家/全量客群买家" + `cluster_count = 0` | **并行** 3 条 `list_customer_details`（`--gmv-1m-level 高` / `--ord-cnt-1m-level 高` / `--user-label-list '["B类买家"]'`），按 loginId 合并去重 | ❌ | 告知"暂无 AI 客群数据，将为你从全部老客中筛选高价值买家" | | 7. 重点客户直查 | 4 类细分触发词（流失/复购/老客促活/询盘未成交） | `list_customer_details --crowd-type {crowd_type} --date-type RECENT_30 --fetch-all`；`{crowd_type}` = `流失买家`/`周期采购`/`老客促活`/`询盘未成交` | ❌ | **禁止**调 `list_customer_cluster` / `list_cluster_buyer_detail`；**禁输** `list_customer_details` markdown；M5「换一批」重拉同一 crowd_type 全量 | > ⚠️ `list_cluster_buyer_detail` 和 `get_cluster_marketing_plan` 都必须先有 planId。planId 只能来自 `list_customer_cluster` 的返回，**禁止猜测**。 ### 开启客群方案分支（M5 选 `view_plan` 或子场景 1 选「查询运营方案」时进入） 1. 调 `get_cluster_marketing_plan --plan-id PLAN_ID` 拿方案详情（**忽略 offer_list**） 2. 调 `show_interaction(name='confirm_marketing_plan')` 让商家确认/修改旺旺文案（按 `references/interaction-specs.md` §2 构造 questions），**禁止用 AskUserQuestion 文字交互替代** 3. **🚨 input 完成强红线**：回传中 `selectionType="确认客群运营计划"` 且 `data.questions[0]` 含答案——**这是 input 已完成的唯一信号**，agent 必须**同一 turn 内静默**执行步骤 4（**读 activate_cluster_plan.md / 构造 JSON / 调 tool 全部是 agent 内部动作，禁止对商家用任何过渡话术**，如「商家已确认旺旺文案，立即读取 activate_cluster_plan 文档并执行开启计划」这类描述属于铁律 A4「内部动作描述」违规），**禁止**： - ❌ 重新调 `list_customer_cluster` 或重新展示 AI 客群列表 - ❌ 再次弹 `confirm_marketing_plan` 或任何 AskUserQuestion 二次确认 - ❌ 仅回复"已确认"等文字而不调 `activate_cluster_plan` - ❌ 把端侧"已确认需求·确认客群运营计划"渲染态当作"待用户继续操作"——那只是 input 完成的展示气泡，不是按钮 - ❌ 把"已确认 / 立即执行 / 读取文档"等内部动作描述说出来（应直接调 tool） 4. 取 `data.questions[0]` 答案作 `saleDescription`，按 `references/capabilities/activate_cluster_plan.md` 构造 JSON（**不传 coupon 字段**），调 `activate_cluster_plan --plan-json '<JSON>'` 5. 成功后直接展示命令输出的 markdown（含 CRM 链接），**禁止调用 `open_tab`**，由用户自行点击链接 **展示规范见 `references/display-rules.md`**（agent 初始化时会读取） ## 执行前置（首次命中能力时必须） - 首次触发 `show_interaction` 前：先完整阅读 `references/interaction-specs.md` - 首次执行 `configure` 前：先完整阅读 `references/capabilities/configure.md` - 首次执行 `list_customer_cluster` 前：先完整阅读 `references/capabilities/list_customer_cluster.md` - 首次执行 `list_customer_details` 前：先完整阅读 `references/capabilities/list_customer_details.md` - 首次执行 `list_cluster_buyer_detail` 前：先完整阅读 `references/capabilities/list_cluster_buyer_detail.md` - 首次执行 `customer_reception_advice` 前：先完整阅读 `references/capabilities/customer_reception_advice.md` - 首次执行 `customer_crowd_analysis` 前：先完整阅读 `references/capabilities/customer_crowd_analysis.md` - 首次执行 `activate_cluster_plan` 前：先完整阅读 `references/capabilities/activate_cluster_plan.md` - 首次执行 `get_cluster_marketing_plan` 前：先完整阅读 `references/capabilities/get_cluster_marketing_plan.md` - 首次渲染输出前：先完整阅读 `references/display-rules.md`


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)