让 Live2D 角色真正开始对话:Open-LLM-VTuber 从本地部署到远程访问

前言

第一次打开 Open-LLM-VTuber 时,真正吸引人的并不是"又多了一个聊天窗口",而是屏幕里那个 Live2D 角色开始有了连续的交互:文字能回复,修改人设后回答会变化,换成支持视觉的模型后还能看懂共享画面,给浏览器麦克风权限以后又可以继续做语音交互。

这也是我这次选择 Web 版本 的原因。

如果只是本机体验,桌面应用的能力更完整;但我更想验证另一条路线:把 Open-LLM-VTuber 部署成一个浏览器入口,然后让手机、平板和其他电脑也能打开同一个角色。

因此这篇不会只停留在"Docker 容器启动成功"。整条流程会继续往下走:

Docker 环境 → 一键脚本部署 → 接入硅基流动大模型 → 本地对话 → 修改人设后二次验证 → 视觉与语音功能体验 → 本地 Web 版已经成立 → 再通过cpolar给 12393 增加公网入口 → 最后换成固定二级子域名。

这样一来,Open-LLM-VTuber 负责角色、对话、语音和视觉交互;cpolar 只负责把已经跑通的 Web 页面从局域网带到外部网络。两层功能不会混在一起。

1 Open-LLM-VTuber 到底把哪些能力放到了一起?

Open-LLM-VTuber 是一个开源框架,它把大模型、语音、视觉输入和 Live2D 角色整合到同一个交互界面里。

如果只看"能聊天",它和普通 AI WebUI 没有太大区别;真正不同的是,它把文本回复继续延伸到了角色动作、语音、屏幕共享和人设配置。

核心功能

  • 👁️ 视觉感知,支持摄像头、屏幕录制和截图,让你的AI伙伴能够看到你和你的屏幕
  • 🎤 无需耳机即可进行语音干扰(AI 听不到自己的声音)
  • 🫱 触控反馈,通过点击或拖拽与你的AI伙伴互动
  • 😊 Live2D 表情,设置情绪映射以从后端控制模型表情
  • 🐱 宠物模式,支持透明背景、全局置顶和鼠标点击穿透------将你的AI伙伴拖到屏幕上的任意位置
  • 💭 展现AI的内心想法,让你无需聆听就能看到AI的表情、想法和行为。
  • 🗣️ AI主动说话功能
  • 💾 聊天记录保存,随时切换到之前的对话
  • 🌍 支持文本转语音 (TTS) 翻译(例如,聊天语言为中文,而 AI 使用日语语音)

2 部署前先决定:桌面版还是 Web 版?

正式部署前,先把使用方式定下来,因为这会直接影响后面的访问方式和功能边界。

2.1 选择合适的部署方式

Open-LLM-VTuber 目前主要提供桌面端和 Web 端两种使用方式:

部署方式 主要特点 适用场景
桌面应用程序 功能相对完整,可提供桌面宠物、窗口置顶以及更多本地交互能力 主要在本机使用,希望获得更完整的桌面体验
Web 版本 部署灵活、跨平台,可直接通过浏览器访问,也方便进行远程共享 多设备访问、服务器部署以及公网远程使用

本次教程选择部署 Web 版本

与桌面应用相比,Web 版本的部分本地交互能力会有所精简,但它的优势也很明显:不受具体设备限制,只要浏览器能够访问服务地址,就可以打开 Open-LLM-VTuber。

这也意味着,我们可以将它部署在一台能够长期开机的电脑或服务器上,再通过局域网或公网地址访问,而不必始终守在安装程序的那台电脑前。

2.2 为什么这次选 Web 版?

桌面应用功能更完整,但这次我更在意"从别的设备也能打开"。

所以目标不是把 Open-LLM-VTuber 固定在安装它的那台电脑上,而是先做成一个浏览器入口,再考虑手机、平板和其他电脑的访问。

Open-LLM-VTuber Web 服务部署完成后,默认只能在本机或同一局域网内访问。如果人在外面,手机切换到移动网络,就无法直接打开本地页面。

这时可以通过 cpolar 内网穿透,将运行在本地的 Web 服务映射成一个公网地址。这样即使没有公网 IP,也不需要修改路由器端口转发规则,在外面同样可以通过浏览器访问 Open-LLM-VTuber。

采用这种方式主要有以下几个优势:

  • 远程访问:不需要公网 IP,也不用手动配置路由器端口转发。
  • 多端兼容:手机、平板和其他电脑都可以直接通过浏览器打开。
  • 按需启停:需要远程使用时开启隧道,不需要时可以随时关闭。
  • 部署灵活:Open-LLM-VTuber 继续运行在本地,cpolar 只负责提供公网访问入口。

