引言
"一个灵魂的容器------AI 老婆和赛博生命,把她们带进我们的世界。"
这是"每日一个开源项目"系列的第169篇文章 。今天的主角是 AIRI------一个以 Neuro-sama 为目标的开源、自托管 AI 虚拟伴侣系统。
Neuro-sama 是什么?她是 Vedal 开发的 AI VTuber,能在 Twitch 直播时和观众实时交流、玩 Minecraft、玩 Among Us,积累了数十万粉丝,被认为是迄今为止最成功的 AI 虚拟主播。
AIRI 的目标是:用完全开源的方式复现这件事,而且让每个人都能在自己的设备上运行一个这样的存在。
技术上,AIRI 是一个构建相当精心的系统:Web 优先架构基于 Vue.js + TypeScript,浏览器内通过 WebGPU 跑本地推理,Live2D 和 VRM 虚拟形象,多提供商语音流水线,以及真正能在 Minecraft 里做事的游戏代理。44.8k Stars,项目还孵化出了 xsai、unspeech 等独立子项目。
你将学到什么
- AIRI 的 Web 优先架构:为什么选择 Vue.js + WebGPU 而非 Python + Electron
- 实时语音流水线:VAD → STT → LLM → TTS 四段处理链
- Minecraft 游戏代理的工作原理(Mineflayer + 视觉 + 决策)
- Live2D 和 VRM 虚拟形象的驱动层设计
- 内存系统:DuckDB WASM + pgvector 在浏览器里跑向量检索
- 孵化子项目:xsai 轻量 AI SDK、unspeech 语音代理
前置知识
- 了解 AI 助手和虚拟形象的基本概念
- 有 Vue.js 或前端开发经验者更容易理解架构
- 看过 Neuro-sama 直播会更有上下文
项目背景
什么是 Neuro-sama
Neuro-sama(由 Vedal987 开发)是一位 AI VTuber,2022 年开始在 Twitch 直播,能实时和弹幕互动,玩 Minecraft、奥丁神殿、Among Us 等游戏,表现出人格化的情绪和反应。她不是一个播放预录内容的虚拟形象,而是一个真正在实时推理、实时决策的 AI 系统。
AIRI 的出发点:复现这种能力,用开源方式,让每个人都能在自己的环境里拥有类似的存在。
作者/团队介绍
- 组织: moeru-ai(自发形成的开源社区)
- License: MIT
- 技术栈: Vue.js + TypeScript,pnpm Monorepo,Turborepo
项目数据
- ⭐ GitHub Stars: 44,800+
- 🍴 Forks: 4,500+
- 📦 平台: Web(PWA)、macOS、Windows、Linux、iOS
- 📄 License: MIT
系统架构
Web 优先,不是 Python 优先
大多数 AI 项目选择 Python 作为运行时,AIRI 选择了 Web 平台:
javascript
传统 AI 项目路径:
Python 脚本 → 本地服务器 → WebSocket → 前端展示
问题:Python 环境配置、依赖冲突、跨平台部署复杂
AIRI 的路径:
Vue.js + TypeScript → 浏览器原生运行
WebGPU → 本地推理(无需 Python 环境)
WebAudio → 语音处理
WebAssembly → 高性能计算
Web Workers → 并行处理,不阻塞 UI
这个选择的代价是放弃了 Python 生态的成熟 AI 工具链;收益是任何有现代浏览器的设备都能运行,包括手机。
Monorepo 结构
markdown
airi/
├── apps/
│ ├── stage-web/ ← Web PWA 主应用
│ ├── stage-tamagotchi/ ← 桌面版(Electron,像电子宠物悬浮)
│ └── stage-pocket/ ← 移动端
├── core/
│ ├── brain/ ← 大脑:LLM 路由、记忆协调
│ ├── stt-tts/ ← 语音流水线
│ └── server-runtime/ ← 游戏代理调度
├── packages/
│ ├── stage-ui/ ← Live2D/VRM 渲染层
│ └── duckdb-wasm/ ← 浏览器内数据库驱动
└── services/
├── minecraft/ ← Minecraft 代理(Mineflayer)
└── factorio/ ← Factorio 代理(RCON API)
核心功能
实时语音流水线
语音对话是 VTuber 系统最核心的能力,AIRI 的流水线分四段:
markdown
用户说话
↓
VAD(语音活动检测)
识别说话开始/结束,不需要手动按键
↓
STT(语音转文字)
通过 unspeech 代理路由到各提供商
支持:Whisper(本地)、OpenAI、Azure Speech 等
↓
LLM 处理(Brain 模块)
通过 xsai 路由到 30+ 提供商
Claude、GPT、Gemini、DeepSeek、Ollama...
带记忆注入(DuckDB + pgvector)
↓
TTS(文字转语音)
ElevenLabs、Azure Speech、OpenAI、Kokoro(本地)
输出音频 + 口型同步数据
↓
Live2D/VRM 形象渲染
嘴型同步、眼动、表情驱动
Kokoro TTS 是本地语音选项------不需要 API Key,离线运行,效果在开源 TTS 里算有竞争力的。
Live2D 和 VRM 虚拟形象
@proj-airi/stage-ui 处理形象渲染:
- 自动眨眼:随机间隔,避免"死鱼眼"感
- 视线追踪:眼睛跟随鼠标/话题中心移动
- 闲置动画:角色在没有说话时有自然的微小动作
- 口型同步:根据 TTS 输出的音素数据驱动嘴型
- 表情系统:LLM 输出带情绪标签,驱动对应的表情变化
两种格式都支持:Live2D(.moc3 格式,2D 骨骼动画)和 VRM(3D 虚拟形象标准格式)。
WebGPU 本地推理
浏览器版通过 WebGPU 在本机跑推理,桌面版使用 HuggingFace Candle 库直接调用 NVIDIA CUDA 或 Apple Metal:
浏览器版:
WebGPU API → 调用 GPU 计算单元
不需要安装任何本地 AI 框架
支持:Chrome 113+(实验功能),Edge,Safari(实验中)
桌面版(Electron):
HuggingFace Candle(Rust)→ CUDA / Apple Metal
性能接近原生 Python 框架
无需配置 CUDA 工具链,二进制直接包含
游戏代理
Minecraft(已上线):
markdown
AIRI 连接 Minecraft 服务器(Mineflayer 库)
↓
视觉输入:截图 → 多模态 LLM 分析
(判断当前状态:在挖矿?遇到怪物?材料不够?)
↓
动作输出:移动、挖掘、建造、交互
↓
语言输出:实时用语音向观众解释在做什么
AIRI 在 Minecraft 里不只是按预设脚本行动------LLM 根据当前游戏状态决策下一步,并向观众解释自己的想法。
Factorio(PoC 阶段):
通过 RCON API 控制 Factorio,配合 autorio 模组库,代理可以读取工厂状态、下发指令。Factorio 的复杂工厂自动化对 AI 规划能力是更大的挑战。
孵化的子项目
xsai:轻量 AI SDK
AIRI 开发过程中发现 Vercel AI SDK 太重,自己做了一个轻量替代:
typescript
import { createOpenAI } from 'xsai'
const openai = createOpenAI({ apiKey: 'sk-...' })
const result = await openai.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello' }]
})
支持所有兼容 OpenAI API 的提供商,包括 Claude、Gemini、DeepSeek、Ollama 本地模型等。
unspeech:语音 API 统一代理
不同语音服务的 API 格式不统一,unspeech 提供统一的 /audio/transcriptions 和 /audio/speech 端点:
bash
# 启动 unspeech 代理
npx unspeech
# 向任意提供商发请求,格式统一
curl -X POST http://localhost:3000/audio/transcriptions \
-H "X-Provider: openai" \
-F "file=@audio.mp3"
后端可以切换 OpenAI Whisper、Azure Speech、本地 Whisper,前端不需要改代码。
记忆系统
这部分还在开发中,但架构已经确定:
sql
会话中的对话内容
↓
DuckDB WASM(浏览器内 SQL 数据库)
pglite(轻量级 PostgreSQL,纯浏览器运行)
↓
@proj-airi/memory-pgvector(向量相似度检索)
↓
Memory Alaya(记忆检索层,WIP)
↓
检索相关历史记忆注入 LLM 上下文
全部在浏览器内运行,没有外部数据库依赖,数据留在本地。
快速开始
安装
bash
# Windows(winget)
winget install MoeruAI.AIRI
# macOS(Homebrew)
brew install --cask airi
# 源码开发
git clone https://github.com/moeru-ai/airi.git
cd airi
pnpm install
pnpm dev
基本配置
bash
# 配置 LLM 提供商(选一个)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
# 或使用 Ollama 本地模型,不需要 API Key
# 配置 TTS(或使用本地 Kokoro,不需要 API Key)
ELEVENLABS_API_KEY=...
访问 http://localhost:5173 打开 Web 界面,选择形象、配置 LLM,开始对话。
与现有方案的对比
| 维度 | AIRI | Character.ai | 商业 VTuber 工具 |
|---|---|---|---|
| 开源 | ✅ MIT | ❌ | ❌ |
| 自托管 | ✅ | ❌ | 部分 |
| 数据隐私 | 全本地可选 | 上传到服务器 | 不确定 |
| 游戏能力 | ✅ Minecraft/Factorio | ❌ | 极少 |
| 本地推理 | ✅ WebGPU/CUDA | ❌ | 部分 |
| 自定义形象 | Live2D + VRM | ❌ | 有限 |
项目地址与资源
- 🌟 GitHub : moeru-ai/airi
- 🌐 官网/文档 : airi.moeru.ai
- 📦 子项目 : xsai · unspeech
- 💬 Hacker News 讨论 : Show HN: Recreation of Neuro-sama
总结
AIRI 做的事情可以一句话概括:把 Neuro-sama 的能力开源出来,让每个人都可以在自己的设备上运行。
技术上有几个值得关注的设计决策:
Web 优先架构是一个反直觉的选择。大多数 AI 项目默认 Python,但 AIRI 押注 Web 标准(WebGPU、WebAudio、WebAssembly)------代价是初期工具链不成熟,收益是跨平台一致性和零安装门槛。WebGPU 在 2025-2026 年逐渐成熟,这个赌注开始兑现。
游戏代理把 AI 伴侣从"聊天系统"变成了"能做事的系统"。Minecraft 代理不只是回答"你在干什么",而是真正在游戏里行动、同时向观众解释。这个方向在技术和产品层面都比单纯聊天更有意思。
孵化子项目说明项目有真实的工程积累:xsai 和 unspeech 都是从实际需求中长出来的,而不是为了生态而生态。
44.8k Stars、MIT 协议、活跃的社区------AIRI 是目前开源 AI 伴侣赛道里构建最认真的项目之一。
探索 PrimeSkills ------ 精选 AI Agent 与技能的市场,每一个都经过真实企业工作流验证,去掉浮夸,留下真正有用的。
欢迎访问我的个人主页,发现更多有价值的见解和有趣的产品。