Personal project · Windows

让喜欢的角色
留在桌面,也留在对话里

一个本地优先的 AI 虚拟陪伴项目:把流式对话、实时语音、角色记忆、VRM 动作表情和透明桌宠整合成自然、连续的桌面体验。

个人开发 · 免费体验 · Windows 10/11 x64 · 部分 AI 能力需要自备第三方 API

每个功能,都对应一个真实痛点

不是堆砌参数,而是回答六个具体问题:桌面陪伴到底难在哪,这个项目又如何解决。

痛点

聊天窗口用完即关,角色始终缺乏“存在感”。

做法

透明桌面宠物

CEF 离屏渲染结合 Win32 透明窗口,角色常驻桌面:拖动、右键对话、托盘管理、舞台尺寸和待机动作都可设置。

痛点

语音助手“说完就忘”,每次对话都从零开始。

做法

人格 + 长期记忆

角色人格、当前历史与长期记忆共同参与上下文,回复流式逐步呈现,兼容 OpenAI 风格接口。

痛点

语音问答像对讲机:说完等待、听完再答,节奏割裂。

做法

实时语音链路

流式 ASR、按句 TTS 与自动对话模式协同工作,端到端延迟 800ms,实际速度随网络和模型服务波动。

痛点

平面头像和文字气泡,撑不起角色的情感表达。

做法

VRM 角色舞台

Three.js 与 three-vrm 驱动模型、表情、口型和 11 个内置 VRMA 动作,也支持切换自己的 VRM。

痛点

合成声音千篇一律,换角色像换皮。

做法

角色与声音绑定

角色设定可手写或辅助生成,每个角色可选 CosyVoice 或 Qwen3-TTS 声音链路;无声音配置也能文字对话。

痛点

云端陪伴产品把对话、记忆和偏好全部收走。

做法

本地优先

角色、配置、历史和记忆默认保存在本机;使用云端 LLM、ASR 或 TTS 时,只发送完成对应能力所需的数据。

看一句话走完整个链路

从说出口到角色回应,五个阶段自动衔接、部分并行。下面是这条链路的简化演示。

说出口麦克风拾音
听懂流式 ASR 转写
想起人格与记忆注入
组织语言LLM 流式生成
回应TTS · 表情 · 动作

按住说话或右键桌宠,声音以 PCM 流实时送出。

在下方功能细节中查看完整链路 →

主窗口与桌宠,共用同一个角色状态

在主窗口里管理角色、模型、设置和文字消息;收起主窗口后,桌宠继续留在桌面并承接语音对话。

主窗口

角色切换、文字与语音聊天、历史、长期记忆、VRM 上传和服务设置。

桌宠窗口

透明悬浮、右键对话、模型与动作同步、宽高独立调整,不占用任务栏。

系统托盘

主窗口关闭后继续运行,可恢复主窗口、打开或关闭桌宠,以及完整退出应用。

首次配置

安装后通过图形化向导填写 LLM 与 DashScope 配置,之后也能在设置页修改。

陪伴藏在日常的间隙里

不需要专门打开一个应用。她就在桌面上,在工作的间隙、闲聊的瞬间和深夜的托盘里。

09:30

开始一天

开机后角色回到桌面角落,伸个懒腰进入待机,不抢占注意力。

14:00

随口一聊

右键桌宠直接开口,流式识别说完即回,还记得你昨天提过的事。

19:20

换种心情

在主窗口切换角色、声音或 VRM 模型,桌宠舞台立即同步。

23:40

安静道晚安

主窗口收进托盘,角色进入 Sleepy 待机,服务仍在后台安静运行。

哪些留在本机,哪些按需出门

本地优先不等于假装离线。数据边界直接画出来:云端能力只发送完成对应功能所需的内容。

留在本机
  • 角色设定与人格
  • 对话历史
  • 长期记忆摘要
  • 参考音频与服务配置
按需发送
  • 当前消息 LLM
  • 语音流 ASR
  • 回复句子 TTS
  • 仅发往自备 Key 的服务商

不配置云端服务时,仍可正常管理角色、浏览历史与调整设置,仅 AI 相关能力暂停。

功能细节

