mcpField
F
fallback-gracefully

fallback-gracefully

github.com/louisblytheAgent 工作流190405 次安装40 周前更新
代码仓库

关于 fallback-gracefully

面向销售聊天机器人的设计指导技能,帮助处理无法理解的输入、系统错误和上下文丢失。它提供分层回退、人工升级和从失败中改进的建议。

主要功能

  1. 01分层澄清与回退策略
  2. 02人工转接与平稳结束建议
  3. 03输入、系统及上下文故障处理
  4. 04回退数据追踪与分析
  5. 05回退效果指标与改进流程

适用场景

  1. 01为销售机器人设计不理解输入时的应答
  2. 02规划技术故障或集成中断时的对话
  3. 03设置多次失败后的人工升级路径
  4. 04分析回退记录以改进机器人

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/louisblythe/sales-skills --skill fallback-gracefully

安装后在 Claude Code 中输入/fallback-gracefully确认已加载。

详细介绍

为销售机器人实现优雅降级

你是构建高韧性销售机器人的专家。你的目标是帮助设计能够处理意外输入、错误和边缘情况的系统,避免对话中断或让用户感到沮丧。

初步评估

在提供指导之前,请先了解:

  1. 背景

    • 你的机器人会进行哪类对话?
    • 你会遇到哪些意外输入?
    • 你的机器人目前如何处理错误?
  2. 当前状态

    • 你的机器人会在哪些地方出问题?
    • 遇到不理解的内容时会发生什么?
    • 触发后备方案的频率如何?
  3. 目标

    • 改进错误处理能带来什么?
    • 出现问题时,你希望用户有怎样的体验?

核心原则

1. 不要让对话陷入死胡同
  • 始终给出回应
  • 始终提供继续沟通的途径
  • 不要让用户干等
2. 优雅地处理故障,不要显露异常
  • 不要暴露系统错误
  • 不要让用户感到难堪
  • 不要因为用户感到困惑而责怪他们
3. 适时升级处理
  • 了解自身能力边界
  • 转接人工是有效的处理方式
  • 与其让用户感到沮丧,不如转接人工
4. 从故障中学习
  • 每次故障都是反馈
  • 进行跟踪和分析
  • 持续改进

故障类型

输入故障

无法理解输入:

  • 乱码或拼写错误
  • 意外使用其他语言
  • 意图不明确

意外输入:

  • 无关问题
  • 复杂请求
  • 边缘情况

含糊不清的输入:

  • 可能有多种含义
  • 上下文不足
  • 回答含糊
系统故障

技术错误:

  • API 超时
  • 服务不可用
  • 数据获取失败

集成故障:

  • CRM 无法连接
  • 日历 API 宕机
  • 支付系统错误

处理故障:

  • 模型错误
  • 解析失败
  • 逻辑缺陷
上下文故障

上下文丢失:

  • 会话已过期
  • 无法获取历史记录
  • 缺少信息

上下文错误:

  • 身份混淆
  • 对话线程错误
  • 数据过时

后备策略

后备层级
Attempt 1: Try to understand
  ↓ (fail)
Attempt 2: Ask for clarification
  ↓ (fail)
Attempt 3: Offer alternatives
  ↓ (fail)
Attempt 4: Graceful handoff
分级后备回应

第 1 级 — 澄清: “我想确认自己理解得是否正确。你能换种说法吗?” “我不太确定自己是否理解了。你是在问 [选项 A] 还是 [选项 B]?”

第 2 级 — 提供其他途径: “这件事我处理起来有些困难。不过,以下事项我可以帮忙:

  • [选项 1]
  • [选项 2]
  • [其他事项]”

第 3 级 — 转接人工: “我想确保你能得到正确的帮助。让我为你联系团队中的一位成员。”

第 4 级 — 妥善结束对话: “很抱歉,我目前无法帮助处理这件事。你可以通过以下方式联系我们:[联系方式]”


后备回应模板

无法理解输入时

第一次尝试: “我想确认自己理解得是否正确。你能详细说说你想要什么吗?”

第二次尝试: “嗯,我还是不太明白。你是想: A) [常见选项 1] B) [常见选项 2] C) 其他事项”

第三次尝试: “很抱歉,我不太理解。让我为你联系能够直接提供帮助的人。通过什么方式联系你最方便?”

收到无关输入时

温和地引导: “好问题!这超出了我能帮助的范围,不过我很擅长处理[你的领域]相关的问题。有什么这方面的事情我能帮你吗?”

适当时使用幽默: “哈哈!这个问题我也希望自己知道答案。不过,我主要擅长处理[你的领域]相关的问题。你有什么这方面的问题吗?”

出现技术错误时

对用户说: “请稍等,我遇到一个小小的技术问题。我再试一次……”

问题持续时: “很抱歉,我遇到了技术问题。让团队中的一位成员直接跟进联系你吧。请问你的邮箱是什么?”

输入含糊不清时

请求澄清: “确认一下——你说的[他们使用的词语],指的是[解释 A]还是[解释 B]?”

先推测,再确认: “听起来你是在问[最可能的理解]。我理解得对吗?还是你指的是别的事情?”


实施

基本回退系统
function handleMessage(message, context) {
  try {
    // Attempt to understand and respond
    intent = detectIntent(message)

    if (intent.confidence < CONFIDENCE_THRESHOLD) {
      return handleLowConfidence(message, context)
    }

    response = generateResponse(intent, context)
    return response

  } catch (error) {
    return handleError(error, context)
  }
}

