Project AIRI用WebGPU+WebAssembly在浏览器内实现语音驱动AI角色,无需服务器;另有Electron桌面版支持CUDA/Metal加速。

每隔几个月就会有一款新的"AI 伴侣"应用出现,配上一段病毒式传播的演示视频,结果不过是围绕聊天 API 构建的托管 SaaS 包装器,外加一个可爱的虚拟形象。Project AIRI 不是这种产品。它是一个拥有 47,900 Star、MIT 许可、完全可自托管的技术栈,能在你的自有硬件上运行一个语音驱动、动画化的 AI 角色——无需账号、不依赖云端(除非你主动接入),同时还能在 Minecraft 和 Factorio 中游玩。该项目公开阐明了其目标:"希望达到 Neuro-sama 的高度",指的是那个(在 Twitch 上开创了这一类型的闭源、商业运营的 AI 虚拟主播)。
让 AIRI 值得从技术角度审视的,不是它的二次元包装。而是这个团队解决了一个真正的硬核系统问题——在浏览器标签页内运行完整的对话式 AI 智能体流水线(STT → LLM → TTS → 动画 → 记忆),使用 WebGPU 和 WebAssembly,无需服务器——然后在这套核心之上构建了第二种完全不同的执行模式(通过 Electron 的原生桌面版,支持 CUDA/Metal 加速)。这是一种非比寻常的架构选择,对谁应该、谁不应该使用这个东西,有着真实的的影响。
抛开动漫 branding 不谈,AIRI 本质上是一个角色 AI 智能体运行时,接收语音或文本输入,将其路由到你选择的 LLM,并把响应渲染为语音加上同步的 Live2D 或 VRM 虚拟形象,同时可选地让该 AI 智能体在游戏世界中自主行动。
具体来说,已交付的能力包括:
它提供了三种运行方式:stage-web(纯浏览器,WebGPU 加速,明确标注为"概念验证"以说明性能)、stage-tamagotchi(Electron 桌面构建——Windows、macOS、Linux,通过 Homebrew、Winget、Scoop 和 Nix 安装),以及通过 Capacitor 实现的 iOS/Android 移动端 PWA 构建。
该仓库是一个 TypeScript/Vue monorepo,分为 UI 包(@proj-airi/stage-ui、@proj-airi/ui,以及专用的过渡和加载屏幕包,以及用于正确渲染中日韩字形的 CJK/Xiaolai 字体包)、基础设施包(@proj-airi/server-runtime、@proj-airi/server-sdk、@proj-airi/server-shared,以及一对 DuckDB ORM/WASM 封装),以及应用壳(stage-web 面向浏览器、stage-tamagotchi 面向桌面、realtime-audio,以及一个 playground-prompt-engineering 沙盒用于隔离迭代角色提示词)。这种分离是架构的核心:角色的"大脑"——提示词构建、工具调用、记忆检索、TTS/STT 路由——位于共享的基础设施包中,每个应用只是围绕它构建的一个薄薄的渲染/输入主机。更换模型或添加新虚拟形象,每个部署目标都会同步获取,无需重写。
最关键的部分是 LLM 抽象层,建立在团队自研的 xsAI 库之上,支持 30+ 提供商:OpenAI、Anthropic、DeepSeek、Google Gemini、Ollama、vLLM、SGLang、Groq、Mistral、Together.ai、Fireworks.ai,以及一群中国提供商(Qwen、Baichuan、Moonshot)——这反映了该项目源于中文开源社区。文档以简体中文、日语、韩语、俄语、越南语和法语与英语一同发布,并且有活跃的 Crowdin 翻译流水线。xsAI 本身是一个轻量级、可 tree-shaking 的替代方案,相比官方 OpenAI 或 LangChain 等更重的 SDK,它专为只需要聊天补全的应用构建,这样一个只需要聊天补全的应用就不必向浏览器标签页中打包整个 AI 智能体框架那么多 JavaScript——当你的目标运行时是客户端 WebAssembly 而不是拥有无限 bundle 大小的服务器时,这是一个真实的约束。
这是自托管的实际收益:将 AIRI 指向本地 Ollama 或 vLLM 端点,角色就完全不会接触任何第三方 API。将其指向 Claude 或 GPT 系列模型,则是用隐私保证换取更高的推理质量——架构使这成为一个运行时配置变更,而非重写。虚拟形象渲染、记忆层或游戏 AI 智能体代码都不需要知道或关心是哪个提供商在回答。
语音同样走一条可插拔的路径:TTS 通过 ElevenLabs、Azure、OpenAI 兼容端点、阿里云 Model Studio,或完全本地的 Kokoro TTS 模型,统一在项目称为"unspeech"的内部代理之后,该代理将每个后端规范化为相同的 /audio/transcriptions 和 /audio/speech 端点格式。STT 默认为客户端浏览器识别,因此语音输入永远不会离开设备,除非你主动将其路由到云端 STT 提供商。对于本地 GPU 推理,桌面构建使用 HuggingFace 的 Candle 框架——一个基于 Rust 的张量库,作为更轻量的 PyTorch 替代品构建——在 Windows/Linux 上使用 CUDA 加速,在 Apple Silicon 上使用 Metal 加速。这也是为什么文档坦诚地表示 web 构建是概念验证,而桌面构建"推荐用于获得更好的性能":通过 WebGPU 在浏览器标签页内运行 Transformer 推理,在整个行业中仍是相对不成熟的技术,而通过 Candle 的原生 GPU 加速是一条经过验证的路径。
虚拟形象层位于推理流水线之上,而非其旁。一旦 LLM 返回文本,TTS 层合成音频,动画系统就会驱动 Live2D(2D 骨骼 sprite 变形,更老更常见的虚拟主播格式)或 VRM(基于 3D 人形 glTF 标准,拥有更广泛的开放工具生态系统,包括 Unity 和 VRChat 互操作性),配合自动眨眼、跟随光标或摄像头的视线追踪,以及在 TTS 引擎发出的任何嘴型或表情信号之上叠加的待机微动作。所有这些都无需往返服务器——在运行其他一切的同一个 WebGPU/WebAudio 上下文中在客户端计算。
游戏 AI 智能体部分在架构上与聊天/虚拟形象核心分离,而这正是 AIRI 区别于每一个"可爱虚拟形象+聊天机器人"克隆产品的关键。Minecraft 控制通过 mineflayer——一个广泛使用的 Node.js 机器人框架,应用于大量的 Minecraft 自动化和研究项目生态(也是多篇学术"LLM 玩 Minecraft"论文的底层基座)——配合 mineflayer-pathfinder 实现导航。Factorio 集成通过游戏自身的 RCON 控制台 API 而非 mineflayer 的协议,因为 Factorio 不是 Minecraft 协议游戏;目前被标注为概念验证而非功能完整。这些不是 LLM 函数调用玩具,仅仅是聊天窗口上挂着一个模型发出 move_forward() 调用然后什么都没发生。它们是自主感知-行动循环:AI 智能体按计时器轮询游戏状态,做出决策,执行动作,并将对话通道作为又一个输入,与它在游戏世界中当前看到和正在做的并存——从架构上更接近于具身 AI 智能体,而非带有插件的聊天机器人。
每个长期运行的对话式 AI 智能体都会遇到同样的墙:LLM 的上下文窗口是有限的,但一个"伴侣"应该跨会话记住事情——你上周聊了什么、你的名字、一个正在进行的笑话。AIRI 目前的答案是 DuckDB-WASM 支持的本地存储——DuckDB 是一个嵌入式分析数据库(可以认为是 SQLite 的表亲,优化的列式查询),被编译为 WebAssembly,这样它可以在浏览器沙箱内完全运行,无需服务器往返。这为你提供了结构化的、可查询的本地对话历史和角色状态存储,而无需启动 Postgres 或向量数据库。
它目前还无法提供检索级别的长期记忆——即那种代理能在三周前的一段语义相关记忆被间接提起时将其调取出来的能力,而这正是 Character.AI 或以记忆为中心的 infrastructure 项目(Mem0、Zep 及同类产品)明确围绕构建的那种能力。该功能正在内部代号"Memory Alaya"下积极开发,在文档中标注为实验性。如果你将 AIRI 作为记忆管理参考架构来评估,而不仅仅是作为聊天前端,那么这个组件才是需要关注的,而不是假设它已经完成——这是"可爱的演示"与"真正记得你的伴侣"之间最大的差距。
除了"这是一个有趣的演示"之外,架构选择真正发挥作用的几个具体场景:
一位主播想要一个零每小时成本的主播搭子。将 stage-tamagotchi 指向本地 Ollama 模型和 Kokoro TTS,接入 Discord/Telegram bridge,就能得到一个全天候在线的角色,消耗的是电费,而非按 token 计费的 API 费用——与 Twitch 集成机器人在多小时直播期间每次聊天消息都调用托管 LLM API 的方案相比,这是截然不同的经济模型。
一位开发者想要一个本地化、保护隐私的语音助手,完全不在乎动漫头像——头像只是可选的 UI,不是流程中的核心部分。去掉它,你就拥有了一个自托管的语音输入/语音输出 LLM 助手,STT、提供商无关的推理和 TTS 已经接好,否则从零开始编写 glue code 是相当繁琐的工作量。
研究人员在构建具身 LLM 代理原型时,无需从零搭建 mineflayer 集成,就能免费获得一个可用的 Minecraft 感知-行动循环——如果需要的是一个持久的、有状态的虚拟世界而不是单轮聊天评估,这对于代理规划或工具使用实验是一个有用的起始脚手架。
团队在为客户评估"AI 伴侣"或"AI 员工"产品时,得到了一个具体的、可审查的存在性证明,证明语音驱动的角色交互不需要将用户音频发送到第三方 API——这是在 build-vs-buy 和数据驻留讨论中有用的筹码,即使你从不直接交付 AIRI 的代码。
没有制作预算的 VTuber 或独立主播,无需为 Neuro-sama 风格的定制构建付费就能获得 Live2D/VRM 驱动的 AI 联合主播——根据所有公开资料,那是一个由单个团队投入了大量、定制化、不可复用工程资源才实现的构建。
这里真正的新东西
"开源 VTuber/AI 伴侣"这个类型并不新鲜——受 ChatVRM(pixiv 早期的基于浏览器的 VRM 聊天演示,AIRI 明确将其列为基础,同时还有开发者 josephrocca 的 JavaScript 移植版)启发的项目已经存在了几年,仓库维护着自己策划的"Awesome AI VTuber"相邻项目列表。AIRI 与众不同的地方在于拒绝选择单一路线:大多数之前项目要么是浏览器演示,要么是 Discord 机器人,要么是桌面应用,通常硬编码到单一的 LLM 提供商和单一的头像格式,因为这样就足以证明概念。AIRI 的核心编写一次,部署到 web、桌面和移动端 PWA,并且是这个领域中将浏览器内 WebGPU 推理作为一级部署目标的较有决心的尝试之一,而不是将浏览器视为通往后端服务器Mandatory mandatory mandatory mandatory mandatory mandatory mandatory mandatory 的薄客户端。
另一个真正的差异化因素是大多数伴侣项目不会在这个规模上费心的提供商无关性。三十多个 LLM 提供商、六个 TTS 后端和两种头像格式意味着你不会被单一供应商的路线图或定价锁定——与 Character.AI 这样的封闭平台形成直接对比,你租用其访问权限,但其模型、记忆系统和审核政策你都无法控制;或者 Neuro-sama 本身,它根本无法运行,它是一个团队在一个 Twitch 频道上运营的角色,没有公开代码库,没有自托管路径,即使你想也无法更换其底层模型。
还有一个值得直接点出的范围差异:AIRI 明确朝着"在世界中的行动能力"而非仅仅"对话"的方向构建。游戏集成不是为演示视频临时添加的扩展功能——它们与聊天一起被列为核心能力,Minecraft 已交付,Factorio 处于概念验证阶段,Kerbal Space Program 和 Helldivers 2 联合游戏正在开发中。这让它与大多数"AI 伴侣"项目不在同一阵营,那些项目止步于文本/语音聊天和一个静态或轻度动画的头像。它在精神上更接近游戏玩代理研究(想想基于 GPT-4 构建的 Voyager 风格 Minecraft 代理,或 DeepMind 的游戏玩代理传承),披着伴侣应用 UI 的外衣,而不是聊天机器人的皮肤。
为什么开发者应该关注,除了新奇性
成本和锁定。因为 LLM、TTS 和 STT 层都是可交换的,你可以用本地计算的价格运行整个栈——如果将本地 Ollama 模型与 Kokoro TTS 和浏览器 STT 配对,实际 API 成本为 $0。这与每个托管的"AI 伴侣"产品按消息或按月计费的模式有本质上的不同。
多模态代理编排的工作参考。即使你对 VTuber 毫无兴趣,该代码库也是将 STT、一个具有工具/函数访问权限的 LLM、TTS、头像动画状态和一个持久记忆存储协调到一个低延迟循环中的真实世界示例——这是语音助手、游戏 NPC 和客服头像背后的相同架构问题。阅读 server-runtime 和 stage-ui 是比大多数博客文章架构图更快理解该编排问题的方式。
默认隐私。对于任何为客户构建或评估"AI 伴侣"或"AI 员工"产品的人,AIRI 是一个有用的存在性证明,证明这类产品不需要将用户语音和对话数据发送到第三方。它也使其成为本地、离线代理实验的合法不同工具,而非仅限云端的竞品。
游戏代理脚手架。Minecraft/Factorio 集成是一个可用的起点,如果你正在为需要在持久、有状态的模拟环境而非无状态聊天轮次中感知和行动的 LLM 代理做原型——比起典型的聊天机器人演示,这与机器人或工业自动化代理工作更接近的类比。
谁在真正构建这个
AIRI 来自 moeru-ai,一个小型开源 collective 而非获得资金支持的初创公司,项目结构反映了这一点:4800 个 fork、88 个 open issues、109 个 open pull requests,Discord 社区写作时约 738 名成员,同时在 X/Twitter、Telegram、微信和 QQ 上都有存在感——多平台社区足迹本身表明这是一个在获得更广泛的英语社区关注之前,由中文和日语独立开发者和 VTuber 相关场景有机增长的项目。资金通过 OpenCollective、GitHub Sponsors、Patreon 和 Ko-fi 运行,而非风险投资,这以可预测的方式塑造了路线图:功能以维护者和贡献者个人有动力去实现的顺序发货(Minecraft 先于 Factorio,Factorio 先于 Kerbal Space Program),而不是产品经理为商业发布而优先考虑的顺序。对于一个研究风格的开源项目来说,这是一个合法的权衡,也是风险厌恶团队等待的合法理由。
有一个细节值得特别指出,因为它是一个异常直接信号,表明快速增长的开源 AI 项目会吸引多少不想要的关注:README 有一行明确的声明,说明该项目没有官方关联的加密货币或代币。这种免责声明不会 speculatively 添加——它是在冒名顶替者开始使用趋势 repo 的名称来运行代币诈骗之后才添加的,这在过去几年围绕病毒式传播的开源 AI 项目中已成为一个反复出现的模式。这是很小的一行,但它是提醒你只能从官方 GitHub 仓库或其列出的发布二进制文件获取 AIRI,而不是从搜索引擎广告或非官方镜像获取的有用提醒。
文档中沉默的地方
在你将其作为玩具以外的东西投入之前,有几件事值得了解:
web 构建明确是一个概念验证。项目本身如此声明。如果你想要可接受的延迟和动画流畅度,你运行的是 Electron 桌面构建,这在某种程度上削弱了"只需打开浏览器标签"这一旗舰部署模式的宣传。
记忆功能尚未完成。"Memory Alaya"(长期记忆系统)被标注为实验性。开箱即用,角色记忆受 DuckDB-WASM 本地存储限制,而非成熟的向量记忆或检索架构——不要指望一个角色能在没有额外工程的情况下记住三周前的对话。
这是 pre-1.0 软件。当前版本为 v0.11.3,截至撰写本文时有 88 个 open issues 和 109 个 open PRs,README 也在积极招募贡献者。除 Minecraft 外的游戏集成(Factorio、Kerbal Space Program、Helldivers 2)明确标注为进行中或"待发布"。请将其视为一个活跃开发的研究项目,而非你可以部署后就撒手不管的成熟产品。
社区驱动,而非公司。没有商业实体提供支持 SLA——参见上文关于这如何影响路线图的内容。
计算资源并非免费。既然是本地运行.Local LLM + 本地 TTS + WebGPU 推理仍然需要一块性能尚可的 GPU 才能有流畅体验。"自托管"不等于"能在五年前的笔记本上跑得流畅"。
AIRI 是一项真正值得关注的 applied-agent 工程,只是披了一层会让许多工程师一眼否定的外皮——如果你感兴趣的是架构而非审美,那就是个错误。多运行时核心(一套代码,三个部署目标)、与 provider 无关的 LLM/TTS 抽象层、以及有状态的游戏 Agent 设计,这些都是值得研究的模式,无论你是否关心虚拟角色。它目前还不是一个成熟的产品:web 构建版的文档自己称之为概念验证,记忆功能是实验性的,几个重磅特性(Factorio、KSP、Helldivers 2)还在愿景阶段。47.9k 的 star 反映的是社区对"拥有自己的数字伴侣"这一理念的真正兴趣,而非表明那些难题——令人信服的长期记忆、低延迟的浏览器推理——已经被解决。
如果你想要一个用于多模态 Agent 编排的自托管测试平台,或者你对本地优先的语音/虚拟形象 AI 感兴趣且不介意 pre-1.0 的粗糙之处,可以试试。如果你现在就需要生产级稳定的方案,或者你期望仅靠浏览器构建版就能提供桌面级的低延迟,请等待。如果你只是想找一个聊天伴侣应用且对自托管或底层架构毫无兴趣,可以忽略——Character.AI 或类似的 SaaS 会更适合你,零配置即可使用。
你有过通过 WebGPU 在客户端运行 LLM 推理的经验吗——它离生产可用还有多远,还是说除玩具级 demo 之外仍然坚定地停留在概念验证阶段?
Project AIRI GitHub 仓库
Project AIRI README(原始文件)
moeru-ai/airi on HelloGitHub
xsAI LLM 抽象层库
mineflayer Minecraft bot 框架