1.2.0 版本发布
本次版本更新幅度相当大,包含基于 Letta 的长期记忆,MCP 服务器,Live2D Cubism 5 支持,前端页面的中文支持,更新系统的升级,BiliBili 弹幕接收等重磅功能,并且修了很多 bug。
关于这过长的更新周期得先说声抱歉,之后我们会尽可能避免如此之长的更新周期。
另外,本项目的前端 (Open-LLM-VTuber-Web 仓库,即项目自带的 Web 端和 Electron 端),在本次发布之 (1.2) 之后,将从 无协议 (即保留所有权利) 改为 Open-LLM-VTuber License 1.0
。
后端在 1.2 仍保留 MIT 协议,并预计将在 1.3 ~ 1.4 期间,统一改为 Open-LLM-VTuber License 1.0
,具体修改我们还会继续讨论,修改协议时会在 GitHub Release 明确通知。请注意 Live2D 模型有自己的协议,请单独检查。
⚠️ 注意: 潜在的不兼容性
在这个版本中,我们改变了 Live2D 的实现方式,新增了 Live2D 5.0 模型的支持,修复了很多 Live2D 模型无法显示的问题,同时不再支持 Live2D 2.1 的模型。理论上支持的现代模型会更多,不过如果你在更新之后遇到了 Live2D 模型不显示的问题,请让我们知道,并回退到上个版本。
✨ 重要更新
- (MCP) AI 可以调用支持 MCP 协议的工具 (内置了 time 和 ddg-search)。前端显示工具调用状态。(效果演示见最后的附录)
- 支持基于 BrowserBase 的 Browser Use MCP 在前端的 Live View
- 前端 Live2D SDK 从 pixi-live2d-display-lipsync 迁移到官方 Live2D Web SDK,支持 Cubism 5,不再支持 Cubism 2。模型对点击操作有更好的反馈。
- 预设的 Live2D 模型改成 mao_pro,因为 shizuku 的表情在 Live2D 5 版本中被官方删掉了。
- 前端语言支持切换为中文。
- 实现了对接直播的接口,并实现了 BiliBili 直播客户端
- 支持了基于 Letta 的长期记忆。
- (LLM) 添加了 LM Studio 支持
- (TTS) 添加了 OpenAI Compatible TTS, SparkTTS, SiliconFlow TTS,
- 添加了 requirements.txt,方便不熟悉 pip 命令且不愿使用 uv 的用户
- 修复很多 bug。
- 更新了文档,文档上线了 Ask AI 功能。
自 v1.1.0 以来的详细变化:
后端:
- 修改了配置文件中的一些预设选项:
llm_provider
->ollama_llm
conf.yaml
中的project_id
和organization_id
默认设置成 null,避免有 api 报错。- Azure ASR: 添加侦测语言列表,修复一些bug
- 修复了与配置文件更新相关的一些 bug (2bc0c1b5f75ea79f563935b038a2267e6584d9bc @ylxmf2005)
- 为了让 windows 用户能自信的在配置文件中输入文件地址的反斜线,配置文件中所有的双引号都被改成了单引号 (758d0b304bfa9d2c561987e9d3edac74857309c7)
- 修复了 Claude 的视觉能力。这玩意儿应该从来没正常过,之前都没人发现吗?
- 现在可以从 GET
/live2d-models/info
route 获取 live2d 模型的相关信息了。 - 使用更新脚本更新时,透过 git submodule 链接的前端会一同被更新
- 修复了 #150, Open CompatibleLLM 初始化时temperature 未被传入的问题
- 修复了 #141, intel mac dependencies problem
- 实现了支持直播平台的接口和基于 blivedm 的 BiliBili 弹幕接收 (fea16ace015851656e6c044961758c69247ce69e), #142 @Fluchw, @ylxmf2005
- 合并了 #161,添加了 StatelessLLMWithTemplate 类 @aaronchantrill
- 添加了 openai compatible tts #178 @fastfading
- 基于 Letta 的长期记忆实现。#179 @rayburstray,文档参见 Letta Agent
- 添加了 LM Studio LLM。(b971867b231dac5f3e9e14a28e6c4124fa592a72)
- 添加了
requirements.txt
以及使用 pip 与 conda 安装本项目的相关文档 (在快速开始文档里面)。(044e5ba9aaab9de8fae440f54e6667c63ab89b85) - 添加了 Spark TTS #182 @Because66666, SiliconFlow TTS #208 @endtower, MiniMax TTS #214 @Y0oMu,
- 修复了 FunASR 不能离线运行的问题 (issue #7, 在 #214 @Y0oMu 中修复)
- 添加了 whisper, fast-whisper , whisper.cpp 的 prompt config #214 @Y0oMu
- 修复了 #159 当使用第三方的 openai compatible api 时,可能会返回空的chuck,导致报错的问题 #184 @872226263
- ✨ 功能增强:MCP Plus 实现 #185 @Stewitch @ylxmf2005,实现了 MCP。
- 修复了 AI 群聊相关的 bug。(4da3c82e6388604dc0817927a7f07796ef524785 @ylxmf2005)
- 修复了 merge_config 时可能导致 conf.yaml 文件乱码的问题。 (67e1622891e264cc71b6da71533a3be188a09692)
- 添加了基于 duckduckgo 的网络搜索 mcp 工具 (3904419fb9f0b67e5f22027e183741cc0f1719dc @ylxmf2005)
- 修复了 faster-whisper 不能选择自动语言识别的 bug (#188)
- 给 AI 主动说话 添加了可以在
conf.yaml
配置的提示词 (https://github.com/Open-LLM-VTuber/Open-LLM-VTuber/issue/190 @ylxmf2005) - mcp 函数调用添加了状态栏 (51adb61895f1e5040e238fa1c97acdeefe9e2690 @ylxmf2005)
- 添加了可选的说话风格的提示词 (0a76ac69b04d288c102ec52423d927a4ab9a246d @ylxmf2005)
- 实现了基于 stagehand 的浏览器操作能力: AI 现在能操作浏览器了。 (1dc2055d74d342202d4a54ea96109d3cfaa7bee7 @ylxmf2005)
- 实现了后端对
frontend
submodule 的检查和自动拉取,避免用户运行项目时前端代码不存在。
前端 (@ylxmf2005):
- 使用为 mode-context 管理模式,并且添加在 Window 模式的 UI 中直接切换模式的按钮
- 支持模型说话时播放 Talk 动作组(达到说话时晃动的效果),具体使用方法和教程将在 1.3 版本上线。
- Live2D SDK 从 pixi-live2d-display-lipsync 迁移到 Live2D Web SDK(支持 Cubism 5,不再支持 Cubism 2,但 @ylxmf2005 在开发时直接复用了其他项目 beta 版本的 SDK 还不支持 motionsync)
- 添加了中文的 i18n。
- 将 vad 依赖的静态文件从 cdn 引入的方式重构为引用本地打包产物的文件。(https://github.com/Open-LLM-VTuber/Open-LLM-VTuber-Web/pull/5 @East333, https://github.com/Open-LLM-VTuber/Open-LLM-VTuber-Web/pull/7 @charliedcc)
- 修复了 404 Not Found 的 invalid css link 的 bug。 (https://github.com/Open-LLM-VTuber/Open-LLM-VTuber-Web/pull/2 @East333)
- 桌宠模式下新增鼠标穿透开关选项。
- 删除了模型跟随鼠标的功能,Pointer Interactive 设置目前只控制:点击是否触发动作,动作触 发需要在 model_dict 中配置
- 修复了历史记录区域没有提供头像时 Fallback 失败的 bug
- 修复了桌宠模式下鼠标穿透异常的 bug。
- 增加了调用工具时工具状态的显示
- 新增了基于 BrowserBase 的 Browser Live View Panel
- 修复了 Expression 显示和眨眼冲突的 bug (https://github.com/Open-LLM-VTuber/Open-LLM-VTuber/issues/105)
- 更新 vad 为最新版本,并使用了最新的 onSpeechRealStart 避免触发 misfire 导致 AI 被打断无回复 https://github.com/Open-LLM-VTuber/Open-LLM-VTuber-Web/commit/445dc8661b83357416ca848fddcaa07afc1433e1
- 增加了设置给后端传输图片的大小 & 尺寸限制的设置 https://github.com/Open-LLM-VTuber/Open-LLM-VTuber/issues/209
1.3~1.4 可能的更新预告
- 流式 TTS,将对主要的 TTS 模型支持流式传输,这会大大降低响应延迟
- 删除 Hume AI Agent,并提供 Hume AI API TTS 的选项(官方之前不提供 TTS API,最近才出的)。Hume AI 的 emotion control 和声音的自然程度是我见过效果最好的 TTS(当然价格也是最高的 $200/1M characters, Fish Audio 才 $15 / 1M characters)
- 提供类似 neuro-sama 说话时自然摆动的示例和教程文档。
- 增加
motionMap
功能,类似emotionMap
——让模型可以在说话时做出动作。
角色一键添加功能。
- 支持 MCP Bridge,增加 MCP Bridge Demo(MCP和OLV分离部署,需要在客户端运行 MCP Server&Client,服务端会提供 ready-to-use 的 Bridge 将 MCP command 通过 ws 连接推送到客户端并接受返回值)
- 新增区域——角色状态栏,允许设定角色状态(心情、好感度、想法、在做什么等允许高度自定义的选项),角色状态将与角色的行为互相影响。并将 think tag 的内容移动到状态栏中——大概率 1.4
1.3~1.4 未来的许可变更说明
随着项目的不断发展壮大,我们计划对许可模式进行一些重要调整,以更好地实现项目的长期可持续发展。
从 1.3.0 版本起 (具体改变许可证的版本号会明确通知),Open-LLM-VTuber 项目采用修改版 Apache 2.0 许可证,具有以下特点:
- 统一许可:整个项目(包括前端和后端组件)现在采用统一的修改版 Apache 2.0 许可证。
- 明确使用范围:新许可证明确了允许的用途和需要额外许可的商业用途。
对您有什么影响?
对大多数用户(包括直播主、教育或研究用途)来说,没有影响。
本软件基于 Apache 2.0 许可证,并附加如下使用条款:
✅ 无需额外授权的用途:
- 所有非商业用途(如个人项目、教育、学术研究、非营利活动)
- 使用本软件进行 VTuber 直播、视频创作(如 YouTube、Twitch、Bilibili 等)。
❌ 需要获得商业授权的用途:
- 提供付费访问、订阅或托管服务(包括将本软件作为 SaaS、付费下载、在线服务等)
- 重新分发、转售、重命名或改包装软件用于商业用途
- 将本软件集成进需付费销售或许可的商业产品中(包括软硬件)
详情请参见前端仓库中的 LICENSE 文件,以及之后更新后端时具体的更新日志。
为什么我们计划做出这项变更?
此次调整的主要原因:
- 以往我们的前端没有明确许可证,存在直接拿我们的软件重新包装、更换品牌进行商业部署而不注明来源的情况。
- 我们未来可能发展为SaaS服务。希望保护我们投入大量精力维护的软件不被直接复制为竞品。
注意: 就算我们未来发展成 SaaS 服务,闭源 Open-LLM-VTuber 项目核心也不在计划中,我们也不打算改变 Open-LLM-VTuber 可以完全离线,本地运行的本质。我们非常重视我们在开源社区建立的信任。 就算我们有一天闭源了,你也依旧可以使用我们旧版本的 Open-LLM-VTuber。
开源协议是同时约束用户以及开发者的协议。我可以保证我们不会删库,除非不可抗力(当然考虑到 GitHub 的 fork 机制,删库实际上也没啥用)。
发展 SaaS 的核心目的是让项目变的可持续,同时更好的实现我们对 AI 陪伴的愿景。可能在未来的 某一天,我们核心开发者都不再有时间和精力继续维护 Open-LLM-VTuber 项目的更新;或许某一天,开源社区出现了更好,更先进的方案,用户离我们而去,我们项目就此扫入历史垃圾堆。但我希望这一天能到来的晚一些。
关于项目的可持续性,我目前思考了两个方案。一个就是上面提到的,将项目发展成 SaaS。另一个,则是让贡献者能更好的参与我们项目的开发,提升我们的开发效率和开发者留存率。这点我会在 1.2 发布之后逐步推进。
至于修改许可证,这是源自于多个滥用开源项目以及违反开源许可证的事件。看了这么多事件之后,我们逐渐觉得 MIT 协议可能不是我们希望的理想协议。开源协议应当反映核心开发者对代码如何被使用的期望,是对开发者以及用户的保护与约束。过去因为我本人的疏忽,没有选择能够良好反应我们期望的许可证 (我当时定 MIT 协议的时候根本没想过项目会发展的这么大,就随便选了一个)
。为了使我们项目的贡献者能继续无忧无虑的写代码,让我们的用户理解我们期望的行为边界,我们决定修改开源许可证。
其实我们前端代码 (1.0.0 之后基于 react 的前端) 一直都没有指定协议。根据 GitHub 的规定,如果仓库没有明确协议,我们拥有对项目代码完整的版权 (也就约等于没开源)。我们希望从现在开始,明确我们的协议。
在修改的过程中,我们考虑了不同的方案,参考了 dify,lobehub 等开源项目的做法,尝试避免对普通用户和开源社区的开发者造成影响。