Project AIRI 完全指南:从零打造你自己的 AI 虚拟伴侣

3 阅读13分钟

仓库地址github.com/moeru-ai/ai… 在线体验airi.moeru.ai


一、这是什么?为什么要做这个?

你有没有想过,拥有一个像 Neuro-sama 那样的 AI 虚拟主播——她能陪你聊天、一起打游戏、看着你写代码,甚至能实时语音对话?

Neuro-sama 是目前最著名的 AI 虚拟直播主,她能玩 Minecraft、和观众聊天、甚至打 osu!——但她是闭源的,下线了就消失了,你也无法把她"带回家"。

Project AIRI(アイリ) 就是要打破这个局面:一个完全自托管、你做主的 AI 虚拟伴侣框架,灵感来自 Neuro-sama,梦想是让每个人都能拥有自己的"数字生命"。

你问:AIRI 能做什么?

✅ 实时语音对话(浏览器麦克风 / Discord)
✅ 控制 Live2D 或 VRM 3D 虚拟形象(嘴型同步、眼神追踪、自动眨眼)
✅ 玩 Minecraft(通过 Mineflayer 自动化)
✅ 玩 Factorio(通过 RCON API 自动化,WIP)
✅ 在 Telegram / Discord 聊天
✅ 纯浏览器端本地推理(WebGPU,无需服务器)
✅ 记忆系统(DuckDB WASM / PGVector)
✅ 插件系统(Home Assistant / Bilibili / Claude Code / 棋类游戏…)
✅ 跨平台:Web / macOS / Windows / iOS(PWA)

二、整体架构:一图胜千文

先从全局看懂这个系统的结构,再深入各个部分。

2.1 整体分层架构

┌─────────────────────────────────────────────────────────────────┐
│                        用户界面层 (Stage)                         │
│                                                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────────┐  │
│  │  stage-web   │  │stage-tamagot-│  │    stage-pocket      │  │
│  │  (浏览器版)   │  │  chi(桌面版) │  │     (手机版)          │  │
│  └──────┬───────┘  └──────┬───────┘  └──────────┬───────────┘  │
│         └─────────────────┴──────────────────────┘              │
│                            ↓                                     │
│                   ┌────────────────┐                             │
│                   │   stage-ui     │  ← 核心业务组件/Store/逻辑  │
│                   │ (共享UI包)     │                             │
│                   └───────┬────────┘                             │
└───────────────────────────┼─────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────────┐
│                        能力层 (Packages)                          │
│                                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌────────────────┐  │
│  │core-agent│  │  audio   │  │ stage-ui │  │ server-runtime │  │
│  │(AI代理   │  │(音频处理)│  │ -live2d  │  │  (服务端运行时) │  │
│  │  逻辑)   │  │          │  │ -three   │  │                │  │
│  └──────────┘  └──────────┘  └──────────┘  └────────────────┘  │
│                                                                  │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌────────────────┐  │
│  │ memory   │  │plugin-sdk│  │  xsAI    │  │  duckdb-wasm   │  │
│  │(记忆系统)│  │(插件SDK) │  │(LLM接入) │  │  (浏览器数据库)│  │
│  └──────────┘  └──────────┘  └──────────┘  └────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                            ↓
┌─────────────────────────────────────────────────────────────────┐
│                        集成层 (Integrations & Agents)             │
│                                                                  │
│  ┌────────────────┐    ┌──────────────────────────────────────┐  │
│  │ Minecraft Agent│    │          Factorio Agent              │  │
│  │  (Mineflayer)  │    │  (Factorio RCON API + autorio)       │  │
│  └────────────────┘    └──────────────────────────────────────┘  │
│                                                                  │
│  ┌────────────────┐    ┌──────────────────────────────────────┐  │
│  │  Discord/TG    │    │         VSCode Integration           │  │
│  │  Chat Bridge   │    │      (看你写代码的那只AI)             │  │
│  └────────────────┘    └──────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

2.2 声音处理全链路流程

这是 AIRI 实现"听→想→说"的完整管道:

