这次我们来看一个名为“悟空 AICRM”的项目,它本质上是一个集成了AI能力的客户关系管理系统。对于需要将大模型智能对话、内容生成等能力融入销售、客服、市场等业务流程的团队来说,本地部署一个这样的系统,意味着数据安全可控和深度定制化。本文将带你完成从零开始的完整Docker化部署,重点解决“能不能跑起来”和“怎么用起来”的问题。

项目的核心价值在于,它试图将AI Agent、知识库、工作流等前沿概念封装成一个开箱即用的业务系统。我们最关心的是它的部署门槛:是否需要高性能GPU?依赖是否复杂?本文的实操将基于Docker容器技术,这能极大简化环境配置的复杂度。无论你是想评估这套系统,还是计划将其用于内部测试或小规模应用,跟着步骤走一遍,就能得到明确的答案。

1. 核心能力速览

在动手部署之前,我们先快速了解“悟空 AICRM”的核心特性和部署要求,这有助于判断它是否适合你的当前环境。

能力项 说明
项目类型 AI增强型客户关系管理系统(CRM)
核心功能 智能客户对话、销售流程自动化、知识库问答、数据分析看板、AI工作流引擎
部署方式 推荐Docker Compose ,一键拉起所有服务(Web前端、后端API、数据库、向量数据库等)
硬件门槛 中等 。CPU推理模式下对GPU无硬性要求,但涉及大模型推理时,GPU会显著提升体验。内存建议8GB以上。
显存占用 非必须,取决于模型 。如果使用本地部署的轻量化大模型(如Qwen2.5-7B-Instruct的4bit量化版),约需6-8GB显存。系统也支持调用云端API(如OpenAI、DeepSeek),此时对本地显卡无要求。
数据存储 使用MySQL作为业务数据库,Milvus/Weaviate等作为向量数据库(用于知识库)。需预留至少10GB磁盘空间。
是否支持API 。系统提供完整的RESTful API,可供其他业务系统集成调用。
是否支持批量任务 。支持批量导入客户数据、批量执行AI外呼任务(需配置语音接口)、批量生成营销内容等。
适合场景 企业内网安全部署、AI+CRM方案技术验证、对数据隐私要求高的销售/客服团队、开发者进行二次开发。

从表格可以看出,该项目通过Docker实现了复杂依赖的封装,部署的核心难点从“环境配置”转移到了“网络编排与资源分配”。只要宿主机资源足够,部署过程是标准化且可重复的。

2. 适用场景与使用边界

在投入时间部署之前,明确它能做什么、不能做什么至关重要。

它非常适合以下场景:

  1. 数据敏感型企业的内部CRM :所有数据(客户信息、对话记录、知识库)都留在自有服务器,符合金融、医疗、法律等行业的合规要求。
  2. AI与业务结合的探索与验证 :团队希望在一个现成的系统中,快速体验AI如何改造客户跟进、智能问答、报告生成等具体场景,而无需从零开发。
  3. 定制化AI工作流的开发基础 :系统提供了工作流引擎,开发者可以基于此构建复杂的、符合自身业务逻辑的自动化流程,例如“客户询价 -> AI分析历史订单 -> 自动生成报价单 -> 发送邮件”。
  4. 替代部分传统CRM的自动化功能 :利用AI自动总结通话记录、分类客户意向、生成下周跟进计划等,提升销售人效。

它的使用边界和注意事项:

  1. 并非“开箱即用”的SaaS :部署后需要进行大量的初始化配置,包括组织架构、角色权限、业务流程定义、AI模型接入等,有一定学习成本。
  2. AI能力依赖模型或API :系统的智能程度取决于背后接入的大模型。使用免费开源模型,效果可能不及GPT-4等商用模型;使用云端API,则会产生费用并涉及网络访问。
  3. 性能与规模相关 :当客户数据量达到百万级,或并发用户数很高时,需要对数据库、向量数据库和缓存进行性能调优,默认的Docker Compose配置可能无法支撑。
  4. 合规与授权 :如果使用该系统处理真实的客户个人信息,必须确保符合《个人信息保护法》等相关法规。使用AI生成内容时,需对生成结果进行人工审核,避免产生错误或有害信息。

