trycompai/crm · 上手攻略
- 仓库:trycompai/crm
- 链接:https://github.com/trycompai/crm
- 分类:AI/Agent · CRM
- 作者:Tom
- 更新:2026-08-05
这是什么
trycompai/crm 是一个以 AI Agent 为核心的 CRM 系统,核心理念与所有传统 CRM 完全不同:大多数 CRM 是"数据库前面加表单",AI 版不过是在表单旁边加了个聊天框。trycompai/crm 反其道而行——Agent 才是产品,数据库只是它的笔记本。
该系统由两个独立进程组成: - NestJS API 服务:纯粹的记录层,只负责任务队列写入,不做任何智能判断("把 enrichment API 调用塞进 NestJS 服务 = Bug")。 - Agent 运行时:跑在 eve.dev(Vercel 面向持久化 Agent 的文件系统优先框架)上,自己决定下一步看什么、预约跟进、花研究预算,并在预算耗尽时主动停止。
Agent 有 18 个内置工具(read_crm_history、search_crm、identify_contact、research_person、enrich_company、record_fact、schedule_recheck 等)、4 个 skill(以 Markdown 文件形式存在,由 Agent 读取后可版本化管理)、1 个调度器(dispatch.ts),以及一个 deny-all 出向流量的沙箱(可执行 bash/grep/glob,但沙箱内无网络、无数据库凭证)。
一句话总结:Agent 长期驻存、自主工作,不需要人工触发——关掉浏览器它还在跑。
解决什么问题
传统 CRM 的问题是"找真相、写下来"全靠人,销售要手动录入数据、查客户背景、记跟进理由,AI 聊天框不过是把这些活儿挪到对话里,本质还是 request-response。trycompai/crm 把"持续研究 + 主动记录"这件事交给 Agent,人只负责核实和决策。
具体解决:
- 不用销售手动填字段:Agent 自动从邮箱同步、签名块、GitHub 账号等来源提取信息写入 CRM。
- 不用人去想下一步看谁:Agent 根据调度队列自行决定优先看哪个客户、何时复检。
- 不依赖外部数据源也能跑:零 API Key 时,Agent 读自己的邮件线程和签名块——免费且是最可信赖的证据来源。
- 证据分级,避免 AI 幻觉写入记录:Agent 的工具只报告"观察到什么"(如 crm.signature-block),不报告置信度;强证据写入记录,弱证据变成待人确认的建议。模型自评置信度往往出错,所以系统根本不接受这个概念。
快速安装
⚠️ 前提:Node.js 18+,Docker(推荐)或 PostgreSQL 14+
# 1. 克隆仓库
git clone https://github.com/trycompai/crm.git
cd crm
# 2. 复制环境变量模板
cp .env.example .env
# 3. 编辑 .env,至少填写以下必须项:
# DATABASE_URL=postgresql://user:pass@localhost:5432/crm
# GOOGLE_CLIENT_ID=你的Google OAuth Client ID
# GOOGLE_CLIENT_SECRET=你的Google OAuth Client Secret
# AGENT_BRIDGE_SECRET=随机字符串(API与Agent进程间共享密钥)
# 可选(逐步开启):
# PERPLEXITY_API_KEY= # 网络研究
# RAPIDAPI_KEY= # LinkedIn 集成
# CONTEXT_API_KEY= # 公司品牌数据(logo、行业、颜色)
# 4. 启动数据库(Docker)
docker compose up -d postgres
# 5. 安装依赖并启动
npm install
npm run dev
启动后会看到 Agent 打印出当前已配置的集成清单:
[agent] on LinkedIn (RAPIDAPI_KEY)
[agent] off Web research (PERPLEXITY_API_KEY)
[agent] off Company brand data (Settings → General)
核心用法
日常使用
- 打开浏览器,用 Google 账号登录(allow-list 白名单控制访问)。
- 在 Contact / Company / Deal 页面可以看到Agent Tab:显示 Agent 思考链路、丢弃的线索及原因。
- 直接与 Agent 对话,指定研究目标或要求它对某联系人做复检。
Agent 工作机制
// apps/agent/lib/tasks.ts
// 任务调度核心:claimDue 用 FOR UPDATE SKIP LOCKED 租下到期行
const due = await claimDue(db);
// Agent 决定看哪个联系人、调用哪个工具
// 完成后调用 schedule_recheck(contactId, reason) 预约下次复检
// reason 对销售可见——Agent 必须能解释为什么 14 天后再来看这个人
关键工具一览
| 工具 | 作用 |
|---|---|
read_crm_history |
读取指定联系人的 CRM 历史记录 |
search_crm |
语义搜索 CRM 数据库 |
identify_contact |
从签名块/邮件头识别联系人身份 |
research_person |
研究某人的公开信息(需 LinkedIn key) |
enrich_company |
补充公司 logo、行业、地理位置 |
record_fact |
将结构化事实写入 CRM 记录 |
schedule_recheck |
预约下次复检时间及原因 |
github.account-identity |
从 GitHub 信息核实身份 |
沙箱安全模型
# 沙箱:无网络 + 无数据库凭证
# 仅允许:bash, grep, glob, /workspace 目录操作
# 出向网络全走 web_fetch / web_search(由主应用运行时处理)
环境变量核心清单
| 变量 | 必需 | 说明 |
|---|---|---|
DATABASE_URL |
✅ | PostgreSQL 连接串 |
GOOGLE_CLIENT_ID/SECRET |
✅ | Google OAuth(登录) |
AGENT_BRIDGE_SECRET |
✅ | API 与 Agent 进程间共享密钥 |
PERPLEXITY_API_KEY |
❌ | 网络研究(关 Agent Tab 可选) |
RAPIDAPI_KEY |
❌ | LinkedIn 集成 |
CONTEXT_API_KEY |
❌ | 公司 logo/行业数据(品牌识别) |
典型适用场景
- B2B 销售团队:需要持续追踪潜在客户,Agent 自动从公开渠道研究对方公司动态,减少销售手动 Research 时间。
- 内部 CRM 迁移:已有大量客户数据但缺乏结构化背景,Agent 可以批量读取邮件签名块和历史对话来填补字段。
- 一人公司 / 小团队:不需要完整的销售流程管理,Agent 帮你记住上次跟谁聊了什么、下次该联系谁。
- 研究驱动型销售:需要深入了解客户公司战略、技术栈、融资情况,而非简单记录姓名电话。
坑与注意
- 安全模型极简:整个授权就是"谁能登录谁能看到一切",适合内部工具;不要直接用于真实客户数据,先看 SECURITY.md。
- 单租户设计:不支持多租户,每个部署一个数据库实例,适合内部团队共享,不适合 SaaS 对外服务。
- Agent 幻觉风险:工具输出的是"观察到的事实"而非"我认为是这样",但仍需人在 Agent Tab 里核实——系统只是把错误从"写入字段"降级为"待确认建议"。
- API 端点零智能:后端 API 只写队列不调用 LLM,智能全在 Agent 进程。如果 Agent 崩溃,数据库仍在写入但无 Agent 处理——监控 Agent 进程健康状态很重要。
- Eve 框架依赖:Agent 运行时基于 Vercel 的实验性框架 eve.dev,生产使用前需确认框架稳定性。
- PostgreSQL FOR UPDATE SKIP LOCKED:调度器依赖这个特性做并发抢占——不支持此语法的数据库(如 MySQL)无法运行。
与同类对比
| 方案 | 定位 | Agent 自主性 | 数据源依赖 | 部署难度 |
|---|---|---|---|---|
| trycompai/crm | Agent-first CRM | 完全自主运行 | 可零外部依赖 | 中等(需自托管) |
| HubSpot CRM | 传统表单+AI辅助 | 无自主运行 | 需手动录入 | 低(SaaS) |
| Salesforce Einstein | 大厂AI CRM | 有限(辅助建议) | 封闭生态 | 高(企业级) |
| Pipedrive | 轻量销售管道 | 有限 | 手动+部分自动 | 低(SaaS) |
核心差异:大多数 CRM 把 AI 当"增强搜索/写邮件"的附件功能;trycompai/crm 把 AI Agent 当核心,数据库只是持久化层。
一句话推荐结论
如果你厌倦了"CRM 还是要人来填",又愿意接受 Agent 的不确定性——trycompai/crm 提供了目前最彻底的"Agent 即产品"实验,值得用一个真实客户池测试它能否真正减少你的销售 Research 工作量。
原始 commit:https://github.com/trycompai/crm/commits/main 原始 issue/PR 链接:https://github.com/trycompai/crm/issues