<mxGraphModel><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="2" value="smart-trade-ai 架构总览" style="text;fontSize=20;fontStyle=1;align=center;fillColor=none;strokeColor=none;" vertex="1" parent="1"><mxGeometry x="250" y="10" width="300" height="30" as="geometry"/></mxCell><mxCell id="layer-startup" value="单机启动层" style="rounded=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=14;fontStyle=1;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="40" y="50" width="720" height="80" as="geometry"/></mxCell><mxCell id="startup-items" value="server.py — 日志过滤 → sys.path → 版本检查 → Skills同步 → YOLO → uvicorn" style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="80" width="680" height="20" as="geometry"/></mxCell><mxCell id="arrow-1" value="" style="endArrow=classic;html=1;" edge="1" parent="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="400" y="130" as="sourcePoint"/><mxPoint x="400" y="155" as="targetPoint"/></mxGeometry></mxCell><mxCell id="layer-api" value="Web API 层" style="rounded=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=14;fontStyle=1;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="40" y="155" width="720" height="80" as="geometry"/></mxCell><mxCell id="api-items" value="/trade (SPA) · /api/trade/companies · customers · libraries · orders · chat · chat/stream · memory · cron" style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="180" width="680" height="20" as="geometry"/></mxCell><mxCell id="api-deps" value="依赖注入: require_session() + require_company()" style="text;fontSize=10;align=center;fontStyle=2;color=#666;" vertex="1" parent="1"><mxGeometry x="60" y="200" width="680" height="15" as="geometry"/></mxCell><mxCell id="arrow-2" value="" style="endArrow=classic;html=1;" edge="1" parent="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="400" y="235" as="sourcePoint"/><mxPoint x="400" y="260" as="targetPoint"/></mxGeometry></mxCell><mxCell id="layer-biz" value="业务逻辑层" style="rounded=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=14;fontStyle=1;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="40" y="260" width="720" height="80" as="geometry"/></mxCell><mxCell id="biz-items" value="customer.py · library.py · company.py · order.py · helpers.py (Agent工厂) · prompts.py · chat_memory.py · memory.py" style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="288" width="680" height="18" as="geometry"/></mxCell><mxCell id="biz-skills" value="skill_router.py (匹配引擎) · skill_registry.py (14个Skill注册表) · osint/ (6层背调)" style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="308" width="680" height="18" as="geometry"/></mxCell><mxCell id="arrow-3" value="" style="endArrow=classic;html=1;" edge="1" parent="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="400" y="340" as="sourcePoint"/><mxPoint x="400" y="365" as="targetPoint"/></mxGeometry></mxCell><mxCell id="layer-agent" value="AI Agent 层 (Hermes)" style="rounded=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=14;fontStyle=1;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="40" y="365" width="720" height="80" as="geometry"/></mxCell><mxCell id="agent-tools" value="Toolsets: web_search · browser · read_file · write_file · terminal · code_execution · skills · memory · cronjob · todo" style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="393" width="680" height="18" as="geometry"/></mxCell><mxCell id="agent-skills" value="14 Skills: b2b-osint · email-intel · platform · social-media · linkedin · customs · lead-gen · doc-gen · daily-automation · ..." style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="413" width="680" height="18" as="geometry"/></mxCell><mxCell id="arrow-4" value="" style="endArrow=classic;html=1;" edge="1" parent="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="400" y="445" as="sourcePoint"/><mxPoint x="400" y="470" as="targetPoint"/></mxGeometry></mxCell><mxCell id="layer-data" value="数据持久层" style="rounded=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=14;fontStyle=1;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="40" y="470" width="720" height="70" as="geometry"/></mxCell><mxCell id="data-items" value="SQLite trade.db — companies · libraries · customers · conversations · orders + spare columns + 外键约束" style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="498" width="680" height="18" as="geometry"/></mxCell><mxCell id="arrow-5" value="" style="endArrow=classic;html=1;" edge="1" parent="1"><mxGeometry width="50" height="50" relative="1" as="geometry"><mxPoint x="400" y="540" as="sourcePoint"/><mxPoint x="400" y="565" as="targetPoint"/></mxGeometry></mxCell><mxCell id="layer-fs" value="本地文件层" style="rounded=1;fillColor=#f5f5f5;strokeColor=#999;fontSize=14;fontStyle=1;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="40" y="565" width="720" height="60" as="geometry"/></mxCell><mxCell id="fs-items" value="~/.trade/{公司}/libraries/ · documents/ · exports/ · ~/.hermes/skills/b2b-*/ · config.yaml" style="text;fontSize=11;align=center;" vertex="1" parent="1"><mxGeometry x="60" y="593" width="680" height="18" as="geometry"/></mxCell></root></mxGraphModel>