# alita **Repository Path**: wbmark/alita ## Basic Information - **Project Name**: alita - **Description**: 使用 scala + akka 框架开发的 webim - **Primary Language**: Scala - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-16 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # alita - Web Chat as a Service 基于 Scala + Apache Pekko 框架实现的客服聊天服务系统 ## 项目概述 **alita** 是一个基于 Scala 和 Apache Pekko 框架构建的客服聊天服务系统,提供完整的实时客服功能。 ### 核心功能 - **坐席接入管理** - 支持客服坐席登录和状态管理 - **客户排队机制** - 智能客户排队,当坐席忙碌时自动排队等待 - **自动分配系统** - 智能匹配客户与客服坐席 - **流式消息处理** - 对接本地大语言模型 Ollama 实现流式输出 - **WebSocket 实时通信** - 基于 Socket.IO 的实时消息推送 - **分布式架构** - 支持集群部署和高可用性 ## 技术架构 ### Actor 层级结构 ``` ActorSystem (pekko://alita) ├── EventRouterActor (事件路由) ├── DispatcherActor (分发处理) │ └── AssignActor (坐席分配) │ └── ConversationActor (会话管理) │ └── RoomActor (房间管理) └── OutboundActor (外呼处理) ``` ### 技术栈 | 类别 | 技术 | |------|------| | 语言 | Scala 3 | | 框架 | Spring Boot 3.4 + Apache Pekko 1.1 | | 通信 | Socket.IO 1.7 + Netty | | 实时通信 | WebSocket | | AI 集成 | Ollama 本地大语言模型 | | NLP | HanLP | | 数据处理 | Apache Spark | ## 快速开始 ### 环境要求 - Java 17+ - Maven 3.8+ - Scala 3.4 ### 构建与运行 ```bash # 编译项目 mvn clean compile # 打包 mvn clean package # 运行 java -jar alita-app/target/alita-app-*.jar ``` ### Docker 部署 ```bash # 构建镜像 docker build -t alita:latest . # 运行容器 docker run -p 8888:8888 alita:latest ``` 服务启动后访问 `http://127.0.0.1:8888` ## 项目结构 ``` alita/ ├── alita-app/ # 主应用模块 │ └── src/main/scala/com/ │ ├── actor/ # Pekko Actor 定义 │ ├── dto/ # 数据传输对象 │ ├── server/ # Socket.IO 服务器 │ ├── service/ # 业务服务 │ └── common/ # 通用工具类 ├── alita-engine/ # 引擎模块 ├── pom.xml # Maven 配置 └── README.md # 项目文档 ``` ## 配置说明 ### application.yaml ```yaml server: port: 8888 socketio: host: 0.0.0.0 port: 8888 bossCount: 1 workCount: 100 pingInterval: 25000 pingTimeout: 60000 ``` ### application.conf (Pekko 配置) ```hocon pekko { actor { provider = "cluster" } remote { netty.tcp { hostname = "0.0.0.0" port = 0 } } } ``` ## WebSocket API ### 连接 ``` ws://127.0.0.1:8888/socket.io/ ``` ### 消息格式 ```json { "type": "chat", "roomId": "room123", "content": "Hello", "senderId": "user123", "timestamp": "2024-01-01T10:00:00Z" } ``` ### 消息类型 | 类型 | 说明 | |------|------| | `chat` | 聊天消息 | | `join` | 加入房间 | | `leave` | 离开房间 | | `queue` | 排队请求 | | `assign` | 坐席分配 | | `transfer` | 转接请求 | ## 许可证 MIT License