在人工智能技术快速发展的今天,AI 伴侣应用逐渐成为人机交互领域的一个重要方向。AIRI(アイリ)是由 moeru-ai 团队开发的自托管 AI 伴侣开源项目,旨在让用户能够拥有属于自己的数字生命体,能够进行实时语音交流、陪伴用户玩游戏,并在多个平台上运行。与商业化的 Neuro-sama 等虚拟主播不同,AIRI 通过开源的方式让每个用户都能部署和定制自己的 AI 伴侣,这一理念吸引了众多开发者和爱好者的关注。本文将从技术架构的角度,深入分析 AIRI 如何实现这些功能,以及其在工程实践中的设计取舍。
Web 技术与原生能力的融合架构
AIRI 项目的一个显著特点是从第一天起就大量采用 Web 技术构建,包括 WebGPU、WebAudio、Web Workers、WebAssembly 和 WebSocket 等。这种技术选择并非盲目追新,而是基于项目特定需求的深思熟虑。Web 技术的一个核心优势是跨平台能力 —— 现代浏览器几乎可以在任何操作系统上运行,这为 AIRI 的多平台部署提供了天然的基础。通过使用这些 Web 标准技术,开发团队能够复用大量前端生态中的工具和库,同时保持代码的一致性。
然而,团队也清楚地认识到纯浏览器环境在计算密集型任务上的局限性。因此,AIRI 的桌面版本默认支持 NVIDIA CUDA 和 Apple Metal 加速,通过 HuggingFace 的 candle 项目实现深度学习推理,而无需复杂的依赖管理。这种混合架构的思路是:使用 Web 技术处理图形渲染、用户界面布局、动画效果以及插件系统,而将计算密集的推理任务交给原生后端。这种权衡既保留了 Web 技术的开发效率优势,又不牺牲 AI 推理的性能要求。
在具体实现上,AIRI 使用 Vue.js 和 TypeScript 构建前端界面,通过 Tauri 框架封装桌面应用。Tauri 相比 Electron 具有更小的二进制体积和更高的性能,这对于需要长期运行在后台的 AI 伴侣应用尤为重要。项目还提供了 Stage Web(浏览器版本)、Stage Tamagotchi(桌面版本)和 Stage Pocket(移动版本)三个阶段的版本,分别针对不同的使用场景进行优化。
实时语音交互的技术实现
实时语音交互是 AI 伴侣的核心能力之一,AIRI 在这方面的架构设计值得深入探讨。项目实现了完整的语音交互流水线,包括语音端点检测(VAD)、语音转文本(STT)、大语言模型推理和文本转语音(TTS)四个关键环节。在语音识别方面,AIRI 支持客户端本地识别,这不仅降低了延迟,还保护了用户隐私 —— 用户的语音数据不需要上传到第三方服务器。
语音合成方面,AIRI 默认集成了 ElevenLabs 的语音服务,同时也支持其他 TTS 提供商。这种灵活性允许用户根据自己的需求选择不同的语音服务,或者在本地部署语音合成模型以实现完全离线运行。项目团队还开发了 unspeech 组件,作为一个通用的端点代理服务器,类似于 LiteLLM 但专注于 ASR 和 TTS 场景,这大大简化了语音服务的集成工作。
值得注意的是,AIRI 的语音交互设计考虑到了多种使用场景。用户可以通过浏览器直接与 AI 伴侣对话,也可以通过 Discord 语音频道与 AI 进行交流。这种多渠道的接入方式扩展了 AI 伴侣的应用范围,使其不仅仅是一个本地应用,还能够融入用户已有的社交和工作环境中。
游戏陪伴 Agent 的设计与实现
AIRI 另一个引人注目的功能是能够陪伴用户玩游戏,目前支持 Minecraft、Factorio 和 Kerbal Space Program 等游戏。这些游戏陪伴功能通过专门的 Agent 模块实现,每个游戏都有对应的 Agent 负责理解游戏状态、规划行动并执行指令。以 Minecraft 为例,AIRI 使用 Mineflayer 库与 Minecraft 服务器进行交互,Agent 根据游戏画面和状态信息做出决策,实现自主探索、建造和资源收集等行为。
Factorio 的支持更为复杂,项目团队为此开发了专门的 Factorio Agent 和 Factorio RCON API。RCON 协议允许外部程序远程控制 Factorio 服务器,而 AIRI 的 Agent 通过这个接口获取游戏状态并发送指令。项目还开发了 autorio 库,提供 Factorio 自动化的高级抽象,使得编写游戏策略变得更加便捷。为了方便开发,项目还提供了 mod 热重载功能,开发者在修改 AI 策略时无需频繁重启游戏服务器。
这种游戏陪伴能力的技术实现涉及多个技术挑战:首先是实时获取游戏状态,需要与游戏进程建立稳定的通信通道;其次是将游戏状态转换为 AI 可以理解的语义表示,这需要针对不同游戏设计专门的 prompt 和状态编码方式;最后是决策的执行,需要将 AI 的输出转换为游戏可执行的指令序列。AIRI 通过模块化的 Agent 架构较好地解决了这些挑战,同时也为其他游戏的接入提供了可扩展的框架。
多平台部署与内存系统
多平台部署是 AIRI 架构设计的另一个重点。除了前文提到的 Web、桌面和移动三个版本外,项目还支持多种安装方式,包括直接下载各平台的安装包、通过 Scoop 包管理器在 Windows 上安装、以及通过 Nix 包管理器在 Linux 上运行。这种多样化的部署选项降低了用户的使用门槛,无论用户偏好哪种平台,都能找到适合自己的安装方式。
内存系统是 AI 伴侣实现长期交互的关键能力。AIRI 采用了分层的内存架构:基础层是浏览器内置的 DuckDB WASM 支持,通过 pglite 提供数据库能力,这使得数据可以完全存储在本地而不依赖外部服务;增强层是正在开发中的 Memory Alaya 系统,旨在提供更智能的记忆检索和上下文管理。项目还支持 PostgreSQL 向量数据库(pgvector)用于语义搜索,这为实现基于向量相似度的记忆检索提供了可能。
在用户界面方面,AIRI 支持 VRM 和 Live2D 两种虚拟形象格式。VRM 是用于 VR 应用的 3D 模型格式,在 VTuber 领域广泛应用;Live2D 则是 2D 动态图像技术,可以通过参数控制实现 2D 角色的动态效果。项目为这两种格式都实现了自动眨眼、自动视线追踪和空闲状态下的细微动作等动画效果,使虚拟形象更加生动自然。
技术选型的启示与局限
AIRI 项目对我们的重要启示在于如何在多个技术目标之间取得平衡。Web 技术与原生能力的混合架构、大模型能力与游戏交互的结合、多平台部署的支持,这些设计决策都体现了项目团队对用户需求的深刻理解。特别是在 AI 伴侣这一新兴应用领域,很多技术方案还没有最佳实践参考,需要通过实际探索来确定可行的路径。
当然,AIRI 仍处于早期开发阶段,在功能完善度和稳定性方面还有很长的路要走。游戏陪伴功能的智能化程度取决于底层大模型的能力,在复杂场景下的决策质量仍有提升空间。此外,多平台支持也带来了维护成本和一致性的挑战。如何在保持功能丰富性的同时确保各平台的体验一致性,将是项目未来需要持续关注的问题。
总体而言,AIRI 作为开源 AI 伴侣项目,为人机交互和数字生命体领域提供了一个有价值的技术参考。其架构设计展示了 Web 技术与 AI 能力结合的可行性,也为希望构建类似应用的开发者提供了可复用的代码和设计思路。随着底层模型的持续进步和项目自身的迭代优化,AIRI 有望成为自托管 AI 伴侣领域的标杆项目。