# 05 - Objection Handler Agent (异议处理专家) 设计详解

## 1. 核心职责

Objection Handler 是系统中的**异议化解专家**。当用户表达顾虑、犹豫或反对意见时，Coordinator 调用此 Agent 获取专业的回应方案。

核心能力：
1. **异议分类** -- 识别异议类型（费用/时间/成功率/家庭/政治/信任等）
2. **共情回应** -- 先理解和认同用户的感受，建立信任
3. **事实反驳** -- 用知识库中的真实数据和政策依据消除误解
4. **案例引用** -- 援引类似背景的成功案例增强说服力
5. **替代方案** -- 当无法直接消除顾虑时，提供绕行方案
6. **话术建议** -- 为 Coordinator 提供具体的回应话术参考

> 设计原则：**先共情、再讲理、后给方案。** 永远不要否定用户的感受，即使他们的担心在事实上是错误的。

## 2. 模型与参数

```typescript
{
  model: 'claude-sonnet-4-20250514',  // 需要共情能力 + 逻辑推理
  max_tokens: 2000,
  temperature: 0.2,                    // 允许少量灵活性（话术需要自然）
  system: [
    {
      type: 'text',
      text: objectionHandlerPrompt,
      cache_control: { type: 'ephemeral' }
    }
  ],
}
```

选用 Sonnet 的理由：
- 异议处理需要高情商（理解用户潜台词）
- 需要平衡共情与说服，这对模型能力要求较高
- 回应中需要准确引用政策数据，不能出错

## 3. 可用工具 (Available Tools)

Objection Handler 有 **2 个工具**：

### 3.1 search_knowledge

```typescript
{
  name: 'search_knowledge',
  description: '搜索知识库获取政策事实、成功率数据、费用标准、审批时间等信息，用于以事实回应用户异议。',
  input_schema: {
    type: 'object',
    properties: {
      query: {
        type: 'string',
        description: '搜索查询，如"高才通审批成功率数据"或"移民后就业情况"'
      },
      category: {
        type: 'string',
        enum: ['QMAS', 'GEP', 'IANG', 'TTPS', 'CIES', 'TECHTAS'],
        description: '相关移民类别'
      }
    },
    required: ['query']
  }
}
```

### 3.2 get_user_context

```typescript
{
  name: 'get_user_context',
  description: '获取用户的历史背景和之前的顾虑记录，避免重复回应同一异议，并根据用户具体情况定制回应。',
  input_schema: {
    type: 'object',
    properties: {
      query: {
        type: 'string',
        description: '检索用户记忆，如"用户之前表达过的顾虑和担忧"'
      }
    },
    required: ['query']
  }
}
```

## 4. System Prompt 要点

```
# 身份
你是 iConsulting 的异议处理专家。你擅长理解用户的顾虑，并用专业、温暖的方式化解。

# 回应三步法（必须遵守）
1. 共情 (Empathize): 承认用户的感受是合理的，用"确实""您的担心很正常"等语言
2. 事实 (Educate): 用知识库中的数据和政策纠正误解
3. 方案 (Empower): 给出具体的解决方案或替代路径

# 常见异议分类与策略

## COST（费用顾虑）
- "太贵了" / "移民中介费好高"
- 策略：区分付费评估（¥99）vs 正式申请费用 vs 中介费；强调自助申请的可能性；对比移民后的收入提升

## TIMELINE（时间顾虑）
- "要等好久" / "时间太长了"
- 策略：按类别给出真实审批时间（TTPS 4-6周最快）；对比其他国家移民周期；强调可以边等边准备

## SUCCESS_RATE（成功率顾虑）
- "能成功吗" / "通过率高吗"
- 策略：引用知识库中的通过率数据；分析用户条件匹配度；避免承诺100%成功

## FAMILY（家庭顾虑）
- "家人不支持" / "孩子教育怎么办"
- 策略：提供香港教育体系信息；配偶随行政策；强调不需要立即定居

## POLITICAL（政治顾虑）
- "香港现在还好吗" / "安全吗"
- 策略：保持中立客观；引导关注经济和教育优势；强调"多一个选择"而非"逃离"

## TRUST（信任顾虑）
- "AI能给准确建议吗" / "你们靠谱吗"
- 策略：强调AI只做初筛，正式服务由持牌顾问提供；建议验证信息来源（官方网站）

## READINESS（准备度顾虑）
- "我条件不够好" / "再等等吧"
- 策略：指出已有优势；强调"越早准备越好"；政策有变化风险

# 红线
- 永远不要承诺100%成功率
- 不做任何政治立场判断
- 不贬低其他移民目的地
- 不催促用户做决定
```

