低代码类平台往往有相似的业务场景:各知识库文档、可视化建模、可视化视图,落地agent,往往从知识库rag和智能生成schema入手。
本文介绍低码类平台通用agent架构设计。
业务架构
业务全景
graph TB
subgraph 用户层["👤 用户层 (User Layer)"]
U1["交付工程师"]
U2["售前/产品"]
U3["平台管理员"]
end
subgraph 交互层["💬 交互层 (Interaction Layer)"]
I1["自然语言对话"]
I2["管理后台"]
end
subgraph 业务能力["🧠 业务能力层 (Business Capability Layer)"]
direction TB
subgraph CAP1["📦 AI schema建模"]
C1_1["自然语言理解"]
C1_2["schema生成"]
C1_3["schema补全"]
C1_4["schema校验与修复"]
C1_4["schema应用"]
end
subgraph CAP2["📖 知识问答服务"]
C2_1["文档智能检索"]
C2_2["上下文增强回答"]
C2_3["对话历史管理"]
end
subgraph CAP3["🧩 智能记忆管理"]
C3_1["工作记忆(实时上下文)"]
C3_2["情景记忆(交互事件)"]
C3_3["语义记忆(长期知识)"]
C3_4["记忆整合与遗忘"]
end
subgraph CAP4["📖 知识库文档管理"]
C4_1["文档上传"]
C4_2["文档更新"]
C4_3["整库reindex"]
end
end
subgraph 知识基座["📚 知识基座 (Knowledge Foundation)"]
K1["行业案例目录<br/>(100+ 典型案例)"]
K2["产品文档库<br/>(平台文档)"]
K3["典型功能案例<br/>(各模块功能典型案例)"]
end
subgraph 外部系统["🌐 外部系统 (External Systems)"]
E1["低码平台"]
E2["LLM 大模型服务<br/>(DeepSeek v4 Pro)"]
E3["Embedding 服务<br/>(Qwen3-Embedding:8b)"]
end
U1 --> I1
U2 --> I1
U3 --> I2
I1 --> CAP1
I1 --> CAP2
I2 --> CAP4
CAP1 --> K1
CAP1 --> K2
CAP2 --> K2
CAP1 --> E2
CAP1 --> E1
CAP2 --> E2
CAP3 --> E2
CAP4 --> E3
style 用户层 fill:#E3F2FD,stroke:#1565C0,stroke-width:2px
style 交互层 fill:#FFF3E0,stroke:#E65100,stroke-width:2px
style 业务能力 fill:#E8F5E9,stroke:#2E7D32,stroke-width:2px
style CAP1 fill:#C8E6C9,stroke:#388E3C
style CAP2 fill:#DCEDC8,stroke:#558B2F
style CAP3 fill:#F1F8E9,stroke:#33691E
style 知识基座 fill:#F3E5F5,stroke:#6A1B9A,stroke-width:2px
style 外部系统 fill:#FFEBEE,stroke:#C62828,stroke-width:2px
核心流程
schema建模流程
agent最重要的能力是能够根据自然语言创建低代码应用。
比如用户说,帮我创建一个xx票据管理,agent应自动从案例中获取相关信息,智能生成元数据、视图、工作流等不同应用原件的schema。
如果没有相关案例,则需要根据不同原件的要求,询问用户以补充信息,直到能够出具schema雏形。比如询问页面字段(元数据),数据操作流程(工作流),数据创建流程(表单视图)等。
其大致流程如下:
flowchart LR
subgraph 输入["输入"]
A["用户自然语言描述<br/>业务需求"]
end
subgraph 处理["AI 处理流程"]
B["语义理解<br/>提取意图"]
C["案例目录<br/>匹配推荐"]
C["意图拆分<br/>多模块schema拆分"]
D["骨架 schema<br/>生成"]
E["schema后处理<br/>细节智能补全"]
F["Schema<br/>校验"]
G{校验通过?}
H["LLM<br/>自动修复"]
end
subgraph 输出["输出"]
I["各模块schema<br/>(元数据+视图+工作流)"]
end
A --> B --> C --> D --> E --> F --> G
G -- 是 --> I
G -- 否 --> H --> E
问答流程
知识问答也可以说是低码类平台agent必要功能。平台总配置项/能力往往以千计数,即便给到手册,用户也难以消化。
问答通用流程往往如下:
flowchart LR
subgraph 输入["输入"]
A["用户问题"]
end
subgraph 检索["知识检索"]
B["向量相似度搜索<br/>(文档库)"]
C["会话历史<br/>加载"]
end
subgraph 生成["回答生成"]
D["上下文组装<br/>(文档 + 历史 + 问题)"]
E["LLM 回答生成"]
end
subgraph 输出["输出"]
F["结构化回答<br/>+ 引用来源"]
G["对话历史<br/>持久化"]
end
A --> B
A --> C
B --> D
C --> D
D --> E --> F
E --> G
记忆整合
低码类平台agent往往需要多轮询问才能得到结果,其本质是需求不断澄清的过程,因此上下文记忆在agent设计中尤为重要。
flowchart TD
subgraph 触发["触发"]
A["会话结束 / 手动触发"]
end
subgraph 工作记忆["工作记忆"]
B["加载当前会话记忆条目"]
end
subgraph 整合["LLM 整合"]
C["生成会话摘要"]
D["提取关键主题"]
E["提取长期知识点"]
end
subgraph 存储["分层存储"]
F["情景记忆<br/>(事件 + 标签)"]
G["语义记忆<br/>(向量存储)"]
end
subgraph 清理["清理"]
H["清空已整合的工作记忆"]
end
A --> B --> C --> D
C --> F
D --> E --> G
E --> H
技术架构
系统分层
graph TB
subgraph 客户端["🖥️ 客户端层 (Client Layer)"]
CL1["前端"]
CL2["API 调用"]
end
subgraph 网关["🚪 接入层 (Gateway Layer)"]
GW["Fastify HTTP Server<br/>:3000"]
MW1["CORS 中间件"]
MW2["Bearer Token 认证<br/>"]
MW3["请求日志中间件"]
MW4["错误处理中间件"]
end
subgraph 路由["📡 路由层 (Route Layer)"]
R1["POST /api/generate"]
R2["POST /api/ask"]
R3["POST /api/rag/*"]
R4["/api/memory/*"]
R5["GET /health"]
end
subgraph 处理器["⚙️ 处理器层 (Handler Layer)"]
H1["generateHandler"]
H2["askHandler"]
H3["ragHandler"]
H4["memoryHandler"]
end
subgraph 链路["🔗 AI 链路层 (Chain Layer)"]
CH1["generateChain<br/>(骨架生成 → enrich → validate → repair)"]
CH2["askChain<br/>(RAG 检索 → 上下文组装 → LLM 生成)"]
end
subgraph 工具["🛠️ Agent 工具层 (Tool Layer)"]
T1["ToolRegistry<br/>工具注册中心"]
T2["rag_retrieval"]
T3["search_workflow_nodes"]
T4["get_metadata_detail"]
T5["validate_schema"]
T6["memory_add / search / stats"]
T7["跨系统调用(一般是平台)"]
end
subgraph 服务["🏗️ 服务层 (Service Layer)"]
S1["LLM Service<br/>(DeepSeek v4 Pro)"]
S2["VectorStore Service<br/>(ChromaDB)"]
S3["MetadataLoader<br/>(各类平台元数据)"]
S4["SchemaValidator<br/>(Zod Schema 校验)"]
end
subgraph 记忆["🧠 记忆系统 (Memory System)"]
MG["MemoryManager<br/>统一记忆管理器"]
MW_MEM["WorkingMemory<br/>工作记忆"]
ME["EpisodicMemory<br/>情景记忆"]
MS["SemanticMemory<br/>语义记忆"]
MC["Consolidator<br/>记忆整合器"]
MF["Strategies<br/>6 种遗忘策略"]
end
subgraph 数据["💾 数据层 (Data Layer)"]
DB1[("Redis 7<br/>会话 / 工作 / 情景记忆")]
DB2[("ChromaDB<br/>向量存储 / 语义记忆")]
DB3["docs/<br/>产品文档"]
end
subgraph 外部["🌐 外部服务 (External Services)"]
EXT1["DeepSeek v4 Pro API<br/>(OpenAI 兼容)"]
EXT2["Ollama<br/>Qwen3-Embedding:8b<br/>:11434"]
EXT3["平台 API<br/>"]
end
CL1 --> GW
CL2 --> GW
GW --> MW1 --> MW2 --> MW3 --> MW4
MW4 --> R1 & R2 & R3 & R4 & R5
R1 --> H1
R2 --> H2
R3 --> H3
R4 --> H4
H1 --> CH1
H2 --> CH2
CH1 --> T1
CH2 --> T1
T1 --> T2 & T3 & T4 & T5 & T6 & T7
CH1 --> S1 & S3 & S4
CH2 --> S1 & S2
T2 --> S2
T3 --> S3
T4 --> S3
H4 --> MG
MG --> MW_MEM & ME & MS
MC --> MW_MEM & ME & MS
MC --> MF
S1 --> EXT1
S2 --> DB2
S3 --> DB3
S3 --> EXT3
MW_MEM --> DB1
ME --> DB1
MS --> DB2
MS --> DB1
MC --> S1
MS --> EXT2
style 客户端 fill:#E3F2FD,stroke:#1565C0,stroke-width:2px
style 网关 fill:#FFF8E1,stroke:#F57F17,stroke-width:2px
style 路由 fill:#FFF3E0,stroke:#E65100,stroke-width:2px
style 处理器 fill:#FBE9E7,stroke:#BF360C,stroke-width:2px
style 链路 fill:#E8F5E9,stroke:#2E7D32,stroke-width:2px
style 工具 fill:#F1F8E9,stroke:#33691E,stroke-width:2px
style 服务 fill:#E0F2F1,stroke:#004D40,stroke-width:2px
style 记忆 fill:#F3E5F5,stroke:#6A1B9A,stroke-width:2px
style 数据 fill:#FCE4EC,stroke:#880E4F,stroke-width:2px
style 外部 fill:#FFEBEE,stroke:#C62828,stroke-width:2px
技术概览
graph LR
subgraph 语言["语言 & 运行时"]
L1["TypeScript 5.4+<br/>ESM Module"]
L2["Node.js 20+"]
end
subgraph 框架["Web 框架"]
F1["Fastify 4.28"]
end
subgraph AI["AI / LLM"]
A1["LangChain.js 1.4"]
A2["@langchain/openai"]
A3["DeepSeek v4 Pro"]
A4["Qwen3-Embedding:8b"]
end
subgraph 存储["存储"]
D1["Redis 7<br/>(ioredis)"]
D2["ChromaDB<br/>(chromadb client)"]
end
subgraph 验证["数据验证"]
V1["Zod"]
V2["JSON Schema"]
end
subgraph 工程["工程化"]
E1["Vitest 4.1"]
E2["ESLint"]
E3["Docker Compose"]
E4["tsc (TypeScript)"]
end
L1 --> L2 --> F1
F1 --> A1
A1 --> A2 --> A3
A1 --> A4
F1 --> D1
F1 --> D2
F1 --> V1
V1 --> V2
style 语言 fill:#E3F2FD,stroke:#1565C0,stroke-width:2px
style 框架 fill:#FFF3E0,stroke:#E65100,stroke-width:2px
style AI fill:#E8F5E9,stroke:#2E7D32,stroke-width:2px
style 存储 fill:#FCE4EC,stroke:#880E4F,stroke-width:2px
style 验证 fill:#F3E5F5,stroke:#6A1B9A,stroke-width:2px
style 工程 fill:#E0F2F1,stroke:#004D40,stroke-width:2px
部署架构
graph TB
subgraph docker["🐳 Docker Compose 部署"]
direction TB
subgraph app["Application"]
APP["Node.js 进程<br/>Fastify "]
end
subgraph infra["Infrastructure"]
REDIS[("Redis 7<br/><br/>AOF 持久化")]
CHROMA[("ChromaDB<br/>")]
OLLAMA["Ollama<br/><br/>(可选,本地部署)"]
end
subgraph volumes["持久化卷"]
V1["data/redis/"]
V2["data/chroma/"]
V3["data/ollama/"]
end
end
subgraph external["外部服务"]
EXT_LLM["DeepSeek API<br/>(云端)"]
end
APP -->|"ioredis"| REDIS
APP -->|"HTTP"| CHROMA
APP -->|"HTTP"| EXT_LLM
APP -.->|"HTTP(可选,不推荐)"| OLLAMA
REDIS --> V1
CHROMA --> V2
OLLAMA --> V3
style docker fill:#E3F2FD,stroke:#1565C0,stroke-width:2px
style app fill:#FFF3E0,stroke:#E65100,stroke-width:2px
style infra fill:#E8F5E9,stroke:#2E7D32,stroke-width:2px
style volumes fill:#FCE4EC,stroke:#880E4F,stroke-width:2px
style external fill:#FFEBEE,stroke:#C62828,stroke-width:2px