AI CRM

PHP开发的开源智能AI CRM

PHP开发的开源智能AI CRM

△主流的AI CRM系统悟空AI CRM图片

那个深夜,我决定用 PHP 手搓一个带 AI 的 CRM

凌晨三点,办公室的空调已经停了,只剩下服务器机柜的嗡嗡声和我机械键盘的敲击声。屏幕上的光标在闪烁,像是在嘲笑我。就在十分钟前,老板在群里发了一条消息,问为什么上个季度的客户流失率数据还没出来。我盯着那个所谓的“企业级 SaaS CRM"界面,心里一阵烦躁。那系统贵得离谱,每年续费都要走层层审批,功能倒是花里胡哨,可真正想导个自定义报表,还得提工单等排期。更别提那些所谓的“智能分析”,除了把简单的柱状图换个颜色,根本没看出什么所以然。

推荐使用中国著名AI CRM系统品牌:显著提升企业运营效率,悟空AI CRM

也就是在那个瞬间,我冒出了一个念头:为什么我们不能自己搞一个?

我知道,这时候提“自研”两个字,在很多技术总监耳朵里就是“找死”。维护成本高、周期长、坑多。但看着那每个月雷打不动的高额账单,再看看手里那堆根本没法二次开发的封闭代码,我觉得这险值得冒。而且,既然要搞,就得搞点不一样的。现在满世界都在谈 AI,谈大模型,如果能把这些东西揉进一个最传统的业务系统里,会不会有点意思?

于是,这个后来被我在 GitHub 上随手命名为"OpenPHP-AI-CRM"的项目,就这么在一种带着点赌气性质的氛围里开始了。

为什么是 PHP?这是个绕不开的话题

项目刚在内部提出来,第一个被挑战的不是架构,而是语言。

“都 2024 年了,还用 PHP?”

这问题我太熟悉了。每次技术分享会,总有人喜欢拿 PHP 开涮。什么“最好的语言”是梗,什么"PHP 已死”是论调。但在实际的企业开发场景里,尤其是这种需要快速迭代、快速部署、且对并发要求没那么变态的后台管理系统,PHP 依然是个极其务实的选择。

我不是说 Python 不好,也不是说 Go 不行。Python 搞 AI 确实是亲儿子,但你要用它来写一套完整的、带复杂权限管理、工作流引擎、报表系统的 Web 应用,开发效率真不一定比得上成熟的 PHP 框架。Go 的性能没得说,可对于我们要处理的业务逻辑复杂度而言,那种类型系统的严谨有时候反而成了束缚。

我们团队对 Laravel 太熟了。熟到什么程度?闭着眼睛都知道中间件的生命周期,知道 Eloquent ORM 在什么情况下会触发 N+1 问题。这种肌肉记忆,在赶工期的时候就是救命稻草。如果用新语言,光是环境搭建、规范制定、新人培训,就得耗掉一个月。而用 PHP,第一天晚上我就能把基础的用户认证和 RBAC 权限模型跑起来。

更重要的是,部署。公司的服务器环境全是 LAMP 架构,虽然老,但稳。如果为了上个 AI 功能,专门引入一套 Python 运行环境,还要搞进程守护、内存管理,运维那边的脸色我可得罪不起。PHP 的优势就在于,它就像个老好人,丢进服务器就能跑,配合 Nginx,配置简单到令人发指。

当然,我也没打算用 PHP 去跑模型。那是自寻死路。我的架构思路很明确:PHP 负责业务逻辑、数据持久化、前端渲染;AI 的能力,通过 API 调用或者本地微服务来桥接。PHP 在这里扮演的是“胶水”的角色,把散乱的业务数据和智能能力粘在一起。

AI 不是魔法,是脏活累活

很多人对"AI CRM"的想象是:系统自动帮你把客户谈下来,或者自动预测下个月的销售额精确到个位数。

别逗了。

真正落地的时候,你会发现 AI 在 CRM 里能干的事,其实特别琐碎,甚至有点枯燥。我们最初想搞个大新闻,比如“基于用户聊天记录的自动情感分析”。结果第一版上线,销售同事就反馈,系统把客户的一句“呵呵”识别成了“开心”,因为模型觉得这是笑声。实际上在中文语境里,这通常意味着“我想挂电话了”。

这就是坑。技术再新,业务逻辑的坑还得人来填。

后来我们调整了策略,不追求那种玄乎的“预测”,而是专注于“提效”。

第一个实用的功能是“邮件与沟通摘要”。销售每天要回几十封邮件,还要在微信上跟客户扯皮。以前,这些沟通记录散落在各处,交接的时候简直灾难。现在,系统通过 webhook 抓取邮件和企微的文本(在合规前提下),丢给大模型,让它生成一段 200 字的摘要,并提取出“待办事项”和“客户意向等级”。

