mirror of
https://gitee.com/mateos/mateclaw.git
synced 2026-09-13 11:13:43 +08:00
201 lines
14 KiB
XML
201 lines
14 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 640" font-family="'Inter','SF Pro Display','Segoe UI',sans-serif">
|
|
<defs>
|
|
<linearGradient id="bg" x1="0" y1="0" x2="1" y2="1">
|
|
<stop offset="0%" stop-color="#f6f1ea"/>
|
|
<stop offset="100%" stop-color="#ebe3db"/>
|
|
</linearGradient>
|
|
<linearGradient id="primary" x1="0" y1="0" x2="1" y2="1">
|
|
<stop offset="0%" stop-color="#d96d46"/>
|
|
<stop offset="100%" stop-color="#bb4f27"/>
|
|
</linearGradient>
|
|
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="1">
|
|
<stop offset="0%" stop-color="#1e5a54"/>
|
|
<stop offset="100%" stop-color="#184a45"/>
|
|
</linearGradient>
|
|
<linearGradient id="warm" x1="0" y1="0" x2="0" y2="1">
|
|
<stop offset="0%" stop-color="#ffffff"/>
|
|
<stop offset="100%" stop-color="#fdfaf6"/>
|
|
</linearGradient>
|
|
<filter id="shadow">
|
|
<feDropShadow dx="0" dy="4" stdDeviation="8" flood-color="#3a2013" flood-opacity="0.08"/>
|
|
</filter>
|
|
<filter id="shadowSm">
|
|
<feDropShadow dx="0" dy="2" stdDeviation="4" flood-color="#3a2013" flood-opacity="0.06"/>
|
|
</filter>
|
|
</defs>
|
|
|
|
<rect width="960" height="640" rx="20" fill="url(#bg)"/>
|
|
|
|
<text x="480" y="42" text-anchor="middle" font-size="22" font-weight="800" fill="#1d1612" letter-spacing="-0.5">MateClaw Technical Architecture</text>
|
|
<text x="480" y="62" text-anchor="middle" font-size="11" fill="#9b7d6c" letter-spacing="2">THE WHOLE WIDGET</text>
|
|
|
|
<!-- ===== Layer 1: Presentation ===== -->
|
|
<rect x="30" y="82" width="900" height="88" rx="14" fill="url(#warm)" stroke="#d9cec2" stroke-width="1" filter="url(#shadow)"/>
|
|
<rect x="30" y="82" width="900" height="4" rx="2" fill="url(#primary)"/>
|
|
<text x="56" y="106" font-size="11" font-weight="700" fill="#d96d46" letter-spacing="1">PRESENTATION</text>
|
|
|
|
<g transform="translate(56, 118)">
|
|
<rect width="130" height="40" rx="8" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">Vue 3 SPA</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">Element Plus + Tailwind</text>
|
|
</g>
|
|
<g transform="translate(200, 118)">
|
|
<rect width="130" height="40" rx="8" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">Electron Desktop</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">Bundled JRE 21</text>
|
|
</g>
|
|
<g transform="translate(344, 118)">
|
|
<rect width="130" height="40" rx="8" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">SSE Streaming</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">Real-time Chat + Tools</text>
|
|
</g>
|
|
<g transform="translate(488, 118)">
|
|
<rect width="130" height="40" rx="8" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">REST API</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">SpringDoc OpenAPI</text>
|
|
</g>
|
|
<g transform="translate(632, 118)">
|
|
<rect width="130" height="40" rx="8" fill="#dce8e4" stroke="#5ca69d" stroke-width="0.5"/>
|
|
<text x="65" y="14" text-anchor="middle" font-size="11" font-weight="600" fill="#184a45">China IM (5)</text>
|
|
<text x="65" y="26" text-anchor="middle" font-size="9" fill="#665245">DingTalk · Feishu</text>
|
|
<text x="65" y="37" text-anchor="middle" font-size="9" fill="#665245">WeCom · WeChat · QQ</text>
|
|
</g>
|
|
<g transform="translate(776, 118)">
|
|
<rect width="130" height="40" rx="8" fill="#dce8e4" stroke="#5ca69d" stroke-width="0.5"/>
|
|
<text x="65" y="14" text-anchor="middle" font-size="11" font-weight="600" fill="#184a45">Global IM (3)</text>
|
|
<text x="65" y="26" text-anchor="middle" font-size="9" fill="#665245">Telegram · Discord</text>
|
|
<text x="65" y="37" text-anchor="middle" font-size="9" fill="#665245">Slack</text>
|
|
</g>
|
|
|
|
<!-- ===== Layer 2: Agent Engine ===== -->
|
|
<rect x="30" y="186" width="900" height="118" rx="14" fill="url(#warm)" stroke="#d9cec2" stroke-width="1" filter="url(#shadow)"/>
|
|
<rect x="30" y="186" width="900" height="4" rx="2" fill="url(#accent)"/>
|
|
<text x="56" y="210" font-size="11" font-weight="700" fill="#184a45" letter-spacing="1">DIGITAL EMPLOYEE RUNTIME</text>
|
|
|
|
<g transform="translate(56, 222)">
|
|
<rect width="172" height="68" rx="10" fill="#dce8e4" stroke="#5ca69d" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="86" y="20" text-anchor="middle" font-size="12" font-weight="700" fill="#184a45">Reasoning Engines</text>
|
|
<text x="86" y="36" text-anchor="middle" font-size="9" fill="#665245">ReAct · Think→Act→Observe</text>
|
|
<text x="86" y="50" text-anchor="middle" font-size="9" fill="#665245">Plan-Execute · Decompose</text>
|
|
</g>
|
|
<g transform="translate(244, 222)">
|
|
<rect width="172" height="68" rx="10" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="86" y="20" text-anchor="middle" font-size="12" font-weight="700" fill="#d96d46">Workflow + Trigger</text>
|
|
<text x="86" y="36" text-anchor="middle" font-size="9" fill="#665245">7 step modes · 6 patterns</text>
|
|
<text x="86" y="50" text-anchor="middle" font-size="9" fill="#9b7d6c">Business orchestration (1.3.0+)</text>
|
|
</g>
|
|
<g transform="translate(432, 222)">
|
|
<rect width="172" height="68" rx="10" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="86" y="20" text-anchor="middle" font-size="12" font-weight="700" fill="#d96d46">Skills · Tools</text>
|
|
<text x="86" y="36" text-anchor="middle" font-size="9" fill="#665245">Built-in · MCP · ACP · Skills</text>
|
|
<text x="86" y="50" text-anchor="middle" font-size="9" fill="#665245">SKILL.md + LESSONS + Approval</text>
|
|
</g>
|
|
<g transform="translate(620, 222)">
|
|
<rect width="172" height="68" rx="10" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="86" y="20" text-anchor="middle" font-size="12" font-weight="700" fill="#d96d46">Memory System</text>
|
|
<text x="86" y="36" text-anchor="middle" font-size="9" fill="#665245">Short-term + Extraction</text>
|
|
<text x="86" y="50" text-anchor="middle" font-size="9" fill="#665245">Consolidation + Dreaming</text>
|
|
</g>
|
|
<g transform="translate(808, 222)">
|
|
<rect width="108" height="68" rx="10" fill="#f6e2d7" stroke="#ebb08f" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="54" y="20" text-anchor="middle" font-size="12" font-weight="700" fill="#d96d46">Wiki KB</text>
|
|
<text x="54" y="36" text-anchor="middle" font-size="9" fill="#665245">Knowledge digest</text>
|
|
<text x="54" y="50" text-anchor="middle" font-size="9" fill="#665245">+ Transforms (1.3)</text>
|
|
</g>
|
|
|
|
<!-- ===== Layer 3: Core Services ===== -->
|
|
<rect x="30" y="320" width="440" height="118" rx="14" fill="url(#warm)" stroke="#d9cec2" stroke-width="1" filter="url(#shadow)"/>
|
|
<rect x="30" y="320" width="440" height="4" rx="2" fill="url(#primary)"/>
|
|
<text x="56" y="344" font-size="11" font-weight="700" fill="#d96d46" letter-spacing="1">CORE SERVICES</text>
|
|
|
|
<g transform="translate(56, 356)">
|
|
<rect width="120" height="68" rx="10" fill="#fff" stroke="#d9cec2" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="60" y="20" text-anchor="middle" font-size="10" font-weight="600" fill="#1d1612">Spring Boot 3.5</text>
|
|
<text x="60" y="36" text-anchor="middle" font-size="9" fill="#9b7d6c">App Framework</text>
|
|
<text x="60" y="50" text-anchor="middle" font-size="8" fill="#9b7d6c">Spring MVC + SSE</text>
|
|
</g>
|
|
<g transform="translate(190, 356)">
|
|
<rect width="120" height="68" rx="10" fill="#fff" stroke="#d9cec2" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="60" y="20" text-anchor="middle" font-size="10" font-weight="600" fill="#1d1612">Spring Security</text>
|
|
<text x="60" y="36" text-anchor="middle" font-size="9" fill="#9b7d6c">Auth Layer</text>
|
|
<text x="60" y="50" text-anchor="middle" font-size="8" fill="#9b7d6c">JWT + RBAC</text>
|
|
</g>
|
|
<g transform="translate(324, 356)">
|
|
<rect width="130" height="68" rx="10" fill="#fff" stroke="#d9cec2" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="65" y="20" text-anchor="middle" font-size="10" font-weight="600" fill="#1d1612">MyBatis Plus</text>
|
|
<text x="65" y="36" text-anchor="middle" font-size="9" fill="#9b7d6c">Persistence</text>
|
|
<text x="65" y="50" text-anchor="middle" font-size="8" fill="#9b7d6c">Logical Delete + Mapping</text>
|
|
</g>
|
|
|
|
<!-- ===== Layer 3b: Model Providers ===== -->
|
|
<rect x="490" y="320" width="440" height="118" rx="14" fill="url(#warm)" stroke="#d9cec2" stroke-width="1" filter="url(#shadow)"/>
|
|
<rect x="490" y="320" width="440" height="4" rx="2" fill="url(#accent)"/>
|
|
<text x="516" y="344" font-size="11" font-weight="700" fill="#184a45" letter-spacing="1">MODEL PROVIDERS</text>
|
|
|
|
<g transform="translate(516, 356)">
|
|
<rect width="120" height="68" rx="10" fill="#dce8e4" stroke="#5ca69d" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="60" y="20" text-anchor="middle" font-size="10" font-weight="600" fill="#184a45">Provider Pool</text>
|
|
<text x="60" y="36" text-anchor="middle" font-size="9" fill="#665245">Spring AI · Failover</text>
|
|
<text x="60" y="50" text-anchor="middle" font-size="8" fill="#9b7d6c">Health Tracker · Cooldown</text>
|
|
</g>
|
|
<g transform="translate(650, 356)">
|
|
<rect width="130" height="68" rx="10" fill="#dce8e4" stroke="#5ca69d" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="65" y="20" text-anchor="middle" font-size="10" font-weight="600" fill="#184a45">Cloud Models</text>
|
|
<text x="65" y="36" text-anchor="middle" font-size="9" fill="#665245">DashScope · OpenAI</text>
|
|
<text x="65" y="50" text-anchor="middle" font-size="8" fill="#9b7d6c">Anthropic · Gemini · More</text>
|
|
</g>
|
|
<g transform="translate(794, 356)">
|
|
<rect width="120" height="68" rx="10" fill="#dce8e4" stroke="#5ca69d" stroke-width="0.5" filter="url(#shadowSm)"/>
|
|
<text x="60" y="20" text-anchor="middle" font-size="10" font-weight="600" fill="#184a45">Local Models</text>
|
|
<text x="60" y="36" text-anchor="middle" font-size="9" fill="#665245">Ollama · LM Studio</text>
|
|
<text x="60" y="50" text-anchor="middle" font-size="8" fill="#9b7d6c">MLX · llama.cpp</text>
|
|
</g>
|
|
|
|
<!-- ===== Layer 4: Data & Infra ===== -->
|
|
<rect x="30" y="454" width="900" height="88" rx="14" fill="url(#warm)" stroke="#d9cec2" stroke-width="1" filter="url(#shadow)"/>
|
|
<rect x="30" y="454" width="900" height="4" rx="2" fill="#665245"/>
|
|
<text x="56" y="478" font-size="11" font-weight="700" fill="#665245" letter-spacing="1">DATA & INFRASTRUCTURE</text>
|
|
|
|
<g transform="translate(56, 488)">
|
|
<rect width="130" height="40" rx="8" fill="#fff" stroke="#d9cec2" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">H2 / MySQL 8</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">Relational Storage</text>
|
|
</g>
|
|
<g transform="translate(200, 488)">
|
|
<rect width="130" height="40" rx="8" fill="#fff" stroke="#d9cec2" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">File System</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">Memory + Wiki + Files</text>
|
|
</g>
|
|
<g transform="translate(344, 488)">
|
|
<rect width="130" height="40" rx="8" fill="#fff" stroke="#d9cec2" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">MCP Protocol</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">stdio / SSE / HTTP</text>
|
|
</g>
|
|
<g transform="translate(488, 488)">
|
|
<rect width="130" height="40" rx="8" fill="#fff" stroke="#d9cec2" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">Docker Compose</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">One-click Deploy</text>
|
|
</g>
|
|
<g transform="translate(632, 488)">
|
|
<rect width="130" height="40" rx="8" fill="#fff" stroke="#d9cec2" stroke-width="0.5"/>
|
|
<text x="65" y="14" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">Cron · Event Bus</text>
|
|
<text x="65" y="26" text-anchor="middle" font-size="9" fill="#665245">ShedLock distributed</text>
|
|
<text x="65" y="37" text-anchor="middle" font-size="9" fill="#665245">Ambient AI · Proactive</text>
|
|
</g>
|
|
<g transform="translate(776, 488)">
|
|
<rect width="130" height="40" rx="8" fill="#fff" stroke="#d9cec2" stroke-width="0.5"/>
|
|
<text x="65" y="17" text-anchor="middle" font-size="11" font-weight="600" fill="#1d1612">Multimodal</text>
|
|
<text x="65" y="31" text-anchor="middle" font-size="9" fill="#9b7d6c">TTS / STT / Img / Music / Vid</text>
|
|
</g>
|
|
|
|
<!-- Flow arrows -->
|
|
<line x1="480" y1="170" x2="480" y2="186" stroke="#d96d46" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.5"/>
|
|
<line x1="480" y1="304" x2="480" y2="320" stroke="#184a45" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.5"/>
|
|
<line x1="250" y1="438" x2="250" y2="454" stroke="#665245" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.4"/>
|
|
<line x1="710" y1="438" x2="710" y2="454" stroke="#665245" stroke-width="1.5" stroke-dasharray="4,3" opacity="0.4"/>
|
|
|
|
<text x="480" y="575" text-anchor="middle" font-size="10" fill="#9b7d6c">Java 21+ · Spring Boot 3.5 · Spring AI Alibaba · Vue 3 · TypeScript · Vite · Electron</text>
|
|
<rect x="380" y="590" width="200" height="24" rx="12" fill="url(#primary)"/>
|
|
<text x="480" y="607" text-anchor="middle" font-size="11" font-weight="600" fill="#fff" letter-spacing="0.5">claw.mate.vip</text>
|
|
</svg>
|