┌─────────────┐    ┌─────────────┐    ┌──────────────┐    ┌──────────────┐
│  麦克风输入   │───▶│ VAD检测     │───▶│ STT语音识别   │───▶│  LLM思考     │
│  (WebAudio) │    │(说话检测)   │    │ (浏览器本地  │    │  (xsAI)      │
│             │    │             │    │  或 unspeech │    │              │
└─────────────┘    └─────────────┘    └──────────────┘    └──────┬───────┘
                                                                   │
        ┌──────────────────────────────────────────────────────────┘
        ↓
┌──────────────┐    ┌─────────────┐    ┌──────────────┐
│  TTS语音合成  │───▶│ 音频播放     │───▶│ 模型口型同步  │
│ (ElevenLabs  │    │             │    │ (Live2D/VRM  │
│  或本地推理) │    │             │    │  Lipsync)    │
└──────────────┘    └─────────────┘    └──────────────┘

2.3 插件系统架构

┌──────────────────────────────────────────────┐
│                Plugin Host                    │
│  ┌─────────────────────────────────────────┐  │
│  │           Plugin SDK (通信层)            │  │
│  │  ┌──────────────┐  ┌───────────────┐   │  │
│  │  │  ContextInit  │  │   Plugin接口   │   │  │
│  │  │  .channels   │  │  .init()      │   │  │
│  │  │  .apis       │  │  .setupModules│   │  │
│  │  └──────────────┘  └───────────────┘   │  │
│  │         ↕ Eventa (类型安全IPC/RPC)       │  │
│  └─────────────────────────────────────────┘  │
└──────────────────────────────────────────────┘
         ↕                    ↕                    ↕
┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│  plugin-     │   │  plugin-     │   │  plugin-     │
│  bilibili    │   │  chess       │   │  homeassist  │
│  (弹幕读取)  │   │  (下棋游戏)  │   │  (智能家居)  │
└──────────────┘   └──────────────┘   └──────────────┘

三、Monorepo 目录结构详解

AIRI 是一个 pnpm + Turborepo 管理的 monorepo,理解目录结构是参与开发的第一步。

airi/
├── apps/                    # 🖥️ 最终产品应用
│   ├── stage-web/           # 浏览器版(airi.moeru.ai)
│   ├── stage-tamagotchi/    # 桌面版(Electron,macOS/Windows)
│   ├── stage-pocket/        # 手机版(Capacitor,iOS/Android)
│   ├── server/              # 后端服务
│   └── ui-server-auth/      # 认证UI
│
├── packages/                # 📦 可复用功能包(45个)
│   ├── core-agent/          # AI代理核心逻辑
│   ├── core-character/      # 角色定义
│   ├── stage-ui/            # 核心业务UI(Store + 组件 + Composable)
│   ├── stage-ui-live2d/     # Live2D渲染
│   ├── stage-ui-three/      # Three.js 3D渲染
│   ├── audio/               # 音频工具
│   ├── plugin-sdk/          # 插件开发SDK
│   ├── plugin-sdk-tamagotchi/ # 桌面端插件SDK扩展
│   ├── server-runtime/      # 服务端运行时
│   ├── server-sdk/          # 服务端SDK
│   ├── duckdb-wasm/         # 浏览器端数据库
│   ├── memory-pgvector/     # 向量记忆存储
│   ├── model-driver-lipsync/ # 口型同步驱动
│   ├── model-driver-mediapipe/ # MediaPipe 面部追踪
│   ├── stream-kit/          # 流媒体工具
│   ├── ui/                  # 基础UI组件(基于 reka-ui)
│   └── i18n/                # 国际化翻译
│
├── plugins/                 # 🔌 官方插件
│   ├── airi-plugin-bilibili-laplace/  # B站弹幕
│   ├── airi-plugin-claude-code/       # Claude Code集成
│   ├── airi-plugin-game-chess/        # 下棋
│   ├── airi-plugin-homeassistant/     # 智能家居(WIP)
│   └── airi-plugin-web-extension/     # 浏览器插件
│
├── integrations/            # 🔗 第三方集成
│   └── vscode/              # VSCode插件
│
├── services/                # 🌐 后端微服务
└── docs/                    # 📚 文档站(VitePress)

四、技术栈全景

层面技术
前端框架Vue 3 + Vue Router + Pinia + VueUse
构建工具Vite + Turborepo + pnpm workspace
桌面端Electron + electron-vite
移动端Capacitor(iOS/Android)
样式UnoCSS(Tailwind 超集)
UI 组件Reka UI(无头组件库)
类型检查TypeScript + vue-tsc
测试Vitest
LintESLint(统一配置)
3D 渲染Three.js(VRM 模型)
2D 渲染Live2D Cubism SDK
AI 接入xsAI(Vercel AI SDK 的轻量替代)
音频WebAudio + WebAssembly(VAD)
数据库DuckDB WASM(浏览器内)+ PGVector(向量)
IPC/RPCEventa(类型安全事件总线)
依赖注入injeca
Schema验证Valibot
游戏接入Mineflayer(Minecraft)+ RCON API(Factorio)

五、快速上手:从零到运行

5.1 环境准备

# 需要 Node.js 20+,推荐用 mise(原 asdf)管理版本
# 项目根目录有 .tool-versions 文件定义版本

# 安装 pnpm(如果没有)
npm install -g pnpm

# 克隆仓库
git clone https://github.com/moeru-ai/airi.git
cd airi

# 安装所有依赖(会自动处理 workspace 关系)
pnpm i

5.2 启动各个版本

# 🌐 启动浏览器版(最简单,推荐新手从这里开始)
pnpm dev
# 访问 http://localhost:5173

# 🖥️ 启动桌面版(需要先看 CONTRIBUTING.md 配置 Electron 环境)
pnpm dev:tamagotchi

# 📱 启动手机版(需要 Xcode/Android Studio)
pnpm dev:pocket:ios --target <DEVICE_ID>

# 📚 启动文档站
pnpm dev:docs

5.3 Nix 用户的优雅方案

# 直接运行,不需要手动配置环境
nix run github:moeru-ai/airi

# NixOS 上运行桌面版(Electron 需要 FHS 兼容层)
nix develop .#fhs
pnpm dev:tamagotchi

# Windows 用户可以用 Scoop
scoop bucket add airi https://github.com/moeru-ai/airi
scoop install airi/airi

六、核心概念深度解析

6.1 LLM Provider 接入:xsAI

AIRI 使用 xsAI 作为统一的 LLM 调用层,它类似 Vercel AI SDK 但体积更小。项目内置了超过 30 个 LLM 服务提供商的支持:

支持的提供商(部分):
OpenAI / Anthropic Claude / DeepSeek / Qwen / Gemini
Ollama(本地) / vLLM(本地) / SGLang(本地)
OpenRouter / AIHubMix / 302.AI
Groq / Mistral / Cloudflare Workers AI
国内:Zhipu / SiliconFlow / MiniMax / Moonshot / Baichuan...

在 UI 设置中,你可以选择任意一个提供商并填入 API Key,AIRI 会通过统一接口调用。

6.2 角色系统(Character)

AIRI 的核心抽象之一是"角色"。每个角色定义了:

  • 名字、性格描述(System Prompt)
  • 使用的 TTS 音色
  • 绑定的 Live2D 或 VRM 模型
  • 记忆配置
// packages/core-character 定义角色的数据结构(简化示意)
interface Character {
  id: string
  name: string
  systemPrompt: string       // 角色的人设 prompt
  voiceId?: string           // TTS 音色ID
  modelType: 'live2d' | 'vrm'
  modelPath?: string
}

6.3 Stage(舞台):三端共用一套逻辑

AIRI 的精妙之处在于 "Stage" 抽象——Web、桌面、手机三个端共享同一套业务逻辑(packages/stage-ui),但各自有独立的运行时适配层:

┌─────────────────────────────────────────────────────┐
│                packages/stage-ui                     │
│         (业务逻辑、Store、组件 - 三端共享)            │
│                                                      │
│  stores/llm.ts      → LLM 对话状态管理               │
│  stores/chat.ts     → 聊天历史管理                   │
│  stores/audio.ts    → 音频设备管理                   │
│  stores/live2d.ts   → Live2D 模型状态                │
│  stores/providers.ts → LLM/TTS/STT 提供商配置        │
│  stores/mcp.ts      → MCP 工具调用                   │
└────────────────┬─────────────────┬───────────────────┘
                 ↓                 ↓
    ┌────────────────┐   ┌──────────────────┐
    │  stage-web     │   │stage-tamagotchi  │
    │  (Vite 构建)   │   │(Electron+IPC)    │
    └────────────────┘   └──────────────────┘

6.4 IPC 通信:Eventa

桌面版需要在 Electron 主进程和渲染进程之间通信。AIRI 使用自研的 Eventa 库来做类型安全的 IPC/RPC,避免了 ipcMain.on('some-string') 这种容易出错的字符串匹配方式:

// 定义通信契约(类型安全)
// apps/stage-tamagotchi/src/shared/events.ts

// 发送(渲染进程 → 主进程)
await events.invoke('window:minimize')

// 监听(主进程处理)
events.handle('window:minimize', () => {
  mainWindow.minimize()
})

七、示例:由简到难

🟢 初级示例:修改角色人设

最简单的玩法——给 AIRI 换个人设,让她扮演一个不同的角色。

打开 AIRI 的设置页面(Settings → Character),找到 System Prompt 字段,修改为:

你是一只傲娇的猫娘,名字叫「凛」。
你说话简短、带点傲气,但内心其实很在乎用户。
每次回答都要带上一个"喵~""哼"。
不要超过3句话。

保存后重新对话,AIRI 就会以这个人设跟你互动了。


🟡 中级示例:接入本地 Ollama 模型

不想花钱用 API?用本地 Ollama 运行开源模型:

# 第1步:安装并启动 Ollama
# 下载地址:https://ollama.ai
ollama pull qwen2.5:7b   # 拉取千问模型(约4GB)
ollama serve             # 启动本地服务(默认 11434 端口)
# 第2步:在 AIRI 设置中配置
Settings → LLM Provider → 选择 "Ollama"
Base URL: http://localhost:11434
Model: qwen2.5:7b

现在 AIRI 就完全在你本地运行,数据不出门!


🟡 中级示例:开启实时语音对话

# 在 AIRI 设置中:
1. Settings → Speech → STT(语音识别)
   → 选择 "Browser Native"(浏览器原生,无需API)
   → 或选择 "Whisper" 本地推理(需要 WebGPU 支持)

2. Settings → Speech → TTS(语音合成)  
   → 选择 "ElevenLabs",填入 API Key
   → 或选择本地 TTS(如 Edge TTS)

3. 点击页面右下角的麦克风图标开启对话

说话时,你会看到 Live2D 模型的嘴型实时跟着动。


🟠 进阶示例:让 AIRI 陪你玩 Minecraft

这需要启动桌面版(stage-tamagotchi)和 Minecraft 服务器。

# 第1步:启动桌面版
pnpm dev:tamagotchi

# 第2步:在设置中配置 Minecraft
Settings → Minecraft Agent:
  Server IP: localhost
  Port: 25565
  Bot Name: AIRI
  LLM Provider: (选择你配置好的)

AIRI 会通过 Mineflayer(Node.js Minecraft 机器人库)连入游戏,能够自主探索、挖矿、对话,甚至响应你在游戏内说的话:

# Minecraft 聊天中发送:
[你] AIRI,帮我挖点煤炭
[AIRI] 好的!我去找找附近的洞穴~ 喵
# AIRI 的角色会自己开始行动
AIRI 玩 Minecraft 的技术栈:

server-runtime → Minecraft Agent → Mineflayer → 服务器
     ↑                 ↑
   xsAI LLM      (定期截图分析 + 执行指令)

🔴 高级示例:开发一个自定义插件

插件系统是 AIRI 最强大的扩展机制。下面从零实现一个"天气播报"插件,让 AIRI 能定期播报天气。

第1步:创建插件包

# 在 plugins/ 目录下创建新包
mkdir plugins/airi-plugin-weather
cd plugins/airi-plugin-weather
// package.json
{
  "name": "airi-plugin-weather",
  "version": "0.1.0",
  "type": "module",
  "main": "./src/index.ts",
  "dependencies": {
    "@proj-airi/plugin-sdk": "workspace:*"
  }
}

第2步:实现插件逻辑

// plugins/airi-plugin-weather/src/index.ts
import type { Plugin } from '@proj-airi/plugin-sdk'

// 定义插件,实现 Plugin 接口
export const plugin: Plugin = {
  // init 在插件被宿主加载时执行
  async init(ctx) {
    console.log('[weather-plugin] 初始化天气插件...')
    
    // 订阅宿主事件(例如每分钟触发)
    ctx.channels.host.on('tick:minute', async () => {
      const weather = await fetchWeather('Beijing')
      
      // 通过 APIs 向 AIRI 的 LLM 注入上下文
      await ctx.apis.chat.injectSystemMessage(
        `当前北京天气:${weather.desc},气温 ${weather.temp}°C`
      )
    })
  },

  // setupModules 可以注册额外的 MCP 工具
  async setupModules(ctx) {
    // 注册一个工具,让 AIRI 可以主动查询天气
    await ctx.apis.tools.register({
      name: 'get_weather',
      description: '查询指定城市的实时天气',
      parameters: {
        type: 'object',
        properties: {
          city: { type: 'string', description: '城市名称' }
        },
        required: ['city']
      },
      execute: async ({ city }) => {
        const data = await fetchWeather(city)
        return `${city}现在${data.desc},气温${data.temp}°C,湿度${data.humidity}%`
      }
    })
  }
}

async function fetchWeather(city: string) {
  // 调用天气 API(示意)
  const res = await fetch(`https://wttr.in/${city}?format=j1`)
  const data = await res.json()
  return {
    desc: data.current_condition[0].weatherDesc[0].value,
    temp: data.current_condition[0].temp_C,
    humidity: data.current_condition[0].humidity
  }
}

第3步:在桌面版加载插件

stage-tamagotchi 的插件设置界面,选择"从本地文件加载",指向你的插件包入口文件即可。

加载后,你就可以问 AIRI:"北京今天天气怎么样?",她会实时查询后告诉你。


🔴 高级示例:自定义 Live2D 模型

AIRI 支持导入你自己制作或购买的 Live2D 模型:

1. 准备 .moc3 格式的 Live2D 模型文件
2. 打开 Settings → Display Model → Add Custom Model
3. 上传模型文件夹(包含 .moc3, .model3.json, 贴图等)
4. 配置骨骼绑定:
   - MouthOpen → 开口说话
   - EyeBlink → 自动眨眼
   - HeadX/HeadY → 鼠标跟随视线

如果你是开发者,可以深入 packages/stage-ui-live2d 自定义更多动作:

// packages/stage-ui-live2d 内部实现示意
import { useLive2DModel } from '@proj-airi/stage-ui-live2d'

const { model, setExpression, triggerMotion } = useLive2DModel()

// 根据 LLM 返回的情绪标签触发表情
watch(emotionTag, (tag) => {
  if (tag === 'happy') setExpression('smile')
  if (tag === 'surprised') triggerMotion('surprise')
})

// 根据 TTS 音频实时驱动嘴型
onAudioAmplitude((amplitude) => {
  model.setParameterValueById('ParamMouthOpenY', amplitude)
})

八、记忆系统:让 AIRI 记住你

AIRI 内置了两套记忆方案,支持在浏览器内完整运行:

8.1 DuckDB WASM(结构化记忆)

┌─────────────────────────────────────────────────┐
│            浏览器内存储(无需服务器)              │
│                                                  │
│  @proj-airi/duckdb-wasm                          │
│  └─→ @proj-airi/drizzle-duckdb-wasm              │
│       (Drizzle ORM 适配器)                      │
│        ↓                                         │
│  存储对话历史、用户偏好、角色记忆...               │
│                                                  │
│  DuckDB WASM 的优势:                             │
│  ✅ 完全在浏览器内运行(WebAssembly)              │
│  ✅ 支持完整 SQL 查询                             │
│  ✅ 数据存在 IndexedDB,刷新不丢失                │
└─────────────────────────────────────────────────┘

8.2 PGVector(语义记忆/RAG)

// packages/memory-pgvector 提供向量记忆存储
// 用于 RAG(检索增强生成),让 AIRI 能"想起"相关记忆

// 存入一段记忆
await memory.store({
  content: '用户喜欢听爵士乐',
  embedding: await getEmbedding('用户喜欢听爵士乐'),
  metadata: { timestamp: Date.now() }
})

// 语义搜索:找到相关记忆注入上下文
const related = await memory.search('用户的音乐喜好', { topK: 3 })
// → 返回:"用户喜欢听爵士乐"(语义相关)

九、服务端通道:让插件能玩游戏

AIRI 的游戏代理(Minecraft、Factorio)依赖一套服务端运行时(Server Runtime),它负责在后端维持游戏连接,并通过 WebSocket 通道将游戏画面、状态同步给前端的 AIRI 核心。

┌──────────────────────────────────────────────────────┐
│                  AIRI 桌面/浏览器端                   │
│                  (stage-tamagotchi)                   │
│                                                       │
│  server-sdk → WebSocket ────────────────────────┐     │
└───────────────────────────────────────────────────────┘
                                                   │
                                            WebSocket
                                                   │
┌──────────────────────────────────────────────────────┐
│                  server-runtime                       │
│                                                       │
│   ┌──────────────┐      ┌───────────────────────┐   │
│   │ Minecraft    │      │  Factorio Agent        │   │
│   │ Agent        │      │  RCON API wrapper      │   │
│   │ (Mineflayer) │      │  (autorio mod)         │   │
│   └──────┬───────┘      └──────────┬────────────┘   │
└──────────┼──────────────────────────┼────────────────┘
           ↓                          ↓
    Minecraft Server           Factorio Server

十、开发者工作流

10.1 日常开发命令

# 只构建/测试特定包(用 workspace filter,速度快)
pnpm -F @proj-airi/stage-ui build
pnpm -F @proj-airi/stage-tamagotchi typecheck

# 运行特定测试文件
pnpm exec vitest run packages/stage-ui/src/stores/llm.test.ts

# 运行所有测试
pnpm test:run

# 代码检查 & 自动修复格式
pnpm lint
pnpm lint:fix

# 发布版本(基于 bumpp)
npx bumpp --no-commit --no-tag

10.2 添加新功能的正确姿势

AIRI 团队有一套清晰的代码规范(定义在 AGENTS.md 中):

// ✅ 正确:用数组形式写 UnoCSS 类名,便于阅读
:class="[
  'px-2 py-1',
  'flex items-center',
  'bg-white/50 dark:bg-black/50'
]"

