

前言
第一次打开 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 一键部署脚本。
这个脚本不只是第一次安装时使用,后续修改配置、重启、更新和卸载也继续从同一个管理菜单进入。
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 把
12393Web 页面提供到公网; - 随机域名验证成功后,再配置
vtuber01固定二级子域名并再次验证对话。
整个系统可以拆成三层:
- Open-LLM-VTuber:负责 Live2D、文本对话、语音、视觉和人设交互;
- 硅基流动及具体模型:提供本次实际接入的大模型能力;
- cpolar :只负责让本地
12393Web 服务从外部网络可访问。
这篇原文前面用了"AI 虚拟伴侣"这个说法,但真正有说服力的不是这个称呼,而是后面一连串功能都经过了实际验证。文字、人设、视觉、语音和远程访问分别跑通以后,Web 版才真正从"一个能打开的项目"变成一个可以持续交互的浏览器角色入口。
如果后面继续折腾,比较自然的方向就是更换 Live2D 角色、继续优化语音效果,或者迁移到适合长期在线的小主机 / NAS 上。