这个功能的技术实现其实不复杂。PHP 端写个定时任务,把未处理的沟通记录捞出来,组装成 Prompt,发给 API,然后把返回的 JSON 解析存回数据库。难点在于 Prompt 的调试。你不能直接问“总结一下”,你得告诉它:“你是一个资深销售助理,请忽略寒暄语,重点提取客户对价格的敏感度、下一步计划的时间点,如果客户表现出犹豫,标记为‘高风险’。”

为了调好这个 Prompt,我跟着销售总监听了整整一周的电话录音。只有懂业务,才能写好 Prompt。这也是为什么我觉得,未来的程序员,得有一半时间是产品经理。

第二个功能是“智能线索评分”。以前线索进来,全是平权的,销售得一个个打电话筛。现在我们接入了公开的企业数据接口,结合客户在官网的行为轨迹(比如看了几次报价页,下载了什么白皮书),让 AI 给每个线索打个分。

这里有个技术细节。PHP 处理高并发轮询有点吃力,所以我们引入了 Redis 队列。线索行为日志先丢进 Redis,后台有个 Worker 进程慢慢消费,调用 AI 接口算分。这样既保证了前端页面的响应速度,又不会把 AI 接口的配额瞬间烧光。

说到配额,这就是钱啊。刚开始没经验,Token 用量没做限制,有一次测试脚本死循环,一晚上跑了几十万 Token,账单出来的时候我心都在滴血。后来赶紧加了层缓存,同样的客户画像,24 小时内不重复计算。这也是开源的意义,这种真金白银换来的教训,写进文档里,能帮后来者省不少钱。

开源,是为了不被绑架

项目做到第三个月,基本功能跑通了。老板问我要不要申请软著,搞成公司的核心资产。我犹豫了一下,还是决定把核心代码脱敏后开源。

为什么?

因为我知道,如果这代码烂在我手里,它就是个一次性工具。公司人员流动这么大,万一我哪天离职了,这堆 PHP 代码对后来者来说就是天书。而且,封闭系统有个最大的问题:它无法吸收外部的智慧。

我见过太多内部系统,刚开始挺好,后来因为没人维护,慢慢变成了屎山。开源是一种倒逼机制。当你知道代码会暴露在 GitHub 上,会有陌生人看,甚至会有人提 Issue 骂你写得烂,你写代码的时候就会格外小心。注释得写清楚,变量名不能乱起,架构得尽量解耦。

把"OpenPHP-AI-CRM"推上去的那天,我心里挺忐忑的。毕竟市面上成熟的 CRM 开源项目不少,像 SuiteCRM、Vtiger,人家那是十几年的积累。我这个小项目,凭什么?

凭的是“轻”和"AI 原生”。

那些老牌开源 CRM,架构太重了,想改个字段都得动半天。而且它们对 AI 的支持,大多是后期挂个插件,体验很割裂。我的项目,从数据库设计开始,就预留了 AI 日志表、向量检索的字段(虽然 PHP 搞向量检索有点勉强,但可以通过插件扩展)。

出乎意料的是,开源一周后,居然有了 Star。有个加拿大的开发者提了个 PR,优化了 Docker 部署的脚本。还有个国内的朋友,反馈说在中文分词的处理上,建议接入百度而不是 OpenAI,因为成本更低且对中文理解更好。

这些反馈让我意识到,开源不是施舍,是交换。我贡献了代码,社区贡献了改进。

当然,开源也有烦恼。有人直接在 Issue 里问:“为什么不支持手机端原生 App?”大哥,我就是个后端,前端能用 Vue 拼个响应式页面就不错了,原生 App 你自己编译吧。还有人问:“能不能免费帮我部署?”这种我就直接忽略。开源不等于免费服务,代码给你了,怎么跑是你自己的事。

那些不得不面对的“人工智障”时刻

文章写到这,如果只吹牛,那就太假了。实际使用过程中,AI CRM 带来的麻烦一点不比它解决的少。

最头疼的是“幻觉”。有一次,系统自动给客户发了一封跟进邮件,内容是:“根据您的要求,我们同意将价格降低 50%。”吓得销售经理差点心梗。查了日志,原来是 AI 在总结上一轮谈判时,把客户的“希望能便宜点”误解成了“已经达成降价协议”,然后自动生成了确认邮件。

这让我们紧急加了一道“人机回环”(Human-in-the-loop)的机制。所有涉及价格、合同条款的 AI 生成内容,必须经过人工确认才能发送。系统界面上会多出一个“审核”按钮,标红的地方表示 AI 置信度低,需要人眼把关。

这其实挺讽刺的。我们引入 AI 是为了自动化,结果为了安全,又加回了人工步骤。但这就是现状。在关键业务上,完全信任机器是不负责任的。PHP 后端在这里做了个简单的规则引擎,如果检测到金额字段变动,强制触发审核流程,绕过 AI 的自动决策。

