DeskcommCRM
自托管的开源销售 CRM,把 WhatsApp 会话、销售漏斗和 AI Agent 放进同一个后台:Agent 按租户做 RAG 检索、执行 skills、自动跟进并在合适时机转人工,CRM 能力通过 MCP 暴露给外部 agent 调用。亮点是多租户隔离与 LGPD 合规由 Postgres RLS 兜底,一条命令即可在 VPS 上部署,支持页内升级与自动备份。MIT 协议,self-host 无 SLA,数据合规责任在部署方。
README
🇧🇷 Português · 🇺🇸 English · 🇪🇸 Español
🛠️ DeskcommCRM — 面向 WhatsApp 的 open source AI 销售操作系统
在 WhatsApp 上接待、筛选并成单的 AI agent(智能体)——运行在你自己服务器上的 open source CRM 之内。 无月费,无功能锁,数据归你。Kommo、Octadesk 和 Intercom 的开放替代方案。
⚡ 安装 · 🔄 更新 · 🧭 愿景 · 🏗️ 架构 · 🤝 贡献 · 🗺️ Roadmap
☁️ 用 1 条命令在生产环境运行这个 CRM
DeskcommCRM 是与 HostGator 合作开发的:
hostgator-setup-kit/可用单条命令在 VPS 上安装完整 CRM(app + WhatsApp + 数据库),而 生产运行手册 已经按这个环境来写。👉 通过合作折扣订阅 HostGator VPS — 数据中心在圣保罗,非常适合 24/7 运行 WhatsApp。(合作链接 — 通过它订阅既支持项目,也更便宜)
还没有服务器? 在你的电脑上(macOS、Linux 或 WSL)运行下面这条。它会告诉 你该买哪个套餐——用的是运行手册里的实际数字,而不是一句"看情况"——并根据你的 场景给出正确的命令:
curl -fsSL https://raw.githubusercontent.com/melgarafael/DeskcommCRM/main/hostgator-setup-kit/comecar.sh | bash(想先读再执行?clone 仓库后运行
bash hostgator-setup-kit/comecar.sh— 未经你确认,它不安装任何东西。)
⚡ 在你的 VPS 上安装(主要路径)
1. 登录你的 VPS
在你电脑上打开 Terminal(Windows 上是 PowerShell;Mac 或 Linux 上是 Terminal),用主机商邮件里给你的 IP 和端口连接:
ssh -p PORTA root@SEU_IP
把 PORTA 和 SEU_IP 换成你自己的。如果主机商没提到端口,那就是默认端口
(22),可以省略:ssh root@SEU_IP。
它会询问密码。输入时屏幕上什么都不显示——连星号都没有。 这不是卡住,而是 终端在隐藏密码。输入(或粘贴)后按 Enter。
首次连接时它会问
Are you sure you want to continue connecting?— 回答yes。那是服务器第一次向你自我介绍。
2. 运行安装器
已经在 VPS 里之后:
git clone https://github.com/melgarafael/DeskcommCRM.git
cd DeskcommCRM
bash hostgator-setup-kit/install.sh
就这样。你不需要安装 Node,不需要 pnpm,也不用编译任何东西——app 镜像已经准备 好了。如果缺少 Docker,安装器会询问并自动安装。
你需要准备什么
| 项目 | 从哪里获取 |
|---|---|
| 带 Docker 的 VPS | HostGator(合作方)——或任何装了 Docker 的 VPS。推荐 4 GB 内存 |
| 域名 | 一条指向 VPS IP 的 A 记录(例如 crm.suaempresa.com.br) |
| 数据库 | supabase.com 免费账户——3 个 key + Session pooler 的连接串 |
| AI | 一个 OpenRouter、Anthropic 或 OpenAI 的 key——安装器会问你用哪个 |
| 你的号码,在 onboarding 中通过 QR code 连接(或 Meta 官方渠道) |
💡 Supabase 可以由安装器自己创建。 在运行前导出一个
SUPABASE_ACCESS_TOKEN,它就会创建项目、等待数据库健康、抓取 4 个凭据,并通过 真实连接测试推断出 pooler 主机——无需复制粘贴。
安装器会替你做什么
它只问你属于你的东西(域名、key、admin 密码),在继续前校验每个回答—— key 错了它会当场拒绝,而不是三步之后才说——其余都帮你打理好:
- 自动生成所有技术密钥(你不需要自己发明任何密码)。
- 创建 Postgres 扩展并应用完整 schema(
supabase/baseline.sql)。 - 用你选择的邮箱和密码创建第一个 admin。
- 用自动 HTTPS 拉起整套 stack,并在最后检查健康状况。
- 安装自动化 cron(没有它,WHEN/IF/THEN 规则会卡在队列里)以及更新 agent, 后者正是让屏幕上那个"立即更新"按钮存在的原因。
重复运行不会破坏任何东西——install.sh 是幂等的:不会重复 cron、不会重建用户、
会从中断处继续。
非交互模式: 把
.env.hostgator.example复制为.env,填好后运行bash hostgator-setup-kit/install.sh --yes。
其他主机商?(Hostinger、Coolify、Dokploy、CapRover…)
都可以。如果你的 VPS 自带了自己的反向代理并占用了 80/443 端口,安装器会
自动检测到并通过它发布 CRM,而不是硬塞一个装不进去的 Caddy。在一种特殊情况下
——代理使用 --network host,比如 Hostinger 那样——它会询问而不是猜测,因为在
错误的代理后面发布,会"成功"装出一个哑掉的站点。细节见
hostgator-setup-kit/README.md。
首次访问
打开 https://<你的域名>(小锁大约 1 分钟后才出现),用 admin 登录,并且如果你
想开启双重验证,请提前准备好 Google Authenticator 或 Authy——它是可选的,
位于 设置 › 安全;首次登录不要求它。在 onboarding 中,用你号码的 WhatsApp 扫描
QR code。
🤖 想让 AI 帮你安装?
把 hostgator-setup-kit/ 文件夹丢进运行在 VPS 里的 Claude Code 聊天窗口,然后说
"instala o DeskcommCRM pra mim"。它会读取套件里的 CLAUDE.md
——里面有步骤和已经标注好的坑——并用葡萄牙语全程带你走一遍。
🔄 更新
出新版本了?有两条路,而且第一条不需要终端。
仓库 clone 下来后,安装指南已经包含在内——.agents/skills/deskcomm-instalar/——
它会在该文件夹下打开的 Claude Code、Codex、Cursor、OpenCode 或 Antigravity 中自动加载。
只需说*"quero instalar o CRM na minha VPS"*。此外还有指南教你按细分行业搭建客户、
分析指标、调优 agent 的 prompt,以及贡献代码(AGENTS.md,"Guias do assistente" 一节)。
通过界面(推荐)
当有新版本时,侧边栏底部会亮起 "Nova versão"——只对服务器所有者显示,因为通知 无法更新的人只是噪音。点击后你就进入 设置 → 更新,那里会显示变更内容、 自动备份数据库,并跟踪每个阶段(备份 → 代码 → 数据库 → 上线)直到完成。无需 SSH。
如果新版本上线后崩了,agent 会自动回退到上一个镜像,并把这次回退写进 .env
——否则下次重启会再次悄悄带起坏掉的 app。
底层逻辑:app 只是登记更新请求;执行者是
install.sh留在你 VPS 上的 agent, 它挂在一个每 5 分钟检查一次的 cron 里——因此更新会在点击后最多 5 分钟内开始。 如果这个 agent 挂了,界面会提示 "Atualização automática indisponível" 并展示 下面的命令——它不会假装成功。
通过终端
cd /caminho/do/DeskcommCRM
bash hostgator-setup-kit/update.sh
这条命令按顺序: (1) 确认是否真有新版本——没有的话立即退出;
(2) 在动任何东西之前备份数据库; (3) 拉取新代码;
(4) 通过重新应用 baseline.sql 更新数据库,它是幂等且自愈的(会自行修复被旧版本
搞乱的数据); (5) 拉取新的 app 镜像; (6) 最后检查健康状况。
目标是已发布的最新版本(v1.2.3),而不是 main 的顶端——更新总是带你去一个
在 CHANGELOG.md 里标注并描述过的版本,而绝不是一个未经测试的
commit。它会拒绝回退到早于已安装版本之前的版本(那会关掉你已经拥有的东西);
为此有意提供了 --force。
你会看到的正常现象: 数据库部分出现一大堆 already exists / multiple primary keys
——这是预期且无害的,那些都是已经存在的东西。脚本会过滤掉这些噪音,显示
✓ banco atualizado。如果出现 ⚠ avisos que não são os esperados,那才需要保存消息。
出问题了? bash hostgator-setup-kit/restore.sh 回到备份。
只想诊断? bash hostgator-setup-kit/healthcheck.sh。
⚠️ 在一个还没有界面更新 agent 的旧安装上,请把
update.sh运行两次: 第一次跑的还是旧脚本(它会下载新脚本);第二次才会安装 agent 并启用按钮。
通俗语言的分步说明:docs/ATUALIZANDO.md。
套件的其他命令
| 脚本 | 功能 |
|---|---|
install.sh |
安装全部(幂等——可重复运行) |
update.sh |
更新到新版本,带自动备份 |
backup.sh |
备份数据库 + WhatsApp 会话 |
restore.sh |
恢复某次备份 |
reset-password.sh |
重置某个用户的密码 |
reset-mfa.sh |
为丢失手机的人移除 MFA |
healthcheck.sh |
一次性诊断所有服务 |
备份很重要: Supabase 免费版不会自动备份。值得把
backup.sh排进每日 cron。update.sh已在每次更新前运行一次备份。
✨ 这是什么
Deskcomm 来自 Desk(桌子)+ comm(商业):桌面商业——把你生意的整个销售 运营集中在一张桌子上,由人和 AI agent(智能体)一起操作。
项目最初是作为电商 CRM 诞生的,社区把它带得更远:如今它运行在诊所、房产中介、知识
付费、代理商、店铺和服务提供商——任何通过 WhatsApp 卖东西的生意。产品也随着这一
转变,成了一个销售操作系统:按 tenant 隔离、基于 RAG 的 AI agent 负责接待、筛选、
在漏斗里推动 lead、触发自动化,并知道何时该转交给人工——整个 CRM 都通过 MCP 暴露出
来,让 agent 真正操作它。完整故事见 VISION.md。
差异点
- 🤖 会操作 CRM 的 AI agent — 按 tenant 隔离的 RAG、agent 在接待过程中自行执行的 skills、运营记忆、情感分析、可审计的 AI→人工 handoff、AI 作为一等公民 assignee, 以及按组织设置的花费上限。不是装饰性 chatbot:agent 会接待、筛选并推动漏斗。
- 🔁 没有任何东西会默默死掉 — 重新点燃冷却对话的 follow-up(带自适应时间和按漏斗 阶段的触发器)、识别什么有回应中断风险的 radar,以及需要人工决策事项的告警中心。
- 🧠 会自我改进的 agent — 已解决的对话变成新知识;AI 演进页面显示 agent 是否 在进步、在哪出错、还缺什么没教;提案是 AI 对自己提出的改进,可作为新版本应用 ——始终有人工把关。
- 🧩 天生多行业 — 按 pipeline 可配置词汇:lead 变成客户、患者或买家;won 变成 已付款、已预约或已关闭。同一个核心服务电商(我们的发源地,含 Nuvemshop 集成)、 诊所、房产中介或知识付费。
- 💬 两种 WhatsApp 方式 — 通过 QR code(WAHA,多号码,带防封:throttle + jitter + 时间窗)或通过 Meta 官方渠道(Cloud API,带已审批且已同步的模板)。媒体走 Storage, STOP 检测。
- 🔀 AI 由你选 — OpenRouter、Anthropic 或 OpenAI,在安装时决定,之后可通过界面按 系统部位更换(负责对话的不必是负责索引的)。
- 👥 接待治理 — 真正的服务端 RBAC、可审计的分配/转交、轮换队列、按意图自动路由, 以及按角色的查看范围。
- 🏢 Multi-tenant + LGPD 原生设计 — 每张 tenant-aware 表都启用 RLS,隔离测试作为 CI gate;优先匿名化而非删除;append-only 审计,保留 5 年。
- 🖥️ 真正的 self-hosted — 数据在你自己的 VPS 上;安装和更新只需 1 条命令(或 1 次 点击);没有付费版,没有功能锁。
🔌 Webhooks 与自动化
每个 tenant 都可以创建获客来源:一个公开地址 (/api/v1/webhooks/in/<token>),通过
POST(JSON 或 application/x-www-form-urlencoded)接收来自落地页、自有表单或 Zapier/n8n
等工具的 lead,直接进入所选的漏斗/阶段——不需要代码,不需要为每个 tenant 定制集成。
在这些来源(以及 CRM 的其他事件——lead 换阶段、被打上 tag、WhatsApp 收到消息)之上,
tenant 可以搭建自动化:WHEN/IF/THEN 形式的规则,触发诸如加 tag、在漏斗中移动 lead、
分配给某位客服、发送 WhatsApp 消息,或通过出站 webhook 通知其他系统等动作。
在 UI 里,一切都位于侧边栏的 Webhooks(仅对 manager/admin 角色可见)。页面有三个
标签页:接收数据(创建来源、复制现成地址/表单、发送测试 lead、查看最近接收记录)、
自动化(搭建规则,规则总是以暂停状态诞生,直到你审核并开启),以及活动(每次执行
的时间线,展示每个动作的结果,外部调用失败时可手动重发)。
底层上,每个事件都会变成 event_log 里的一行——没有任何数据库 trigger 会直接发起 HTTP
调用。排空这个队列的是 /api/v1/cron/event-log-drain 路由,每分钟被调用一次。
install.sh/update.sh 已经自动配置好这个 cron——没有它,自动化会被正常创建但永远
不会运行。
🖥️ 你操作什么(各个页面)
| 分组 | 页面 |
|---|---|
| 接待 | Inbox(WhatsApp 对话,你和 AI 并排) · Radar(哪些冷掉了但还开着) · 快捷回复 |
| CRM | Kanban(每笔生意在漏斗里的位置) · 联系人 · 漏斗(阶段、业务词汇和丢单原因) |
| AI agent | Agents · Follow-ups · Roteadores · Providers 和 Credentials · Knowledge (RAG) · Memory · Skills · Casos · Alertas · Propostas · Execuções · 用量与预算 |
| 渠道 | 连接(QR 或 Meta 官方渠道,含健康、重连和模板) · Nuvemshop · Webhooks |
| 分析 | 绩效(漏斗和按客服的表现) · AI 演进 · Audit Log |
| 组织 | 团队 · 接待分配 · 组织 · LGPD · API Tokens · 安全(MFA、恢复码、会话) · 个人资料、通知、Billing |
每个页面都有导航入口——CI 会打回那些存在但只能靠手动输入 URL 才能到达的页面。
🧱 技术栈
| 层 | 选择 | 原因 |
|---|---|---|
| 前端 | Next.js 16 App Router (Turbopack) + React 19 + 严格 TypeScript 6 | Server Components + Route Handlers 在同一仓库 |
| 样式 | Tailwind + shadcn/ui (new-york, neutral) |
可定制,无 lock-in |
| DB | Supabase (Postgres + RLS + vector) |
原生 multi-tenant,embedding 用于 RAG |
| Auth | 通过 @supabase/ssr 使用 Supabase Auth |
Cookie SameSite=Strict, HttpOnly |
| Realtime | Supabase Realtime | postgres_changes + broadcast |
| Storage | Supabase Storage(签名 URL) | 私有 bucket whatsapp-media |
| WAHA Plus (engine NOWEB) + Meta Cloud API | QR 快速起步;官方渠道用于规模化 | |
| 队列 | event_log 表 + workers (cron) |
数据库 trigger 从不发 HTTP |
| 限流 | Upstash Redis(滑动窗口) | Serverless,免费额度够用 |
| AI | Vercel AI SDK v7 — OpenRouter、Anthropic、OpenAI 和 Google | 安装器询问用哪个;之后可界面切换 |
| 校验 | Zod | 外部输入、env、payloads |
| 可观测性 | Sentry(error、transaction、span 和 breadcrumb 均 scrub) | 安装时 opt-in 遥测 |
| 托管 | 带 Docker 的 VPS(合作方 HostGator/SP) | App + WhatsApp + workers 都在你的机器上 |
细节:ARCHITECTURE.md。
🧑💻 开发(仅用于为代码做贡献)
⚠️ 如果你想使用这个 CRM,不是这里 — 请用 VPS 安装器。 本节是给要改代码的人看的。
git clone https://github.com/melgarafael/DeskcommCRM.git
cd DeskcommCRM
nvm use # Node 22
npm install -g pnpm && pnpm install
cp .env.example .env.local # guia completo em docs/SETUP.md
docker compose up -d # WAHA local (opcional em dev sem WhatsApp)
# Schema: aplique o baseline, NÃO as migrations.
# As migrations 0001-0009 e 0013 são stubs `SELECT 1;` — a cadeia não sobe do zero.
# O schema real vive no baseline.sql, o mesmo que o install.sh aplica na VPS.
# `supabase db push` "passa" e deixa o banco vazio.
supabase link --project-ref <seu-ref>
# Num projeto Supabase NOVO, habilite antes as extensões que o schema usa —
# sem elas o baseline para em `type public.vector does not exist`.
psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 -c \
'create extension if not exists vector with schema public;
create extension if not exists citext with schema public;
create extension if not exists pg_trgm with schema public;'
psql "$SUPABASE_DB_URL" -v ON_ERROR_STOP=1 -f supabase/baseline.sql
pnpm dev
App:http://localhost:3000 · 健康检查:http://localhost:3000/api/v1/health
docs/SETUP.md 是所有集成(Supabase、WAHA、AI 提供商、Upstash、
Sentry、Resend、Nuvemshop)的完整教程——从零到 app 跑起来约 60–90 分钟。
📁 结构
DeskcommCRM/
├── app/ # Next.js App Router
│ ├── (admin)/ # Rotas super-admin (impersonate, tenants)
│ ├── (public)/ # Login, recovery
│ ├── app/ # Rotas autenticadas: inbox, radar, kanban, contacts,
│ │ # connections, ai/*, integrations, metrics, lgpd,
│ │ # audit, team, settings
│ └── api/v1/ # API REST canônica (196 route handlers)
├── components/ # React (ui/, inbox/, kanban/, shell/, ...)
├── lib/ # supabase/, waha/, channels/, ai/, agent-engine/,
│ # api/, routing/, navigation/, env.ts
├── workers/ # consumers de event_log (IA, RAG, LGPD, mídia, rotinas)
├── supabase/migrations/ # SQL versionado (+ baseline.sql pro self-host)
├── tests/{e2e,unit,invariants,shell}/
├── scripts/ # seeds, qa-waves, manutenção
├── docs/ # PRDs, specs, runbooks, SETUP.md, ATUALIZANDO.md
└── hostgator-setup-kit/ # instalação e atualização self-host
🧪 测试
pnpm typecheck # tsc --noEmit (estrito)
pnpm lint # eslint next/core-web-vitals
pnpm test:unit # Vitest (NÃO inclui tests/invariants/**)
pnpm test:db # Postgres efêmero + baseline install/update + invariantes
pnpm test:e2e # Playwright (requer dev server)
这些检查是合并到 main 的必要条件。下面这份清单之前说过"四个",后来又说"五个"
——自己去量,别信它:
gh api repos/melgarafael/DeskcommCRM/branches/main/protection \
--jq '.required_status_checks.contexts|join(", ")'
# em 2026-08-14: verify, build-and-size, invariants, e2e, imagens-ok
| Check | 作用 |
|---|---|
verify |
typecheck + lint + lint:channels + test:unit + test:shell |
invariants |
起一个干净的 Postgres,以 install 模式应用 baseline.sql,然后再以 update 模式应用——两遍都用 ON_ERROR_STOP=1,正是这一点让第二遍成为幂等性证明,而不只是"跑完了"——然后运行 RBAC、分配、范围、路由、follow-up、webhooks 和自动化的不变量 |
build-and-size |
在 Node 22 上 pnpm build |
e2e |
起本地 Supabase,应用 baseline.sql,并通过前端运行 49 个 spec 中的 48 个 Playwright |
imagens-ok |
三个 Docker 镜像(app、worker、scheduler)中任何一个构建失败就报错——那正是 self-hoster 安装的产物 |
e2e 之外唯一一个 spec 是 vps-fresh-onboarding——它需要真实的 WAHA + Redis + Resend +
Nuvemshop。它是我们视觉 QA 信条中的 P0,所以 e2e 变绿并不证明全新安装的旅程;
那条旅程要在 VPS 上验证。
不变量中包含 RLS 隔离测试:创建 2 个组织,通过与生产 policy 相同的
auth.uid() / fn_user_org_ids() 路径模拟 JWT claims,并证明 A 组织的用户在
conversations、messages、contacts 和 crm_leads 中看到 B 组织的零行。在此
之前,一个对照用例会证明 B 组织的行确实存在——没有它,表为空时测试也会通过。
📚 文档
| 文档 | 内容 |
|---|---|
hostgator-setup-kit/README.md |
Self-host 安装 — 套件、脚本、带自有代理的主机商 |
docs/ATUALIZANDO.md |
如何更新你的安装,通俗语言 |
VISION.md |
愿景与定位 — 项目是什么、相信什么、走向何方 |
CHANGELOG.md |
每个版本改了什么 — 更新前先读该版本的章节 |
docs/SETUP.md |
开发环境搭建,所有集成的分步指南 |
docs/white-label.md |
为客户安装 — 换品牌,每客户一套 vs 共享一套,转售 |
docs/runbooks/waha-hostgator.md |
生产环境 WAHA 运行手册(容量规划、恢复) |
docs/runbooks/deploy.md |
生产部署 |
CLAUDE.md |
不可协商的约定(贡献前必读) |
ARCHITECTURE.md |
1 页架构概览 |
docs/index.md |
157 份文档的索引,含优先级规则 |
docs/prd/ · docs/specs/ |
PRD 和技术 spec(SQL schema、payloads、MCP、治理) |
🤝 贡献
这个项目是为社区开源的。所有贡献都欢迎——从文档里的 typo 修复到新功能。
开 PR 之前:
- 读
CLAUDE.md(约 5 分钟)——不可协商的约定(multi-tenancy、RLS、audit、LGPD)。 - 读
CONTRIBUTING.md——分支、commit、epic-executor 流程。 - 遵守行为准则。
简短流程:
git checkout -b feat/short-slug
# implementa + testes
pnpm typecheck && pnpm lint && pnpm lint:channels && pnpm test:unit && pnpm test:shell && pnpm build
pnpm test:db # precisa de Docker — é o job `invariants`, obrigatório no merge
git commit -m "feat(escopo): descrição"
# abre PR — o template já traz o checklist de Definition of Done
这两行就是你在本机所能运行的一切,这是刻意为之:只跑一半、然后在几小时等待后把 剩下的当成红色惊喜,是这个仓库能给出的最糟糕的首次体验。
有两个强制 gate 不在其中,只在 CI 里运行:e2e(需要本地 Supabase)和
imagens-ok(构建三个 Docker 镜像)。你本机绿不等于合并时绿。
Definition of Done: typecheck 零错误、lint 零错误、相关测试全绿、若触及 tenant-aware
表则测试过 RLS、变更时有 audit log 输出、若改 schema 则版本化 migration + 在
baseline.sql 里加附录(否则变更到不了 self-host 的人那里)。细节见
CLAUDE.md。
🐛 报告 bug
开一个 issue——模板会问我们
需要什么(环境、/api/v1/health、steps)。运行
bash hostgator-setup-kit/healthcheck.sh 并粘贴输出会很有帮助。
对于安全漏洞,不要开公开 issue——请使用私密漏洞报告。
细节见 SECURITY.md。
🗺️ Roadmap
✅ 已交付
- 基础与平台 — auth(admin 有 MFA)、带 RLS + 隔离测试的 multi-tenancy、4 角色 RBAC、 append-only audit log、tenant onboarding。
- WhatsApp 接待 — 实时三栏 inbox、通过 QR (WAHA) 或 Meta 官方渠道(已审批且已 同步的模板)的多号码连接、媒体走 Storage、防封(throttle + jitter + 时间窗)、STOP 检测。
- CRM 与订单 — 按行业可配置词汇的 kanban(fractional indexing)、通过界面管理漏斗、 customer 360、联系人、tags、Nuvemshop 集成。
- 原生 AI — 带按 tenant 隔离 RAG (pgvector) 的 agent、agent 自行执行的 skills、 组织记忆、按号码的意图路由、情感分析、AI→人工 handoff、按 org 的花费上限、 内部 MCP server。
- AI 提供商选择 — OpenRouter、Anthropic 或 OpenAI,安装时决定,之后可按系统部位 在界面切换。
- 活的 follow-up — 用自适应时间重新点燃冷却对话,按漏斗阶段和按案例触发,轮换队列, 以及识别有回应中断风险的 Radar。
- LGPD — 通过 workers 导出和 redact、级联匿名化、可审计同意。
- Self-host —
hostgator-setup-kit(1 条命令装 app + WhatsApp + 数据库)、自愈式baseline.sql、通过界面更新并自动备份、生产运行手册。 - Webhooks 与自动化 — 获客来源 + WHEN/IF/THEN 规则 + 面向外部系统的触发器。
- 接待治理 — 整个 API 的服务端 RBAC、可审计的分配和转交(AI 作为一等 assignee)、
按角色的查看(RLS)+ 按客服的指标、带队列和管理的自动路由,以及外部 AI agent 的治理
契约(
docs/specs/14)。 - 可见的运营 — 对话中翻译出 anti-ban 保留原因、带严重度的告警中心、卡住消息提醒、 发送保护控制(窗口/节奏/上限)、agent 声明的能力,以及可作为新版本应用(有人工把关) 的 flywheel 提案。
🔮 下一步
- 公开 MCP — 把 CRM 的能力暴露给 agent 生态:接入你想要的 agent,它就能操作 Deskcomm。
- 按行业模板 — 面向诊所、房产中介、知识付费和服务的现成 pipeline 和词汇(电商已交付)。
- 集成 — 通过 adapter pattern 支持 VTEX 和 Shopify(Nuvemshop 已交付)。
- 概率性身份识别 — 跨渠道联系人统一。
💬 社区
- 讨论: [GitHub Discussions](https://github.com/melgar