80 lines
6.3 KiB
XML
80 lines
6.3 KiB
XML
|
|
<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>
|