这两天一直在研究这个话题,踩了几个坑,把遇到的东西整理成文,供有需要的朋友参考。
- AIRI 完全指南:Electron + Capacitor 多端自托管 LLM 虚拟角色
三、三端架构详解:桌面 / 网页 / 移动的技术取舍与模型支持- 3.1 桌面版 stage-tamagotchi(Electron)
- 3.2 网页版 stage-web(PWA)
- 3.3 移动版 stage-pocket(Capacitor)
- 3.4 三端能力差异对照表
- 3.5 共享核心
AIRI 完全指南:Electron + Capacitor 多端自托管 LLM 虚拟角色
如果你正在找一个可以自托管、支持多端、LLM 驱动的虚拟角色开源项目,那 Project AIRI(GitHub 48k+ Star)值得花 10 分钟读完这篇文章。
它解决了三个开发者最在意的问题:
第一,同一个 AI 角色(带记忆和声音)能跑在桌面、浏览器、手机三端,不再"换个设备从头再来";
第二,模型驱动覆盖 Live2D / MMD / Spine / VRM 四种格式;
第三,自托管栈完全开源(MIT),记忆用 Postgres 18 + vchord 向量扩展,docker-compose 三行命令拉起。
本文基于最新 release v0.11.3,从架构差异、四象限能力、30+ LLM 提供商、Eventa/injeca IPC 设计,到自托管部署与三行命令启动,全部带可运行代码与对比表格,文末有完整命令清单可直接复制用。
一、AIRI 是什么:从 Neuro-sama 到"你自己的数字生命"
AIRI 的 package.json 描述只有一句话–“LLM powered virtual character”。官方中文定位更直白:复刻 Neuro-sama,让 AI waifu / 虚拟角色也能来到大家的世界。Neuro-sama 是引爆 Twitch 的 AI VTuber,但不开源、不可自托管;AIRI 给出了另一种可能:把同样的体验,开源、可改、可自托管地交还到你手里。核心愿景写得很清楚–「let you own your digital life, cyber living, easily, anywhere, anytime」。
协议是 MIT,Copyright © 2024-PRESENT Neko Ayaka。想先体验不装也行,在线版在 airi.moeru.ai,文档站是 airi.moeru.ai/docs/。
二、为什么说它"生而多端":Web 技术栈的底层红利
很多 AI 陪伴项目走"原生优先,Web 补齐"路线–先做 iOS/Android app,再考虑要不要出网页版。AIRI 走了相反方向:从第一天起就基于 Web 技术栈,再向原生扩展。README 列得很清楚:WebGPU、WebAudio、Web Workers、WebAssembly、WebSocket,是它一着手就依赖的能力。
这个方向选反了有什么好处
1. 浏览器天然跨平台,PWA 一开,移动端也就有了–AIRI 的移动版正是通过 PWA 与 Capacitor 共同支持的。
2. 桌面版可通过 candle(HuggingFace)用原生 NVIDIA CUDA 与 Apple Metal 加速,无需你在每台机器上手动装一套 CUDA 工具链。
3. 灵活性留给了你:得 TCP 连接、Discord 语音频道、玩 Minecraft / Factorio 这种"非 Web"能力时,桌面运行时可以打开这些扩展通道。
换句话说,Web 不是 AIRI 的"降级版",而是它的根。原生是叠加在 Web 之上的能力加强,而不是另一套重写的代码。这是它能同时覆盖桌面、网页、移动三端的根本原因。
三、三端架构详解:桌面 / 网页 / 移动的技术取舍与模型支持
三个正式应用共享 packages/stage-ui 核心包,但运行时与模型支持有明确差异–这不是"一套代码三端跑"的营销话术,而是有意识的能力分层。
3.1 桌面版 stage-tamagotchi(Electron)
技术栈:Electron + electron-vite + electron-builder,前端用 Vue 3、Pinia、VueUse、reka-ui、UnoCSS、Three.js(@tresjs/core)、Valibot。appId 是 ai.moeru.airi,构建脚本分 build:win / build:mac / build:linux。
它依赖的模型驱动包最全:stage-ui-live2d + stage-ui-mmd + stage-ui-spine + stage-ui-three–Live2D、MMD、Spine、VRM 四种格式全支持,三端里覆盖最广。其他关键依赖:
injeca(依赖注入)@moeru/eventa(类型安全 IPC)@modelcontextprotocol/sdk(MCP 支持)chess.jsuiohook-napi(全局输入钩子)electron-updater
3.2 网页版 stage-web(PWA)
技术栈:Vue 3 + Vite + vite-plugin-pwa,后端用 hono(WIP),认证用 better-auth,ORM 是 drizzle-orm,外加 model-driver-mediapipe。在线访问 airi.moeru.ai。
模型驱动依赖只有 stage-ui-live2d + stage-ui-three,即 Live2D + VRM。注意后端 hono 仍是 WIP,AGENTS.md 明确标注 “Web backend: WIP”,别把它当稳定后端用。
3.3 移动版 stage-pocket(Capacitor)
基于 @capacitor/android + @capacitor/ios,iOS 与 Android 都支持,里面有 Swift 原生层(lint:swift 脚本可验)、barcode-scanner、local-notifications。开发脚本是 dev:ios / dev:android。
模型驱动依赖只有 stage-ui-three,目前以 VRM 为主–这里如实表述,不要夸大成"支持所有模型格式",事实就是移动端目前只挂了 three 这一个驱动。
3.4 三端能力差异对照表
维度桌面版网页版移动版Live2D✅✅❌MMD✅❌❌Spine✅❌❌VRM✅✅✅原生 GPU 加速(CUDA/Metal via candle)✅❌❌后端自托管可选WIP(hono)依赖网页版或自托管
3.5 共享核心
packages/stage-ui 是三端共用的业务核心,搭配 stage-layouts、stage-pages 等共享页面基座,以及 stage-shared(跨端逻辑)、model-driver-lipsync、model-driver-mediapipe 等驱动包–它们作为 monorepo 内的共享模块存在,各端按需直接或间接引入(例如移动端目前主要用到 stage-ui-three,并未直接依赖 stage-pages 与两个 model-driver)。
另外有一个实验性的 Godot 引擎版位于 engines/stage-tamagotchi-godot,感兴趣可以关注但不是主线。
四、Brain / Ears / Mouth / Body:一个虚拟角色的"四象限"能力
AIRI 把虚拟角色拆成四象限,这种分法让能力扩展变得很清晰。
4.1 Brain(大脑 / Agent)
"会做事"的部分。它能玩 Minecraft、Kerbal Space Program;Factorio 支持是 WIP(独立仓库 airi-factorio);Helldivers 2 也是 WIP。社交侧接入了 Telegram 与 Discord 聊天。
记忆系统设计很有意思:
- 浏览器端:用 DuckDB WASM / pglite 做纯浏览器数据库
- 服务端:用 Postgres + 向量扩展承载长期记忆
- Memory Alaya:更进一步的方案,仍标注 WIP
4.2 Ears(耳朵 / 输入)
负责"听"。包含浏览器音频输入、Discord 音频输入、客户端语音识别、客户端说话检测。这是实时语音对话的前置条件,决定了角色能不能"被打断"。
4.3 Mouth(嘴巴 / TTS)
负责"说"。AIRI 不绑死单一 TTS,而是接了多家:
- ElevenLabs
- Microsoft / Azure Speech
- OpenAI 兼容 TTS
- 阿里云 Model Studio
- 本地 Kokoro TTS(对自托管用户尤其友好,意味着"说话"这一环可完全离线)
4.4 Body(身体 / 形象)
负责"演"。README 详列的是 VRM 与 Live2D:VRM 支持控制加动画(自动眨眼、注视、闲置眼球运动),Live2D 支持同款动画。MMD 与 Spine 在桌面版也挂载了,但 README 没有展开它们的具体动画能力是否与 VRM/Live2D 完全对等,这部分建议参考官方文档。
四象限的扩展性,背后其实是下一节要讲的 LLM 提供商、插件系统与 IPC 架构在支撑。
五、可扩展性骨架:30+ LLM 提供商、插件系统与 Eventa/injeca 架构
AIRI 的扩展性可以拆成三条相对独立的轴,它们正交生长。
5.1 第一条轴:LLM 提供商(30+ 家)
由 xsAI 驱动。列表里既有国际主流,也有国内厂商与聚合/自托管方案:
- 国际主流:OpenAI(+Azure)、Anthropic Claude、Google Gemini、xAI、Groq、Mistral、Together.ai、Fireworks.ai、Novita、Cloudflare Workers AI
- 国内厂商:DeepSeek、Qwen(通义)、Zhipu(智谱)、SiliconFlow(硅基流动)、Stepfun、Baichuan、Minimax、Moonshot(月之暗面)、ModelScope、Tencent Cloud(腾讯云)、Xiaomi Mimo(小米)
- 聚合与自托管:AIHubMix、OpenRouter、302.AI、vLLM、SGLang、Ollama、Player2
5.2 第二条轴:插件系统
plugins/ 目录下有 5 个已落地的插件(证实存在,不是规划):
airi-plugin-bilibili-laplace(B 站集成)airi-plugin-claude-code(Claude Code 集成)airi-plugin-game-chess(下棋游戏)airi-plugin-homeassistant(智能家居 Home Assistant)airi-plugin-web-extension(浏览器扩展)
services/ 下另有 6 个机器人/集成服务:discord-bot、telegram-bot、twitter-services、satori-bot、minecraft、computer-use-mcp。
5.3 第三条轴:IPC 与 DI 架构
- IPC:Electron 主进程与渲染进程之间用
@moeru/eventa做类型安全的 IPC/RPC,契约集中定义在apps/stage-tamagotchi/src/shared - DI:依赖注入用
injeca,组合示例在apps/stage-tamagotchi/src/main/index.ts - MCP:通过
@modelcontextprotocol/sdk接入,AIRI 可作为 MCP client 接入更广的工具生态
5.4 Monorepo 规模
- 包管理:pnpm@10.33.0
- 构建:turbo
- 整体规模:6 apps + 48 packages + 5 plugins + 6 services
- 测试:Vitest(含
@vitest/browser-playwright) - Lint:moeru-lint(
@antfu/eslint-config+ oxlint)
六、自托管:让记忆和声音真正归你所有
自托管是 AIRI 的核心叙事–前面说的"让记忆归你",技术兑现就在这里。自托管服务器栈叫 proj-airi-server,配置在 apps/server/docker-compose.yml,关键服务节选如下:
# apps/server/docker-compose.yml(服务名: proj-airi-server)
services:
db:
image: ghcr.io/tensorchord/vchord-postgres:pg18-v1.0.0 # Postgres 18 + 向量扩展 vchord
ports: ['5435:5432']
redis:
image: redis:7-alpine
ports: ['6379:6379']
api:
build: { context: ../.., dockerfile: apps/server/Dockerfile }
command: ['pnpm', '-F', '@proj-airi/server', 'run', 'server', 'api']
ports: ['6112:3000']
depends_on: [db, redis]
三个服务各有分工
db:用 TensorChord 的 vchord-postgres 镜像(Postgres 18 + vchord 向量扩展),专门用来存向量记忆redis:负责缓存与队列api:AIRI 的服务端,端口映射6112:3000,依赖 db 与 redis 的健康检查通过才启动
提醒:docker-compose 只展示服务编排,不含完整的部署文档、最低硬件要求与初始化步骤。真要上生产,建议参考官方文档。MIT 协议 + 自托管,是开头钩子里"记忆归你"的技术兑现–你不仅能跑,还能改、能分发、能审计。
七、如何上手:三行命令启动 + 周边生态一览
7.1 安装(系统包管理器最省事)
# Windows(winget / scoop 二选一)
winget install MoeruAI.AIRI
scoop bucket add airi https://github.com/moeru-ai/airi
scoop install airi/airi
# macOS
brew install --cask airi
通用方案是去 GitHub Releases 下载 v0.11.3 对应平台的产物;用 Nix 的话可以:
nix run github:moeru-ai/airi
7.2 开发启动(改源码,三行命令覆盖三端)
pnpm i
pnpm dev # 默认启动 stage-web(浏览器版)
pnpm dev:tamagotchi # 桌面版(Electron)
pnpm dev:pocket:ios # 移动版 iOS(Capacitor)
7.3 周边生态
AIRI 孵化出了一批子项目,都和"自托管 AI 角色"这条主线相关:
unspeech:通用 ASR/TTS 端点代理(类 LiteLLM,但面向语音)hfup:HuggingFace Spaces 部署工具xsai-transformers:把 Transformers.js 接成 xsAI providerVelin:用 Vue SFC + Markdown 写有状态的 LLM promptinventory:模型目录与默认 provider 配置后端MCP Launcher:MCP server 启动器,定位类似"Ollama for models"SAD:自托管与浏览器运行 LLM 的文档airi-factorio与AIRI DomeKeeper:游戏 AI 衍生品
@proj-airi(GitHub)承载 RAG、记忆系统、嵌入数据库、图标、Live2D 工具等更细分的子项目。
八、适合谁、现状如何、未来在哪
适合谁
- 想自托管 AI 陪伴、让数据归己的开发者
- 想在桌面、网页、手机上体验同一个角色的用户
- Live2D / MMD / Spine / VRM 模型作者(你的作品能直接跑起来)
- 研究 LLM Agent + 游戏能力的实验者(Minecraft、Kerbal 都已经能玩)
现状
AIRI 仍处于早期开发阶段,官方在 README 里明确招募开发者、艺术家、设计师加入;翻译托管在 Crowdin。
重要声明:项目无任何官方加密货币或代币,遇到以 AIRI 名义发币的都是诈骗。
展望
接下来值得关注的几条线:
- WebGPU 纯浏览器本地推理(WIP)
- Memory Alaya(WIP)
- Factorio 与 Helldivers 2 支持(WIP)
- 网页版 hono 后端的完善
项目地址:github.com/moeru-ai/airi,在线体验:airi.moeru.ai。让 AI 陪伴不止活在一块屏幕里–这是 AIRI 想做的事,也是它已经迈出的一大步。
🎬 博客主页:https://xiaoy. 🎥 本文由 呆呆敲代码的小Y 原创 🙉 🎄 学专栏推荐:Unity系统学专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎
资料白嫖,技术互助
学路线指引(点击解锁)知识定位人群定位🧡 Unity系统学习专栏入门级本专栏从Unity入门着手学习,快速达到Unity的入门水平💛 Unity实战类项目进阶级计划制作Unity的 100个实战案例!助你进入Unity世界,争取做最全的Unity原创博客大全。❤️ 游戏制作专栏难度偏高分享学习一些Unity成品的游戏Demo和其他语言的小游戏!💚 游戏爱好者万人社区互助/吹水数万人游戏爱好者社区,聊天互助,白嫖奖品💙 Unity100个实用技能Unity查漏补缺针对一些Unity中经常用到的一些小知识和技能进行学习介绍,核心目的就是让大家能够快速学习Unity的知识以达到查漏补缺
本次分享就到这里。技术这东西越研究越有意思,后续有新的收获我也会继续更新。
评论 (0)
暂无评论