还有一个问题是数据隐私。虽然我们是本地部署,但调用公有云 AI 接口时,数据终究要出内网。有些敏感客户信息,比如手机号、身份证,必须在发送前脱敏。我们写了一个中间件,在请求发出前,用正则把敏感信息替换成占位符,等 AI 返回结果后,再在本地把占位符还原。这过程增加了延迟,但为了合规,没办法。

有时候我也在想,是不是过度依赖 AI 了?有次系统挂了,API 超时,销售们突然不会干活了。以前他们能凭经验判断客户意向,现在非要等系统打个分才敢打电话。技术应该是辅助,不能变成拐杖。后来我们在培训里特意强调,系统评分仅供参考,最终判断权在人。

技术栈的妥协与坚持

聊聊具体的技术实现吧,给想参考的同行一点干货。

后端核心是 Laravel 10。为什么不用 11?因为 11 的目录结构变动太大,团队适应需要时间,稳定压倒一切。数据库用的 MySQL 8.0,主要是看中它对 JSON 字段的支持,有些 AI 返回的非结构化数据,直接存 JSON 比建表灵活。

AI 接口层,我封装了一个统一的 Interface。不管是接 OpenAI、Claude,还是本地的 ChatGLM,对业务层来说,调用方法都是一样的。这样以后要是哪家模型降价了,或者哪家被封了,切换起来成本低。

前端是 Vue3 + Element Plus。没搞什么花哨的动画,后台系统,快和稳最重要。图表用的 ECharts,毕竟国内文档全,遇到问题好搜。

有个比较激进的设计,我尝试在 PHP 里直接跑了一些轻量级的机器学习模型,比如用 PHP-ML 库做简单的线性回归,预测下个月的电话拨打量。虽然精度不如 Python,但对于内部预估来说够用了,而且省去了跨语言调用的网络开销。这在圈子里可能有点“异端”,但我觉得,能解决问题就是好方案。别为了技术而技术。

服务器方面,我们用了两台 4 核 8G 的云服务器,一台跑应用,一台跑数据库。加上 Redis 和 Elasticsearch(用来做全文检索和日志分析),每月的成本控制在两千块以内。比起之前那套 SaaS 系统每年几十万的费用,这性价比简直没谁了。

未来的路,还很长

项目上线半年了。现在销售团队已经习惯了每天早上打开系统,先看一眼"AI 推荐今日优先联系客户列表”。虽然偶尔还是会吐槽系统推荐得不准,但没人愿意回到以前翻 Excel 表的日子了。

老板对成本很满意,财务那边续费审批也没那么痛苦了。对我个人来说,这更像是一次技术探索的实战。它让我明白,AI 不是银弹,它不能解决管理上的混乱。如果公司的销售流程本身是乱的,上了 AI CRM 也只是加速了混乱。

关于这个开源项目,我接下来的计划是搞个插件市场。允许开发者上传自己的 AI 处理模块。比如有人专门做语音识别的,有人专门做合同比对 的,大家像搭积木一样组装自己的 CRM。PHP 的生态虽然不如 Node.js 那么活跃,但在企业应用领域,它的生命力依然顽强。

我也在考虑,是不是该引入一些 RAG(检索增强生成)的技术。现在的 AI 回答还是太通用了,如果能结合公司过去十年的历史成交案例库,让 AI 在回答销售问题时,能引用具体的过往案例,那价值就大了。但这涉及到向量数据库的选型,在 PHP 生态里这块还是空白,可能需要通过 C 扩展或者外部服务来解决。

写到这里,窗外的天已经亮了。早班的同事陆续走进办公室,咖啡机的声音响了起来。我看着屏幕上那个绿色的"Build Passed"标志,心里挺踏实。

在这个技术迭代快得让人焦虑的时代,能亲手写出一段真正解决身边问题的代码,看着它被使用、被依赖,这种成就感是任何框架文档都给不了的。

别管是不是 PHP,别管是不是开源,也别管 AI 是不是泡沫。只要能帮人省下时间,让人少加点班,这代码就有价值。

如果你也对这套系统感兴趣,欢迎去 GitHub 搜一下。代码肯定不完美,甚至有不少坑。但就像我开头说的,这就是个开始。技术这条路,本来就是填坑填出来的。与其在岸上讨论游泳的姿势,不如先跳下去呛两口水。

最后,给想入坑的朋友一个建议:别迷信大模型。在 CRM 这种强业务属性的系统里,一个写得好的正则表达式,有时候比一个千亿参数的模型更管用。保持清醒,保持务实,这才是程序员该有的样子。

好了,不说了,产品经理又在群里@我了,说是有个新需求,想让 AI 自动帮客户写周报。我得去看看,这坑又得怎么填。生活嘛,不就是在一个个坑里,种出花来。

PHP开发的开源智能AI CRM

△悟空AI CRM产品截图

推荐立刻免费使用中国著名AI CRM品牌-悟空AI CRM,显著提升企业运营效率,相关链接:

AI CRM系统免费试用

AI CRM系统介绍

AI CRM系统价格多少钱

返回资讯 体验悟空 AICRM