一家中型营销机构被客户邮件淹没。三名客户经理每天花半天时间分类请求、将信息复制到 Salesforce 并撰写状态更新。他们部署了 OpenClaw 来自动化整个流程——效果立竿见影。
邮件混乱
每天 200+ 封客户邮件,涉及 40 个活跃账户。每封邮件都需要分类(紧急/普通/仅知悉)、CRM 录入和适当路由。每天消耗 6 小时人力,零增值。
架构概览
OpenClaw 在自托管 Ubuntu 22.04 服务器(4核、8GB 内存)上运行,通过 IMAP 访问公司的 Google Workspace 邮箱。通过 REST API 连接 Salesforce,使用 Slack webhook 进行内部路由。本地 Llama-3-8B 模型(通过 Ollama)对邮件意图分类、提取结构化数据并生成草稿回复。
┌─────────────┐ IMAP/30秒 ┌──────────────┐
│ Gmail / │◄──────────────│ OpenClaw │
│ Workspace │───────────────►│ 节点 │
└─────────────┘ 草稿回复 └──────┬───────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│Salesforce│ │ Slack │ │ Notion │
│ CRM │ │ Webhook │ │ 日志库 │
└──────────┘ └──────────┘ └──────────┘OpenClaw 配置
# IDENTITY.md — 邮件分流代理 你是一家营销机构的邮件分流专家。 你的任务是分类、提取和路由客户邮件。 ## 分类规则 - 紧急:客户提到48小时内的截止日期、预算问题或投诉 - 待办:客户请求交付物、会议或状态更新 - 仅知悉:转发的通讯、抄送的邮件链、自动通知 - 垃圾:供应商推销、无关营销 ## 数据提取 对每封客户邮件,提取: 1. 客户公司名(与CRM匹配) 2. 项目名称(与活跃项目匹配) 3. 提到的截止日期 4. 预算数字(如有) 5. 情感倾向(正面/中性/负面) ## 回复规则 - 紧急 → 按模板起草回复,在 Slack #urgent-inbox 发告警 - 待办 → 创建 Salesforce 任务,起草回复,路由给客户负责人 - 仅知悉 → 标记、归档、更新 CRM 活动日志 - 绝对不要自动发送回复。始终创建草稿供人工审阅。
# docker-compose.yml — 邮件分流服务栈
version: '3.8'
services:
openclaw:
image: openclaw/openclaw:latest
ports:
- "18789:18789"
environment:
- OPENCLAW_MODEL=ollama:llama3:8b
- OPENCLAW_GATEWAY_TOKEN=${GATEWAY_TOKEN}
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- IMAP_USER=inbox@agency.com
- IMAP_PASSWORD=${IMAP_APP_PASSWORD}
- IMAP_POLL_INTERVAL=30
- SALESFORCE_CLIENT_ID=${SF_CLIENT_ID}
- SALESFORCE_CLIENT_SECRET=${SF_CLIENT_SECRET}
- SALESFORCE_REFRESH_TOKEN=${SF_REFRESH_TOKEN}
- SLACK_WEBHOOK_URGENT=${SLACK_URGENT_WEBHOOK}
- SLACK_WEBHOOK_DAILY=${SLACK_DAILY_WEBHOOK}
volumes:
- ./identity:/app/identity
- ./data:/app/data
restart: unless-stopped
ollama:
image: ollama/ollama:latest
ports:
- "11434:11434"
volumes:
- ollama_data:/root/.ollama
deploy:
resources:
reservations:
devices:
- capabilities: [gpu]
volumes:
ollama_data:完整工作流程
1. 邮件拉取
OpenClaw 每 30 秒轮询 Gmail IMAP。解析新邮件:发件人、主题、正文、附件(仅文件名)、抄送列表和上下文线程。
// OpenClaw 轮询: INBOX (UNSEEN) 每30秒 // 解析字段: from, subject, body, cc, date, attachments
2. 意图分类
LLM 将每封邮件分类为 紧急/待办/仅知悉/垃圾,并附带置信度分数。低于 80% 置信度的邮件标记为人工审阅。
分类: 紧急 (置信度: 0.94) 原因: 客户提到「周五截止」+ 负面情绪 客户: Acme公司 → 项目: Q2活动刷新
3. 结构化数据提取
关键字段被提取并与 CRM 记录验证。模糊匹配能处理公司名变体(如「Acme」 vs 「Acme Corporation Inc.」)。
提取结果: 客户: Acme公司 (SF ID: 001xx000003DGbW) 项目: Q2活动刷新 (SF Opp: 006xx000001abc) 截止日期: 2026-03-21 (周五) 提及预算: ¥315,000 (不变) 情感: 负面 (0.23)
4. CRM 自动更新
通过 REST API 更新 Salesforce 记录:活动日志条目、商机阶段更新(如需要)、联系人「最近联系日期」刷新。
POST /services/data/v59.0/sobjects/Task
{
"Subject": "邮件: Q2截止日期关切",
"WhoId": "003xx000002xyz",
"WhatId": "006xx000001abc",
"Status": "Open",
"Priority": "High"
}5. Slack 路由 + 草稿回复
紧急邮件触发即时 Slack 告警并附带上下文。在 Gmail 中生成草稿回复供客户经理审阅、编辑和发送。
Slack #urgent-inbox: 🔴 紧急 来自 Sarah@AcmeCorp 关于: Q2活动 — 截止日期关切 → Gmail 草稿回复已就绪 → SF 任务已创建 (高优先级) → 客户负责人: @jessica 已通知
90 天后的成果
在 90 天内,转型效果通过三个关键指标衡量:
| 指标 | 之前 | 之后 | 变化 |
|---|---|---|---|
| 每日邮件管理时间 | 6 小时 | 45 分钟 | ↓ 87.5% |
| CRM 数据准确率 | 约 60% | 95%+ | ↑ 58% |
| 平均响应时间 | 4.2 小时 | 38 分钟 | ↓ 85% |
| 每周遗漏紧急邮件 | 3-5 封 | 0 封 | ↓ 100% |
| 客户满意度 (NPS) | 34 | 67 | ↑ 97% |
「我们从害怕周一早晨变成了收件箱预分类、草稿回复等待审批。就像有一个不休息的初级客户经理。」——总监
成本分析
| 项目 | 月费 | 说明 |
|---|---|---|
| 服务器 (Hetzner CAX31) | $15 | 4核 ARM, 8GB 内存 |
| Ollama + Llama-3-8B | $0 | 自托管,无 API 费用 |
| Salesforce API | $0 | 包含在现有方案中 |
| Slack (免费版) | $0 | 基于 Webhook,无需升级 |
| Google Workspace | $0 | 现有订阅 |
| 合计 | $15/月 | vs $2,400/月 的 3 名初级员工工时 |
年度节省:约 $28,000 的员工时间重新分配到面向客户的工作。首年投资回报率:15,500%。
安全与隐私
⚠️ 切勿以明文存储邮箱凭据。使用 Docker secrets 或权限受限的 .env 文件(chmod 600)。
常见问题
Q1. 分类出错怎么办?
Q2. 能处理附件吗?
Q3. 能用 Outlook / Exchange 吗?
Q4. 推荐什么模型大小?
Q5. 搭建需要多久?
经验教训
从 IDENTITY 开始,而非代码
80% 的准确率提升来自优化 IDENTITY.md 中的自然语言规则,而非模型选择或配置更改。
置信度阈值很关键
将分类置信度设为 80%(而非 90%)是最佳平衡点。90% 会标记过多邮件需人工审阅,违背了自动化的初衷。
线程上下文必不可少
单封邮件分类会丢失持续对话的上下文。将线程中最近 3 条消息加入 LLM 提示后,准确率从 78% 提升到 94%。
不要自动发送
最大教训:永远不要自动发送 AI 生成的回复。始终创建草稿。38 分钟的响应时间包含人工审阅+发送,客户因此更信任机构。