3. 环境准备与前置条件

部署“悟空 AICRM”需要一个干净的Linux服务器环境。以下是在开始安装Docker和部署应用之前,必须完成的准备工作。

3.1 操作系统要求

  • 推荐 :Ubuntu 22.04 LTS 或 CentOS 8+/Rocky Linux 8+。本文演示以Ubuntu 22.04为例。
  • 备选 :其他主流Linux发行版也可,但部分命令和包管理工具需要调整。

3.2 硬件资源检查 请通过SSH连接到你的服务器,并执行以下命令进行基础检查:

# 1. 检查系统版本
lsb_release -a

# 2. 检查CPU和内存
free -h
lscpu | grep -E “(Model name|CPU\(s\))”

# 3. 检查磁盘空间(确保根目录或目标数据盘有足够空间)
df -h

# 4. 检查GPU(如果有,并计划用于本地模型推理)
lspci | grep -i nvidia
nvidia-smi # 如果已安装驱动,此命令可查看显卡详情

最低配置建议 :2核CPU,8GB内存,50GB可用磁盘空间。 推荐配置 :4核CPU,16GB内存,100GB SSD磁盘空间。如果计划在本地运行7B参数以上的大模型,则需要一张至少8GB显存的NVIDIA显卡。

3.3 网络与安全组配置 确保服务器的以下端口未被占用,且已在防火墙或云服务商安全组中放行:

  • 80 / 443 :用于Web前端访问(可通过Nginx反代)。
  • 3306 :MySQL数据库端口( 强烈建议仅限内网访问,或修改为其他端口 )。
  • 19530 :Milvus向量数据库端口(默认)。
  • 7860 / 8000 :后端API服务常用端口(具体以项目docker-compose.yml为准)。
  • 22 :SSH管理端口。

你可以使用 netstat -tunlp 命令查看当前端口占用情况。

4. 安装部署与启动方式

一切就绪,我们开始核心的部署流程。全程使用Docker和Docker Compose,这是最简洁、依赖冲突最少的方式。

4.1 安装Docker与Docker Compose 如果你的系统尚未安装,请执行以下命令:

# 更新系统包索引
sudo apt-get update

# 安装必要的依赖包
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 添加Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gosu tee /etc/apt/keyrings/docker.asc > /dev/null

# 设置Docker稳定版仓库
echo \
  “deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 验证Docker安装
sudo docker run hello-world

# 将当前用户加入docker组,避免每次使用sudo(操作后需退出SSH重新登录生效)
sudo usermod -aG docker $USER

4.2 获取“悟空 AICRM”部署文件 通常,开源项目会提供标准的 docker-compose.yml 和环境变量配置文件 .env 。你需要从项目的官方仓库(如GitHub)获取它们。

# 创建一个专用的项目目录
mkdir -p ~/wukong-aicrm && cd ~/wukong-aicrm

# 假设项目仓库地址,请替换为实际地址
# 方式一:直接下载部署文件(如果项目提供)
wget -O docker-compose.yml https://raw.githubusercontent.com/xxx/wukong-aicrm/main/docker-compose.yml
wget -O .env.example https://raw.githubusercontent.com/xxx/wukong-aicrm/main/.env.example

# 方式二:克隆整个仓库(如果需要进行代码级定制)
# git clone https://github.com/xxx/wukong-aicrm.git .
# cd docker

# 复制环境变量模板并配置
cp .env.example .env

4.3 关键配置修改 编辑 .env 文件,这是整个系统的核心配置。你需要重点关注以下几项:

