AlphaAvatar v0.6.4 架构升级:统一实时感知、RTC 解耦与在线 ENV Memory AlphaAvatar v0.6.4 架构升级统一实时感知、RTC 解耦与在线 ENV Memory在上一篇文章中我介绍了开源项目AlphaAvatar的整体目标构建一个可自托管的实时全模态个人 AI 助手运行时。它不仅需要支持文本、语音和摄像头输入还需要具备长期 Memory、Persona、身份识别、工具调用、RAG、DeepResearch、实时状态反馈以及跨渠道持续工作的能力。经过最近几个版本的迭代AlphaAvatar 在 v0.6.4 中完成了一次比较重要的运行时架构升级。这次更新的核心不是增加一个单独的功能而是重新整理实时多模态信息在系统内部的流动方式外部媒体只接入一次再由统一的感知运行时提供给 Vision、Persona、Memory 和未来的交互路由模块。同时v0.6.4 也加入了第一版在线 ENV Memory让 AlphaAvatar 可以从持续的视频流中提取环境事件和视觉历史而不再只依赖文本对话构建记忆。一、为什么需要重新设计感知架构在早期实现中AlphaAvatar 主要基于 LiveKit Agents 构建。Vision、Persona 和 Memory 等模块如果需要使用视频帧可能分别订阅或处理 LiveKit 视频轨道。这种方式在功能较少时比较直接但随着模块不断增加会产生几个问题不同模块重复读取和转换同一份视频流业务插件直接依赖 LiveKit 类型Vision、Persona 和 Memory 使用不同的采样逻辑注释、检测结果和原始帧难以统一对齐后续更换 RTC 后端时需要修改大量插件代码AvatarEngine承担了过多运行时职责因此v0.6.4 将实时媒体输入重新设计成一条共享的感知路径RTC / Device Input ↓ EnvObservation MediaPayload ↓ PerceptionRuntime ├── Typed Streams ├── Shared Timeline └── Consumer-specific Windows ↓ Persona / Vision / Memory / Future RoutersRTC 层只负责接入和转换外部媒体。进入 AlphaAvatar 后视频帧、屏幕内容、音频片段、事件和注释都会使用统一的核心数据结构进行表达。二、更新后的六层架构目前 AlphaAvatar 的整体结构可以划分为六个主要部分。1. AlphaAvatar Coreavatar-core提供不依赖具体 RTC 和模型厂商的基础类型包括EnvObservationEnvAnnotationMediaPayloadPayloadViewPayloadFormat通用视频帧表示Typed Perception StreamsShared TimelinePerception Window Builder它负责描述“系统观察到了什么”但不负责决定这些信息具体来自 LiveKit、WebRTC 还是其他设备。这让 Memory、Persona 和 Vision 可以直接消费统一的环境观察而不需要了解底层 RTC 实现。2. AlphaAvatar RTCRTC 层负责将外部实时媒体转换为 AlphaAvatar Core 能理解的数据。目前 LiveKit 仍然是默认实现但 LiveKit 的rtc.VideoFrame等类型只存在于适配器边界不再直接进入核心 Memory 或 Persona 数据结构。这里遵循的原则是RTC 是适配器而不是业务逻辑。未来接入原生 WebRTC、aiortc或其他实时通信后端时理论上只需要实现新的 RTC Adapter而不需要重写 Memory、Persona 和 Vision。3. AlphaAvatar AgentAgent 层负责编排一次实时助手会话。当前运行时逐渐拆分为SessionRuntimeContextRuntimePerceptionRuntimeIO RuntimeAgent RuntimeAvatarEngine其中AvatarRuntime负责组合 Session、Context 和 Perception 等会话级运行时组件。AvatarEngine则更加专注于会话生命周期Prompt 组装Status 状态管理LLM Turn Flow插件协调这减少了单个核心类中的职责堆积。4. AlphaAvatar Plugins面向个人助手的长期能力通过插件实现例如MemoryPersonaStatusCharacterInteraction RouterReflectionPlanningBehavior插件通过构造函数获得需要的运行时依赖并通过统一的生命周期方法启动和停止awaitplugin.on_session_start()awaitplugin.on_session_stop()Persona、Memory 和 Vision 不再各自直接管理 RTC 视频订阅而是作为共享感知数据的独立消费者。5. Tools Plugins工具和知识能力仍然保持独立包括MCPRAGDeepResearch未来的代码沙箱和个人工作空间集成工具结果不仅可以用于当前回答也可以经过 Memory 抽取后成为未来会话可检索的长期上下文。6. Channels同一个 AlphaAvatar Runtime 可以连接到不同交互渠道WebWhatsAppAvatar UI未来的 Discord、Slack、移动端或其他应用Channel 只负责改变用户访问助手的方式不应该重新构建一套独立的助手状态。三、统一的 PerceptionRuntimePerceptionRuntime是 v0.6.4 的核心变化之一。它为不同类型的多模态信息提供独立的 Typed Streamvideo stream audio stream screen stream event stream annotation stream每个消费者拥有独立的读取游标、采样频率和本地缓冲区。例如Persona 可以持续处理人脸检测和身份匹配Vision 可以保留最近的少量帧用于当前 LLM TurnMemory 可以定期读取更长的观察窗口未来的 Router 可以根据人物出现、动作、声音或屏幕变化判断是否需要响应这些消费者不需要采用相同帧率也不需要互相阻塞。Shared Timeline 负责对齐 Observation 和 AnnotationWindow Builder 则根据不同消费者的需求构建有序的多模态时间窗口。四、同一份媒体的多种 Payload View在实时多模态系统中同一个视频帧可能需要多种表示。例如Persona 需要原始 JPEG 做人脸检测调试界面需要带人脸框的渲染帧ENV Memory 希望优先使用带注释的 JPEGVision 最终可能需要转换成模型接口支持的视频帧类型因此MediaPayload可以同时保存RAW VIDEO_FRAME RAW JPEG ANNOTATED VIDEO_FRAME ANNOTATED JPEG原始帧不会被覆盖。Persona 可以在完成检测后发布EnvAnnotationRenderer 再基于原始帧生成带标注的新 Payload View。其他消费者根据自己的需求选择最合适的表示。五、在线 ENV Memoryv0.6.4 还加入了第一版在线环境记忆。传统的 Memory 主要来自文本用户对话 ↓ Memory Extraction ↓ 长期记忆ENV Memory 则来自持续的环境观察实时视频观察 ↓ Perception Window ↓ 多模态 ENV Extraction ↓ EnvMemoryDelta ↓ MemoryType.ENV例如AlphaAvatar 可以提取这样的环境记忆[ENV] 一名可见人物持续坐在室内工作区域戴着眼镜和耳机。背景中的置物架和垂直灯光在多个观察帧中保持可见。 [/ENV]或者记录一个人进入或离开画面一个杯子被移动到桌面另一侧某个植物持续出现在用户附近屏幕正在展示代码调试流程房间内的主要物体或布局发生变化某个人物在一段时间内持续保持特定活动状态ENV Memory 的目标不是保存全部摄像头视频也不是给每一帧生成图片描述。AlphaAvatar 会按照 Memory 自己的采样策略读取观察窗口结合时间顺序和已有 Annotation提取简洁的环境事件或持续状态保存结构化 ENV Memory在后续会话中支持视觉历史检索原始视频帧只存在于运行时不会直接写入向量数据库或 Markdown Memory。六、ENV Memory 与 Graph-aware Memoryv0.6.3 已经加入了 Graph-aware Memory 基础多对象 Memory 所有权Graph Node MentionGraph Node 和 Graph LinkSession-scoped Local KeyGraphLookupLanceDB Graph Node 索引Alias-ready Retrievalv0.6.4 的 ENV Memory 会继续复用这套结构。一条环境记忆可以关联具体观察实体例如person face speaker object plant vehicle device screen document room locationMemory 文本仍然是信息的主要来源Graph Node 只作为稀疏的检索锚点。例如一条关于人物、耳机和置物架的 ENV Memory可以分别生成对应的实体节点而不是把所有内容合并成一个抽象概念节点。这样后续可以逐步支持查找某个物体曾经出现在哪里检索某个人物出现过的环境事件查询某个屏幕或文档的历史观察根据时间、地点、人物和物体组合检索视觉历史七、异步 Vision 和 PersonaAvatar Vision 现在也通过 PerceptionRuntime 异步消费视频观察。它在后台维护一个有界缓冲区inject_into_chat_ctx()只需要从本地缓冲区选择合适的帧而不需要在 LLM 推理准备阶段同步读取视频流。这样可以降低当前 Turn 的额外等待时间。Persona FaceStream 同样改为消费共享观察PerceptionRuntime ↓ Persona FaceStream ↓ Face Detection / Embedding ↓ EnvAnnotation ↓ Annotated Payload ViewFaceStream 的启动和停止由 Persona 自己的插件生命周期管理不再由AvatarEngine直接调用。八、为什么这些能力不全部交给模型随着多模态模型能力增强未来模型本身可能承担更多上下文压缩工具规划视觉理解Memory 选择用户状态理解但个人 AI 助手仍然需要一个显式、可控、用户所有的运行时层。它负责长期数据存储隐私边界身份管理工具权限模型切换Provider 路由调试和追踪Memory 编辑和删除跨渠道状态连续性Replay 和 Evaluation模型可以随时替换但用户的 Memory、Persona、工具和历史状态不应该完全锁定在某个模型厂商的内部黑盒中。九、当前限制和下一步计划v0.6.4 完成的是第一版统一实时感知和 ENV Memory 基础仍然有很多工作需要继续推进音频 ENV MemoryScreen ENV Memory更细粒度的物体、事件、身份和时间检索长时间窗口中的事件合并和去重多用户人脸与说话人对齐Interaction RouterReflection 和 Planning更多 RTC AdapterMemory 和 Persona 的用户检查与编辑界面完整的 Session Replay 和评估工具总结AlphaAvatar v0.6.4 的意义不只是增加了一个视觉记忆功能。它重新定义了多模态信息在系统中的流动方式外部实时媒体 ↓ 统一环境观察 ↓ 共享感知运行时 ↓ 不同插件独立消费和增强 ↓ 当前交互 长期记忆 未来行为这让 AlphaAvatar 从一个主要围绕 LiveKit Agent 构建的实时助手进一步向可复用、可扩展、可自托管的全模态个人 AI 助手运行时演进。长期目标仍然是构建一个能够持续观察、理解、记忆、检索并在时间维度上主动行动的个人 AI Runtime。项目地址GitHub: https://github.com/AlphaAvatar/AlphaAvatar Documentation: https://docs.alphaavatar.io Website: https://alphaavatar.ai Demo: https://www.alphaavatar.ai/demo Discord: https://discord.gg/RVBWbb8Xy欢迎关注 realtime agent、多模态 Memory、Voice AI、数字人、MCP、RAG、Persona 或自托管 AI 的开发者一起交流和参与贡献。