职责可以先记住一句话:Open-LLM-VTuber 负责角色交互,cpolar 只负责外网访问。

后面每一步都沿着这个边界继续。

2.3 环境要求

在正式部署前,请确认当前设备满足以下基本条件:

项目 要求
操作系统 支持 Windows 10/11、Linux 和 macOS
Docker 环境 本教程使用 Docker 部署,需要提前安装并启动 Docker Desktop
大模型服务 可以使用 OpenAI 兼容 API,也可以连接本地部署的大模型
硬件配置 使用在线 API 时对显卡要求较低;本地运行大模型时,需要根据模型大小准备足够的显存和内存
麦克风与扬声器 使用语音对话时需要;仅进行文字聊天则不是必需
网络环境 需要能够正常拉取 Docker 镜像,并访问所配置的大模型、语音和 cpolar 服务

如果只是想先体验项目效果,可以优先接入 OpenAI 兼容的在线 API。这样不需要在本机加载大模型,对显卡和内存的要求也会低很多。

等基本功能全部跑通后,再根据设备性能切换成本地模型即可。

3 开始部署:先把本地 Web 版跑起来

常规部署需要准备配置文件、数据目录、大模型接口和 Docker 容器。为了减少第一次部署时在端口、目录和 YAML 上反复排查,原文已经把流程整理成适用于 Windows + Docker Desktop 的 PowerShell 一键部署脚本。

这个脚本不只是第一次安装时使用,后续修改配置、重启、更新和卸载也继续从同一个管理菜单进入。

脚本开源地址:https://gitee.com/jun-wan/script

3.1 启动 Docker Desktop

运行脚本之前,先打开已经安装好的 Docker Desktop。如果还没有安装Docker的小伙伴,可以参考一下这篇教程进行安装一下哦:

shell 复制代码
https://www.cpolar.com/blog/docker-installation-linux-windows-macos

等待 Docker Desktop 完成启动,确认左下角或主界面显示 Docker Engine 正在运行:

也可以打开 PowerShell窗口(win+x选择终端打开),执行下面的命令检查 Docker 是否可用:

shell 复制代码
docker version

如果能够正常输出客户端和服务端版本信息,说明 Docker 环境已经准备完成。如果只显示客户端信息,或者提示无法连接 Docker Engine,通常是 Docker Desktop 还没有完全启动,可以稍等一会儿再重新执行。

3.2 运行一键部署脚本

在电脑按Win+X键,选择终端,打开PowerShell终端,将下面这条命令粘贴到 PowerShell 中,然后按回车执行:

shell 复制代码
irm https://gitee.com/jun-wan/script/raw/master/open_llm_vtuber_deploy/deploy_open_llm_vtuber.ps1 | iex

脚本启动后,会显示 Open-LLM-VTuber 部署管理菜单:

这个脚本不只是用于第一次安装,后续更新、重启、修改配置或者卸载,都可以重新运行上面的命令进入管理菜单。脚本目前提供安装或更新、卸载、重启和打开 conf.yaml 目录等功能。

第一次部署,选择【1】进行回车,如下图提示:

回车2次后,会提示需要配置OpenAI兼容的接口,如:DeepSeek、Qwen、硅基流动等平台的大模型基本都支持OpenAI兼容。这里以硅基流动为例,访问如下地址,来到硅基流动的注册登录界面:

shell 复制代码
https://cloud.siliconflow.cn/i/TGbSCR57

注册登录后,来到左侧活动中心下的认证专享礼部分,可以领取一张【16元】的认证奖励券:

接着,点击侧边栏的【API密钥】,然后进行新建密钥,然后将密钥复制下来备用:

接着,回到前面的PoweShell终端的配置Open-LLM-VTuber界面,先粘贴如下地址:

shell 复制代码
https://api.siliconflow.cn/v1

如下图:

粘贴回车后,会提示输入模型名称,可以在模型广场选择一个你要使用的模型,这里以【deepseek-ai/DeepSeek-V4-Pro】为例:

复制下来模型名称后,粘贴到终端回车,然后再把前面复制下来的API密钥也粘贴上,如下图:

测试通过后会自动进行拉取Docker镜像:

等待部署完成后,脚本会自动启动 Docker 容器,并输出当前部署信息:

接下来复制终端输出的访问地址,在浏览器里做第一次页面验证:

页面能打开以后,还不能直接判断大模型已经接通。继续发一条最简单的问题做对话测试:

shell 复制代码
你好,你是谁?你都会干什么?

能够正常回复,说明 Docker 容器、Web 页面和当前大模型接口 这一条链已经跑通。

