<mxfile host="next-ai-draw-io" version="26.0.0">
  <diagram id="01-总体架构" name="01-总体架构">
    <mxGraphModel dx="1400" dy="900" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1140" pageHeight="840" math="0" shadow="0" background="#0d1117">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        <mxCell id="n2" value="爱马特 · 系统总体架构" style="text;html=1;align=left;verticalAlign=middle;fontSize=26;fontColor=#e6edf3;fontStyle=1;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="14" width="900" height="38" as="geometry"/></mxCell>
        <mxCell id="n3" value="接入层 → 网关层 → Agent 内核 → 工具能力 → 基础设施" style="text;html=1;align=left;verticalAlign=middle;fontSize=13;fontColor=#8b949e;fontStyle=0;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="52" width="1000" height="24" as="geometry"/></mxCell>
        <mxCell id="n4" value="① 接入层" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#11161d;strokeColor=#30363d;fontColor=#8b949e;fontSize=12;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=6;dashed=1;" vertex="1" parent="1"><mxGeometry x="40" y="88" width="1060" height="120" as="geometry"/></mxCell>
        <mxCell id="n5" value="📱 手机微信<br>文字 / 文件 / 语音" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#1f6feb;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="70" y="122" width="210" height="64" as="geometry"/></mxCell>
        <mxCell id="n6" value="💻 本机 CLI<br>Hermes 终端" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#1f6feb;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="310" y="122" width="200" height="64" as="geometry"/></mxCell>
        <mxCell id="n7" value="⏰ cron 定时任务<br>扫描 / 主动推送" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#238636;strokeColor=#3fb950;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="540" y="122" width="200" height="64" as="geometry"/></mxCell>
        <mxCell id="n8" value="🌐 报告站点<br>trackgen.top/reports" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#8957e5;strokeColor=#a371f7;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="770" y="122" width="300" height="64" as="geometry"/></mxCell>
        <mxCell id="n9" value="② 接入网关层" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#11161d;strokeColor=#30363d;fontColor=#8b949e;fontSize=12;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=6;dashed=1;" vertex="1" parent="1"><mxGeometry x="40" y="230" width="1060" height="124" as="geometry"/></mxCell>
        <mxCell id="n10" value="微信网关 weixin<br>收发 · 鉴权 · 断线重连" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#0b3d91;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="70" y="264" width="230" height="66" as="geometry"/></mxCell>
        <mxCell id="n11" value="会话路由<br>profile / 窗口 / 身份" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#0b3d91;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="330" y="264" width="230" height="66" as="geometry"/></mxCell>
        <mxCell id="n12" value="回复渲染<br>Markdown → 微信" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#0b3d91;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="590" y="264" width="210" height="66" as="geometry"/></mxCell>
        <mxCell id="n13" value="安全与限流<br>白名单 · 长度切分" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#0b3d91;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="830" y="264" width="240" height="66" as="geometry"/></mxCell>
        <mxCell id="n14" value="③ Agent 内核" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#11161d;strokeColor=#30363d;fontColor=#8b949e;fontSize=12;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=6;dashed=1;" vertex="1" parent="1"><mxGeometry x="40" y="376" width="1060" height="132" as="geometry"/></mxCell>
        <mxCell id="n15" value="📚 上下文工程<br>系统提示 · 记忆注入<br>micro_compact 压缩" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#9e6a03;strokeColor=#e3b341;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="70" y="412" width="230" height="78" as="geometry"/></mxCell>
        <mxCell id="n16" value="🧠 模型层<br>deepseek-v4-flash<br>+ 备用链路" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#9e6a03;strokeColor=#e3b341;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="330" y="412" width="230" height="78" as="geometry"/></mxCell>
        <mxCell id="n17" value="🧩 技能库<br>专利 / 工程 / 股票<br>260+ 角色" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#9e6a03;strokeColor=#e3b341;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="590" y="412" width="210" height="78" as="geometry"/></mxCell>
        <mxCell id="n18" value="🔁 调度器<br>工具选择 · 重试 · 降级" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#9e6a03;strokeColor=#e3b341;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="830" y="412" width="240" height="78" as="geometry"/></mxCell>
        <mxCell id="n19" value="④ 工具与能力层" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#11161d;strokeColor=#30363d;fontColor=#8b949e;fontSize=12;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=6;dashed=1;" vertex="1" parent="1"><mxGeometry x="40" y="530" width="1060" height="128" as="geometry"/></mxCell>
        <mxCell id="n20" value="🖥 SSH 远程执行<br>两台阿里云" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#1f6feb;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="70" y="566" width="180" height="66" as="geometry"/></mxCell>
        <mxCell id="n21" value="🌐 浏览器自动化<br>抓取 · 截图" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#1f6feb;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="270" y="566" width="180" height="66" as="geometry"/></mxCell>
        <mxCell id="n22" value="📄 文件与代码<br>读写 · 生成 · 调试" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#1f6feb;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="470" y="566" width="180" height="66" as="geometry"/></mxCell>
        <mxCell id="n23" value="🔎 本地 RAG<br>Chroma + bge" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#1f6feb;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="670" y="566" width="190" height="66" as="geometry"/></mxCell>
        <mxCell id="n24" value="📤 微信推送<br>openid 定向" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#1f6feb;strokeColor=#58a6ff;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="880" y="566" width="190" height="66" as="geometry"/></mxCell>
        <mxCell id="n25" value="⑤ 基础设施层" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#11161d;strokeColor=#30363d;fontColor=#8b949e;fontSize=12;fontStyle=1;verticalAlign=top;align=left;spacingLeft=10;spacingTop=6;dashed=1;" vertex="1" parent="1"><mxGeometry x="40" y="680" width="1060" height="126" as="geometry"/></mxCell>
        <mxCell id="n26" value="☁️ shweige · 阿里云<br>139.224.103.137<br>餐系统 / Nginx / DB" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#3d1f5c;strokeColor=#a371f7;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="70" y="716" width="300" height="74" as="geometry"/></mxCell>
        <mxCell id="n27" value="☁️ oldserver · 阿里云<br>39.105.194.79<br>股票扫描 / reports" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#3d1f5c;strokeColor=#a371f7;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="400" y="716" width="300" height="74" as="geometry"/></mxCell>
        <mxCell id="n28" value="💾 本机 MBP 2019 + 移动硬盘<br>Ollama · RAG · 工程文件 · 备份" style="rounded=1;arcSize=14;whiteSpace=wrap;html=1;fillColor=#3d1f5c;strokeColor=#a371f7;fontColor=#ffffff;fontSize=13;fontStyle=1;dashed=0;strokeWidth=1.5;" vertex="1" parent="1"><mxGeometry x="730" y="716" width="340" height="74" as="geometry"/></mxCell>
        <mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n6" target="n10"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n7" target="n11"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n8" target="n11"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#8b949e;strokeWidth=1.6;endArrow=block;endFill=1;dashed=1;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n9" target="n12"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n10" target="n11"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n11" target="n12"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n12" target="n13"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e8" value="装配上下文" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n11" target="n15"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n15" target="n16"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e10" value="按需加载" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#e3b341;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n17" target="n16"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e11" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#e3b341;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n18" target="n16"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e12" value="调用" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n16" target="n22"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e13" value="远程执行" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#8b949e;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n18" target="n20"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e14" value="检索" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#8b949e;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n18" target="n23"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e15" value="推送" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#3fb950;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n13" target="n24"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e16" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n20" target="n26"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e17" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n20" target="n27"><mxGeometry relative="1" as="geometry"/></mxCell>
        <mxCell id="e18" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;strokeColor=#58a6ff;strokeWidth=1.6;endArrow=block;endFill=1;dashed=0;fontSize=11;fontColor=#c9d1d9;labelBackgroundColor=#0d1117;" edge="1" parent="1" source="n22" target="n28"><mxGeometry relative="1" as="geometry"/></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
