--- name: interaction-strategy description: 定义与用户之间的交互策略:何时反问、何时直接执行、何时交付结果。在任何需要判断"是否该停下来和用户沟通"的场景中参考本 skill。 --- # interaction-strategy --- ## 核心原则 **默认行为是行动,反问是例外。** 用户发出请求后,agent 应尽最大努力独立推进任务,只在明确无法继续时才停下来和用户沟通。 --- ## 三类人机交互 与用户的交互仅限以下三种场景: ### Type 1:求助 / 求信息 agent 遇到无法自行解决的阻塞时,向用户请求帮助或补充信息。 **触发条件**(必须同时满足): - 当前信息确实不足以继续执行 - 已尝试通过可用工具自行获取(MCP 语义层、search_context 等) - 自排障尝试已达上限(见下方"反问前置要求") **触发时机**: - Plan 构建前:必要信息缺失(指标歧义、分析范围不明确等),无法构建可执行 plan - 执行中:节点遇到不可自解的阻塞(关键数据不可用、权限不足、业务逻辑矛盾等) ### Type 2:用户显式要求确认计划 用户主动表达“先看看计划”的意图时,或任务涉及报告且报告结构有多种可能时,在 `create_plan` 后停下来展示计划并等待确认。 **触发条件**(满足任一): - 用户消息中包含显式的计划确认意图:“先规划一下”“先做个计划”“帮我列一下步骤”“你打算怎么做”“别急着做,先说说思路” - 用户请求明确涉及“报告”且报告结构有多种可能(如未指定报告维度、章节、受众) **未触发时的默认行为**:`create_plan` 后直接开始执行,不停轮。 **触发后的行为**:输出计划概览 + 关键决策点,以“如无问题我将开始执行”结尾。**不调用任何工具**,让本轮自然结束等用户回复。 ### Type 3:交付结果 任务完成时,向用户返回分析结论和产出物。 --- ## 反问前置要求 在触发 Type 1 反问之前,**必须先尝试自行解决**: ### Plan 构建前 1. 调用可用的 MCP 语义层工具(`search_context` / `get_domain_overview` / `list_metrics`) 2. 如果返回结果可以消除歧义 → 不反问,直接使用 3. 如果工具不可用或返回结果仍无法消歧 → 触发反问 ### 执行中 1. 分析报错信息,尝试调整参数/策略重试(如换一种维度筛选方式) 2. 查看是否有替代数据源或等价指标 3. 最多重试 **2 轮** 不同策略 4. 仍无法解决 → 通过 `revise_current_plan` 调整受影响节点,或停下来向用户求助 ### 不允许反问的场景 - 数据表选择有多个候选但 skill 已定义优先级 → 按优先级执行 - 聚合粒度未指定 → 使用 skill 默认值并在回复中说明 - 精确名称唯一匹配一个指标 → 直接使用 --- ## 反问格式 反问时遵循以下原则: 1. **说明已知**:先告诉用户你已经了解到什么(让用户知道你不是什么都没做就来问) 2. **精准提问**:只问真正缺失的一个核心问题(不要一次问多个问题) 3. **提供选项**:如果可能的候选是有限集,列出选项让用户选择 4. **说明影响**:简述这个信息缺失会如何影响后续分析 示例: ``` 通过语义层查询,我找到了两个匹配的指标: - **visit_usercnt_1d**:访问用户数(包含未登录用户) - **visit_login_usercnt_1d**:登录访问用户数 它们的区别在于是否包含未登录用户。你分析的"用户数"指的是哪一个? ``` ---