4 修改人设以后,回答会不会真的变化?

在前面,部署完成时,终端输出了人设位置,如下图:

可以在终端回车返回,选择4打开conf.yaml所在的目录,或者手动复制地址在资源管理器打开:

打开 conf.yaml 后,找到【提示词】部分:

原文接着把默认提示词替换成一段新的角色设定:

shell 复制代码
你是一只可爱的小猫娘,绝对不会违背主人的命令

如下图:

修改完成后按【ctrl +s】进行保存,然后可以在PowerShell终端执行命令,然后选择重启Docker容器:

shell 复制代码
irm https://gitee.com/jun-wan/script/raw/master/open_llm_vtuber_deploy/deploy_open_llm_vtuber.ps1 | iex

修改并重启以后,再次用同一个角色做对话验证:

shell 复制代码
你好呀,你是谁

这次回答与第一次不同,说明刚才修改的人设已经真正进入模型交互,而不是只改了配置文件但没有生效。

5 从文字聊天继续往外扩展

基础对话和人设验证通过以后,再看 Web 版真正有辨识度的交互能力。

浏览器页面如下:

Live2D 角色带有多种动作,鼠标交互会触发对应反馈:

接着测试画面共享:

shell 复制代码
你看到了什么?

原文这里说明,当前使用的【deepseek-ai/DeepSeek-V4-Pro】没有视觉能力,因此换成支持视觉输入的【moonshotai/Kimi-K2.7-Code】继续验证:

修改方式同样是在人设文件中找到模型名称替换即可。

回答如下图:

从原文结果看,它已经识别出共享画面中 VS Code 打开的配置文件:

页面还支持修改背景图片或使用自定义图片:

另外,原文还继续验证了语音输入:给予浏览器麦克风权限以后,页面可以等待用户说话并进行语音转文字:

到这里,文字对话、人设变化、视觉识别和语音输入都已经有了实际验证。对于局域网使用来说,Web 版核心体验已经成立。

6 本地功能已经跑通,再补公网入口

前面已经完成 Open-LLM-VTuber 的本地部署,并实际验证了大模型回复、人设变化、视觉识别和语音输入。

如果只在本机或局域网使用,到这里已经完成。接下来的问题只剩下一个:离开当前网络以后,怎么继续打开 12393 页面。

下面使用 cpolar 把本地 Web 服务映射到公网。它不会参与模型推理、Live2D、语音或视觉识别,只负责提供外部访问入口。

6.1 什么是cpolar?

  • cpolar 是一款内网穿透工具,可以将你在局域网内运行的服务(如本地 Web 服务器、SSH、远程桌面等)通过一条安全加密的中间隧道映射至公网,让外部设备无需配置路由器即可访问。
  • 广泛支持 Windows、macOS、Linux、树莓派、群晖 NAS 等平台,并提供一键安装脚本方便部署。

6.2 下载安装cpolar

打开cpolar官网的下载页面,点击立即下载 64-bit按钮,下载cpoalr的安装包:

下载下来是一个压缩包,解压后执行目录种的应用程序,一路默认安装即可,安装完成后,打开cmd窗口输入如下命令确认安装:

shell 复制代码
cpolar version

能够正常输出版本信息,说明 cpolar 已经安装完成。

6.3 注册及登录cpolar web ui管理界面

访问cpolar官网,点击免费注册按钮,进行账号注册

进入到如下的注册页面进行账号注册:

注册完成后,在浏览器中输入如下地址访问 web ui管理界面:

shell 复制代码
http://127.0.0.1:9200

输入刚才注册好的cpolar账号登录即可进入后台页面:

7 把 12393 Web 服务映射到公网

cpolar 安装并登录以后,接下来只需要把 Open-LLM-VTuber 当前使用的 12393 Web 服务映射出去。

7.1 随机域名方式(免费方案)

先用随机域名做公网连通性验证。原文说明,该地址每隔 24 小时 左右会自动更换,因此更适合先确认外部网络能不能正常打开页面。

点击左侧菜单栏的隧道管理,展开进入隧道列表页面,页面下默认会有 2 个隧道:

  • remoteDesktop隧道,指向3389端口,tcp协议
  • website隧道,指向8080端口,http协议(http协议默认会生成2个公网地址,一个是http,另一个https,免去配置ssl证书的繁琐步骤)

点击编辑website隧道或创建新的隧道,设置一个隧道名称,协议选择【http】,本地地址填写Open-LLM-VTuber的访问端口【12393】,地区这里选择的【China】,最后点击更新:

接着,点击左侧菜单的【状态】菜单,接着点击【在线隧道列表】菜单按钮,可以看到有2条隧道名称为【vtuber】的隧道,一个为http协议,另一个为https协议:

