Files
knowledge-graph-agent/project-architecture.svg
T
2026-04-28 12:44:08 +08:00

80 lines
6.3 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" width="1920" height="1200" viewBox="0 0 960 600">
<defs>
<marker id="arrow" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#2563eb"/>
</marker>
<marker id="arrow-orange" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#ea580c"/>
</marker>
<style>
.title { font: 700 20px Arial, sans-serif; fill: #0f172a; }
.label { font: 600 14px Arial, sans-serif; fill: #0f172a; }
.small { font: 12px Arial, sans-serif; fill: #334155; }
.box { stroke: #1e293b; stroke-width: 1.5; rx: 16; ry: 16; }
.layer { fill: #f8fafc; stroke: #cbd5e1; stroke-dasharray: 7 5; stroke-width: 1.5; rx: 20; ry: 20; }
</style>
</defs>
<rect x="0" y="0" width="960" height="600" fill="#ffffff"/>
<text x="480" y="42" text-anchor="middle" class="title">knowledge-graph-agent 项目架构图</text>
<text x="480" y="66" text-anchor="middle" class="small">知识图谱 + 层级记忆 + 自省反馈 + AI 对话 + 邮件自动化</text>
<rect x="40" y="100" width="880" height="120" class="layer"/>
<text x="60" y="124" class="label">用户交互层</text>
<rect x="40" y="240" width="880" height="130" class="layer"/>
<text x="60" y="264" class="label">应用服务层</text>
<rect x="40" y="395" width="880" height="140" class="layer"/>
<text x="60" y="419" class="label">数据与外部能力层</text>
<rect x="90" y="145" width="220" height="48" class="box" fill="#dbeafe"/>
<text x="200.0" y="167" text-anchor="middle" class="label">React 前端</text>
<text x="200.0" y="185" text-anchor="middle" class="small">Graph UI / Chat UI</text>
<rect x="350" y="145" width="220" height="48" class="box" fill="#dbeafe"/>
<text x="460.0" y="167" text-anchor="middle" class="label">AntV G6 + Zustand</text>
<text x="460.0" y="185" text-anchor="middle" class="small">图谱渲染 / 状态管理</text>
<rect x="610" y="145" width="240" height="48" class="box" fill="#dbeafe"/>
<text x="730.0" y="167" text-anchor="middle" class="label">Axios + Tailwind</text>
<text x="730.0" y="185" text-anchor="middle" class="small">API 请求 / UI 样式</text>
<rect x="90" y="285" width="220" height="52" class="box" fill="#dcfce7"/>
<text x="200.0" y="307" text-anchor="middle" class="label">Gin API 层</text>
<text x="200.0" y="325" text-anchor="middle" class="small">REST 接口 / 路由 / 校验</text>
<rect x="350" y="285" width="220" height="52" class="box" fill="#dcfce7"/>
<text x="460.0" y="307" text-anchor="middle" class="label">Graph Service</text>
<text x="460.0" y="325" text-anchor="middle" class="small">查询 / 搜索 / 邻居 / CRUD</text>
<rect x="610" y="285" width="240" height="52" class="box" fill="#dcfce7"/>
<text x="730.0" y="307" text-anchor="middle" class="label">AI & Conversation</text>
<text x="730.0" y="325" text-anchor="middle" class="small">Prompt / 会话 / 上下文增强</text>
<rect x="120" y="435" width="220" height="54" class="box" fill="#fef3c7"/>
<text x="230.0" y="457" text-anchor="middle" class="label">Neo4j 5.x</text>
<text x="230.0" y="475" text-anchor="middle" class="small">知识图谱持久化</text>
<rect x="390" y="435" width="220" height="54" class="box" fill="#fef3c7"/>
<text x="500.0" y="457" text-anchor="middle" class="label">AI Provider</text>
<text x="500.0" y="475" text-anchor="middle" class="small">硅基流动 OpenAI 接口</text>
<rect x="660" y="435" width="180" height="54" class="box" fill="#fef3c7"/>
<text x="750.0" y="457" text-anchor="middle" class="label">邮件自动化</text>
<text x="750.0" y="475" text-anchor="middle" class="small">后续增强</text>
<line x1="200" y1="193" x2="200" y2="285" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="154.0" y="217.0" width="92" height="20" rx="6" ry="6" fill="#ffffff" opacity="0.96"/>
<text x="200.0" y="231.0" text-anchor="middle" class="small">用户操作 / 查询</text>
<line x1="460" y1="193" x2="460" y2="285" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="414.0" y="217.0" width="92" height="20" rx="6" ry="6" fill="#ffffff" opacity="0.96"/>
<text x="460.0" y="231.0" text-anchor="middle" class="small">图谱浏览 / 编辑</text>
<line x1="730" y1="193" x2="730" y2="285" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="684.0" y="217.0" width="92" height="20" rx="6" ry="6" fill="#ffffff" opacity="0.96"/>
<text x="730.0" y="231.0" text-anchor="middle" class="small">提交消息 / 交互</text>
<line x1="240" y1="337" x2="240" y2="435" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="194.0" y="364.0" width="92" height="20" rx="6" ry="6" fill="#ffffff" opacity="0.96"/>
<text x="240.0" y="378.0" text-anchor="middle" class="small">读写图数据</text>
<line x1="460" y1="337" x2="460" y2="435" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="414.0" y="364.0" width="92" height="20" rx="6" ry="6" fill="#ffffff" opacity="0.96"/>
<text x="460.0" y="378.0" text-anchor="middle" class="small">检索上下文 / 记忆</text>
<line x1="730" y1="337" x2="520" y2="435" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="579.0" y="364.0" width="92" height="20" rx="6" ry="6" fill="#ffffff" opacity="0.96"/>
<text x="625.0" y="378.0" text-anchor="middle" class="small">生成回复 / 调用模型</text>
<path d="M 850 462 C 900 462, 900 520, 850 520" fill="none" stroke="#ea580c" stroke-width="2" marker-end="url(#arrow-orange)"/>
<rect x="780" y="520" width="140" height="36" rx="10" ry="10" fill="#fff7ed" stroke="#fb923c"/>
<text x="850" y="543" text-anchor="middle" class="small">定时任务 / 邮件</text>
<rect x="60" y="535" width="250" height="42" rx="10" ry="10" fill="#f8fafc" stroke="#cbd5e1"/>
<line x1="78" y1="556" x2="130" y2="556" stroke="#2563eb" stroke-width="2" marker-end="url(#arrow)"/>
<text x="146" y="561" class="small">主要请求 / 数据流</text>
<rect x="340" y="535" width="250" height="42" rx="10" ry="10" fill="#f8fafc" stroke="#cbd5e1"/>
<line x1="358" y1="556" x2="410" y2="556" stroke="#ea580c" stroke-width="2" marker-end="url(#arrow-orange)"/>
<text x="426" y="561" class="small">外部能力 / 触发流</text>
</svg>