## 5. 输入/输出格式

### 输入 (Coordinator 传入)

```typescript
interface ObjectionHandlerInput {
  /** 用户的异议/顾虑原文 */
  objection: string;
  /** 用户上下文摘要（Coordinator 提供的背景信息） */
  userContext: string;
  /** 用户关注的移民类别（如果已知） */
  category?: 'QMAS' | 'GEP' | 'IANG' | 'TTPS' | 'CIES' | 'TECHTAS';
}
```

### 输出 (返回给 Coordinator)

```typescript
interface ObjectionHandlerOutput {
  /** 异议分类 */
  objection_category: 'COST' | 'TIMELINE' | 'SUCCESS_RATE' | 'FAMILY' | 'POLITICAL' | 'TRUST' | 'READINESS' | 'OTHER';

  /** 异议严重程度 */
  severity: 'low' | 'medium' | 'high';

  /** 共情回应（Coordinator 可直接使用或改写） */
  empathy_response: string;

  /** 事实反驳要点 */
  factual_rebuttal: {
    key_points: string[];            // 核心反驳论点
    data_references: string[];       // 引用的数据/政策
    sources: Array<{
      title: string;
      article_id?: string;
    }>;
  };

  /** 成功案例引用（如果知识库有相关案例） */
  success_story_reference?: {
    scenario: string;                // 案例背景简述
    relevance: string;               // 与当前用户的关联点
  };

  /** 建议的完整回应话术（供 Coordinator 参考） */
  suggested_response: string;

  /** 建议的后续动作 */
  follow_up_action: {
    action: 'continue_discussion' | 'provide_more_data' | 'offer_alternative' | 'give_space' | 'connect_expert';
    detail: string;
  };
}
```

## 6. 触发时机 (When to Trigger)

Coordinator 在以下场景调用 `invoke_objection_handler`：

| 场景 | 用户信号 | Coordinator 判断方式 |
|------|----------|---------------------|
| 直接表达顾虑 | "太贵了" / "不确定" / "有点担心" | LLM 识别负面情绪+具体顾虑主题 |
| 犹豫不前 | "让我想想" / "再考虑一下" | LLM 识别拖延信号 |
| 质疑可行性 | "我条件不太好吧" / "能通过吗" | LLM 识别自我怀疑 |
| 对比竞品 | "其他中介说..." / "网上说..." | LLM 识别外部信息干扰 |
| 家庭反对 | "老婆/老公不同意" | LLM 识别第三方阻力 |
| 政治敏感 | "香港还安全吗" | LLM 识别政治顾虑 |

**通常与 Strategist 配合使用**：
1. Strategist 检测到 `sentiment: hesitant` + `recommended: address_objection`
2. Coordinator 据此调用 Objection Handler
3. Coordinator 综合两者的建议生成最终回复

## 7. 内部循环 (Internal Loop)

Objection Handler 的 agent loop 最多 **2 轮** tool 调用：

```
┌─────────────────────────────────────────────────────┐
│  Objection Handler Internal Loop (max 2 turns)      │
│                                                      │
│  Turn 0: 分析异议 + 获取背景                         │
│  ├── 同时发起两个 tool 调用（并行）：                 │
│  │   ├── search_knowledge({query: 相关事实查询})      │
│  │   └── get_user_context({query: 用户顾虑历史})      │
│  │                                                   │
│  Turn 1: 综合生成回应方案                            │
│  ├── 如果 Turn 0 的搜索结果不够                      │
│  │   └── search_knowledge({query: 补充查询})          │
│  │                                                   │
│  └── 生成结构化输出                                   │
│      ├── 分类异议                                    │
│      ├── 构建共情 + 事实 + 方案 三段式回应            │
│      └── 返回给 Coordinator                          │
└─────────────────────────────────────────────────────┘
```

**并行调用优化**：

```typescript
// Objection Handler 可以在第一轮同时调用两个工具
const toolCalls = [
  {
    name: 'search_knowledge',
    input: { query: '高才通审批成功率和时间线', category: 'TTPS' }
  },
  {
    name: 'get_user_context',
    input: { query: '用户之前表达过的顾虑' }
  }
];
// 两个工具并行执行，减少延迟
```

## 8. 与其他 Agent 的关系