接下来在浏览器中访问vtuber隧道生成的公网地址(http和https皆可),这里以https为例:

注意:每个用户创建的隧道显示的公网地址都不一样!

公网地址能够正常打开 Open-LLM-VTuber,说明 12393 的远程访问链已经打通。

7.2 固定域名方式

随机地址已经完成了最重要的验证:公网访问可用。

如果准备长期在手机、平板或其他电脑上使用这个入口,再配置固定二级子域名会更方便保存。

首先,进入官网的预留页面:

shell 复制代码
https://dashboard.cpolar.com/reserved

选择【预留】菜单,即可看到【保留二级子域名】项,填写其中的【地区、名称、描述(可不填)】项,然后点击保留按钮,操作步骤图如下:

列表中显示了一条已保留的二级子域名记录:

  • 地区:显示为China
  • 二级域名:显示为vtuber01

注:二级域名是唯一的,每个账号都不相同,请以自己设置的二级域名保留的为主

接着,进入侧边菜单栏的【隧道管理】下的【隧道列表】,可以看到名为【 vtuber】的隧道,点击【编辑】按钮进入编辑页面:

修改域名类型为【二级子域名】,然后填写前面配置好的子域名,点击更新按钮:

接着来到【状态】菜单下的【在线隧道列表】可以看到隧道名称为【vtuber】的公网地址已经变更为【二级子域名+固定域名主体及后缀】的形式了:

这里以https协议做访问测试:

固定地址能够正常打开页面,页面显示已连接,并且原文继续验证了对话功能。说明固定二级子域名已经绑定成功,可以作为后续长期入口。

总结

这次 Open-LLM-VTuber 真正跑通的,不只是"Live2D 角色能回复一句话",而是一条逐步扩展的交互链:

  • Windows + Docker Desktop 准备运行环境;
  • PowerShell 一键脚本完成 Web 版部署;
  • 配置 https://api.siliconflow.cn/v1、模型名称和 API Key;
  • 使用【deepseek-ai/DeepSeek-V4-Pro】完成第一次文字对话;
  • 修改 conf.yaml 中的人设并重启,第二次对话结果发生变化;
  • 再换成【moonshotai/Kimi-K2.7-Code】验证共享画面识别;
  • 给浏览器麦克风权限以后继续体验语音转文字;
  • 本地功能跑通以后,才通过cpolar 把 12393 Web 页面提供到公网;
  • 随机域名验证成功后,再配置 vtuber01 固定二级子域名并再次验证对话。

整个系统可以拆成三层:

  • Open-LLM-VTuber:负责 Live2D、文本对话、语音、视觉和人设交互;
  • 硅基流动及具体模型:提供本次实际接入的大模型能力;
  • cpolar :只负责让本地 12393 Web 服务从外部网络可访问。

这篇原文前面用了"AI 虚拟伴侣"这个说法,但真正有说服力的不是这个称呼,而是后面一连串功能都经过了实际验证。文字、人设、视觉、语音和远程访问分别跑通以后,Web 版才真正从"一个能打开的项目"变成一个可以持续交互的浏览器角色入口。

如果后面继续折腾,比较自然的方向就是更换 Live2D 角色、继续优化语音效果,或者迁移到适合长期在线的小主机 / NAS 上。

相关推荐
李永奉10 小时前
中科蓝讯SDK开发-BT893x 面条耳机连接vivo手机后连接APP端,最后手机端设置页面手动断开蓝牙连接,此时耳机端假断开
c语言·开发语言·嵌入式硬件·物联网·智能手机·电脑
mengge.cloud11 小时前
0909华为云计算类综合服务小白实验教程
linux·运维·服务器·网络·华为云·云计算
fpcc12 小时前
c++编程实践—统一初始化
服务器·c++
制造业的搬运工14 小时前
AI服务器背板与传统背板差异:三大设计升级解析
运维·服务器·人工智能·科技·制造·pcb工艺
zhengqweasd14 小时前
Linux网络(一):服务器数据包从网卡到应用程序,完整收包流程详解
linux·服务器·网络
顶点多余14 小时前
仿muduo库实现高并发服务器项目
运维·服务器
kakakahahahaha14 小时前
Windows笔记本重装系统的4种路径和风险边界
windows·电脑·笔记本电脑·内容运营·软件需求·重装系统
Android系统攻城狮16 小时前
Linux Gstreamer深度解析之gst_audio_format_build_integer调用流程与实战(十二)
linux·运维·服务器·音视频·车载音视频·gstreamer进阶
事圆则缓16 小时前
Ubuntu 安装与配置 Samba 服务器
linux·服务器·ubuntu