<mxfile host="drawio" version="21.4.0" agent="Muxiva architecture">
  <diagram id="muxiva-system" name="Muxiva 系统架构">
    <mxGraphModel dx="1880" dy="1480" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1900" pageHeight="1500" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />

        <mxCell id="2" value="MUXIVA · 实时多模态 Agent Runtime&#10;厂商无关 Rust Core · 类型化 Graph · 多语言 Node · 全双工客户端 Transport" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#0B1020;strokeColor=#33D6FF;strokeWidth=2;fontColor=#FFFFFF;fontSize=20;fontStyle=1;align=left;spacingLeft=24;shadow=1;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1800" height="80" as="geometry" />
        </mxCell>

        <mxCell id="10" value="1 · 产品与开发者入口" style="swimlane;startSize=34;container=1;pointerEvents=0;rounded=1;html=1;fontStyle=1;fontSize=14;fillColor=#EAF3FF;swimlaneFillColor=#F8FBFF;strokeColor=#6C8EBF;strokeWidth=2;" vertex="1" parent="1">
          <mxGeometry x="40" y="130" width="1800" height="220" as="geometry" />
        </mxCell>
        <mxCell id="11" value="开发者" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;fillColor=#DAE8FC;strokeColor=#6C8EBF;fontStyle=1;fontSize=13;" vertex="1" parent="10">
          <mxGeometry x="30" y="60" width="110" height="90" as="geometry" />
        </mxCell>
        <mxCell id="12" value="muxiva CLI&#10;创建 · 校验 · 运行 · 诊断" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAE8FC;strokeColor=#6C8EBF;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="10">
          <mxGeometry x="190" y="55" width="240" height="85" as="geometry" />
        </mxCell>
        <mxCell id="13" value="Muxiva Studio&#10;可视化 Graph · Node Lab&#10;连接配置 · 本地可观测性" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAE8FC;strokeColor=#6C8EBF;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="10">
          <mxGeometry x="470" y="45" width="280" height="105" as="geometry" />
        </mxCell>
        <mxCell id="14" value="SDK&#10;Rust · C++ · Python · TypeScript" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAE8FC;strokeColor=#6C8EBF;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="10">
          <mxGeometry x="790" y="55" width="280" height="85" as="geometry" />
        </mxCell>
        <mxCell id="15" value="最终用户" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;fillColor=#D5E8D4;strokeColor=#82B366;fontStyle=1;fontSize=13;" vertex="1" parent="10">
          <mxGeometry x="1180" y="60" width="110" height="90" as="geometry" />
        </mxCell>
        <mxCell id="16" value="项目 Web / Voice Room&#10;Agora Web SDK&#10;麦克风 · 扬声器 · 聊天 · 打断界面" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D5E8D4;strokeColor=#82B366;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="10">
          <mxGeometry x="1340" y="45" width="400" height="105" as="geometry" />
        </mxCell>
        <mxCell id="17" value="独立客户端 · 不调用 Runtime 生命周期 · 不轮询 NotificationBus" style="text;whiteSpace=wrap;html=1;align=center;verticalAlign=middle;fontColor=#3A6B46;fontSize=11;fontStyle=2;" vertex="1" parent="10">
          <mxGeometry x="1340" y="160" width="400" height="25" as="geometry" />
        </mxCell>

        <mxCell id="20" value="2 · 定义、发现与配置" style="swimlane;startSize=34;container=1;pointerEvents=0;rounded=1;html=1;fontStyle=1;fontSize=14;fillColor=#FFF0DF;swimlaneFillColor=#FFFAF4;strokeColor=#D79B00;strokeWidth=2;" vertex="1" parent="1">
          <mxGeometry x="40" y="380" width="1800" height="180" as="geometry" />
        </mxCell>
        <mxCell id="21" value="Graph v1&#10;Node · Port · Edge · 队列策略&#10;静态类型化 DAG" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE6CC;strokeColor=#D79B00;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="20">
          <mxGeometry x="180" y="50" width="320" height="90" as="geometry" />
        </mxCell>
        <mxCell id="22" value="Node Manifest&#10;Factory 版本 · 能力&#10;配置与精确 I/O Schema" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE6CC;strokeColor=#D79B00;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="20">
          <mxGeometry x="570" y="50" width="320" height="90" as="geometry" />
        </mxCell>
        <mxCell id="23" value="Registry 与发现&#10;内置 · 官方 · 项目 Node&#10;精确选择 Factory" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFE6CC;strokeColor=#D79B00;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="20">
          <mxGeometry x="960" y="50" width="340" height="90" as="geometry" />
        </mxCell>
        <mxCell id="24" value="连接与密钥&#10;项目 .env（本地、Git 忽略）&#10;生产 Secret / Token 服务" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1D5E7;strokeColor=#9673A6;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="20">
          <mxGeometry x="1380" y="50" width="340" height="90" as="geometry" />
        </mxCell>

        <mxCell id="30" value="3 · 厂商无关的 Rust Runtime Core" style="swimlane;startSize=34;container=1;pointerEvents=0;rounded=1;html=1;fontStyle=1;fontSize=14;fillColor=#EAE6FF;swimlaneFillColor=#FAF9FF;strokeColor=#7367B4;strokeWidth=2;" vertex="1" parent="1">
          <mxGeometry x="40" y="590" width="1800" height="260" as="geometry" />
        </mxCell>
        <mxCell id="31" value="Graph Compiler&#10;Schema · 拓扑 · Port 兼容性&#10;创建 Node 前预检" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E1D5E7;strokeColor=#9673A6;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="30">
          <mxGeometry x="120" y="60" width="340" height="100" as="geometry" />
        </mxCell>
        <mxCell id="32" value="并发 Graph Runtime&#10;prepare → process / on_signal → finish / abort&#10;调度 · 生命周期 · 有界关闭" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#6B5FC7;strokeColor=#43369A;strokeWidth=3;fontColor=#FFFFFF;fontSize=14;fontStyle=1;shadow=1;" vertex="1" parent="30">
          <mxGeometry x="530" y="50" width="420" height="120" as="geometry" />
        </mxCell>
        <mxCell id="33" value="数据面&#10;音频 · 视频 · 文本 · 字节 Frame&#10;类型化 Port · 有界 Edge 队列 · 背压" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAE8FC;strokeColor=#6C8EBF;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="30">
          <mxGeometry x="1020" y="50" width="340" height="120" as="geometry" />
        </mxCell>
        <mxCell id="34" value="控制与可观测面&#10;Signal：不透明、沿相邻 Edge 路由&#10;NotificationBus：仅进程内观察者" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#D6B656;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="30">
          <mxGeometry x="1430" y="50" width="330" height="120" as="geometry" />
        </mxCell>
        <mxCell id="35" value="蓝色实线 = 类型化 Frame / 生命周期    ·    品红虚线 = Signal 控制    ·    灰色点线 = 本地 NotificationBus 遥测" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#B8B8B8;fontColor=#555555;fontSize=11;align=center;" vertex="1" parent="30">
          <mxGeometry x="530" y="195" width="1230" height="40" as="geometry" />
        </mxCell>

        <mxCell id="40" value="4 · 统一 Node 扩展层" style="swimlane;startSize=34;container=1;pointerEvents=0;rounded=1;html=1;fontStyle=1;fontSize=14;fillColor=#E5F5EC;swimlaneFillColor=#F8FDF9;strokeColor=#4A9B68;strokeWidth=2;" vertex="1" parent="1">
          <mxGeometry x="40" y="880" width="1800" height="220" as="geometry" />
        </mxCell>
        <mxCell id="41" value="Rust 内置 Node&#10;重采样 · VAD · 取消门&#10;客户端事件编码 · 通用工具" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#D5E8D4;strokeColor=#82B366;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="40">
          <mxGeometry x="80" y="55" width="360" height="110" as="geometry" />
        </mxCell>
        <mxCell id="42" value="Python Node Host&#10;Qwen Realtime · ASR · LLM · TTS&#10;ctx.emit · emit_signal · publish_notification" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;strokeColor=#D6B656;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="40">
          <mxGeometry x="500" y="55" width="360" height="110" as="geometry" />
        </mxCell>
        <mxCell id="43" value="C++ ABI Node Pack&#10;Agora 音频/数据 Source + Sink&#10;共享 RTC Engine 与 Bot UID" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#DAE8FC;strokeColor=#6C8EBF;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="40">
          <mxGeometry x="920" y="55" width="360" height="110" as="geometry" />
        </mxCell>
        <mxCell id="44" value="项目 / TypeScript Node&#10;.muxiva/nodes · Node-API Worker&#10;相同 Factory 与 Frame 契约" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F8CECC;strokeColor=#B85450;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="40">
          <mxGeometry x="1340" y="55" width="360" height="110" as="geometry" />
        </mxCell>

        <mxCell id="50" value="5 · 外部服务与生产边界" style="swimlane;startSize=34;container=1;pointerEvents=0;rounded=1;html=1;fontStyle=1;fontSize=14;fillColor=#F0F0F0;swimlaneFillColor=#FAFAFA;strokeColor=#666666;strokeWidth=2;" vertex="1" parent="1">
          <mxGeometry x="40" y="1130" width="1800" height="190" as="geometry" />
        </mxCell>
        <mxCell id="51" value="阿里云百炼 Model Studio&#10;Qwen Realtime / ASR / LLM / TTS API&#10;密钥仅在服务端" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#F5F5F5;strokeColor=#666666;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="50">
          <mxGeometry x="500" y="55" width="360" height="95" as="geometry" />
        </mxCell>
        <mxCell id="52" value="Agora RTC 网络&#10;全双工音频与可靠有序数据&#10;浏览器 UID ↔ Muxiva Bot UID" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#F5F5F5;strokeColor=#666666;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="50">
          <mxGeometry x="920" y="55" width="360" height="95" as="geometry" />
        </mxCell>
        <mxCell id="53" value="应用后端 / Token 服务&#10;身份认证 · 短期 RTC Token&#10;一个 Runtime 进程 = 一个 Agent RTC 会话" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fillColor=#F5F5F5;strokeColor=#666666;strokeWidth=2;fontSize=13;fontStyle=1;" vertex="1" parent="50">
          <mxGeometry x="1340" y="55" width="400" height="95" as="geometry" />
        </mxCell>

        <mxCell id="100" value="使用" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#6C8EBF;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=1;exitY=0.25;entryX=0;entryY=0.5;" edge="1" parent="1" source="11" target="12">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="103" value="说话 / 收听" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#82B366;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="15" target="16">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="104" value="Graph v1" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#6C8EBF;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.25;entryY=0;" edge="1" parent="1" source="12" target="21">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="105" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#6C8EBF;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.4;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="13" target="21">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="106" value="Registry" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#6C8EBF;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.65;exitY=1;entryX=0.25;entryY=0;" edge="1" parent="1" source="13" target="23">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="107" value="Manifest / Factory" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#6C8EBF;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="14" target="22">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="108" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#9673A6;dashed=1;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.75;entryY=0;" edge="1" parent="1" source="16" target="24">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>

        <mxCell id="109" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#9673A6;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.3;entryY=0;" edge="1" parent="1" source="21" target="31">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="110" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#9673A6;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.55;entryY=0;" edge="1" parent="1" source="22" target="31">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="111" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#9673A6;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.8;entryY=0;" edge="1" parent="1" source="23" target="31">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="112" value="创建 Node 时注入" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#9673A6;dashed=1;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.85;entryY=0;" edge="1" parent="1" source="24" target="32">
          <mxGeometry relative="1" as="geometry">
            <Array as="points"><mxPoint x="1560" y="575" /><mxPoint x="930" y="575" /></Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="113" value="物化后的 Graph" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#43369A;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=1;exitY=0.5;entryX=0;entryY=0.5;" edge="1" parent="1" source="31" target="32">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="114" value="管理队列与调度" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#6C8EBF;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=1;exitY=0.35;entryX=0;entryY=0.35;" edge="1" parent="1" source="32" target="33">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="115" value="路由 Signal / 发布 Notification" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#C04AA4;dashed=1;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=1;exitY=0.7;entryX=0;entryY=0.7;" edge="1" parent="1" source="32" target="34">
          <mxGeometry relative="1" as="geometry">
            <Array as="points"><mxPoint x="990" y="780" /><mxPoint x="1430" y="780" /></Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="116" value="Node 生命周期 + NodeContext" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#43369A;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.15;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="32" target="41">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="117" value="托管回调" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#43369A;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.4;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="32" target="42">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="118" value="版本化 C ABI" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#43369A;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.65;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="32" target="43">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="119" value="Factory Host" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#43369A;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.9;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="32" target="44">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="120" value="speech.started / 取消" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#C04AA4;dashed=1;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.25;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="34" target="42">
          <mxGeometry relative="1" as="geometry">
            <Array as="points"><mxPoint x="1510" y="860" /><mxPoint x="720" y="860" /></Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="121" value="清除陈旧播放" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#C04AA4;dashed=1;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.75;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="34" target="43">
          <mxGeometry relative="1" as="geometry">
            <Array as="points"><mxPoint x="1680" y="870" /><mxPoint x="1140" y="870" /></Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="122" value="NotificationBus：仅日志与 Studio" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=open;endFill=0;strokeColor=#777777;dashed=1;dashPattern=2 4;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=1;exitY=0.2;entryX=1;entryY=0.65;" edge="1" parent="1" source="34" target="13">
          <mxGeometry relative="1" as="geometry">
            <Array as="points"><mxPoint x="1820" y="665" /><mxPoint x="1820" y="360" /><mxPoint x="790" y="360" /></Array>
          </mxGeometry>
        </mxCell>

        <mxCell id="123" value="WebSocket / HTTP 模型流" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;startArrow=blockThin;startFill=1;endArrow=blockThin;endFill=1;strokeColor=#D6B656;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="42" target="51">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="124" value="PCM 音频 + 客户端 Event 字节" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;startArrow=blockThin;startFill=1;endArrow=blockThin;endFill=1;strokeColor=#6C8EBF;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.5;exitY=1;entryX=0.5;entryY=0;" edge="1" parent="1" source="43" target="52">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="125" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;startArrow=blockThin;startFill=1;endArrow=blockThin;endFill=1;strokeColor=#2D9CDB;strokeWidth=3;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=1;exitY=0.75;entryX=1;entryY=1;" edge="1" parent="1" source="16" target="52">
          <mxGeometry relative="1" as="geometry">
            <Array as="points"><mxPoint x="1860" y="300" /><mxPoint x="1860" y="1310" /><mxPoint x="1320" y="1310" /></Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="126" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;endArrow=blockThin;endFill=1;strokeColor=#9673A6;dashed=1;strokeWidth=2;labelBackgroundColor=#FFFFFF;fontSize=11;exitX=0.85;exitY=1;entryX=1;entryY=0.5;" edge="1" parent="1" source="16" target="53">
          <mxGeometry relative="1" as="geometry">
            <Array as="points"><mxPoint x="1820" y="370" /><mxPoint x="1820" y="1230" /></Array>
          </mxGeometry>
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