// ❌ 错误:一长串类名
class="px-2 py-1 flex items-center bg-white/50 dark:bg-black/50"

// ✅ 正确:用 errorMessageFrom 处理错误
import { errorMessageFrom } from '@moeru/std'
const msg = errorMessageFrom(error) ?? '未知错误'

// ❌ 错误:手动判断 Error 类型
const msg = error instanceof Error ? error.message : String(error)

// ✅ 正确:IPC 用 Eventa(类型安全)
events.handle('window:close', () => mainWindow.close())

// ❌ 错误:裸字符串 ipcMain
ipcMain.on('window:close', () => mainWindow.close())

十一、子生态:AIRI 孵化的相关项目

AIRI 在发展过程中孵化了很多独立的小工具,可以单独使用:

项目功能适合谁用
unspeech统一的语音 API 代理(像 LiteLLM 但针对 STT/TTS)需要接多个语音服务的开发者
xsai超轻量的 LLM 调用 SDK想要比 Vercel AI SDK 更小体积的项目
@proj-airi/duckdb-wasm简化封装的浏览器端 DuckDB需要在浏览器里跑 SQL 的项目
AIRI Factorio让 AI 玩 Factorio 的框架游戏 AI 研究者
Velin用 Vue SFC 写 LLM Prompt需要复杂 Prompt 状态管理的开发者
MCP Launcher一键管理所有 MCP 服务器(像 Ollama 管模型一样管 MCP)重度 MCP 用户