# 使用文本编辑器(如nano或vim)打开.env文件
nano .env
  • 数据库密码 :修改 MYSQL_ROOT_PASSWORD MYSQL_PASSWORD 为强密码。
  • 服务端口 :检查 WEB_PORT (前端)、 API_PORT (后端)等,确保不与系统已有端口冲突。
  • AI模型配置
    • 如果使用 云端API (如OpenAI),需要填写 OPENAI_API_KEY OPENAI_BASE_URL (若使用代理)。
    • 如果使用 本地模型 ,需要配置 LOCAL_LLM_MODEL (模型名称或路径)和 LOCAL_LLM_API_BASE (指向本地Ollama、OpenAI-format API等服务的地址)。
  • 文件存储路径 :确认 VOLUME_PATH 指向一个足够大的磁盘分区。
  • 域名/访问地址 :设置 DOMAIN APP_URL ,用于系统内部链接生成。

4.4 启动所有服务 配置完成后,使用Docker Compose一键启动所有容器。

# 在包含docker-compose.yml的目录下执行
# -d 参数表示后台运行
sudo docker compose up -d

这个命令会依次拉取(如果本地没有)并启动MySQL、Redis、Milvus、后端API、前端Web等多个容器。首次执行耗时较长,取决于网络速度。

4.5 验证服务状态 启动后,使用以下命令检查容器是否全部正常运行:

# 查看所有容器状态
sudo docker compose ps

# 查看某个容器的实时日志(例如后端api服务)
sudo docker compose logs -f api

如果所有容器状态均为 running ,且日志中没有持续报错,则说明部署成功。

4.6 访问系统 在浏览器中访问你服务器IP和配置的前端端口,例如 http://your-server-ip:3000 。你应该能看到系统的登录界面。首次访问通常需要初始化管理员账号,请根据页面提示操作。

5. 功能测试与效果验证

部署成功只是第一步,接下来我们需要验证核心功能是否正常工作。我们按照从基础到AI能力的顺序进行测试。

5.1 基础功能测试:用户与权限管理

  • 测试目的 :验证系统后台管理功能是否正常。
  • 操作步骤
    1. 使用初始化创建的管理员账号登录系统。
    2. 进入“系统管理”或“管理员后台”。
    3. 尝试创建新用户、新角色,并分配权限。
    4. 使用新用户登录,验证权限是否生效。
  • 预期结果 :能够顺利完成用户、角色、权限的增删改查操作,权限控制生效。
  • 常见问题 :如果无法登录或后台页面报错,检查后端API容器日志,常见原因是数据库连接失败或初始化脚本未执行。

5.2 核心业务测试:客户与销售机会管理

  • 测试目的 :验证CRM的核心数据管理功能。
  • 操作步骤
    1. 在“客户”模块,手动创建一个新客户,填写名称、电话、来源等信息。
    2. 为该客户创建一个“销售机会”,填写商机金额、预计成交时间等。
    3. 在“跟进记录”中,添加一条文本跟进记录。
    4. 尝试导入一个包含客户信息的CSV文件(如果系统支持)。
  • 预期结果 :客户、商机、跟进记录能正常创建、查看、编辑和删除。数据列表和详情页加载流畅。
  • 判断成功 :数据能持久化保存,并在页面正确显示。

5.3 AI能力测试:知识库问答

  • 测试目的 :验证系统“大脑”是否上线,这是AI CRM的关键。
  • 前置条件 :确保AI模型已正确配置(无论是云端API还是本地模型)。
  • 操作步骤
    1. 进入“知识库”模块。
    2. 创建一个新的知识库,例如“公司产品手册”。
    3. 上传一份PDF或Word格式的产品文档,或直接粘贴文本内容。系统应自动进行文本分割和向量化存储。
    4. 在知识库的“问答”界面,输入一个基于文档内容的问题,例如“你们旗舰产品的主要优势是什么?”
  • 预期结果 :系统在几秒内返回一个基于上传文档生成的答案,答案应相关、准确。
  • 判断成功 :返回的答案并非通用回复,而是明显引用了上传文档中的具体信息。
  • 失败排查
    • 检查向量数据库(Milvus)容器是否运行正常。
    • 查看后端日志,确认文档解析和向量化过程是否报错。
    • 确认AI模型配置正确,且API调用成功(查看模型服务或API的调用日志)。