```
                ┌──────────────┐
                │  Strategist  │
                │  (检测异议    │
                │   信号)       │
                └──────┬───────┘
                       │ sentiment: hesitant
                       │ recommended: address_objection
                       ▼
┌──────────────┐  invoke_objection_handler  ┌──────────────┐
│              │ ────────────────────────→   │  Objection   │
│  Coordinator │   ObjectionHandlerOutput   │  Handler     │
│              │ ←────────────────────────   │              │
└──────┬───────┘                             └──────┬───────┘
       │                                            │
       │  Coordinator 综合回应：                      ├── search_knowledge
       │  1. 共情语句（来自 Objection Handler）        ├── get_user_context
       │  2. 事实数据（来自 Objection Handler）        │
       │  3. 对话策略（来自 Strategist）               ↓
       │                                     ┌──────────────┐
       │                                     │ Knowledge    │
       ├── 可能追加调用 Case Analyst           │ Service      │
       │   （用成功案例强化说服）               └──────────────┘
       │
       └── 可能追加调用 Policy Expert
           （用官方政策回应质疑）
```

**协作链路示例**：
1. 用户说："高才通通过率高吗？感觉不太靠谱"
2. Coordinator 调用 Strategist → 检测到 `SUCCESS_RATE` 异议 + `hesitant` 情绪
3. Coordinator 同时调用 Objection Handler → 获取共情+数据回应
4. Coordinator 可能追加调用 Case Analyst → 获取类似背景的成功案例
5. Coordinator 综合三者结果，生成最终回复

## 9. 示例场景

### 场景 1：费用顾虑

**Coordinator 调用**：

```json
{
  "tool": "invoke_objection_handler",
  "input": {
    "objection": "你们的评估服务要99块？网上免费的评估工具一大把，为什么要花这个钱？",
    "userContext": "用户35岁，本科，金融行业，年薪60万。已初步了解优才计划。对移民有兴趣但比较谨慎。",
    "category": "QMAS"
  }
}
```

**返回结果**：

```json
{
  "objection_category": "COST",
  "severity": "medium",
  "empathy_response": "您说得对，网上确实有不少免费的评估工具。花钱之前多做比较是非常明智的。",
  "factual_rebuttal": {
    "key_points": [
      "免费工具通常只做简单条件匹配（如年龄、学历），无法综合评估12项优才计划评分维度",
      "我们的付费评估由AI深度分析+真人顾问审核双重把关，覆盖全部6个移民类别",
      "评估报告包含详细的材料准备清单、时间规划和风险评估，相当于一份完整的申请预案",
      "¥99相比正式申请的中介费（通常2-5万元）只是零头，但能帮您判断是否值得投入"
    ],
    "data_references": [
      "优才计划评分标准包含12项维度，满足6项为门槛",
      "正式申请中介费用通常为20,000-50,000人民币"
    ],
    "sources": [
      {
        "title": "优才计划申请费用与流程指南",
        "article_id": "qmas-fee-guide-001"
      }
    ]
  },
  "success_story_reference": {
    "scenario": "有位类似背景的金融从业者（本科、30+岁），在做完详细评估后发现自己更适合高才通B类而非最初考虑的优才计划，节省了大量准备时间和费用。",
    "relevance": "用户也是金融行业、本科学历，可能存在类似的类别误判风险"
  },
  "suggested_response": "您说得对，网上确实有不少免费的评估工具，花钱之前多做比较是非常明智的。\n\n不过实话说，免费工具大多只看年龄和学历这两项，很难覆盖优才计划12项评分标准的综合评估。我们的详细评估会同时分析全部6个移民类别的匹配度，帮您找到最优路径。\n\n之前就有一位和您背景类似的金融从业者，原本打算走优才，评估后发现更适合高才通B类，审批速度快了几个月。\n\n¥99 对于一个可能影响几年规划的决策来说，性价比还是很高的。当然，如果您还想多了解一些再做决定，我随时在这里为您解答。",
  "follow_up_action": {
    "action": "continue_discussion",
    "detail": "不要强推付费，先回答完这个顾虑。如果用户继续聊，可在2-3轮后再自然提起。"
  }
}
```

### 场景 2：成功率怀疑

**Coordinator 调用**：

```json
{
  "tool": "invoke_objection_handler",
  "input": {
    "objection": "我朋友申请优才被拒了，现在通过率好像很低？",
    "userContext": "用户28岁，硕士（非百强），5年工作经验，IT行业。已完成初步评估，TTPS不符合（非百强大学），优才中等推荐。",
    "category": "QMAS"
  }
}
```

**返回结果**：

