群面智伴——项目架构
基于AI多智能体的沉浸式群面模拟系统架构设计与实现
前言
群面(无领导小组讨论)是互联网大厂招聘中的重要环节,但很多求职者缺乏实战机会。本文介绍一个基于AI多智能体的群面模拟系统——群面值班(qunmianzhiban),通过多个AI智能体模拟真实群面场景,帮助求职者低成本、高频次地练习群面技巧。
项目概述
这是一个由多个AI智能体驱动的沉浸式群面模拟系统,支持:
- 语音交互与实时字幕
- 5类不同角色的AI候选人智能体
- 事件化复盘与五维能力评估
- MBTI人格画像可视化
技术架构
整体架构图
系统采用五层架构,从前到后依次为:
┌─────────────────────────────────────────────────────────┐ │ 前端层 (Vue 3) │ │ 会话控制 | 语音交互 | 实时字幕 | 复盘可视化(雷达图/时间线) │ └─────────────────────────────────────────────────────────┘ │ WebSocket ▼ ┌─────────────────────────────────────────────────────────┐ │ 编排层 (Spring Boot) │ │ WebSocket | 事件路由 | 房间状态机 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 引擎层 (Spring Boot) │ │ 多智能体决策 | 抢话裁决 | 阶段调度 | 发言意愿分计算 │ ├─────────────────────────────────────────────────────────┤ │ 智能体模块 │ │ ┌──────────────┬──────────────┬──────────────┐ │ │ │ 面试官智能体 │ 候选人智能体 │ 分析智能体 │ │ │ │ - 开场宣读 │ - 5类角色 │ - 行为标注 │ │ │ │ - 阶段推进 │ - MBTI人格 │ - 证据绑定 │ │ │ │ - 总评汇总 │ - 抢话策略 │ - 评分生成 │ │ │ └──────────────┴──────────────┴──────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 语音层 (Whisper + Edge TTS) │ │ 语音转写 | VAD断句 | 语音合成 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 数据层 (MySQL 8.0 + Redis 6.0) │ │ 题库管理 | 事件存储 | 评估计算 | 报告生成 │ └─────────────────────────────────────────────────────────┘技术选型
| 层级 | 技术栈 | 核心职责 |
|---|---|---|
| 前端层 | Vue 3 + Vite + Pinia | 会话控制、语音交互、实时字幕、复盘可视化 |
| 编排层 | Spring Boot 3.2 + WebSocket | 长连接管理、事件路由、房间状态机 |
| 引擎层 | Spring Boot + 异步任务 | 多智能体决策、抢话裁决、阶段调度 |
| AI层 | Spring AI + DashScope | LLM调用、智能体推理、报告生成 |
| 语音层 | Whisper JNI + Edge TTS | 语音转写、VAD断句、语音合成 |
| 数据层 | MySQL 8.0 + Redis 6.0 | 题库检索、事件存储、评估计算 |
核心模块详解
1. 智能体画像系统
每个AI智能体拥有五个核心向量,模拟真实候选人的多维度特征:
// 人格向量 P (Personality) { extraversion: 0.0-1.0, // 外向度 dominance: 0.0-1.0, // 支配度 cooperation: 0.0-1.0, // 合作度 riskPreference: 0.0-1.0, // 风险偏好 organization: 0.0-1.0 // 条理度 } // 情绪向量 E (Emotion) { tension: 0.0-1.0, // 紧张度 confidence: 0.0-1.0, // 自信度 attackLevel: 0.0-1.0, // 攻击性 stability: 0.0-1.0 // 稳定性 } // 角色向量 R (Role) { type: "LEADER/COORDINATOR/VIEWPOINT/EXECUTOR/SUPPORTER", stance: "支持方/反对方/中立" } // 能力向量 A (Ability) { logic: 0.0-1.0, // 逻辑思维 communication: 0.0-1.0, // 沟通表达 teamwork: 0.0-1.0, // 团队协作 leadership: 0.0-1.0, // 领导力 professionalism: 0.0-1.0 // 专业度 } // 记忆向量 M (Memory) { recentContext: [], // 近期上下文 counterArguments: [], // 被反驳记录 commitments: [] // 已承诺观点 }2. 发言意愿分计算
智能体通过加权评分机制决定是否发言:
SpeakScore = w1*角色驱动 + w2*内容相关度 + w3*情绪激活 + w4*时机窗口 + w5*阶段权重 权重配置: - w1 (角色驱动): 0.25 - w2 (内容相关): 0.25 - w3 (情绪激活): 0.15 - w4 (时机窗口): 0.20 - w5 (阶段权重): 0.15 发言阈值: 0.65 (超过则触发发言)3. 五阶段讨论流程
| 阶段 | 时长 | 核心行为 | 智能体策略 |
|---|---|---|---|
| 破冰 | 60s | 自我介绍 | 展示人格特征,建立第一印象 |
| 观点陈述 | 120s | 独立陈述 | 基于角色向量输出结构化观点 |
| 交锋辩论 | 180s | 反驳与协商 | 根据记忆向量进行针对性反驳 |
| 收敛决策 | 90s | 达成共识 | Leader角色推动共识,Supporter提供支持 |
| 总结陈词 | 60s | 代表总结 | 综合分析全场观点,输出结论 |
4. 事件化复盘系统
系统通过事件总线记录所有交互,生成包含证据的评估报告:
- ✅ 每条评分绑定≥2条原始证据
- ✅ 支持用户追问"为什么这个智能体会这样说"
- ✅ 生成"立即执行"和"下次重点"两类改进建议
- ✅ 五维雷达图可视化能力分布
5. 实时语音交互
集成Whisper语音转写和Edge TTS语音合成:
// 语音转写配置 (Whisper JNI) <dependency> <groupId>io.github.givimad</groupId> <artifactId>whisper-jni</artifactId> <version>1.7.1</version> </dependency> // 语音合成配置 (Edge TTS) <dependency> <groupId>io.github.whitemagic2014</groupId> <artifactId>tts-edge-java</artifactId> <version>1.3.3</version> </dependency>项目结构
qunmianzhiban/ ├── frontend/ # Vue 3 前端 │ ├── src/ │ │ ├── views/ # 页面视图 │ │ │ ├── HomeView.vue # 首页 - 题目选择与配置 │ │ │ ├── RoomView.vue # 房间 - 实时讨论界面 │ │ │ ├── ReviewView.vue # 复盘 - 评估报告 │ │ │ └── AgentChatView.vue # AI对话 - 追问智能体 │ │ ├── stores/ # Pinia 状态管理 │ │ ├── services/ # API服务 │ │ │ ├── api.js # REST API │ │ │ └── websocket.js # WebSocket通信 │ │ └── utils/ # 工具函数 │ └── vite.config.js │ ├── backend/ # Spring Boot 后端 │ └── src/main/java/com/interview/ │ ├── controller/ # REST控制器 │ │ ├── RoomController.java │ │ ├── AgentChatController.java │ │ └── SpeechController.java │ ├── agentManus/ # 智能体引擎 (Manus Agent) │ │ ├── BaseManusAgent.java │ │ ├── ReActManusAgent.java │ │ ├── ReportManusAgent.java │ │ ├── tools/ # Agent工具集 │ │ │ ├── LoadRoomContextTool.java │ │ │ ├── LoadEventStreamTool.java │ │ │ ├── LoadEvaluationTool.java │ │ │ ├── PdfExportTool.java │ │ │ └── MarkdownExportTool.java │ │ └── service/ │ │ └── ReportManusService.java │ ├── websocket/ # WebSocket处理 │ │ ├── RoomWebSocketHandler.java │ │ └── RoomEventListener.java │ ├── event/ # 事件模型 │ │ ├── Event.java │ │ ├── EventType.java │ │ └── Phase.java │ ├── model/ # 数据模型 │ │ ├── vo/ # 视图对象 │ │ └── dto/ # 数据传输对象 │ └── config/ # 配置类 │ ├── WebSocketConfig.java │ ├── DashscopeRestClientConfig.java │ └── RedisConfig.java │ └── docs/ # 项目文档 └── 项目框架说明.md项目亮点
1. Manus Agent架构
系统采用Manus Agent设计模式,通过工具调用(Tool Calling)实现智能体的复杂决策:
LoadRoomContextTool- 加载房间上下文LoadEventStreamTool- 加载事件流LoadEvaluationTool- 加载评估结果PdfExportTool/MarkdownExportTool- 导出报告
2. 实时通信架构
基于WebSocket的长连接管理,支持:
- 房间状态实时同步
- 语音流实时传输
- 字幕实时显示
- 智能体状态更新
3. 量化指标体系
| 指标 | 目标值 | 说明 |
|---|---|---|
| 场景初始化成功率 | ≥95% | 房间创建与智能体初始化 |
| 抢话裁决时延 | ≤800ms | 多智能体并发发言处理 |
| AI回复延迟 | ≤3.5s | LLM推理+语音合成 |
| 单角色发言占比上限 | ≤35% | 防止某个智能体垄断讨论 |
| 五维评分完整率 | 100% | 逻辑、沟通、协作、领导、专业 |
| 评分一致性标准差 | ≤0.6 | 多次评估结果稳定性 |
快速启动
环境要求
- JDK 17+
- Node.js 18+
- MySQL 8.0+
- Redis 6.0+
后端启动
cd backend # 创建数据库 mysql -u root -p < ../docs/init.sql # 启动应用 mvn spring-boot:run前端启动
cd frontend npm install npm run dev总结
本系统通过AI多智能体技术模拟真实群面场景,结合语音交互和事件化复盘,为求职者提供了一个低成本、高频次的群面练习平台。
核心创新点:
- 五维智能体画像- 从人格、情绪、角色、能力、记忆五个维度建模
- Manus Agent架构- 通过工具调用实现复杂决策
- 事件化复盘- 每条评分都有原始证据支撑
- 实时语音交互- 沉浸式练习体验
