项目详情
DeskcommCRM
开源自托管 AI 销售 OS——AI Agent 在 WhatsApp 里接待、跟进、成交,CRM 数据全在自己服务器
GitHub 地址
MIT
1.8k Stars
TypeScript · Next.js 16 · Supabase
v1.19.0
更新于 2026-09-13
← 返回汇总
项目速览
一句话定位
把销售团队、AI Agent 和 WhatsApp 装进一台你自己的服务器
开源 AI 销售 OS:带 RAG 知识库的 AI Agent 在 WhatsApp 上接待询盘、资格筛查、推进漏斗、触发自动化,并在该交给人类时交接——整套 CRM 通过 MCP 暴露给 Agent 操作。对标 Kommo / Octadesk / Intercom,面向一切「靠聊天卖货」的生意:电商、诊所、房产、知识付费。多租户 + LGPD 合规,一条命令自托管。
项目速览
核心数据
- 增长速度罕见:2026-04-28 创建,4.5 个月 1.8k stars / 556 forks,最新 push 就在今天(数据采集于 2026-09-13)
- 发布节奏极快:v1.0 → v1.19.0(2026-09-11),一周内连发 v1.16–v1.19 四版
- 体量可观:TypeScript 21 MB + PLpgSQL 1 MB,仓库约 126 MB,157 篇文档、49 个 E2E 规格
为什么存在
聊天卖货的生意,养不起 SaaS CRM
按座位收月费
Kommo / Octadesk / Intercom 按 Agent、按座位计费,AI 功能更是单独加钱。巴西小微商家(也是全球)对月费高度敏感。
功能被订阅档位锁死
自动化规则、AI Agent、API 访问分散在不同付费档。想改字段、改流程?等官方排期。
客户数据不在自己手里
聊天记录、成交数据是核心资产,存在别人的云上既贵又不放心——LGPD(巴西版 GDPR)还要求控制者对数据负责。
答案:一套跑在自己 VPS 上的完整销售系统——无月费、无功能锁定、数据不出服务器,AI Agent 原生内置。
核心理念
Desk + comm:一张「商业桌」三条信条
- AI 是一等公民员工:Agent 可以像人类一样被分配会话、出现在队列里,执行、交接全程审计,还有每组织消费上限兜底——「不是装饰性聊天机器人」
- 任何线索不许无声死亡:自适应间隔的自动跟进、显示「哪些对话正在变冷」的雷达页、需要人类决策的告警中心
- Agent 会自我改进:已解决的对话沉淀为新知识;「AI 进化」页展示它哪里变好了、哪里还不会;Agent 还能给自己提改进提案(Propostas),人工审核后作为新版本生效
多利基设计:漏斗词汇表可配置——lead 叫「客户 / 患者 / 买家」、won 叫「付款 / 预约 / 成交」,同一套核心服务电商、诊所、房产、知识付费。
🔥 核心架构
五层架构:数据库触发器从不直接发 HTTP
主线层(应用 + 事件)
支撑层(接入 + 数据)
AI 供应商层
🔥 核心机制
AI Agent 的一个回合
主流程(实线)
支撑能力(虚线)
- Agent 有预算上限:每组织 LLM 消费封顶,防止失控成本
- 一切留痕:分配、转移、handoff 全部进审计日志
核心机制
自我进化飞轮:AI 给自己提 PR
自动环节
人工把关(默认暂停,审核后生效)
这是全项目最有辨识度的设计:Agent 不只是被动回答,而是主动暴露自己的短板,以「提案 → 人工 gate → 新版本」的方式迭代——把传统「调 prompt 靠感觉」变成了可审计的版本化流程。
核心机制
WhatsApp 双通道 + 反封禁
| QR 通道(WAHA) | 官方通道(Meta Cloud API) |
| 接入方式 | 扫码即用,个人号即可 | 需 Meta 商业认证 + 审批模板 |
| 多号码 | 支持,每号一会话 | 支持 |
| 成本 | 零(非官方,有封号风险) | 按对话计费 |
| 适合 | 起步、试水、低预算 | 规模化、合规要求高 |
- 反封禁三件套:发送限速+ 随机抖动+ 发送时间窗,原因直接翻译显示在对话里(「操作可见」原则)
- STOP 检测:客户说停就停,避免骚扰投诉
- 媒体走私有桶:whatsapp-media 私有 Storage,签名 URL 访问
架构模式
event_log:轻量事件溯源的心脏
// 一切事件先落库,worker 异步排水
// 幂等:unique(org_id, external_id) + 23505 捕获
消息/看板变动/标签/Webhook
│
▼
event_log 表 ←─ Postgres 触发器只写这里
│ (永不发 HTTP)
▼
cron 每 60s 排水 /api/v1/cron/event-log-drain
│
▼
9 个 worker 消费(ai-response / rag-indexer
/ lgpd-redact / agent-worker ...)
- 为什么不让触发器直接发 HTTP:数据库事务保持纯净,外部调用失败不污染数据,还能重放
- 动作副作用再入队:自动化规则移动漏斗阶段 → 产生新事件 → 可再触发其他规则(级联)
- 诚实工程:README 明确警告「没配 cron,自动化规则创建成功但永远不跑」——install.sh 自动配好
- worker 可独立扩缩:app / worker / scheduler 三镜像分开构建,CI 逐一验证
安全与合规
多租户 RLS 不是口号,是 CI 门槛
- RLS 覆盖所有租户表:统一
fn_user_org_ids() helper,service role 绕过 RLS 的路径强制手动过滤 organization_id——且必须来自可信源(cookie/JWT/HMAC),永不读 body
- 隔离测试是合并门槛:CI 里建两个组织,用与生产 policy 相同的
auth.uid() 路径模拟 JWT,证明 A 组织用户在 conversations/messages/contacts/crm_leads 看到B 组织零行——并先做对照组证明 B 的行确实存在(防空表假绿)
- LGPD 深度内建:匿名化优先于删除(级联匿名)、同意记录审计、导出/脱敏走 worker、审计日志 append-only 保留 5 年
- 遥测可选且净化:Sentry 安装时询问;开启也只发错误报告,CPF/电话/邮箱被替换、敏感 header 剥离;
SENTRY_DSN=off 一键关
- 自托管者 = 数据控制者:项目方声明不接触你的库 / WhatsApp / 存储
核心机制
QUANDO / SE / ENTÃO:无代码自动化
WHEN 事件
+
IF 条件
→
THEN 动作
| 环节 | 能力 |
| 触发源 | 公开捕获端点收落地页/Zapier/n8n 表单 · lead 换阶段 · 获得标签 · WhatsApp 新消息 |
| 条件 | 阶段、标签、消息内容、时间窗等自由组合 |
| 动作 | 加标签 · 移漏斗 · 分配给人 · 发 WhatsApp · 回调外部系统 webhook |
| 治理 | 规则创建后默认暂停,人工审核再启用;执行时间线逐条可查,外部调用失败可手动重发 |
事件全部经 event_log 排水执行,动作副作用产生级联事件——这套规则引擎在最后一页有可玩的模拟器。
上手体验
自托管:一条命令,一键升级
# VPS 上(任意 Docker 主机)
git clone https://github.com/melgarafael/DeskcommCRM.git
cd DeskcommCRM
bash hostgator-setup-kit/install.sh
# 不装 Node、不编译:镜像现成
# 缺 Docker 会询问并自动装
# 幂等:跑挂了重跑不重复创建
需要:4GB VPS + 域名 A 记录 + Supabase 免费档(3 把钥匙)+ 一家 LLM API key。安装器逐步校验输入,错误当场拒绝。
- 屏幕内升级:侧栏亮「新版本」→ 展示变更 → 自动备份数据库 → backup → 代码 → 库 → 上线四阶段可视 → 失败自动回滚到上一镜像
- 升级目标永远是已发布 tag,不是 main 头部 commit;拒绝降级(防静默关功能)
- 运维脚本全家桶:backup / restore / healthcheck / reset-password / reset-mfa
- AI 装机助手:丢
hostgator-setup-kit/ 给 VPS 里的 Claude Code,说「装一下」即可——kit 内置 CLAUDE.md 分步指引
- 白标文档:换品牌、按客户部署、共享实例与转售三种模式
工程质量
五道 CI 门槛,罕见的老练
| Check | 内容 |
verify | typecheck(strict)+ lint + 频道 lint + 单测 + shell 测试 |
invariants | 起干净 Postgres,baseline.sql 装两遍(ON_ERROR_STOP=1 证明幂等),跑 RBAC/分配/路由/跟进/webhook/自动化不变量 + RLS 隔离测试 |
build-and-size | Node 22 全量构建 |
e2e | 本地 Supabase + baseline,49 个 Playwright 规格跑 48 个(剩 1 个需真 VPS,明确声明 e2e 绿 ≠ 装机旅程绿) |
imagens-ok | app / worker / scheduler 三镜像全部可构建才算过——构建产物就是用户装的东西 |
- 文档不说漂亮话:
docs/current-state.md 明写「Idempotency-Key 只有 1 条路由实现」「rate limit 只覆盖 2 个点」——docs/threat-model.md 自己列攻击面
- 导航不变量:CI 拒绝「只能手输 URL 到达」的页面——每块屏必须有导航入口
开发方式
一个「用 AI 造 AI 产品」的标本仓库
- 4.5 个月 4,000+ commits(约 30/天)——典型的多 AI Agent 协作开发节奏
- 仓库根目录 12 个 HANDOFF-*.md:每个 epic 的交接文档(followup-vivo、fila、handoff-avisa-o-lead……),人类审 AI 交活
- 五套 Agent 配置并存:
.claude/ .codex/ .cursor/ .agents/ .specs/ + 根 AGENTS.md(工具无关契约)
- 约定文档即纪律:
CLAUDE.md 写死不可协商约定——多租户必 RLS、变更必审计日志、schema 变更必须同步 baseline.sql 附录(否则自托管用户拿不到)
- 安装技能化:
.agents/skills/deskcomm-instalar/ 让任意 AI IDE 自动加载装机指南——「让 AI 替你装」成为一等公民路径
观察意义:这是研究「AI Agent 军团如何运营一个严肃产品」的活样本——epic-executor 流程、QA 波次(qa-waves)、handoff 文档化,都可直接抄作业。
适用场景
谁该用,谁不该
适合
- 靠 WhatsApp/聊天卖货的中小生意:电商、诊所、房产、知识付费、代理
- 想脱离 SaaS 月费、要数据自主的团队
- 服务商/代理商:白标部署给客户,一实例一租户或共享
- 想研究「AI Agent 操作真实业务系统」最佳实践的工程师(MCP + 审计 + 预算控制全套范例)
跳过
- 不想管服务器、要 SLA 的团队(社区支持 as-is,无商业版兜底)
- 非 WhatsApp 市场(邮件/电话为主的销售流程覆盖弱)
- 期望无缝英文产品体验的团队(面向巴西市场优先,EN 文档是二级)
- Supabase 免费档用户必须自担备份纪律,没做好数据心理准备
风险提示
需要警惕
- 非官方 WhatsApp 通道:WAHA 本质是逆向协议,个人号被封风险结构性存在(官方 Meta 通道可对冲,但成本与认证门槛上来)
- 巴士因子:核心维护者单人(melgarafael),45 位贡献者但主线高度集中;项目仅 4.5 个月,长跑能力待验证
- 自家威胁模型承认的缺口:rate limit 仅覆盖 2 个点、Idempotency-Key 仅 1 条路由(threat-model.md §T1)——自我诚实但仍是缺口
- 巴西中心化:LGPD、Nuvemshop、HostGator 分成链接(变现方式=联盟佣金,无功能锁定)——国际化需要自己动手
- 运维复杂度:VPS + Supabase + Redis + WAHA + LLM key + cron,链路长;免费 Supabase 不做备份,得自己排 cron
潜力评估
评分:8.5 / 10 · tracking
4.5 个月做出多数商业 SaaS 都没有的工程纪律(RLS 隔离测试进 CI、威胁模型公开、幂等基线双跑)。若 MCP 公开化 + 多语言模板落地,有机会成为「聊天销售」场景的 self-host 标准件。短期最大变量:维护者精力与 WhatsApp 政策。
在线体验
自动化规则引擎模拟器
亲手搭一组 QUANDO/SE/ENTÃO 规则,发射 WhatsApp 消息和漏斗事件:看规则命中、条件失败原因、event_log 级联、以及反封禁窗口如何在深夜拦下你的消息——还有一套「循环陷阱」规则集等你踩。
进入 Playground →