airi
自托管的AI虚拟伴侣项目,灵感来自Neuro-sama,支持实时语音聊天、玩Minecraft和Factorio等游戏,提供Web/桌面/移动端跨平台体验。亮点在于完全自托管、集成多种LLM API和本地推理能力,社区活跃且持续更新。注意:项目声明没有官方加密货币,谨慎辨别。
README
Project AIRI
重新创造 Neuro-sama,一个 AI 老婆 / 虚拟角色的灵魂容器,将它们带入我们的世界。
[加入 Discord 服务器] [尝试一下] [简体中文] [日本語] [Русский] [Tiếng Việt] [Français] [한국어]
深受 Neuro-sama 启发
[!TIP] 在 Windows 上,你也可以通过 Scoop 安装 AIRI:
scoop bucket add airi https://github.com/moeru-ai/airi scoop install airi/airi
[!WARNING] 注意: 本项目 没有 任何官方铸造的加密货币或代币。请核实信息,谨慎行事。
[!NOTE]
我们有一个专门的组织 @proj-airi 来管理 Project AIRI 诞生的所有子项目。来看看吧!
RAG(检索增强生成)、记忆系统、嵌入式数据库、图标、Live2D 实用工具等等!
[!TIP] 我们在 Crowdin 上有一个翻译项目。如果你发现任何不准确的翻译,欢迎在那里贡献改进。
你是否梦想过拥有一个能与您玩耍、聊天的网络生命体(网络老婆、数字宠物)或数字伴侣?
借助现代大语言模型(LLM)如 ChatGPT 和著名的 Claude 的力量,让虚拟角色与我们进行角色扮演和聊天已经变得对每个人都足够简单。Character.ai (a.k.a. c.ai) 和 JanitorAI 等平台,以及 SillyTavern 等本地运行环境,已经是足够好的基于聊天或视觉冒险游戏体验的解决方案。
但是,玩游戏的能力呢?看到你在编码的能力呢?在玩游戏、看视频时还能聊天,并且能做很多其他事情的能力呢?
也许你已经知道 Neuro-sama。她目前是最优秀的虚拟主播,能够玩游戏、聊天,并与你和观众互动。也有人称这种存在为“数字人”。遗憾的是,由于它并非开源项目,你无法在她的直播结束后与她互动。
因此,这个项目 AIRI 提供了另一种可能性:让你随时随地轻松拥有自己的数字生命、网络生命。
我们发布的开发日志及近期更新
- DevLog @ 2026.03.23 于 2026 年 3 月 23 日
- DevLog @ 2026.03.14 于 2026 年 3 月 14 日
- DevLog @ 2026.02.16 于 2026 年 2 月 16 日
- DevLog @ 2026.01.01 于 2026 年 1 月 1 日
- DevLog @ 2025.10.20 于 2025 年 10 月 20 日
- DevLog @ 2025.08.05 于 2025 年 8 月 5 日
- DevLog @ 2025.08.01 于 2025 年 8 月 1 日
- DreamLog 0x1 于 2025 年 6 月 16 日
- ...更多内容请访问文档站点
这个项目有什么特别之处?
与其他 AI 驱动的 VTuber 开源项目不同,アイリ 从第一天起就建立在许多 Web 技术之上,例如 WebGPU、WebAudio、Web Workers、WebAssembly、WebSocket 等。
[!TIP] 担心使用 Web 技术会导致性能下降?
别担心,虽然 Web 浏览器版本是为了展示我们能在浏览器和 WebView 中做到什么程度,但我们不会完全依赖它。AIRI 的桌面版本默认能够使用原生 NVIDIA CUDA 和 Apple Metal(感谢 HuggingFace 和备受喜爱的 candle 项目),无需复杂的依赖管理。作为权衡,它在图形、布局、动画以及正在开发中的插件系统方面部分采用 Web 技术,以便大家集成各种功能。
这意味着 アイリ 能够运行在现代浏览器和设备上,甚至移动设备上(已通过 PWA 支持实现)。这为我们(开发者)带来了许多可能性,可以将アイリ VTuber 的能力构建和扩展到新的高度,同时仍然为用户保留启用需要 TCP 连接或其他非 Web 技术(如连接到 Discord 语音频道或与朋友一起玩 Minecraft 和 Factorio)的功能的灵活性。
[!NOTE]
我们仍处于早期开发阶段,正在寻找有才华的开发者加入我们,帮助我们将アイリ变为现实。
如果你不熟悉本项目所需的 Vue.js、TypeScript 和开发工具,也没关系,你可以以艺术家、设计师的身份加入我们,甚至帮助我们启动第一次直播。
即使你是 React、Svelte 甚至 Solid 的忠实粉丝,我们也欢迎你。你可以打开一个子目录,添加你希望在アイリ中看到或想要尝试的功能。
我们正在寻找的领域(及相关项目):
- Live2D 建模师
- VRM 建模师
- VRChat 虚拟形象设计师
- 计算机视觉
- 强化学习
- 语音识别
- 语音合成
- ONNX Runtime
- Transformers.js
- vLLM
- WebGPU
- Three.js
- WebXR(请查看我们 @moeru-ai 组织下的另一个项目)
如果你感兴趣,为什么不在这里介绍一下自己?想加入我们共同构建 AIRI 吗?
当前进展
已具备的能力
- 大脑
- 玩 Minecraft
- 玩 Factorio(开发中,但已有 PoC 和演示版)
- 玩 Kerbal Space Program(公告待定)
- 合作玩 Helldivers 2(开发中)
- 在 Telegram 中聊天
- 在 Discord 中聊天
- 记忆
- 纯浏览器内数据库支持(DuckDB WASM |
pglite) - Memory Alaya(开发中)
- 纯浏览器内数据库支持(DuckDB WASM |
- 纯浏览器内本地(WebGPU)推理
- 耳朵
- 浏览器音频输入
- Discord 音频输入
- 客户端语音识别
- 客户端说话检测
- 嘴巴
- ElevenLabs 语音合成
- 身体
- VRM 支持
- 控制 VRM 模型
- VRM 模型动画
- 自动眨眼
- 自动注视
- 空闲眼球运动
- Live2D 支持
- 控制 Live2D 模型
- Live2D 模型动画
- 自动眨眼
- 自动注视
- 空闲眼球运动
- VRM 支持
开发
有关开发本项目的详细说明,请参阅 CONTRIBUTING.md
[!NOTE] 默认情况下,
pnpm dev会启动 Stage Web(浏览器版本)的开发服务器。如果你想尝试开发桌面版本,请确保阅读 CONTRIBUTING.md 以正确设置环境。
pnpm i
pnpm dev
Stage Web(浏览器版本,位于 airi.moeru.ai)
pnpm dev
Stage Tamagotchi(桌面版本)
pnpm dev:tamagotchi
包含一个 Nix 包用于 Tamagotchi。要使用 Nix 运行 airi,首先确保启用了 flakes,然后运行:
nix run github:moeru-ai/airi
NixOS
Electron 需要共享库,这些库在 NixOS 的标准路径中不存在。请使用 flake.nix 中定义的 FHS shell:
nix develop .#fhs
pnpm dev:tamagotchi
Stage Pocket(移动版本)
启动电容器的开发服务器:
pnpm dev:pocket:ios --target <DEVICE_ID_OR_SIMULATOR_NAME>
# 或者
CAPACITOR_DEVICE_ID_IOS=<DEVICE_ID_OR_SIMULATOR_NAME> pnpm dev:pocket:ios
你可以通过运行 pnpm exec cap run ios --list 查看可用的设备和模拟器列表。
如果你需要以无线模式连接 Pocket 上的服务器频道,你需要以 root 身份启动 tamagotchi:
sudo pnpm dev:tamagotchi
然后在 tamagotchi 的 settings/connections 中启用安全 WebSocket。
文档站点
pnpm dev:docs
发布
运行 bumpp 以更新 monorepo 版本:
npx bumpp --no-commit --no-tag
支持的 LLM API 提供商(基于 xsai)
- AIHubMix(推荐)
- OpenRouter
- vLLM
- SGLang
- Ollama
- 302.AI(赞助商)
- OpenAI
- Anthropic Claude
- AWS Claude(欢迎 PR)
- DeepSeek
- Qwen
- Google Gemini
- xAI
- Groq
- Mistral
- Cloudflare Workers AI
- Together.ai
- Fireworks.ai
- Novita
- Zhipu
- SiliconFlow
- Stepfun
- Baichuan
- Minimax
- Moonshot AI
- ModelScope
- Player2
- Tencent Cloud
- Sparks(欢迎 PR)
- Volcano Engine(欢迎 PR)
- Xiaomi Mimo
本项目诞生的子项目
- Awesome AI VTuber:AI VTuber 及相关项目的精选列表
unspeech:用于/audio/transcriptions和/audio/speech的通用端点代理服务器,类似 LiteLLM 但适用于任何 ASR(自动语音识别)和 TTS(文本转语音)hfup:帮助部署、打包到 HuggingFace Spaces 的工具xsai-transformers:实验性的 🤗 Transformers.js 提供商,用于 xsAI- WebAI: Realtime Voice Chat:使用 VAD(语音活动检测)+ STT(语音转文本)+ LLM(大语言模型)+ TTS(文本转语音)从头实现 ChatGPT 实时语音聊天的完整示例
@proj-airi/drizzle-duckdb-wasm:Drizzle ORM 的 DuckDB WASM 驱动@proj-airi/duckdb-wasm:@duckdb/duckdb-wasm的简单易用封装- AIRI Factorio:让 AIRI 玩 Factorio
- AIRI DomeKeeper:让 AIRI 玩 DomeKeeper
- Factorio RCON API:Factorio 无头服务器控制台的 RESTful API 封装
autorio:Factorio 自动化库tstl-plugin-reload-factorio-mod:开发时重载 Factorio 模组- Velin:使用 Vue SFC 和 Markdown 编写易于管理的有状态 LLM 提示词
demodel:轻松加速从各种推理运行时拉取模型和数据集inventory:集中式模型目录及默认提供商配置的后端服务- MCP Launcher:用于所有可能的 MCP 服务器的易用 MCP 构建器和启动器,就像 Ollama 用于模型一样!
- 🥺 SAD:关于自托管和浏览器运行 LLM 的文档和笔记
%%{ init: { 'flowchart': { 'curve': 'catmullRom' } } }%%
flowchart TD
Core("Core")
Unspeech("unspeech")
DBDriver("@proj-airi/drizzle-duckdb-wasm")
MemoryDriver("[WIP] Memory Alaya")
DB1("@proj-airi/duckdb-wasm")
SVRT("@proj-airi/server-runtime")
Memory("Memory")
STT("STT")
Stage("Stage")
StageUI("@proj-airi/stage-ui")
UI("@proj-airi/ui")
subgraph AIRI
DB1 --> DBDriver --> MemoryDriver --> Memory --> Core
UI --> StageUI --> Stage --> Core
Core --> STT
Core --> SVRT
end
subgraph UI_Components
UI --> StageUI
UITransitions("@proj-airi/ui-transitions") --> StageUI
UILoadingScreens("@proj-airi/ui-loading-screens") --> StageUI
FontCJK("@proj-airi/font-cjkfonts-allseto") --> StageUI
FontXiaolai("@proj-airi/font-xiaolai") --> StageUI
end
subgraph Apps
Stage --> StageWeb("@proj-airi/stage-web")
Stage --> StageTamagotchi("@proj-airi/stage-tamagotchi")
Core --> RealtimeAudio("@proj-airi/realtime-audio")
Core --> PromptEngineering("@proj-airi/playground-prompt-engineering")
end
subgraph Server_Components
Core --> ServerSDK("@proj-airi/server-sdk")
ServerShared("@proj-airi/server-shared") --> SVRT
ServerShared --> ServerSDK
end
STT -->|Speaking| Unspeech
SVRT -->|Playing Factorio| F_AGENT
SVRT -->|Playing Minecraft| MC_AGENT
subgraph Factorio_Agent
F_AGENT("Factorio Agent")
F_API("Factorio RCON API")
factorio-server("factorio-server")
F_MOD1("autorio")
F_AGENT --> F_API -.-> factorio-server
F_MOD1 -.-> factorio-server
end
subgraph Minecraft_Agent
MC_AGENT("Minecraft Agent")