以下描述以当前项目实际实现为准:它是单机单用户桌面应用,不是多人在线平台,也不承诺所有能力完全离线。

01

对话与角色人格

支持 OpenAI 兼容 LLM 接口,流式展示回复;角色设定可手写、由 LLM 生成,或用百科资料辅助生成。

流式回复角色提示词上下文历史
02

语音识别与自动对话

浏览器采集 PCM 音频,经本地 WebSocket 转发到 DashScope ASR。自动对话模式负责监听、识别、回复和重新监听。

流式 ASR自动对话麦克风状态
03

角色声音

支持 CosyVoice 与 Qwen3-TTS 两条角色级声音链路。TTS 按句排队播放,并用音频幅度驱动模型口型。

按句播放声音复刻口型驱动
04

VRM 与动作表情

Three.js、three-vrm 和 three-vrm-animation 驱动模型。当前包含 Idle、LookAround、Relax、Sleepy 等 11 个 VRMA 文件。

VRMVRMABlendShape
05

透明桌宠

CEF OSR 将页面渲染到 Win32 分层窗口,支持透明背景、托盘管理、右键对话、模型同步和独立宽高设置。

CEF C APIWin32透明悬浮
06

历史与长期记忆

对话历史保存在本机;长期记忆通过摘要生成并在后续对话中注入。用户可以查看、生成或清空相关数据。

本地 JSON长期摘要角色隔离
07

桌面应用壳

WinForms + WebView2 承载 Vue 前端,并管理本地 FastAPI 服务、单实例、系统托盘、窗口生命周期和设置后重启。

Windows x64WebView2本地服务
08

数据边界

配置、角色、历史和参考音频默认留在本机;使用第三方 LLM、ASR、TTS 或 OSS 时,对应请求会发送到所配置的服务。

本地优先可见配置第三方依赖
09

当前限制

仅支持 Windows x64;安装包尚未进行 Authenticode 签名;云端能力受网络、额度和第三方模型行为影响。

个人项目持续迭代非离线模型

优势不在单项参数,而在链路融合

这里的“现有方案”指常见产品形态,不针对具体品牌。不同工具各有优势,虚拟陪伴更关注桌面存在感与角色状态连续性。

体验维度常规 AI 聊天应用3D 模型展示 / VTuber 工具虚拟陪伴
核心目标高效文字或语音问答模型展示、直播驱动与创作持续的角色陪伴与桌面交互
角色一致性通常以提示词或会话为主外观强,但对话人格往往依赖外部工具人格、历史、记忆、声音与 VRM 在同一应用链路中
语音闭环通常有语音输入或朗读侧重实时捕捉,AI 对话需额外拼装ASR → LLM → 分句 TTS → 口型与动作自动串联
桌面存在主要停留在应用窗口可以悬浮,但多面向录制或直播透明桌宠独立运行,主窗口收进托盘后仍可继续对话
情感表现以文本、语调或头像为主依赖操作者或捕捉设备驱动回复句子自动映射表情、动作与音频口型
数据方式多以云端账户和服务为中心模型与工程文件通常本地保存角色、历史、记忆与配置本地保存;云端能力按配置调用
部署与改造开箱即用,但内部链路较封闭扩展强,但整合成本较高单机开箱体验与可读本地 API 并存,适合继续开发
01

低切换成本

文字、语音、模型、记忆与桌宠不需要在多个工具之间切换,角色状态也不必手工搬运。

02

对话和表现同步

前端在句子生成时并行安排 TTS,并在完整回复后修正情感动作,兼顾即时反馈和整体准确度。

03

主窗口可退出视线

系统托盘保留服务和桌宠,使用者可以回到原本工作,不必持续盯着聊天界面。

04

边界透明

本地数据与第三方 API 职责分开说明;应用不会把“本地优先”包装成完全离线。

0
ms 端到端延迟
0
内置 VRMA 动作
0
界面主题
0
可选 TTS 链路
当前可用版本

VirtualCompanion v0.2.0

Windows 10/11 x64 安装包,包含桌面壳与本地服务运行环境。无需单独安装 Python 或 .NET 8。

约 190.4 MiB2026-08-04 构建需要 WebView2 Runtime