十二、常见问题 & 注意事项

Q:性能如何?Web 版会很慢吗? A:Web 版主要展示"浏览器能做什么"的可能性。桌面版(Electron)会使用原生 NVIDIA CUDA / Apple Metal 加速推理,不用担心性能问题。

Q:数据安全吗?会上传我的对话吗? A:完全自托管,你的数据只存在你自己的机器上。如果用本地 Ollama/vLLM,连 API 请求都不出门。

Q:目前项目的成熟度如何? A:处于活跃开发阶段(当前版本 v0.9.x)。核心语音对话、Live2D/VRM 渲染、Minecraft 游玩已相对完整;插件系统 API 仍在快速迭代,不保证向后兼容。

⚠️ 重要提醒:官方声明没有发行任何加密货币或代币,遇到声称与 AIRI 相关的代币请务必警惕。


十三、参与贡献

AIRI 是一个开放的社区项目,欢迎各种形式的贡献:

🎨 艺术/设计
   → Live2D / VRM 模型建模
   → UI 设计、动效设计

🤖 AI/ML
   → 语音识别(STT)优化
   → 语音合成(TTS)研究  
   → 计算机视觉(面部追踪)
   → 强化学习(游戏 AI)

💻 前端/全栈
   → Vue 3 组件开发
   → Three.js / WebGL 渲染
   → WebGPU 推理优化
   → Electron / Capacitor 适配

🌐 本地化
   → 翻译项目在 Crowdin 上管理

加入 Discord 社区,介绍自己