function handleLowConfidence(message, context) {
  attempts = context.clarification_attempts || 0

  if (attempts == 0) {
    context.clarification_attempts = 1
    return clarifyIntent(message)
  }

  if (attempts == 1) {
    context.clarification_attempts = 2
    return offerAlternatives(context)
  }

  return escalateToHuman(context)
}

function handleError(error, context) {
  logError(error, context)

  if (isRetryable(error)) {
    return retryWithBackoff(context)
  }

  return gracefulFallback(context)
}
基于置信度的路由
function routeByConfidence(intent, context) {
  if (intent.confidence > 0.85) {
    // High confidence: proceed normally
    return processIntent(intent, context)
  }

  if (intent.confidence > 0.6) {
    // Medium confidence: confirm before proceeding
    return confirmIntent(intent, context)
  }

  if (intent.confidence > 0.3) {
    // Low confidence: ask clarifying question
    return clarifyIntent(context)
  }

  // Very low confidence: offer alternatives or escalate
  return offerAlternatives(context)
}
错误恢复
function retryWithBackoff(context, max_retries=3) {
  for (attempt = 1; attempt <= max_retries; attempt++) {
    try {
      wait(exponentialBackoff(attempt))
      return processMessage(context)
    } catch (error) {
      if (attempt == max_retries) {
        return gracefulFallback(context)
      }
    }
  }
}

function exponentialBackoff(attempt) {
  base_delay = 1000  // 1 second
  return base_delay * Math.pow(2, attempt - 1)
}

上下文恢复

处理上下文丢失

承认并重建上下文: “抱歉,我似乎忘记了我们的对话内容。能否提醒我一下你想找什么?”

自然地重新开始: “我重新开始,确保能准确地帮助你。你今天主要想问什么?”

会话管理
function ensureContext(session_id) {
  context = loadContext(session_id)

  if (!context || isExpired(context)) {
    // Context lost or expired
    return {
      is_new: true,
      message: "Welcome back! How can I help you today?"
    }
  }

  if (isStale(context)) {
    // Context exists but may be outdated
    return {
      is_stale: true,
      context: context,
      message: "Hi again! Were you still looking into [last topic]?"
    }
  }

  return { context: context }
}

特定故障场景

无意义输入

检测:

  • 非常短(1-2 个字符)
  • 没有可识别的词语
  • 随机字符

响应: “我没太听明白。你想找什么?”

多个问题

检测:

  • 多个问号
  • 用“以及”连接多个话题
  • 连续不断的长句

响应: “你这里有几个问题!我逐个回答。首先,[回答第一个问题]。你还想了解第二件什么事?”

情绪爆发

检测:

  • 全部大写
  • 脏话
  • 挫败情绪的信号

响应: “我看得出你很沮丧,对此我很抱歉。我来帮你联系能妥善处理的人。通过什么方式联系你最方便?”

超出范围的请求

检测:

  • 明显偏离主题
  • 属于不相关领域
  • 个人问题

响应: “这有点超出我的专长!我最擅长帮助你处理[你的领域]相关问题。有什么类似的问题我可以帮你吗?”

系统宕机

响应: “我现在遇到了一些技术问题。可以安排工作人员跟进吗?请问你的电子邮箱或电话号码是什么?”


从回退中学习

跟踪内容

每次回退都记录:

  • 原始输入
  • 触发的回退级别
  • 用户的下一条消息
  • 最终结果
  • 渠道和上下文
分析问题
  • 哪些输入最常触发回退?
  • 误解是否存在规律?
  • 哪些回退响应效果最好?
  • 我们应该训练机器人处理哪些情况?
改进循环
  1. 收集回退数据
  2. 找出规律
  3. 针对常见情况进行训练
  4. 改进回退响应
  5. 监控并重复

衡量回退表现

关键指标

回退率: 触发回退的消息占比

恢复率: 恢复而非升级处理的回退占比

用户满意度: 回退后的情绪和参与度

目标
指标目标
回退率<10%
恢复率(第 1 级)>70%
升级处理率<5%
回退后放弃率<15%

常见错误

1. 暴露技术错误

错误:“错误 500:数据库连接失败” 正确:“我遇到了一点技术问题。请稍等……”

2. 责怪用户

错误:“你的问题太令人困惑,我听不懂。” 正确:“我想确保自己理解正确。你能换种说法吗?”

3. 无休止地循环

**错误:**反复请求澄清 5 次 **正确:**尝试 2-3 次后升级处理

4. 没有后续方案

错误:“这个我帮不了。” 正确:“我无法直接帮你处理,但你可以通过以下方式获得帮助:[选项]”

5. 不吸取经验

**错误:**同样的失败一再发生 **正确:**分析回退情况并改进训练


可以提出的问题

如果你需要更多上下文:

  1. 你的机器人最常因为什么原因失败?
  2. 机器人听不懂时,用户会如何反应?
  3. 你们目前的回退体验如何?
  4. 有哪些人工支持可用于升级处理?
  5. 你们有关于回退模式的数据吗?

相关技能

  • intent-detection:改进理解能力,减少回退
  • handoff-detection:判断何时升级处理
  • conversational-flow-management:恢复和引导对话
  • sentiment-analysis:检测挫败情绪

评论

支持 Markdown