实战:用 OpenClaw 把企业微信变成 AI Agent 工作台
企业微信是国内团队用得最多的协作工具,但它的自动化能力一直很弱------审批要手动点、客户消息要人工回、数据要导出再分析。
如果我告诉你,用 OpenClaw 接入企业微信之后,你的 Agent 可以自动处理客户咨询、触发审批流、汇总日报,而且整个过程不需要写前端页面,你会不会想试试?
这篇文章是我实际跑通的方案,包含完整代码和踩坑记录。
为什么选 OpenClaw 而不是自己写 Bot
企业微信本身提供了回调接口和 API,理论上你可以自己写一个 Bot。但实际做过的人都知道,痛点不在接口调用,而在:
- 多轮对话管理:客户问了三句话,你的 Bot 要记住上下文,这不是简单的 if-else 能搞定的
- 多 Agent 协作:客服 Agent 处理不了的问题要转给技术 Agent,技术 Agent 需要查数据库再回复
- 状态持久化:Agent 重启后要恢复之前的对话状态
- 错误恢复:API 调用失败要重试,消息要保证不丢
OpenClaw 把这些基础设施全包了。你只需要关注业务逻辑------Agent 收到什么消息、该做什么决策、怎么回复。
架构概览
markdown
企业微信 ──webhook──▶ OpenClaw Gateway
│
┌──────┼──────┐
▼ ▼ ▼
客服Agent 运营Agent 数据Agent
│ │ │
▼ ▼ ▼
知识库 CRM 数据库
核心思路:企业微信的消息通过 Webhook 进入 OpenClaw Gateway,Gateway 根据消息类型和来源路由到不同的 Agent。每个 Agent 有自己的职责和工具集。
第一步:配置企业微信回调
在企业微信管理后台创建一个自建应用,拿到三个关键参数:
python
CORP_ID = "ww_your_corp_id"
AGENT_ID = "1000002"
SECRET = "your_agent_secret"
TOKEN = "your_callback_token"
ENCODING_AES_KEY = "your_encoding_aes_key"
回调地址填你的 OpenClaw Gateway 地址,比如 https://your-server.com/webhook/wecom。
企业微信会先发一个 GET 请求验证签名,验证通过后才会推送消息。这一步 OpenClaw 的 Webhook 插件已经内置了,不需要自己写验签逻辑。
第二步:定义 Agent 角色
这是最关键的一步。我的方案里有三个 Agent:
yaml
# agent-customer-service.yaml
name: "客服小助手"
role: |
你是公司的客服代表。
收到客户消息后:
1. 先在知识库搜索匹配的答案
2. 如果找到,直接回复
3. 如果找不到,标记为"需人工"并通知运营群
4. 对于投诉类消息,自动创建工单
tools:
- knowledge_search # 搜索产品知识库
- wecom_reply # 回复企业微信消息
- create_ticket # 创建工单
- notify_group # 通知内部群
yaml
# agent-daily-report.yaml
name: "数据日报Agent"
role: |
每天 18:00 自动执行:
1. 从 CRM 拉取今日新增客户数
2. 从工单系统拉取今日处理量
3. 从数据库查询关键业务指标
4. 生成日报并发送到管理层群
schedule: "0 18 * * *"
tools:
- query_crm
- query_database
- wecom_send_group
第三步:消息路由配置
OpenClaw 的 Gateway 支持基于规则的消息路由:
json
{
"routes": [
{
"match": {"source": "wecom", "msg_type": "text"},
"conditions": [
{"field": "content", "contains": ["投诉", "退款", "不满意"]},
],
"target": "agent-complaint-handler"
},
{
"match": {"source": "wecom", "msg_type": "text"},
"target": "agent-customer-service"
},
{
"match": {"source": "wecom", "msg_type": "event", "event": "approval"},
"target": "agent-ops"
}
]
}
路由规则从上到下匹配,第一个命中的生效。投诉类消息走专门的投诉处理 Agent,普通咨询走客服 Agent,审批事件走运营 Agent。
第四步:工具函数实现
Agent 的能力取决于你给它什么工具。这里给一个回复企业微信消息的工具示例:
python
import requests
import json
class WeComTool:
def __init__(self, corp_id, secret):
self.corp_id = corp_id
self.secret = secret
self._token = None
self._token_expires = 0
def get_access_token(self):
"""获取 access_token,带缓存"""
import time
if self._token and time.time() < self._token_expires:
return self._token
url = f"https://qyapi.weixin.qq.com/cgi-bin/gettoken"
resp = requests.get(url, params={
"corpid": self.corp_id,
"corpsecret": self.secret
})
data = resp.json()
self._token = data["access_token"]
self._token_expires = time.time() + data["expires_in"] - 60
return self._token
def reply(self, user_id, content):
"""回复用户消息"""
token = self.get_access_token()
url = f"https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={token}"
payload = {
"touser": user_id,
"msgtype": "text",
"agentid": AGENT_ID,
"text": {"content": content}
}
resp = requests.post(url, json=payload)
return resp.json()
实际效果
跑了两周之后的数据:
| 指标 | 接入前 | 接入后 | 变化 |
|---|---|---|---|
| 客户平均响应时间 | 4.2 小时 | 12 秒 | -99.9% |
| 日均处理咨询量 | 50 条(人工) | 320 条(Agent) | +540% |
| 需人工介入比例 | 100% | 18% | -82% |
| 日报生成时间 | 40 分钟(手动) | 0(自动) | 完全自动化 |
最大的收益不是效率提升,而是响应速度。客户发消息 12 秒内就能收到回复,满意度直接拉满。
踩坑记录
-
企业微信消息有 5 秒超时:回调接口必须在 5 秒内返回 200,否则企业微信会重试。解决方案是先返回 200,异步处理消息。OpenClaw 的 Gateway 默认就是异步的,不用额外处理。
-
access_token 有 2 小时有效期:不要每次都重新获取,做好缓存。上面的代码已经处理了。
-
消息去重:企业微信重试时会发相同的 MsgId,要做幂等处理。在 Agent 的 session 里记录已处理的 MsgId 即可。
-
敏感词过滤:Agent 回复的内容要过企业微信的敏感词检测。建议在 Agent 的 system prompt 里加上合规要求。
部署成本
整套方案跑在一台 2C4G 的云服务器上:
- 云服务器:约 ¥50-80/月(腾讯云轻量或阿里云 ECS)
- LLM API 调用:约 ¥200-500/月(取决于消息量,用国产模型如 Qwen 可以更便宜)
- 企业微信:免费(基础版够用)
总成本 ¥300-600/月,替代了至少一个全职客服的工作量。ROI 非常可观。
想了解 OpenClaw 更详细的部署方案和成本优化技巧,可以看这篇指南:OpenClaw 部署成本完全指南
下一步可以做什么
这套架构搭好之后,扩展非常容易:
- 接入飞书:换一个 Webhook 插件,Agent 逻辑完全复用
- 加入 RAG:把产品文档灌进向量数据库,客服 Agent 的回答质量会大幅提升
- 多语言支持:加一个翻译 Agent,自动处理海外客户的英文消息
如果你也在考虑给企业微信加上 AI 能力,OpenClaw 的多 Agent 架构是目前我用过最顺手的方案。比起 LangChain 自己拼装,省了大量的基础设施代码。
更多 OpenClaw 实战教程和框架评测:OpenClaw 中文指南