SWE · System Design / 设计追问

客服Agent转人工:会话所有权、摘要与消息不断档

机器人与人工交接期间,避免双方同时作答或丢消息。

题目重点:机器人与人工交接期间,避免双方同时作答或丢消息。

题意与假设

这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。

  • 训练合同:Agent提供建议与有限工具,用户可要求人工;升级规则及敏感事项由业务定义。
  • 会话有唯一owner状态BOT/HANDOFF_PENDING/HUMAN/CLOSED,保存消息顺序和版本;具体渠道/业务三需求未公开,不当成给定事实。

解题路线

  1. 请求转人工时原子改变会话状态并生成handoffId,Agent停止新工具动作;队列按优先级/技能/等待时间派单。已在飞行动作通过状态版本或取消令牌检查是否还能提交。
  2. 人工接手获取消息cursor、简洁摘要、已执行动作和未解问题,原文可查。摘要保留来源与不确定性,不能把模型推断当客户已确认事实。
  3. 交接期间新消息继续入持久日志并按cursor补给人工;ACK cursor避免只发一次推送造成丢失。人工迟迟未分配时告知排队状态,给明确重试或回呼策略。
  4. 结束或退回机器人需显式状态转换,旧owner写入用fencing版本拒绝。权限按工单/租户约束,工具动作仍使用授权与幂等键。

手动走一遍

BOT发起退款后用户转人工,退款调用未返回;handoff摘要记“处理中”,人工查询相同operationId,不能重新发一笔退款。客服分配成功但响应丢失,再次领取同handoffId返回同一owner,避免双人接单。

规模与取舍

容量按请求量×升级率×人工平均处理时长估算。比如每分钟1000会话、10%升级、处理6分钟,稳态至少约600并发座席占用,另计目标等待与峰值。

易错点与追问

容易失分的边界

  • 切换UI标签不等于切换后端写入权限。
  • 只传模型摘要而丢失原聊天,会让人工无法核对误总结。

继续深挖

  • 人工失联时如何重新派单,又避免两位客服同时继续处理?
  • Agent低置信度升级如何用eval校准,控制误升级和漏升级?
✓已复制微信号!