5.4 AI能力测试:智能对话与工作流

  • 测试目的 :验证AI能否在业务场景中交互。
  • 操作步骤
    1. 进入“AI工作流”或“智能助手”模块。
    2. 尝试运行一个预置的“客户需求分析”工作流。可能需要你输入一段客户咨询的原始文本。
    3. 观察AI是否能够按步骤执行:提取关键信息、匹配产品知识、生成回复建议或总结报告。
  • 预期结果 :AI能够理解输入,并按照预定义的逻辑链输出结构化的结果。
  • 性能观察 :记录从发起请求到获得完整响应的耗时。如果使用本地模型,同时观察GPU显存占用( nvidia-smi )和CPU/内存使用率( htop )。

6. 接口 API 与批量任务

对于开发者或希望集成到其他系统的用户,API接口和批量任务能力至关重要。

6.1 API接口调用测试 系统后端通常会提供Swagger或OpenAPI文档。访问 http://your-server-ip:api-port/docs http://your-server-ip:api-port/swagger 即可查看。

  • 测试接口可用性 (以获取令牌为例):
curl -X POST “http://your-server-ip:8000/api/auth/login” \
  -H “Content-Type: application/json” \
  -d ‘{“username”: “admin”, “password”: “your_password”}’

预期返回一个包含 access_token 的JSON对象。

  • 调用知识库问答API
import requests

api_base = “http://your-server-ip:8000”
token = “your_access_token_here”

headers = {
    “Authorization”: f”Bearer {token}”,
    “Content-Type”: “application/json”
}

payload = {
    “knowledge_base_id”: 1, # 你的知识库ID
    “question”: “你们产品的售后服务政策是怎样的?”,
    “top_k”: 3 # 返回最相关的3个片段
}

response = requests.post(f”{api_base}/api/knowledge/query”, json=payload, headers=headers, timeout=30)
if response.status_code == 200:
    result = response.json()
    print(“答案:”, result.get(‘answer’))
    print(“参考来源:”, result.get(‘sources’))
else:
    print(“请求失败:”, response.status_code, response.text)

6.2 批量任务处理 批量功能通常通过后台任务队列(如Celery)实现。测试方式包括:

  1. 批量导入客户 :在Web界面找到“批量导入”功能,上传一个格式正确的CSV文件,观察后台任务执行进度和最终导入数量。
  2. 批量AI外呼/短信 (如果集成):配置好语音/短信渠道后,创建一个包含多个客户电话的任务列表,提交后观察任务状态变化。
  3. 批量报告生成 :选择一批销售机会,触发“批量生成客户分析报告”功能。

关键观察点

  • 任务队列状态 :通过管理界面或命令(如 sudo docker compose exec worker celery -A app.celery status )查看Celery Worker是否正常运行。
  • 资源占用 :执行批量任务时,监控服务器的CPU、内存和IO使用情况,避免资源耗尽影响主服务。
  • 错误处理 :查看任务日志,确认是否有单条数据失败导致整个任务中断,系统是否具备重试或跳过机制。

7. 资源占用与性能观察

一个稳定运行的系统需要对资源消耗心中有数。以下是关键的观察指标和方法。

7.1 容器资源监控 使用Docker自带的命令可以快速查看整体资源占用:

# 查看所有容器的实时资源使用(CPU、内存、网络IO、磁盘IO)
sudo docker stats

# 查看某个特定容器的详细信息,包括启动命令、映射端口等
sudo docker inspect <container_name_or_id>

