人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载本文是对 Project AIRI 官方开发日志DevLog 2025.05.16对应 v0.5.0 发布窗口的深度解读与技术展开。文章以该日志记录的角色卡Character Card支持、VAD/ASR/TTS 实时语音链路简化、xsAI Transformers.js 与 Velin 等项目实践为主线并结合当前仓库的源码实现Airi Card 编辑器、导入导出、跨设备同步、卡片展示组件等进行印证。读完本文你将掌握 AIRI 中角色卡的完整使用与实现路径、实时语音管线的演进思路以及如何用前端组件化思想组织 LLM 提示词。一、背景v0.5.0 的「既视感」窗口与社区协作日志开篇回顾了 2025 年 3 月大规模 UI 重构与发布之后的节奏调整期主干任务放缓大量工作由社区维护者承担。其中最重要的三块分别是Character Card 支持由 LemonNekoGH、RainbowBird、LittleSound 等协作完成Tauri MCP 支持详见 DevLog-2025.04.28 在 Tauri 中使用 MCP将 AIRI 连接到 Android 设备详见 DevLog-2025.04.22 控制 Android日志同时回顾了此前两个广受欢迎的 DevLogv0.4.0 UI 更新 与 v0.4.0 发布与记忆功能建议读者按顺序阅读以了解完整的演进脉络。二、Character Card 角色卡从概念到落地2.1 角色卡是什么角色卡是 LLM 驱动的角色扮演领域通用的角色载体SillyTavern、RisuAI 等本地优先聊天应用以及 JanitorAI 等在线服务都使用一个包含角色背景、性格与角色扮演必要上下文的文件来定义每个独立角色。除角色卡外Lorebook设定资料集也在这一领域扮演关键角色但那是另一个值得单独成文的话题。在仓库中角色卡的标准类型定义位于 packages/ccc/src/define/card.ts它完整覆盖了角色卡的常见字段name、nickname、version角色名、昵称与版本号personality、scenario、systemPrompt、postHistoryInstructions人格、场景、系统提示词与历史后置指令messageExample示例对话用于演示角色的回复风格characterBook角色专属 Lorebookgreetings开场白与备用开场白greetings[0]对应first_mesextensions扩展字段供不同应用嵌入私有配置值得注意的实现细节是defineCard/defineCardFn两个辅助函数它们以类型安全的方式帮助开发者构造卡片对象这与仓库中proj-airi/ccc包Character Card Codec的定位一致。2.2 使用入口Airi Card 编辑器日志给出了角色卡的使用路径进入设置页面应用右上角桌面端可悬停齿轮图标找到并点击Airi Card按钮即可进入Airi Card 编辑器界面在这里上传、编辑角色卡并进行人格定制。2.3 AIRI 私有的运行时扩展extensions.airi角色卡之所以能在 AIRI 中驱动完整的赛博生命体验关键在于 AIRI 在卡片中嵌入了一层运行时配置。该结构定义在 packages/stage-ui/src/types/airiCard.ts 的AiriExtension接口中核心是modules模块配置consciousness / vision意识对话与视觉模块的provider与model配置speech语音模块的provider、model、voice_id以及可选的pitch、rate、ssml、languagevrm / live2d身体模型来源支持file或url两种加载方式displayModelId来自展示模型display-modelsstore 的模型 IDactiveBackgroundId背景 IDartistry艺术创作模块包括promptPrefix、widgetInstruction、spawnModebg/widget/inline/bg_widget、autonomousEnabled与autonomousThreshold等agents额外代理的prompt与enabled配置AiriCard类型即Card { extensions: { airi: AiriExtension } }的组合。源码注释特别强调扩展随卡片持久化编辑器表面必须保留它不拥有的字段以便独立运行时模块各自演进而不互相覆盖配置。2.4 编辑器的表单与校验逻辑编辑器表单逻辑位于 packages/stage-ui/src/services/airi-card-editor.ts体现了几个关键设计空字符串即继承getAiriCardEditorModuleSettings将未设置的模块字段读取为空字符串空串意味着该卡片继承对应的全局设置。名称与版本校验cardDraftSchema要求name非空trim 后version必须匹配/^(?:\d\.)\d$/的版本号格式。artistry options 必须是合法 JSON 对象通过parseJsoncheck(isRecord)校验失败时返回invalid_artistry_json错误码。保留未知扩展applyAiriCardEditorModules在写回模块配置时会合并existing中编辑器无法展示的字段身体模型、背景、高级语音/artistry 设置、代理配置避免编辑过程中丢失数据。2.5 卡片展示纯 CSS 驱动的 CharacterCard 组件日志提到角色卡的展示showcase已上线 UI 组件库并强调纯 CSS 与 JavaScript 控制无需担心画布计算。对应实现为 packages/stage-ui/src/components/menu/character-card.vue支持title、subtitle、description、image、primaryColor、secondaryColor、textShadowSize、barcodeCount、barWidth等大量可定制属性卡片尺寸、条形码与颜色全部通过 CSS 变量--card-height、--card-width、--primary-rgb等在运行时计算配合culori库做颜色亮度过滤filterBrightness(0.5)与 RGB 格式化右侧条形码区域由随机生成的竖线构成营造角色卡收藏品般的视觉效果组件的 Story 位于 packages/stage-ui/src/components/menu/character-card.story.vue以 ReLUProject AIRI 中第一个觉醒的赛博意识有点爱恶作剧为例提供了带图、无图与 PoC 布局三种 Variant并配有颜色实时调校控件便于在 UI 组件库中直接调试。2.6 分享与导入airi-character-card 包格式为了让角色卡可移植仓库实现了 packages/stage-ui/src/services/airi-card-import-export.ts定义了一种 ZIP 包格式airi-character-card版本 1manifest.json # { format, version, card: { path, spec: chara_card_v3 }, resources? } card.json # CCv3 (chara_card_v3 / 3.0) 规范的卡片 JSON models/body-model.* # 可选的展示模型.zip / .tachie.zip / .vrm关键设计要点白名单导出注释明确说明该格式刻意不是无损备份——导出仅包含创建编辑器中可审查的字段、一份净化后的 AIRI 模块子集与选中的展示模型未经审查的 CCv3 元数据、自定义扩展、代理提示词与机器本地运行时引用均被省略。对称导入导入时使用同一份字段白名单sanitizeAiri因此包作者无法通过自定义扩展、代理提示词或本地引用向持久化状态走私内容。错误模型以AiriCardPackageError携带missing-file/invalid-file错误码统一失败路径。展示模型随包携带支持 Live2D ZIP、Spine ZIP、立绘 ZIP 与 VRM 四种格式导入时自动注册进展示模型 store。2.7 跨设备同步字段级冲突合并角色卡不仅能在单机使用还能跨设备同步。同步算法位于 packages/stage-ui/src/libs/character-card-sync/card-fields.ts基于 packages/stage-ui/src/libs/document-sync/README.md 描述的字段级文档同步机制按字段拆分splitCard将卡片拆成若干部分每个部分是 RFC 6901 JSON Pointer 指向的独立字段。顶层每个键一个部分extensions、extensions.airi、extensions.airi.modules则按各自的键拆分保证同一模块的设置总是整体变更。信任边界键来自其他设备因此isFieldPath会拒绝包含__proto__的路径防止原型污染攻击且仅接受指向可拆分容器成员、自身不再拆分的路径。内置卡片不离开设备每个设备以各自语言创建内置卡片splitCard传入 built-in 变体后与内置内容相等的部分不会被上传joinCard反向补全缺省字段。这套机制使编辑优先级高于其他设备的删除、单字段冲突取服务端值并在本地保留冲突副本且支持离线修改、下次运行时再同步。三、实时语音链路VAD / ASR / TTS 的简化之路3.1 从手写队列到 llama-flow日志透露自 4 月 15 日起团队发现 AIRI 中 VAD语音活动检测、ASR自动语音识别与 TTS文本转语音的接入非常复杂、难以使用和理解。在引入事件驱动的流处理库llama-flow来自 Llama Index 生态之前AIRI 需要手动包装一套队列结构与 Vue 响应式驱动的工作流系统把大量异步任务串联起来才能处理数据。llama-flow 足够小且类型安全专门处理 LLM 流式 token 与音频字节的事件流大幅降低了链路复杂度。3.2 渐进式示例300500 行 TypeScript 实现 ChatGPT 级语音聊天为了演示如何从零构建实时语音聊天系统团队将整个过程拆成可复用的渐进式小片段VAD仅语音活动检测VAD ASR检测到语音后做识别VAD ASR LLM 聊天识别文本进入对话VAD ASR LLM 聊天 TTS完整闭环对应 WebAI 实时语音聊天示例该系列证明在 Web 浏览器内仅用300500 行 TypeScript即可实现完整的语音聊天系统。3.3 sherpa-onnx跨平台语音处理同期团队发现了sherpa-onnx这一语音处理仓库它支持 macOS、Windows、Linux、Android、iOS 等平台上的 12 种语言、18 类语音处理任务。基于它luoling 又制作了一个 Sherpa ONNX 驱动的 VAD ASR LLM 聊天 TTS 演示。这一探索为 AIRI 的语音链路走向本地化、跨平台化提供了方向。3.4 副产品xsAI Transformers.js 的诞生为 VAD、ASR、聊天与 TTS 演示所做的工作催生了新的子项目xsAI Transformers.js它在保持与既有 xsAI 项目 API 兼容的同时简化 WebGPU 驱动模型推理的调用并通过 worker 提供服务。npm install xsai-transformers它的意义在于一个 if 开关即可在云端 LLM/语音提供商与本地 WebGPU 驱动模型之间切换。这意味着可以在浏览器内直接实验甚至落地简单的 RAG 与重排序系统完全不需要任何服务端代码或后端服务器Node.js 同样受支持。四、Telegram 机器人增强贴纸理解与提示词瘦身日志记录了 Telegram 机器人的两项改进处理动画贴纸由ffmpeg驱动现在能读取并理解用户发送的动画贴纸甚至视频。系统提示词瘦身原系统提示词过于庞大经过大幅缩减后节省了 80% 以上的 token 用量——这是对话成本优化中非常典型的收益点。五、Velin用 Vue/React 组件化思想编写 LLM 提示词5.1 动机模板变量与组件复用之痛自角色卡支持以来团队在处理模板变量渲染与组件复用时感到不够好、不够顺滑。随之而来的设想是维护一个组件化提示词库可复用于其他 Agent、角色扮演应用甚至角色卡例如拥有魔法与龙的中世纪奇幻世界观设定后只需在外面包裹世界设定专注于新角色的写作可以仅当时间进入夜晚时通过if/if-else控制流注入特殊提示词用 Vue SFC 或 React JSX 解析模板、识别 props在编写提示词时渲染表单面板用于调试与测试在单个交互页面中可视化整套 Lorebook 与角色卡5.2 成果Velin这个设想的落地即Velin——一个用 Vue.js 编写 LLM 提示词的工具同时可扩展到其他框架与平台提供编辑 实时渲染的 Playground并且可以享用 npm 生态可以导入任意包支持编程式 API与 Markdown 编写MDC 已支持MDX 开发中通过 npm 安装npm install velin-dev/core它解决了在角色卡支持后模板变量渲染与组件复用不够顺滑的痛点把提示词从一大段字符串升级为可复用、可编程、可调试的组件。六、其他改进一览日志还记录了一组零散但重要的改进WebGPU 背景移除许多图片资源需要去背景团队基于社区已有工作自行实现了一个 WebGPU 驱动的背景移除实验集成于 devtools 中服务于角色卡展示的图片预处理。语音提供商扩展在 xsAI 与 unSpeech 中新增了阿里云 Model Studio 与火山引擎Volcengine作为语音提供商。UI 组件库新增教程 Stepper、文件上传InputFile、Textarea 组件并修复颜色问题、改进排版更多条目收录于 Roadmap v0.5。七、v0.5.0 里程碑盘点该 DevLog 同时标志着v0.5.0的发布。过去几周内达成的关键里程碑包括仓库达到 700 星4 位以上新 issue 贡献者Discord 服务器新增 72 成员角色ReLU的设计与建模完成与数家公司洽谈赞助与合作Roadmap v0.5 的92 项任务全部完成。任务分布如下UI加载界面与教程模块多项 bug 修复含加载状态与 Firefox 兼容性问题身体Body基于语义的动作嵌入与 RAG在私有仓库 moeru-ai/motion-gen 中开发使用嵌入提供方与DuckDB WASM的向量存储与检索输入修复 Discord 语音频道语音识别输出实验性歌唱能力工程跨项目共享 UnoCSS 配置moeru-ai/inventory 中的模型目录跨组织的包重组资源包含贴纸、UI 元素、VTuber 标志的新角色资源语音台词选择功能角色 Me 与 ReLU 的 Live2D 建模社区支持与营销日文 README全面文档结语从这份日志可以看出v0.5.0 是一个以角色卡为入口、以语音链路为引擎、以组件化为方法论的版本Character Card 让每个角色都成为可编辑、可分享、可同步的独立实体VAD/ASR/TTS 的渐进式示例与 xsAI Transformers.js 让语音能力从云端延伸到浏览器本地Velin 则把提示词工程带入了前端组件的世界。对开发者而言值得沿着 airi-card-editor.ts、card-fields.ts 与 character-card.vue 这几条主线继续深入研读源码。赞分享人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手【免费下载链接】airi 自托管、归你拥有的 Grok 风格 AI 伴侣与 waifu / 赛博生命灵魂容器目标是接近 Neuro-sama 的高度支持实时语音聊天、Minecraft 和 Factorio 游玩支持 Web / macOS / Windows。项目地址https://gitcode.com/moeru-ai/airi点击查看免费下载相关推荐Project AIRI v0.5.0 开发日志解析Character Card 角色卡体系、浏览器实时语音链路与 WebGPU 本地推理Project AIRI v0.5.0 开发日志解析Character Card 角色卡体系、浏览器实时语音链路与 WebGPU 本地推理 本文基于 Proj人工智能AI 应用大模型AI Agent交互助手语音数字人后端前端桌面应用移动开发GUI 自动化MCP 服务Project AIRI 角色卡片包AIRI Card Package与 Character Card V3 模板实战指南Project AIRI 角色卡片包AIRI Card Package与 Character Card V3 模板实战指南 本指南面向希望在 Project人工智能AI 应用大模型AI Agent交互助手语音数字人后端前端桌面应用移动开发GUI 自动化MCP 服务AIRI 角色卡 Character Card V3 模板实战从 card.json 到 AIRI Card 包AIRI 角色卡 Character Card V3 模板实战从 card.json 到 AIRI Card 包 本文是一份面向 AIRI 用户的角色卡Ch人工智能AI AgentMCP 服务工具调用GUI 自动化语音数字人交互助手后端上一篇AntiDupl.NET智能图片去重工具终极指南与完整教程下一篇Slate v2 多根编辑 React DX一个 Provider、多个 Editable root 表面的 API 设计决策创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考