自部署开源 AI 客服的 10 个常见坑(含修复)
我们整理了过去一年帮团队部署 Chatwoot + Dify / FastGPT 时遇到最频繁的 10 个坑,每个附复现条件和修复方案。
1. Chatwoot 邮件发不出#
症状:注册 / 工单通知邮件全部失败。
原因:默认 SMTP 是 dev 配置;MAILER_SENDER_EMAIL 与认证发件域名不一致。
修复:用 Postmark / SES,确保 MAILER_SENDER_EMAIL 在发件域的 SPF / DKIM 中。
2. Dify 知识库检索回来 0 条#
症状:上传文档后聊天回复「我没有相关信息」。
原因:90% 是 Embedding 维度与向量库冲突——你重新换了模型但没 reset 向量库。
修复:删除知识库重建,或在「设置 → 模型 → Embedding」固定一个模型不再换。
3. AI 回答把内部信息泄露给用户#
症状:AI 回复中出现「根据你的内部 SOP 文档…」。
原因:把内部和外部知识库混在一个 dataset。
修复:两个 dataset 分开。Prompt 加:「只引用 dataset ‘public’ 的内容」。
4. Cloudflare Tunnel 502#
症状:访问域名 502。
原因:容器监听 127.0.0.1 而不是 0.0.0.0。
修复:docker-compose 改 ports 或绑 0.0.0.0。
5. 知识库每次更新 RAG 效果都变差#
原因:分块策略每次都重选;新文档把旧高质量内容稀释。
修复:固化分块策略,新文档单独建 dataset 跑评估,达标后再合并。
6. 长对话上下文超限#
症状:5 轮后 AI 忘记之前说过什么。
原因:Dify 默认上下文窗口 5 轮;模型上下文也有限。
修复:Dify 调到 15-20 轮,或加「对话摘要」节点。
7. AI 客服首响时间被 LLM 拖垮#
症状:FRT 8-15 秒。
原因:Stream 没开 + Cloudflare 缓冲 + 模型选错。
修复:开 Stream、关闭 Cloudflare Auto Minify / Rocket Loader、首选低延迟模型(Doubao / Groq Llama)。
8. 工具调用「函数找不到」#
症状:Dify Agent 调用工具时报 function not found。
原因:工具 schema 校验失败但报错不明显。
修复:先在 Postman 单独跑工具 endpoint,确认 OpenAPI schema 与 Dify 一致。
9. 客户问敏感问题被 AI 回答#
症状:AI 回答了不该回答的内容(政治、医疗建议)。
原因:Prompt 没加约束 + 没有兜底拦截。
修复:Prompt 显式列禁区 + 加一道关键词预过滤(n8n 节点)。
10. 月底账单暴涨#
症状:LLM tokens 月费突然 3-5 倍。
原因:某个 Workflow 出了死循环;或被 bot 流量灌爆。
修复:
- Dify 给每个应用设月度 token 上限
- Cloudflare Turnstile 防 bot
- 设置异常告警(单小时 > X 块)