trycompai/crm

Comp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM.

它是什么

Comp AI CRM 是一个为 AI 代理构建的开源客户关系管理(CRM)系统。它不是将 AI 视为附加在数据库上的聊天框,而是将代理作为系统的核心:CRM 是代理记录笔记的地方。

核心思想

代理按照自己的时间表和工作队列运行。它决定下一步查看什么,预订后续操作,并在研究预算耗尽之前使用它。关键的是,它从不猜测关于一个人的信息。工具只报告它们实际观察到的内容(例如,签名块、GitHub 帐户)。强有力的证据会写入记录;弱证据则成为人类可以确认或拒绝的建议。自信的错误事实被认为比空字段更糟糕。

代理如何工作

  • 它使用一个名为 eve 的框架(文件系统优先的持久代理)——每个工具都是一个文件,每个技能都是一个 markdown 文档,日程也是文件。
  • 它附带 18 个内置工具(搜索 CRM、识别联系人、研究人物、丰富公司信息、记录事实等)和 4 个技能(证据规则、身份匹配、数据边界、撰写简报)。
  • 代理处理带有租约的工作队列:它使用 FOR UPDATE SKIP LOCKED 锁来获取行,这样两个调度器就不会重复工作,失败的运行会在租约到期时释放它们的行。
  • 它可以安排重新检查,并告诉您为什么它会回来——一个原因,而不是默认值。
  • 不需要外部源。 即使没有 API 密钥,它仍然可以读取您自己的线程、会议和签名块——免费且可靠。每个可选密钥(用于网络搜索的 Perplexity,用于公司品牌数据和 LinkedIn 的 Context)都会打开另一个查找位置。
  • 代理在没有网络和数据库的沙箱中运行——它只能处理文本,使用 bash、grep 和文件操作。这可以防止任何 shell 命令泄露客户数据。数据库 URL 永远不会提供给沙箱。
  • 您可以与它交谈:每个联系人、公司和交易都有一个代理选项卡,您可以在其中查看其步骤、丢弃的线索,并回答其问题。对话在重新加载后仍然存在。

连接与访问

  • 打开 设置 → 连接 以连接外部服务(Gmail、Microsoft 等)。只有所有者/管理员可以管理连接。
  • 每个服务可以是只读或读/写。连接页面列出了每个发现的工具及其访问类型;新的或更改的工具需要审查后才能由代理使用。
  • 断开服务会阻止代理的下一次调用,并删除其所有工具;您必须重新连接并审查后才能再次使用。

技术栈

  • 基于 Bun 和 Turborepo 的单仓库,可部署在 Vercel 上。
  • 前端:Next.js(App Router)+ shadcn/ui。
  • API:NestJS 和 tRPC,用于从浏览器到数据库的类型安全 RPC。
  • 数据:Postgres(Neon)和 Prisma ORM,可选的 Redis 缓存。
  • 认证:Better Auth — Google、Microsoft 或自定义 IdP;一个允许列表控制谁可以登录。
  • 文件:Vercel Blob 用于个人资料图片(以便它们在原始源消失后仍然存在)。

强调三个设计规则:智能永远不会存在于 API 中(代理决定事件的含义),packages/ui 是 UI 样式的唯一来源,并且没有组织——它有意是单租户的。

快速开始

您需要 Bun 和 Docker。克隆仓库,复制 .env.example,设置几个必需值,然后运行:

bun install
docker compose up -d   # Postgres
bun run db:deploy
bun run db:seed        # 可选的演示数据
bun run dev

应用在 localhost:3000 上运行,API 在 localhost:3001 上运行。默认分支是 release(稳定);main 用于未发布的工作。

必需的 .env 值

  • BETTER_AUTH_SECRET – 使用 openssl rand -base64 32 生成
  • ALLOWED_SIGN_IN – 您的电子邮件域名或单个地址(例如 acme.com)。未设置意味着没有人可以登录。
  • 至少一个 OAuth 对(Google 和/或 Microsoft)。有关详细设置,请参阅 README。
  • DATABASE_URL 已经匹配 docker compose 的 Postgres,所以除非您有自己的,否则请保持原样。

.env 中的所有其他内容都是可选的——您可以在没有它们的情况下运行。

配置与部署

  • 仓库根目录的一个 .env 被所有三个进程(应用、API、代理)读取。真实环境变量始终优先。
  • 部署为三个单独的服务:Next.js 应用、NestJS API 和代理。它们只需要在 DATABASE_URL 和 BETTER_AUTH_SECRET 上达成一致。将 API_URL/APP_URL 设置为生产源,并为您的 OAuth 提供商添加回调 URL。CRON_SECRET 保护邮箱同步端点。

完整细节在 README 中——这只是本质。

相关

  • 项目
  • 项目
  • Dispatch
  • 项目
  • 项目