7.2 关键服务资源分析

  • 后端API容器 :这是CPU和内存的消耗大户,尤其是在处理AI推理请求时。使用 docker stats 观察其内存占用,正常情况下应在1-4GB之间波动,如果持续增长需警惕内存泄漏。
  • 向量数据库容器(Milvus) :启动后会占用较多内存用于加载索引。查询时CPU使用率会上升。确保为它分配足够的内存(通过docker-compose.yml中的 mem_limit 设置)。
  • MySQL容器 :常规操作下资源占用平稳。在批量数据导入或复杂报表查询时,CPU和IO会升高。
  • AI模型服务容器 (如果独立部署):这是 显存消耗的核心 。如果本地运行7B模型,使用 nvidia-smi 命令观察显存占用。一个4bit量化的7B模型推理,通常需要5-8GB显存。如果使用CPU推理,则会对系统内存和CPU造成巨大压力。

7.3 性能优化初步思路

  1. API响应慢 :检查后端日志是否有慢查询。优化数据库索引,或为频繁访问的数据增加Redis缓存。
  2. 知识库问答慢 :向量检索耗时过长可以调整Milvus的索引类型(如HNSW)和搜索参数( nprobe )。也可以考虑将向量检索服务与AI推理服务分离部署。
  3. 内存/显存不足
    • 对于API服务,可以调整Gunicorn/Uvicorn的worker数量。
    • 对于AI模型,使用量化程度更高的模型(如GPTQ-4bit),或升级硬件。
    • docker-compose.yml 中为每个服务设置合理的资源限制( deploy.resources.limits ),防止单个容器拖垮宿主机。
  4. 磁盘空间不足 :定期清理日志文件( *.log )、临时文件以及不需要的旧版本Docker镜像( docker image prune -a )。

8. 常见问题与排查方法

部署和运行过程中难免遇到问题,下表整理了常见问题的排查思路。

问题现象 可能原因 排查方式 解决方案
docker compose up -d 失败 1. 网络问题,无法拉取镜像。
2. docker-compose.yml 语法错误。
3. 端口被占用。
1. 运行 docker compose config 检查配置。
2. 查看具体错误信息 docker compose logs
3. netstat -tunlp | grep <端口号>
1. 配置国内镜像加速器。
2. 修正yml文件缩进或格式。
3. 修改 .env 中的端口号或停止占用端口的进程。
前端页面能打开,但登录后白屏或接口报错 1. 后端API服务未启动或崩溃。
2. 前端配置的API地址错误。
3. 跨域问题。
1. docker compose ps 查看api容器状态。
2. docker compose logs api 查看后端日志。
3. 浏览器F12打开开发者工具,查看Console和Network标签页报错。
1. 重启api容器 docker compose restart api
2. 检查前端环境变量 VITE_API_BASE_URL 是否正确指向后端。
3. 在后端CORS配置中添加前端地址。
知识库上传文档后,问答无结果 1. 向量数据库连接失败。
2. 文档解析失败(格式不支持或编码问题)。
3. AI模型未配置或调用失败。
1. 检查milvus容器状态和日志。
2. 查看后端日志中关于文档解析和向量化的部分。
3. 测试AI模型接口是否通: curl -X POST <模型API地址>/v1/chat/completions ...
1. 确保milvus服务健康,集合(collection)已创建。
2. 尝试上传纯文本txt文件测试。
3. 检查 .env 中AI模型相关配置,并确认API密钥有效、网络可达。
系统运行一段时间后变卡或崩溃 1. 内存泄漏。
2. 磁盘空间满。
3. 数据库连接池耗尽。
1. docker stats 观察容器内存增长趋势。
2. df -h 检查磁盘使用率。
3. 查看数据库日志和连接数。
1. 定期重启有问题的容器,或联系开发者排查代码。
2. 清理日志、临时文件和Docker缓存。
3. 优化数据库配置,增加 max_connections ,并在应用层使用连接池。
批量任务卡在“处理中”状态 1. Celery Worker进程挂掉。
2. 消息队列(Redis/RabbitMQ)问题。
3. 任务本身代码有异常。
1. docker compose exec worker celery -A app.celery status
2. 检查redis容器日志。
3. 查看Worker的日志 docker compose logs worker
1. 重启worker容器 docker compose restart worker
2. 确保redis配置正确且内存充足。
3. 根据Worker日志中的异常堆栈修复代码或配置。
本地模型推理速度极慢 1. 使用CPU推理。
2. 模型未量化,显存不足导致使用系统内存交换。
3. 推理参数(如 max_length )设置过高。
1. nvidia-smi 确认GPU是否被使用。
2. 观察系统内存交换情况 free -h si/so (使用 vmstat 1 )。
1. 确认CUDA和显卡驱动已正确安装,并在模型加载代码中指定了GPU。
2. 换用量化版本模型(如GGUF-Q4_K_M)。
3. 在API调用时降低生成token的最大数量。

