AI客服:AI-First 客服第三天就崩,往往不是模型,是账单

我见过不少团队对“AI-First 客服”有种不切实际的浪漫想象:把工单丢给大模型,它就像一个永不加班、永不请假的超级客服,语气礼貌,还能顺便把知识库也写了。
现实更像什么?更像你把餐厅前台全换成自助点餐机,然后第三天发现:机器并不是“不会累”,它只是“不会背锅”。一旦用户问出菜单上没有的菜,或者要退菜、改价、走投诉流程,它就开始装死。
这个标题来自一篇 Medium 故事(“We Fired 40% of Support. The AI Quit on Day 3.”)。原文我这里直接打不开(被 Cloudflare 拦了),但光从标题和那句副标题“AI-first 客服的隐藏运营成本”就够我们把工程账算一遍了:AI 客服失败,通常不是技术不够炫,而是系统不够像“客服系统”。
如果你正在做 AI客服,或者更准确地说,你在做客户支持自动化,这里先把话说狠一点:别急着裁人,先把系统改成“可以随时撤回”的样子。
下面这篇就聊一件很朴素的事:你要的不是“AI 替代客服”,你要的是“AI 帮客服把脏活累活干掉”,而且随时能撤回。
先把锅找对:AI客服到底在干什么活?
客服不是聊天,它更像“带权限的流程引擎”,只不过入口是一段自然语言。
一个工单背后通常有四类工作:
- 识别意图:这是 bug?咨询?退款?投诉?账号被盗?
- 取证与定位:查日志、查订单、看账号状态、问关键问题补全信息。
- 做决策:退不退款?赔不赔?走哪条 SOP?要不要升级?
- 执行动作:改状态、重置、补发、退费、封禁、提工单给工程师。
大模型擅长的是第 1 和第 2 的一部分(尤其是“把话说顺”),第 3 和第 4 如果不加限制,就会变成“一个很会说话的实习生,拿着你家的总钥匙”。
“第三天就崩”的五个隐藏成本
我把常见翻车点浓缩成五条,你可以当成 AI-First 客服的体检表。
1) 长尾问题比你想的长得多
人类客服最强的能力不是背答案,是“猜测你真正的问题,然后把路问出来”。而 AI 一旦离开知识库覆盖范围,就容易:
- 说得很像那么回事,但其实答非所问
- 问题问不对,越问越偏
- 把“不确定”伪装成“确定”
客服场景里,长尾不是 20%,经常是 80%。你把 40% 客服裁掉,剩下的 60% 立刻被长尾淹没,这时候 AI 的“平均水平”意义不大,你会被最糟糕的那 1% 体验拖垮。
2) SLA 是硬的,模型是软的
支持团队的指标是硬指标:首次响应、解决时长、升级率、CSAT。
模型的行为是软的:同一句话今天这样答,明天可能换个说法;同一个边界条件,遇到不同上下文就犹豫。
当你把 SLA 压在一个“概率型系统”身上,又没准备回退策略,第三天不崩才怪。
3) 权限与风控不是“加一句提示词”能解决的
“请不要退款”这句话对模型来说只是文字,对用户来说是钱。
客服动作里最危险的是这几类:
- 退款/赔付/赠送额度
- 账号安全(重置、绑定、解锁)
- 合同与合规(隐私、数据导出、删除)
- 处理愤怒用户(升级、安抚、赔偿承诺)
如果 AI 能直接执行这些动作,你不是在做自动化,你是在做“自动闯祸”。
4) 知识回流断了,AI 反而越用越笨
很多团队忽略一件事:客服系统的知识库不是写出来的,是“被逼出来的”。
人类客服每天都在把新问题变成 SOP:这次怎么解决,下次怎么更快。
你裁掉太多客服,或者让 AI 直接闭环不留痕,知识回流就断了。结果就是:
- 新问题没有人总结
- SOP 没有人更新
- AI 永远在用旧答案应付新世界
然后你会发现,AI 不仅没省心,还开始反复制造“二次咨询”和“升级工单”。
5) 没有可观测性,就没有责任边界
传统客服翻车,你能追问:谁回的?看了哪些信息?按了哪个按钮?
AI 翻车,如果你没有把输入、检索、提示词、输出、决策、执行、回退全链路打点,那现场会变成大型甩锅运动会:
- 产品说“是模型幻觉”
- 工程说“是知识库没覆盖”
- 运营说“是用户表达不清”
- 老板说“那就全回滚”
这就是“第三天回滚”的真实技术原因:你不是不想修,是不知道从哪修。
别 AI-First,试试 AI-Assisted:一个更容易活下来的架构
我更推荐把 AI 放到“辅助位”,先让它当三样东西:
- 分流员:帮你把工单分级、打标签、路由到正确队列
- 检索员:从知识库、历史工单里找出相关内容
- 起草员:把回复写成“人话”,并把引用来源贴出来
真正的“决策”和“执行”,按风险做分层:
- 低风险:允许自动发回复(例如 FAQ、状态说明)
- 中风险:AI 起草,人类一键确认
- 高风险:强制升级到人工,并且给出 AI 的定位建议
这听起来保守,但它有一个现实好处:你永远有退路。
实战:用 80 行 Python 写一个“能回退”的工单路由器
不接任何大模型 API,先把“流程骨架”搭出来:能分级、能兜底、能留痕。模型以后怎么换都行,骨架不换。
无论你用的是 Zendesk、Freshdesk、Intercom,还是自研工单系统,这个骨架都通用:先路由,再生成,再审批,再执行。
把下面这段存成 support_router.py 跑一下:
import json
import re
from dataclasses import dataclass
from datetime import datetime
@dataclass(frozen=True)
class Ticket:
id: str
subject: str
body: str
HIGH_RISK_PATTERNS = [
r"refund|chargeback|退款|退费|赔偿",
r"hack|hacked|breach|账号被盗|被盗|泄露",
r"lawsuit|legal|gdpr|隐私|合规|律师函",
]
def risk_level(text: str) -> str:
text = text.lower()
for p in HIGH_RISK_PATTERNS:
if re.search(p, text):
return "high"
if "angry" in text or "投诉" in text or "差评" in text:
return "medium"
return "low"
def decide_action(ticket: Ticket) -> dict:
text = f"{ticket.subject}\n{ticket.body}"
risk = risk_level(text)
if risk == "high":
return {"route": "human", "priority": "p0", "reason": "high_risk_policy"}
if risk == "medium":
return {"route": "human_review", "priority": "p1", "reason": "needs_empathy_or_policy"}
return {"route": "auto_reply", "priority": "p2", "reason": "low_risk_faq"}
def main():
tickets = [
Ticket("T-1001", "Can't login", "I forgot my password. Please help."),
Ticket("T-1002", "Refund request", "I want a refund. You charged me twice."),
Ticket("T-1003", "账号被盗了", "昨天半夜有人改了我邮箱,现在登录不上。"),
Ticket("T-1004", "你们服务太烂了", "我已经投诉了,还没人回。"),
]
for t in tickets:
decision = decide_action(t)
log = {
"ts": datetime.utcnow().isoformat() + "Z",
"ticket_id": t.id,
"decision": decision,
}
print(json.dumps(log, ensure_ascii=False))
if __name__ == "__main__":
main()
你会得到类似这样的输出:
{"ts":"2025-12-25T00:00:00Z","ticket_id":"T-1002","decision":{"route":"human","priority":"p0","reason":"high_risk_policy"}}
这段代码看起来很“原始”,但它解决了一个关键问题:先把风险兜住。之后你把 risk_level() 换成“LLM + 结构化输出 + 校验”,也还是同一个架构。
下一步再往上叠:
auto_reply:接 RAG 检索,生成带引用的草稿回复human_review:把草稿推到客服工作台,一键通过/修改/退回human:直接升级,并把“模型为什么判高风险”写清楚
这套东西怎么上线才不吓人
我建议按“胆子”从小到大来:
- 先做分流,不做自动回复:只打标签、分队列、建议优先级
- 再做起草,强制人工确认:AI 写回复,人类点发送
- 最后才放开低风险自动回复:并且必须能一键回滚到人工
同时把三类指标绑死:
- 体验指标:CSAT、升级率、复开率(同一问题二次咨询)
- 效率指标:首次响应、解决时长、每单人类触达次数
- 安全指标:高风险漏检率、错误动作次数、合规事件数
如果你做不到“今天开、明天关”的开关,那你就别让它自动发任何一句话。
常见坑:别让 AI 当“客服经理”
最后说几个特别容易踩的坑,都是我见过的真实事故类型:
- 把“省人”当成目标:结果工单没少,升级更多,反而把工程师拖下水当客服
- 让 AI 直接承诺赔偿/退款:用户截图一转发,法律和公关一起进场
- RAG 不做权限隔离:把别人的订单信息检索出来,那叫“AI 帮你泄露隐私”
- 没有离线评估集:上线只能靠用户当小白鼠,第三天被迫回滚很正常
- 没有回退策略:模型一抽风,团队只能连夜全量关停
AI 最擅长的是“写得像”,客服最怕的是“错得像对”。你得让它在错之前就停下来。
三行结论 + 下一步清单
三行结论:
- AI-First 客服最贵的不是模型费,是运营与风险成本。
- 先把“分级、兜底、留痕、回退”做出来,再谈自动化。
- 把 AI 放在辅助位,你才有资格让它逐步上位。
下一步清单(照着做,不花哨):
- 列出高风险意图清单:退款/安全/合规/投诉,先全部强制人工
- 做一个可回滚的开关:按渠道、按队列、按用户分群逐步放量
- 建 200 条离线评估集:从历史工单抽样,覆盖长尾和极端情绪
- 给每次回复打引用:没有来源的回答,一律降级为“建议升级人工”
觉得这篇文章有用吗?
如果你刚好也在折腾 AI客服,这里给你一份“行动指南”,别客气,照着抄:
- 点赞:点一下赞,相当于告诉我“这个方向值得继续挖”
- 转发:把链接甩给正在喊“全员 AI客服”的同事,救他也救你
- 收藏:先放进收藏夹,下次要写方案/做评审时能直接翻出来当论据
- 关注:关注梦兽编程,后面我会继续更新 AI 工程化落地的坑与解法
- 留言:你们的客服场景最难的是什么?把关键词丢评论区,我来写下一篇
小小技术指引(不同场景怎么做)
- 收藏:桌面浏览器按
Command+D(macOS)或Ctrl+D(Windows/Linux);手机用浏览器菜单里的“添加到书签/收藏” - 转发:复制地址栏链接发到群里;如果你们用飞书/Slack,把链接丢进对应的 support/ops 频道,顺手 @ 相关负责人
- 关注:用站点的 RSS(如果你在用阅读器)或直接在首页点关注入口;不想错过更新就别只靠“想起来再来看”