v4.1.0
[4.1.0] - 2026-02-21
💥 重大变更
-
feat: 对话记忆系统引入摘要模式
- 新增 SummaryConversation / SummaryConversationFactory,支持对话摘要长期记忆
- 当上下文消息数达到阈值(默认 8 条)时,通过虚拟线程调用 LLM 异步生成 ≤150 字摘要
- 摘要自动注入后续对话的系统提示词,实现跨会话记忆延续
- 新增 ConversationIdentifier 统一标识 deviceId + roleId + sessionId
- 新增摘要提示词模板:init_summarizer.md(首次摘要)、again_summarizer.md(增量摘要)、system_prompt_with_summary.md(摘要注入)
- 角色支持选择记忆类型(window / summary),通过
memoryType字段配置 - 删除 WindowConversationFactory,由 DefaultConversationFactory + SummaryConversationFactory 分别承担
-
feat: 音频播放架构全面重构
- 新增 ScheduledPlayer:纳秒精度帧调度、突发预缓冲(前 2 帧立即发送)、句间 300ms 间隔、基于 Flux 的多句排队
- 新增 PlayerWithOpusFile:播放同时录制 Ogg-Opus 文件,并向 AEC 喂参考信号
- 新增 Speech 值对象,携带音频数据及对应文本(用于歌词同步等场景)
- 新增 SentenceHelper:独立的句子分割辅助类,支持中英文标点、表情检测、小数点消歧
- 新增 ChatConverter 函数式接口,用于 token 流到句子流的转换
- 删除 FilePlayer、ThreadPlayer、ThreadSynthesizer(由新架构替代)
-
feat: 对话领域模型重构(Persona / Dialogue)
- 新增 Persona:封装 ChatModel、Synthesizer、Player、Conversation、SttService 等,统一管理对话全链路
- 新增 Dialogue:不可变值对象,完整表达一轮对话(UserMessage、ChatResponse、工具调用详情、时间戳等),支持转换为持久化实体
- DialogueService 大幅精简,核心 LLM/TTS 逻辑下沉到 Persona
- ChatService 演进为 Persona 工厂,通过 buildPersona() 统一构建对话能力
新增功能
服务端 AEC 回声消除
- feat: 新增 AecService,基于 WebRTC AEC3(webrtc-java 0.14.0)实现服务端回声消除
- 集成回声消除、噪声抑制(MODERATE)、高通滤波、自适应增益控制
- TTS 播放结束后自动重建 AEC 实例,避免过度抑制后续用户语音
- 可通过
aec.enabled、aec.stream.delay.ms、aec.noise.suppression.level配置
- feat: 新增 TtsPlaybackEndEvent 事件,播放停止时通知 AEC 和 VAD 重置状态
- delete: 删除 AudioEnhancer(功能由 AEC 管道中的 AGC 替代)
MCP 工具管理
- feat: 新增 McpToolController,提供 MCP 工具的全局/角色级启用禁用管理 API
- 支持单个工具开关、批量设置角色排除工具列表、全局工具开关
- 查询角色及全局禁用工具列表、获取系统内置工具列表、刷新缓存
- feat: 新增 McpToolExcludeService 及 Redis 缓存支持
- feat: 新增请求参数类:BatchSetRoleExcludeToolsParam、ToggleGlobalToolStatusParam、ToggleRoleToolStatusParam
记忆管理接口
- feat: 新增 MemoryController,提供摘要记忆的查询与删除 REST API
- feat: 新增 SysSummaryService 及 SummaryMapper 数据访问层
- feat: 前端新增 memory.ts 服务模块,支持摘要记忆和聊天记忆查询/删除
新增 STT 提供商:火山引擎
- feat: 新增 VolcengineSttService,实现火山引擎(字节跳动)WebSocket 流式语音识别
- 使用自定义二进制协议 + Gzip 压缩 JSON 头 + 音频载荷
- 支持批量和流式识别模式
新增 TTS 提供商:腾讯云
- feat: 新增 TencentTtsService,实现腾讯云 WebSocket 流式语音合成
- 支持语音名称、音调、语速配置
- feat: 新增腾讯云音色列表 tencentVoicesList.json
绘本与音乐播放器
- feat: 新增 HuiBenPlayer,替代 HuiBenService,独立绘本播放器
- feat: 新增 MusicPlayer,替代 MusicService,独立音乐播放器
- 支持 LRC 歌词解析与同步显示,歌词文本随音频帧发送
- delete: 删除 HuiBenService、MusicService(功能整合到新播放器)
事件系统
- feat: 新增 DeviceOnlineEvent,设备上线时触发(用于 OTA 升级结果检查等)
- feat: 新增 TtsPlaybackEndEvent,TTS 播放结束时触发
优化与改进
Tool Calling 增强
- fix: 修复 Spring AI #4629/#4790 问题——OpenAI 兼容 API(如通义千问)流式返回的工具调用分片合并
- 新增 mergeFragmentedToolCalls() 方法,按 ID 及空 ID/空名称延续策略合并分片
- fix: 优雅处理 LLM 幻觉工具调用(调用未注册工具名时返回错误信息而非崩溃)
- update: 工具调用详情记录到 ChatSession,支持持久化
VAD 重构
- refactor: 简化 VAD 架构,删除 VadDetector 接口、VadSessionState、VadServiceAdapter
- update: VadService 监听 TtsPlaybackEndEvent,TTS 结束后重置 Silero 隐藏状态,消除状态污染
会话管理
- update: ChatSession 新增 toolCallDetails 管理(CopyOnWriteArrayList)
- update: ChatSession 新增 getAudioPath() 方法,统一生成用户 WAV / 助手 Ogg 文件路径
- update: SessionManager 新增 findConversation() 查找活跃会话的 Conversation 实例
前端优化
- update: 记忆管理视图 MemoryManagementView 支持摘要记忆的展示与删除
- update: 角色编辑表单新增 memoryType 选择器(window / summary)
- update: 新增 useSelectLoadMore 组合式函数,支持下拉分页加载
- update: 国际化资源更新,新增记忆类型、MCP 工具管理、新提供商相关翻译
- update: 路由配置新增记忆管理页面
- update: LLM 工厂配置与 Provider 配置更新
其他
- update: Entity 基类支持自动传递
- update: 角色相关参数和 DTO 新增 memoryType 字段
- refactor: 智谱模型提供商 ZhiPuModelProvider 优化
- update: 消息删除新增 MessageDeleteParam 参数类
删除
- delete: 删除 AjaxResult、HttpStatus(已被 ResultMessage 替代)
- delete: 删除 FilePlayer、ThreadPlayer、ThreadSynthesizer(已被 ScheduledPlayer 架构替代)
- delete: 删除 HuiBenService、MusicService(已被 HuiBenPlayer、MusicPlayer 替代)
- delete: 删除 VadDetector、VadSessionState、VadServiceAdapter(VAD 架构简化)
- delete: 删除 WindowConversationFactory(由新工厂类替代)
- delete: 删除 AudioEnhancer(由 AEC 替代)
- delete: 删除 docs/images/model.jpg
数据库变更
- add: 新增
sys_summary表,存储对话摘要记忆 - add: 新增
sys_mcp_tool_exclude表,存储 MCP 工具排除配置 - update:
sys_role表新增memoryType字段(enum: summary / window,默认 window) - update: init.sql 同步更新
依赖更新
- update: 版本升级至 4.1.0
- update: 新增
dev.onvoid.webrtc:webrtc-java:0.14.0(WebRTC AEC3 回声消除) - update: 新增腾讯云 TTS SDK
- update: pom.xml 依赖更新