9. 最佳实践与使用建议

基于上述部署和测试经验,总结出以下几点建议,可以帮助你更稳定、高效地使用“悟空 AICRM”。

  1. 部署环境隔离 :始终在独立的服务器或虚拟机中部署生产环境,避免与其他应用争抢资源。使用Docker Compose的 profiles 功能来区分开发、测试和生产配置。
  2. 配置版本化管理 :将修改后的 docker-compose.yml .env 文件纳入Git版本控制(注意 .env 中的密码需用 .env.example 模板管理,真实密码通过CI/CD或运维工具注入)。这保证了环境的一致性,便于回滚。
  3. 数据持久化与备份 :在 docker-compose.yml 中,务必为MySQL、Milvus等有状态服务配置 卷(Volumes)映射 ,将数据保存在宿主机目录。并建立定期的数据库备份机制(例如,通过 cron 定时执行 mysqldump )。
  4. AI模型策略 :在生产环境中, 优先考虑使用成熟的云端大模型API (如GPT-4、DeepSeek等),以获得最佳效果和稳定性。本地模型更适合对数据隐私有极端要求、且拥有强大GPU运维能力的场景。可以采用混合模式:关键业务用云端API,内部辅助分析用本地轻量模型。
  5. 安全加固
    • 修改所有默认密码(数据库、Redis、管理后台)。
    • 通过Nginx反向代理对外暴露服务,并配置SSL证书(HTTPS)。
    • 在Nginx或云防火墙层面,限制API端口的访问IP,仅允许前端服务器或内部网络调用。
    • 定期更新Docker镜像至安全版本。
  6. 监控与告警 :至少部署基础的监控,如使用 cAdvisor + Prometheus + Grafana 监控容器资源,或使用云服务商的监控服务。设置CPU、内存、磁盘使用率的告警阈值。
  7. 合规使用 :在系统中启用操作日志审计功能。使用AI生成客户沟通内容时,务必加入人工审核环节。处理客户个人信息前,确保已获得合法授权。

10. 总结与下一步

通过这篇教程,我们完成了“悟空 AICRM”从环境准备、Docker部署、功能验证到问题排查的完整闭环。这个项目的最大优势在于它提供了一个 一体化、可私有化部署的AI+CRM试验场 。你能在几天内,就在自己的服务器上搭建起一个具备智能对话、知识管理和工作流自动化能力的业务系统。

对于初次接触的团队,建议按以下路径推进:

  1. 第一步(本周) :按照本文指南,在测试环境成功部署并跑通所有基础功能。重点验证知识库问答和AI工作流,这是区别于传统CRM的核心。
  2. 第二步(下个月) :尝试接入真实的业务数据(脱敏后),让销售或客服团队试用。收集关于界面、流程、AI效果的实际反馈。
  3. 第三步(长期) :基于反馈进行定制化开发,或将其作为灵感来源,自研更适合自身业务逻辑的系统。

最容易踩的坑集中在 初始配置 (环境变量、端口、模型API地址)和 资源不足 (显存、内存)两方面。部署时请耐心对照日志,一步步排查。

这套系统的潜力在于,它不仅仅是一个软件,更是一个框架。当你熟悉了它的数据模型和API后,可以很方便地将它的AI能力(如知识库检索、文本生成)抽离出来,嵌入到你已有的OA、ERP或内部平台中,实现渐进式的智能化改造。

更多推荐