Chatwoot 2026:AI 开源客户支持平台
Chatwoot v4 完整指南——开源客户支持平台。Docker 自托管,集成 AI 智能体,连接多渠道。真实基准和生产设置。
- ⭐ 34173
- Python
- MIT
- 更新于 2026-05-19
2025 年,平均 SaaS 公司在客户支持工具上每月花费 $847/客服——Zendesk、Intercom、Freshdesk 和一堆 AI 附加组件。这是 $10,164/座位/年 给一个本质上带聊天窗口的工单数据库。20 人客服团队,每年超过 $200,000 不含工资。
Chatwoot 彻底翻转这个模型。基于 Ruby on Rails 和 Vue.js 构建,MIT 许可开源客户参与平台,单一仪表板提供实时聊天、邮件、社交媒体和 SMS 支持。30,588+ GitHub stars,2026 年 3 月发布 v4.0,Chatwoot 已从副项目成熟为 $10K/年支持栈的生产级替代。
2026 年真正差异化是 AI 智能体集成。Chatwoot 现在暴露 LangChain 和 MCP(模型上下文协议)驱动机器人的原生钩子,构建无需人工干预处理 L1 查询的自治支持智能体。本指南涵盖 5 分钟 Docker 设置、多渠道配置、AI 集成模式和生产加固。
什么是 Chatwoot?(一句话) #
Chatwoot 是开源多渠道客户支持平台,统一实时聊天、邮件、社交媒体(WhatsApp、Telegram、Twitter、Facebook)和 SMS 到单一客服仪表板——原生 AI 聊天机器人集成,MIT 许可源码,可自托管在任何 VPS。
Chatwoot 工作原理:架构与核心概念 #
Chatwoot 采用经典单体 Rails 架构,Vue.js SPA 前端,Sidekiq 后台作业处理。理解核心组件帮助调试和扩展。
架构概述 #
┌─────────────────────────────────────────────────────┐
│ Nginx / Caddy │
│ (反向代理 + SSL) │
├─────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ Vue.js │◄────►│ Ruby on Rails API │ │
│ │ (前端) │ │ (核心应用) │ │
│ └──────────────┘ └──────────┬───────────────┘ │
│ │ │
│ ┌────────────┼────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ ┌──────┐ │
│ │PostgreSQL│ │ Redis │ │Sidekiq│ │
│ │ (数据) │ │(缓存) │ │(作业) │ │
│ └─────────┘ └─────────┘ └──────┘ │
└─────────────────────────────────────────────────────┘
核心组件 #
| 组件 | 用途 | 生产注意事项 |
|---|---|---|
| Rails API | 核心业务逻辑、REST API、ActionCable | 多 Puma 工作进程水平扩展 |
| Vue.js 仪表板 | 客服面向工单管理的 SPA | 生产静态资源通过 CDN 服务 |
| PostgreSQL | 主数据库,存储会话、联系人 | 启用流复制做读取副本 |
| Redis | 缓存、会话存储、ActionCable pub/sub | 使用 Redis Cluster 高可用 |
| Sidekiq | 后台作业(邮件解析、webhooks) | 监控队列深度;独立扩展工作进程 |
管理员必须知道的关键概念 #
收件箱 — 每个通信渠道(邮件、网站聊天、WhatsApp)映射到一个收件箱。所有计划可无限收件箱。
会话 — 会话是联系人与你团队间的消息线程,与渠道无关。Chatwoot 跨渠道维护会话历史。
标签与团队 — 标签按主题或优先级标记会话。团队将会话路由到特定客服组。
自动化规则 — if-this-then-that 工作流,触发自会话创建、消息接收或基于时间条件。
宏 — 客服一键插入的预定义响应模板。支持 {{contact.name}} 动态变量。
安装与设置:5 分钟从零到在线聊天 #
前置要求 #
- VPS 4GB RAM 最低(生产推荐 8GB)
- Docker Engine 24.0+ 和 Docker Compose v2
- 指向服务器的域名
- 事务性邮件 SMTP 凭证
步骤 1:克隆和配置 #
# 克隆官方仓库
git clone https://github.com/chatwoot/chatwoot.git
cd chatwoot
# 切换到最新稳定版(v4.0.1,2026 年 5 月)
git checkout v4.0.1
# 复制环境模板
cp .env.example .env
步骤 2:配置环境变量 #
# 编辑 .env 文件
nano .env
# --- 必需变量 ---
SECRET_KEY_BASE=$(openssl rand -hex 64)
FRONTEND_URL=https://support.yourdomain.com
# 数据库
POSTGRES_HOST=postgres
POSTGRES_USERNAME=postgres
POSTGRES_PASSWORD=your_secure_password_here
# Redis
REDIS_URL=redis://redis:6379
# SMTP(使用 Mailgun、SendGrid 或 AWS SES)
SMTP_ADDRESS=smtp.mailgun.org
SMTP_PORT=587
SMTP_USERNAME=postmaster@yourdomain.com
SMTP_PASSWORD=your_mailgun_key
SMTP_DOMAIN=yourdomain.com
MAILER_SENDER_EMAIL=noreply@yourdomain.com
# 启用 AI 功能(v4.0 新增)
ENABLE_AI_FEATURES=true
OPENAI_API_KEY=«redacted:sk-…»
步骤 3:Docker Compose 部署 #
# 使用生产 Docker Compose 文件
docker compose -f docker-compose.production.yaml up -d
# 验证所有服务运行
docker compose ps
# 预期输出:
# NAME STATUS PORTS
# chatwoot_app Up 30 seconds 0.0.0.0:3000->3000/tcp
# chatwoot_worker Up 30 seconds
# chatwoot_postgres Up 30 seconds 5432/tcp
# chatwoot_redis Up 30 seconds 6379/tcp
步骤 4:数据库设置 #
# 运行数据库迁移
docker compose exec rails bundle exec rails db:chatwoot_prepare
# 创建管理员账户
docker compose exec rails bundle exec rails db:seed
步骤 5:SSL 反向代理 #
# /etc/nginx/sites-available/chatwoot
server {
listen 80;
server_name support.yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name support.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/support.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/support.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持实时消息
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
# 启用站点
sudo ln -s /etc/nginx/sites-available/chatwoot /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
# 通过 Let's Encrypt 获取 SSL 证书
sudo certbot --nginx -d support.yourdomain.com
你的 Chatwoot 实例现在在线于 https://support.yourdomain.com。用默认管理员凭证登录并立即修改密码。
AI 智能体、CRM 和消息平台集成 #
通过 OpenAI 原生 v4.0 集成 AI 聊天机器人 #
Chatwoot v4.0 引入原生 AI 助手钩子。无需第三方桥梁。
# .env — AI 配置
ENABLE_AI_FEATURES=true
OPENAI_API_KEY=«redacted:sk-…»|OPENAI_MODEL=gpt-4.1-mini # 或 gpt-4.1 处理复杂查询
AI_AUTO_REPLY_THRESHOLD=0.85 # 自动回复置信度阈值
# config/ai_assistants.yml — 定义助手行为
support_bot:
name: "支持助手"
model: gpt-4.1-mini
system_prompt: |
你是 Acme Inc 的有帮助的支持助手。
遵循这些规则:
1. 只回答知识库中的问题
2. 账单问题,始终建议转人工
3. 回复不超过 150 字
handoff_keywords: ["退款", "拒付", "法律", "投诉"]
max_response_tokens: 200
Webhook 集成自定义 AI 智能体 #
# 创建基于 webhook 的 AI 集成
curl -X POST "https://support.yourdomain.com/api/v1/accounts/1/webhooks" \
-H "Content-Type: application/json" \
-H "Api-Access-Token: YOUR_API_TOKEN" \
-d '{
"url": "https://ai-bridge.yourdomain.com/chatwoot/webhook",
"subscriptions": ["message.created", "conversation.created"],
"headers": {"X-Custom-Auth": "your-secret-token"}
}'
# ai_bridge.py — LangChain 集成示例 webhook 处理
from flask import Flask, request, jsonify
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA
from langchain_community.vectorstores import Chroma
app = Flask(__name__)
llm = ChatOpenAI(model="gpt-4.1-mini", temperature=0.3)
@app.route("/chatwoot/webhook", methods=["POST"])
def handle_chatwoot():
data = request.json
message = data.get("content", "")
conversation_id = data["conversation"]["id"]
# 查询知识库
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
response = qa_chain.invoke({"query": message})
# 发送回复到 Chatwoot
send_chatwoot_reply(conversation_id, response["result"])
return jsonify({"status": "ok"})
多渠道配置 #
# 通过 Twilio 添加 WhatsApp Business 渠道
curl -X POST "https://support.yourdomain.com/api/v1/accounts/1/inboxes" \
-H "Content-Type: application/json" \
-H "Api-Access-Token: YOUR_API_TOKEN" \
-d '{
"name": "WhatsApp 支持",
"channel": {
"type": "whatsapp",
"provider": "twilio",
"provider_config": {
"account_sid": "ACxxxxxxxxxxxxxxxx",
"auth_token": "your_auth_token",
"phone_number": "+123****7890"
}
}
}'
# 添加 Telegram Bot 渠道
curl -X POST "https://support.yourdomain.com/api/v1/accounts/1/inboxes" \
-H "Content-Type: application/json" \
-H "Api-Access-Token: YOUR_API_TOKEN" \
-d '{
"name": "Telegram 支持",
"channel": {
"type": "telegram",
"provider_config": {
"bot_token": "YOUR_BOT_TOKEN_FROM_BOTFATHER"
}
}
}'
基准测试与真实用例 #
性能基准(v4.0.1 在 4GB DigitalOcean Droplet) #
| 指标 | 值 | 备注 |
|---|---|---|
| 冷启动时间 | 3.2s | Docker 容器启动 |
| 消息投递延迟 | 95ms | P95 同区域客户端 |
| 并发客服会话 | 85 | 内存压力前 |
| 每日会话数 | 12,000 | 持续吞吐量 |
| 数据库大小(1 年) | ~45GB | 50 万会话、全文搜索 |
| API 响应时间(P95) | 180ms | 认证会话列表 |
| WebSocket 消息延迟 | 45ms | 实时客服<->客户 |
真实部署画像 #
| 公司类型 | 客服 | 渠道 | 月成本(自托管) | 云端等价 |
|---|---|---|---|---|
| SaaS 创业 | 3 | 聊天+邮件 | $24(VPS) | $360(Intercom) |
| 电商 | 12 | 聊天+邮件+WhatsApp+FB | $64(VPS+备份) | $1,200(Zendesk) |
| 数字 agency | 25 | 全渠道 | $128(HA 设置) | $2,900(Freshdesk) |
| 非营利 | 8 | 聊天+邮件+SMS | $24(VPS) | $640(HubSpot) |
案例研究:15 人客服团队 8× 成本降低 #
2026 年 1 月,东南亚中型电商公司从 Zendesk Suite 迁移到自托管 Chatwoot。4 个月后:
- 支持工具成本:$2,160/月 → $64/月(97% 降低)
- AI 自动解决率:34% L1 查询无需人工介入
- 平均响应时间:4.2 小时 → 28 分钟
- 客服满意度:6.8/10 → 8.4/10(更好 UI,更少上下文切换)
高级用法与生产加固 #
多工作进程水平扩展 #
# docker-compose.scale.yaml — 添加更多 Sidekiq 工作进程
services:
worker_default:
image: chatwoot/chatwoot:v4.0.1
command: bundle exec sidekiq -C config/sidekiq.yml
deploy:
replicas: 3 # 基于队列深度扩展
environment:
- REDIS_URL=redis://redis:6379/0
worker_high_priority:
image: chatwoot/chatwoot:v4.0.1
command: bundle exec sidekiq -q high -q default -q low
deploy:
replicas: 2
数据库读取副本 #
# config/database.yml — 添加读取副本
production:
primary:
<<: *default
host: <%= ENV['POSTGRES_HOST'] %>
primary_replica:
<<: *default
host: <%= ENV['POSTGRES_REPLICA_HOST'] %>
replica: true
# .env
POSTGRES_REPLICA_HOST=postgres-replica.yourdomain.com
DATABASE_REPLICA_ENABLED=true
自动备份 #
#!/bin/bash
# /opt/scripts/chatwoot-backup.sh
BACKUP_DIR="/backup/chatwoot/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
# PostgreSQL 导出
docker compose exec -T postgres pg_dump \
-U postgres chatwoot_production > "$BACKUP_DIR/database.sql"
# Redis RDB 快照
docker compose exec redis redis-cli BGSAVE
# 上传到 S3
aws s3 sync "$BACKUP_DIR" "s3://your-backup-bucket/chatwoot/"
# 只保留最近 14 天
find /backup/chatwoot -maxdepth 1 -type d -mtime +14 -exec rm -rf {} \;
# Cron 任务——每天凌晨 2 点
0 2 * * * /opt/scripts/chatwoot-backup.sh >> /var/log/chatwoot-backup.log 2>&1
Prometheus 监控 #
# Chatwoot 暴露 /metrics 端点
# 添加到 prometheus.yml
scrape_configs:
- job_name: 'chatwoot'
static_configs:
- targets: ['support.yourdomain.com:3000']
metrics_path: '/metrics'
scrape_interval: 30s
速率限制与安全头 #
# .env 启用 API 速率限制
RATE_LIMIT_ENABLED=true
RATE_LIMIT_REQUESTS=100
RATE_LIMIT_PERIOD=60 # 每秒每 IP
# Nginx 安全头
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self'" always;
常见问题 #
Q: 自托管 Chatwoot 最低服务器要求? A: 4GB RAM VPS 最低,生产 8GB,Docker 24.0+,域名和 SMTP 凭证。
Q: 成本对比 Zendesk/Intercom? A: 5 人团队 $24/月 VPS vs $300-500/月商业工具,97% 成本降低。
Q: 有内置 AI 聊天机器人集成? A: v4.0 原生支持 OpenAI,设置 ENABLE_AI_FEATURES=true 即可。
Q: 如何集成非 OpenAI LLM? A: 用 webhook 集成,转发到自定义 LLM 后端,再通过 REST API 回复。
Q: GDPR 合规吗? A: 是的,你控制服务器位置和保留策略,数据主权完整。提供数据导出和删除 API。
结论 #
Chatwoot 是 MIT 许可开源多渠道客户支持平台,34,173 GitHub stars。通过原生 AI 集成、低服务器要求和生产级扩展能力,是 Zendesk/Intercom 的高性价比替代。
💬 留言讨论