>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
TypeScript

DeskcommCRM:如何在自有服务器上部署支持 WhatsApp AI 代理的开源 CRM

WhatsApp 销售需要管理人员持续参与,或者接入 Kommo、Intercom 等第三方服务。随着客户数据库的增长,订阅费和按席位计费成为一笔不小的开支。巴西开发者 Rafael Melgara 在 GitHub 上发布了 DeskcommCRM——一个专为 AI 代理和即时通讯集成设计的自托管销售管理系统。

该项目定位为中小型企业的销售管理系统。最初为集成 Nuvemshop 的在线商店构建,后来架构进行了重新设计。最终演变为适用于诊所、房地产机构、信息业务以及任何通过聊天接收咨询的服务行业的灵活解决方案。

技术栈与架构

在架构上,DeskcommCRM 基于现代 Web 应用的成熟技术栈构建:

  • 前端与后端:Next.js 16(App Router),搭配 React 19 和严格模式的 TypeScript。
  • 数据库与身份验证:Supabase(PostgreSQL),充分利用行级安全(RLS)机制和用于向量搜索的 pgvector 扩展。
  • WhatsApp 集成:WAHA(WhatsApp HTTP API),使用 NOWEB 引擎,运行在 Docker 容器中。
  • AI 层:Vercel AI SDK v7,集成 Anthropic Claude、OpenAI 和 Google Gemini 模型。

系统内置 MCP(Model Context Protocol)服务器。这意味着外部 AI 代理可以通过通用协议连接到 CRM,并执行销售漏斗相关的操作。

智能代理替代传统自动回复

在 DeskcommCRM 中,AI 代理的工作方式与传统聊天机器人截然不同——后者依赖僵化的场景树。DeskcommCRM 的机器人扮演的是一位负责任的经理:进行对话、筛选潜在客户、推动他们穿越漏斗卡片,并在无法独立回答时将对话转接给人工。

系统为每位客户创建独立的知识库。成功完成的对话会被反馈到向量存储中。这样,代理会逐渐积累上下文,在回答典型问题时变得更加准确。同时,向人工的交接由规则控制,以防止机器人发送不必要的消息。

Webhook 与处理队列

对于接收来自外部落地页和表单的请求,系统提供了 webhook 入口点。任何带有 JSON 或 urlencoded 格式参数的 POST 请求都会立即在漏斗的指定阶段创建一条线索。

内部事件处理的设计很有意思。为了避免用 HTTP 请求过载 PostgreSQL 触发器,开发者采用了事件表模式。所有操作(线索状态变更、标签出现、收到消息)都记录在 {1} 表中。后台进程每分钟从队列中取出事件,执行「当/如果/那么」类型的自动化。

在实践中,流程是这样的:

在 Vercel 云中,这条路由会触发一个普通的 Cron Job,而在自有服务器上部署时,启动由 {2} 系统接管。

安全性与数据隔离验证

由于该 CRM 支持多租户,确保一家公司无法查看其他公司的联系人或对话至关重要。在 DeskcommCRM 中,隔离机制建立在 PostgreSQL 的 RLS 策略之上。

该仓库配置了 CI 流水线,每次 pull 时都会在干净的数据库实例上运行 364 个不变量测试。其中一项关键测试会生成两个不同的组织,模拟用户 JWT token,然后检查数据库是否返回了另一家公司的至少一行数据。如果安全策略泄露了外部数据,构建就会失败。

本地环境快速启动

要探索代码,只需几分钟即可在本地启动项目。需要准备 Node.js 22 版本、pnpm 和 Docker。

要在 VPS 上完整部署,作者准备了一套脚本 {3}。脚本本身会请求域名、Supabase 密钥、神经网络 API 密钥,生成 token,并启动带有 HTTPS 证书的完整技术栈。

项目局限与特点

探索仓库时,请注意以下几个细节:

  • 部分代码注释和文档是用葡萄牙语编写的,因为该项目最初面向巴西市场。
  • 仓库还相对年轻,GitHub 上的 star 数刚过 300。
  • WhatsApp 集成依赖 WAHA,因此在消息活动量大时,务必配置延迟和发送间隔,以防止号码被封禁。

谁会发现 DeskcommCRM 有用

该项目对网络工作室和自由开发者很有价值——他们为小型企业构建交钥匙 CRM 系统,又不想为第三方服务支付月费。对于开发者来说,代码也很有参考价值:可以找到 Next.js 16 的优雅用法示例、pgvector 的 RAG 设置、MCP 服务器实现以及 PostgreSQL RLS 策略测试的范例。

相关项目