聊聊AIRI 完全指南:Electron + Capacitor 多端自托管 LLM 虚拟角色

这两天一直在研究这个话题,踩了几个坑,把遇到的东西整理成文,供有需要的朋友参考。

- AIRI 完全指南:Electron + Capacitor 多端自托管 LLM 虚拟角色

三、三端架构详解:桌面 / 网页 / 移动的技术取舍与模型支持 四、Brain / Ears / Mouth / Body:一个虚拟角色的"四象限"能力 五、可扩展性骨架:30+ LLM 提供商、插件系统与 Eventa/injeca 架构 六、自托管:让记忆和声音真正归你所有 七、如何上手:三行命令启动 + 周边生态一览 八、适合谁、现状如何、未来在哪

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.js
  • uiohook-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-layoutsstage-pages 等共享页面基座,以及 stage-shared(跨端逻辑)、model-driver-lipsyncmodel-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
还有一个颇具野心的方向:纯浏览器 WebGPU 本地推理(WIP)–如果这条路线走通,浏览器里跑 LLM 就不再是技术演示。

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
注意这里没有"默认模型是 Grok"这种说法–LLM 是可配置的,你在设置里选谁就是谁

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-bottelegram-bottwitter-servicessatori-botminecraftcomputer-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 的健康检查通过才启动
数据链路:浏览器端的 DuckDB WASM / pglite 负责本地短期记忆,服务端的 Postgres + vchord 负责长期向量记忆–完整闭环。
提醒: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 provider
  • Velin:用 Vue SFC + Markdown 写有状态的 LLM prompt
  • inventory:模型目录与默认 provider 配置后端
  • MCP Launcher:MCP server 启动器,定位类似"Ollama for models"
  • SAD:自托管与浏览器运行 LLM 的文档
  • airi-factorioAIRI 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 后端的完善
这几条一旦落地,AIRI 的"自托管 + 多端 + 本地推理"叙事会再上一个台阶。

项目地址: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)

暂无评论