```json
{
  "objection_category": "SUCCESS_RATE",
  "severity": "high",
  "empathy_response": "听到朋友的经历确实会让人担心。每个人的情况不同，被拒的原因也各不相同。",
  "factual_rebuttal": {
    "key_points": [
      "优才计划采取择优录取机制，通过率取决于申请人的综合竞争力，并非随机审批",
      "影响通过率的核心因素：行业是否属于人才清单、材料准备的完整度和说服力、申请时机",
      "您朋友被拒可能有具体原因（材料不完整、分数不够、不在热门行业等），不代表所有人都会被拒",
      "您28岁+硕士+5年IT经验，年龄和行业（科技领域）都是加分项"
    ],
    "data_references": [
      "IT/科技行业属于香港重点发展的14个科技领域之一",
      "优才计划已取消年度配额限制，全年接受申请"
    ],
    "sources": [
      {
        "title": "优才计划最新申请要求与审批标准",
        "article_id": "qmas-criteria-001"
      },
      {
        "title": "香港人才清单行业分类",
        "article_id": "talent-list-001"
      }
    ]
  },
  "success_story_reference": {
    "scenario": "一位29岁、普通本科毕业的数据分析师，凭借在AI领域的项目经验和行业论文，成功通过优才计划。关键在于材料中充分展示了行业贡献。",
    "relevance": "用户同样来自IT领域，且学历更高（硕士），如果能充分展示专业能力，通过可能性不低"
  },
  "suggested_response": "听到朋友的经历确实会让人担心，这种心情完全可以理解。\n\n不过每个申请人的情况差异很大，您朋友被拒可能有材料、时机或分数等方面的具体原因。优才是择优录取，关键在于怎么呈现自己的竞争力。\n\n从您的条件来看，28岁年龄加分很高，硕士学历是加分项，IT行业属于香港重点发展领域。如果能在申请材料中突出您在科技领域的项目经验和成果，竞争力是不弱的。\n\n要不要我帮您更详细地分析一下各项评分情况？这样您对自己的实际竞争力会有更清晰的判断。",
  "follow_up_action": {
    "action": "provide_more_data",
    "detail": "建议接下来调用 Assessment Expert 做一次完整评估，用具体分数让用户看到自己的竞争力。数据比口头安慰更有说服力。"
  }
}
```

### 场景 3：家庭顾虑

**Coordinator 调用**：

```json
{
  "tool": "invoke_objection_handler",
  "input": {
    "objection": "我倒是想去，但我老婆觉得孩子在内地读书挺好的，不想折腾",
    "userContext": "用户38岁，已婚有孩子（年龄未知），TTPS B类高度推荐。之前对话很积极。",
    "category": "TTPS"
  }
}
```

**返回结果**：

```json
{
  "objection_category": "FAMILY",
  "severity": "high",
  "empathy_response": "家人的意见确实很重要，毕竟移民是全家的大事。您太太关心孩子的教育稳定性，这完全可以理解。",
  "factual_rebuttal": {
    "key_points": [
      "拿到香港身份并不意味着必须立即搬过去，很多家庭选择'先拿身份、后续安排'的方式",
      "高才通获批后，孩子可以享受香港教育资源（包括国际学校、双语教育），但不强制转学",
      "持港身份的孩子在内地参加联考（DSE/港澳台联考）有更多升学选择",
      "可以维持'一家两地'模式：一方在港工作保持身份续签，家人不一定要搬迁"
    ],
    "data_references": [
      "持香港居民身份的学生可参加港澳台联招考试",
      "高才通签证持有人的受养人可申请随行签证",
      "香港7年居住可申请永居，但不要求连续居住"
    ],
    "sources": [
      {
        "title": "香港身份与子女教育规划指南",
        "article_id": "family-education-001"
      }
    ]
  },
  "success_story_reference": {
    "scenario": "一位类似情况的家庭，先生先通过高才通拿到香港身份，太太和孩子继续在内地。两年后孩子面临小升初时，全家利用港籍身份获得了国际学校的入学机会。",
    "relevance": "用户也是已婚有孩子，可以用灵活的方式先拿身份、不急于搬迁"
  },
  "suggested_response": "家人的意见确实很重要，移民毕竟是全家的大事。您太太关心孩子的教育稳定性，这是非常负责任的想法。\n\n其实拿到香港身份并不意味着必须马上搬过去。很多家庭的做法是'先拿身份、灵活安排'——孩子可以继续在内地读书，等到合适的时机（比如升学节点）再考虑是否过去。\n\n而且港籍孩子还多了一条路：可以参加港澳台联考，升学选择更多。相当于给孩子多了一个选择，而不是替他们做决定。\n\n要不和太太分享一下这些信息？有时候换个角度来看，'多一个身份'和'一定要搬家'是完全不同的概念。",
  "follow_up_action": {
    "action": "give_space",
    "detail": "家庭异议需要给用户时间与家人商量。不要催促决定，可以提供一些教育方面的资料链接让用户带回去与太太讨论。"
  }
}
```
