2026-09-05 17:09:21 +08:00
|
|
|
|
# 四 Agent 数据库底座 · 架构总览(可读版)
|
|
|
|
|
|
|
|
|
|
|
|
> 写给:项目经理、产品、刚接手的开发
|
|
|
|
|
|
> 目的:说明 **四个 Agent 并行开发时,数据存哪儿、谁写谁读、为什么要分 L0~L3 画像**
|
|
|
|
|
|
> 技术细节(建表 SQL、Redis Key)见同目录其他文件。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## ⭐ 要先搭底座?看这一份
|
|
|
|
|
|
|
|
|
|
|
|
**按「多 Agent 一起用」划分的完整清单(含 16 表 × 4 Agent 矩阵):**
|
|
|
|
|
|
👉 **[05-多Agent共用底座清单.md](./05-多Agent共用底座清单.md)**
|
|
|
|
|
|
|
|
|
|
|
|
| 你要建的 | 包含什么 | SQL |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| **共用底座(先建)** | MySQL **11 张** + Redis 会话/画像 + Milvus 产品库 + Neo4j | [01-mysql-共用底座.sql](./01-mysql-共用底座.sql) |
|
|
|
|
|
|
| **各 Agent 专用(后建)** | MySQL **5 张** | [02-mysql-agent专用.sql](./02-mysql-agent专用.sql) |
|
|
|
|
|
|
| **技术栈与版本** | 组件版本、Windows 原生部署 | [01-技术栈与版本.md](../../技术选型和版本/01-技术栈与版本.md) |
|
2026-09-05 17:39:16 +08:00
|
|
|
|
| **业务记忆管理** | 短期/长期记忆、Redis vs SQL vs 图 vs 向量 | [业务记忆管理手册.md](../../业务记忆管理/业务记忆管理手册.md) |
|
2026-09-05 17:09:21 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 先读这一页:这份文档在讲什么?
|
|
|
|
|
|
|
|
|
|
|
|
我们要做 4 个智能助手(Agent),服务 4 类人:
|
|
|
|
|
|
|
|
|
|
|
|
| Agent | 给谁用 | 干什么(一句话) |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| **客户财富** | 买理财的客户 | 查持仓、看产品规则、亏多了提醒一下 |
|
|
|
|
|
|
| **代理人助手** | 一线理财经理 | 查客户情况、查产品规则、帮忙起草合规话术 |
|
|
|
|
|
|
| **数据分析** | 公司内部同事 | 用大白话问数据,系统查库后用普通话回答 |
|
|
|
|
|
|
| **风控监测** | 风控专员 | 大额/异常交易预警,买不匹配的产品要拦住 |
|
|
|
|
|
|
|
|
|
|
|
|
**四个 Agent 不互相「打电话」问 AI**,而是 **往同一套数据库里读写**。
|
|
|
|
|
|
这样四个组可以 **同时开发**,只要事先约定好 **哪张表谁写、谁只能读**。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 五种「仓库」分别是干什么的?
|
|
|
|
|
|
|
|
|
|
|
|
可以把它想成 **五种不同用途的仓库**:
|
|
|
|
|
|
|
|
|
|
|
|
| 仓库 | 技术名 | 通俗理解 | 里面主要放什么 | 丢了会怎样 |
|
|
|
|
|
|
| --- | --- | --- | --- | --- |
|
|
|
|
|
|
| **短期记事本** | Redis | 对话时临时用的草稿纸 | 最近几轮聊天、刚查过的客户画像副本 | 丢了可以从 MySQL 恢复,只是慢一点 |
|
|
|
|
|
|
| **正式档案柜** | MySQL | 必须长期保存、能审计的记录 | 聊天记录归档、客户画像、预警单、合规审计 | **不能丢**,监管和纠纷都要查 |
|
|
|
|
|
|
| **产品说明书索引** | Milvus | 按意思搜文档(向量检索) | 基金产品手册、交易规则、内部办事流程 | 更新了重新导入即可 |
|
|
|
|
|
|
| **关系图谱** | Neo4j | 「谁持有啥、谁管谁」的关系图 | 客户↔产品↔持仓、客户↔代理人、产品风险等级 | 从原有业务系统同步重建 |
|
2026-09-07 11:15:30 +08:00
|
|
|
|
| **原有业务系统** | Core(只读) | 公司本来就有的一套账 | 真实持仓、流水、正式 KYC、C1~C5、C×R 矩阵 | Agent **不复制一份**,只读 |
|
2026-09-05 17:09:21 +08:00
|
|
|
|
|
|
|
|
|
|
**记忆分层(和 Agent 文档里的说法对应)**
|
|
|
|
|
|
|
|
|
|
|
|
- **Redis** = 短期记忆(聊完这一阵可能就不用了)
|
|
|
|
|
|
- **MySQL** = 权威记忆(落库、可审计、跨 Agent 共享)
|
|
|
|
|
|
- **Milvus** = 知识库记忆(产品/制度文档,语义搜索)
|
|
|
|
|
|
- **Neo4j** = 关系记忆(客户-产品-代理人之间的网)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 用户画像:L0 / L1 / L2 / L3 是什么意思?
|
|
|
|
|
|
|
|
|
|
|
|
### 一句话
|
|
|
|
|
|
|
|
|
|
|
|
**同一位客户,档案分四层;每层由不同的人/系统填写,给别人用,但谁也不能替官方改「正式风险等级」。**
|
|
|
|
|
|
|
|
|
|
|
|
### 用「客户档案袋」来理解
|
|
|
|
|
|
|
|
|
|
|
|
想象一个客户档案袋,里面有 4 个插槽:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
┌─────────────────────────────────────────────────────────────┐
|
|
|
|
|
|
│ L0 · 官方底稿(原有业务系统,Agent 只读,不能改) │
|
|
|
|
|
|
│ 姓名、年龄、职业、正式风险等级 C1~C5、真实资产规模 │
|
|
|
|
|
|
├─────────────────────────────────────────────────────────────┤
|
|
|
|
|
|
│ L1 · 客户自己聊出来的(客户财富 Agent 写入) │
|
|
|
|
|
|
│ 投资风格、资金规划比例、亏损多少要提醒、平时关注什么 │
|
|
|
|
|
|
├─────────────────────────────────────────────────────────────┤
|
|
|
|
|
|
│ L2 · 代理人服务记录的(代理人助手 Agent 写入) │
|
|
|
|
|
|
│ 沟通诉求、待跟进事项、资产概况摘要、「最近在问赎回」等服务标签 │
|
|
|
|
|
|
├─────────────────────────────────────────────────────────────┤
|
|
|
|
|
|
│ L3 · 风控监测结论(风控监测 Agent 写入) │
|
|
|
|
|
|
│ 正常 / 关注 / 高风险、监测评分、名单命中待复核等(不改 L0 等级) │
|
|
|
|
|
|
└─────────────────────────────────────────────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 为什么要分 L1 / L2 / L3,不合成一张表?
|
|
|
|
|
|
|
|
|
|
|
|
| 层级 | 谁产生这些信息 | 为什么要单独一层 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| **L0** | 开户、测评、交易系统 | **法律效力最强**:正式能不能买高风险产品,以它为准 |
|
|
|
|
|
|
| **L1** | 客户和「客户 Agent」聊天、做问卷 | 客户 **自己表达** 的偏好和规划;代理人、风控可以 **参考**,但不能当成官方测评 |
|
|
|
|
|
|
| **L2** | 代理人和「代理人 Agent」服务客户 | **服务过程** 里才知道的诉求;客户本人 **看不到** 这层(隐私和服务记录) |
|
|
|
|
|
|
| **L3** | 风控系统监测 | **风险视角** 的标签;只用于监测和统计, **不会自动改** L0 的正式等级 |
|
|
|
|
|
|
|
|
|
|
|
|
**如果合成一张表会怎样?**
|
|
|
|
|
|
|
|
|
|
|
|
- 客户说「我比较激进」和正式测评 C1 保守 **混在一起**,容易误当成可以买高风险产品 → 合规风险
|
|
|
|
|
|
- 代理人写的「客户想赎回」和客户自己填的「投资规划」 **权限不同**,客户不应看到服务侧备注
|
|
|
|
|
|
- 风控的「重点关注」 **不能反写** 进官方测评记录
|
|
|
|
|
|
|
|
|
|
|
|
所以:**三层 enrich(L1/L2/L3)+ 一层官方底稿(L0)**,各写各的、各读各的(在权限范围内)。
|
|
|
|
|
|
|
|
|
|
|
|
### 谁读谁写(不用记表名,记关系就行)
|
|
|
|
|
|
|
|
|
|
|
|
| 层级 | 谁写入 | 谁读取 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| L0 | 原有系统(Agent 不写) | 四个 Agent 都只读 |
|
|
|
|
|
|
| L1 | 客户财富 Agent | 客户本人、代理人、风控、数据分析 |
|
|
|
|
|
|
| L2 | 代理人助手 Agent | 代理人、风控、数据分析(客户不看) |
|
|
|
|
|
|
| L3 | 风控监测 Agent | 风控、代理人(只看)、数据分析 |
|
|
|
|
|
|
|
2026-09-07 11:15:30 +08:00
|
|
|
|
对应 MySQL 表名(给开发对照):`customer_profile_l1` / `l2` / `l3`
|
|
|
|
|
|
**详细 JSON 约定与 L0 边界:** [06-用户画像L1-L3设计.md](./06-用户画像L1-L3设计.md)
|
2026-09-05 17:09:21 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 系统长什么样?(一张图)
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
客户 Agent 代理人 Agent 数据分析 Agent 风控 Agent
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
└──────────────┴──────┬───────┴──────────────┘
|
|
|
|
|
|
│
|
|
|
|
|
|
平台公共能力(登录、权限、审计)
|
|
|
|
|
|
│
|
|
|
|
|
|
┌──────────┬───────────────┼───────────────┬──────────┐
|
|
|
|
|
|
▼ ▼ ▼ ▼ ▼
|
|
|
|
|
|
Redis MySQL Milvus Neo4j 原有业务系统
|
|
|
|
|
|
临时聊天 正式档案 搜产品文档 关系图谱 真实持仓/测评
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## MySQL 16 张表:每张表 **干什么**(无编号版)
|
|
|
|
|
|
|
|
|
|
|
|
> **共用 vs 专用** 的完整矩阵见 [05-多Agent共用底座清单.md](./05-多Agent共用底座清单.md) 第九节。
|
|
|
|
|
|
|
|
|
|
|
|
### 一、四个 Agent 共用的「基础设施」(6 张)🔴 底座第一批
|
|
|
|
|
|
|
|
|
|
|
|
| 表名 | 干什么 | 举例 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| `agent_session` | 记录一次对话会话 | 「张三月 5 日下午 3 点开了客户 Agent」 |
|
|
|
|
|
|
| `agent_message` | 保存每条聊天内容 | 客户问了什么、Agent 答了什么 |
|
|
|
|
|
|
| `agent_tool_call` | 记录 Agent 调用了哪些查数接口 | 查持仓、查产品规则 |
|
|
|
|
|
|
| `audit_log` | **合规审计总账**(只增不改不删) | 出问题时追溯「谁、何时、依据什么」 |
|
|
|
|
|
|
| `input_guard_log` | 拦截恶意输入、注入攻击 | 有人试图让 Agent 越权查别人数据 |
|
|
|
|
|
|
| `customer_advisor_rel` | 这个客户归哪个代理人管 | 代理人 A 只能看自己名下客户 |
|
|
|
|
|
|
|
|
|
|
|
|
### 二、跨 Agent 交换:用户画像(3 张)🟡 底座第二批
|
|
|
|
|
|
|
|
|
|
|
|
| 表名 | 对应层级 | 干什么 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| `customer_profile_l1` | L1 | 风格标签、资金规划、亏损提醒阈值、行为偏好 |
|
|
|
|
|
|
| `customer_profile_l2` | L2 | 资产概况快照、沟通诉求、待办、服务标签 |
|
|
|
|
|
|
| `customer_profile_l3` | L3 | 监测分层(正常/关注/高风险)、监测评分 |
|
|
|
|
|
|
|
|
|
|
|
|
### 三、跨 Agent 交换:风控产出(2 张,也在底座第二批)🟡
|
|
|
|
|
|
|
|
|
|
|
|
| 表名 | 谁写 | 谁读 | 干什么 |
|
|
|
|
|
|
| --- | --- | --- | --- |
|
|
|
|
|
|
| `risk_alert` | 风控 Agent | 分析 Agent、风控专员 | 预警单(待人工审核) |
|
|
|
|
|
|
| `risk_suitability_log` | 风控 Agent | 客户、代理人 Agent | 买的产品是否匹配、可否拦截 |
|
|
|
|
|
|
|
|
|
|
|
|
### 四、各 Agent 专用(5 张)⚪ 各组自建,不算公共底座
|
|
|
|
|
|
|
|
|
|
|
|
| 表名 | 哪个 Agent | 干什么 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| `customer_threshold_config` | 客户 | 亏损阈值配置 |
|
|
|
|
|
|
| `customer_notify_log` | 客户 | 提醒留痕 |
|
|
|
|
|
|
| `advisor_draft` | 代理人 | 话术/跟进草稿 |
|
|
|
|
|
|
| `compliance_hit_log` | 代理人 | 违规话术检测 |
|
|
|
|
|
|
| `analytics_query_log` | 分析 | 查数 SQL 留痕 |
|
|
|
|
|
|
|
2026-09-07 11:15:30 +08:00
|
|
|
|
> 完整 DDL 见 [01-mysql-共用底座.sql](./01-mysql-共用底座.sql) + [02-mysql-agent专用.sql](./02-mysql-agent专用.sql)
|
|
|
|
|
|
> 适当性 log 字段契约:[07-risk_suitability_log说明.md](./07-risk_suitability_log说明.md)
|
2026-09-05 17:09:21 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 四个 Agent 各自管哪块数据?
|
|
|
|
|
|
|
|
|
|
|
|
| Agent | 主要负责 **写入** | 主要 **读取** 别人的什么 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| **客户财富** | L1 画像、亏损阈值、提醒记录 | 原有系统持仓;风控的适当性结论(只读) |
|
|
|
|
|
|
| **代理人助手** | L2 画像、话术草稿、违规记录 | L1 画像(了解客户偏好);产品文档(Milvus) |
|
|
|
|
|
|
| **数据分析** | 查数日志 | L1/L2/L3 做统计;预警单做「还有多少条没处理」 |
|
|
|
|
|
|
| **风控监测** | L3 画像、预警单、适当性记录 | L1/L2 辅助判断;原有系统交易流水 |
|
|
|
|
|
|
| **平台** | 会话、审计、权限关系 | — |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 三条最常见的业务流程
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 客户和 Agent 聊天
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
客户说话
|
|
|
|
|
|
→ Redis 记住最近几轮(聊完可过期)
|
|
|
|
|
|
→ MySQL 永久保存聊天记录 + 审计
|
|
|
|
|
|
→ 若问产品规则 → 去 Milvus 搜官方文档,回答必须能溯源
|
|
|
|
|
|
→ 若问持仓 → 去原有系统查真实数据(金额以原系统为准)
|
|
|
|
|
|
→ 若客户说了偏好/设了阈值 → 更新 L1 画像
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 代理人服务客户前「做功课」
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
代理人输入客户 ID
|
|
|
|
|
|
→ 读 L1(客户自己侧的偏好)
|
|
|
|
|
|
→ 读 L2(之前服务记录,没有就新建)
|
|
|
|
|
|
→ 读原有系统持仓 + Neo4j 看持有哪些产品
|
|
|
|
|
|
→ 生成话术草稿 → 存 advisor_draft → 代理人改完、审核后才能发给客户
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 风控发现大额交易
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
原有系统传来一笔交易
|
|
|
|
|
|
→ 风控 Agent 判断是否触发规则(如单笔 ≥50 万)
|
|
|
|
|
|
→ MySQL 生成预警单,状态 =「待人工审核」
|
|
|
|
|
|
→ Redis 推一条消息给风控工作台(实时弹窗)
|
|
|
|
|
|
→ 数据分析 Agent 可以统计「还有多少条没审」,但不能替风控审
|
|
|
|
|
|
→ 风控专员在系统里人工处理,改预警状态
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 搭建底座 vs 开发 Agent(两回事)
|
|
|
|
|
|
|
|
|
|
|
|
| | 搭建共用底座 | 四个 Agent 并行开发 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| **目标** | 把多 Agent 要一起用的表/缓存/向量库建好 | 各组写自己的 Agent 逻辑 |
|
|
|
|
|
|
| **谁做** | 平台组统一做 | 客户/代理人/分析/风控 四组 |
|
|
|
|
|
|
| **建什么** | MySQL 11 张 + Redis + Milvus(产品) + Neo4j | 各自专用 5 张表 + 业务代码 |
|
|
|
|
|
|
| **详细清单** | [05-多Agent共用底座清单.md](./05-多Agent共用底座清单.md) | 同上第五节「专用」 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 必须遵守的 6 条规矩(合规)
|
|
|
|
|
|
|
|
|
|
|
|
1. **审计日志只能追加,不能删改。**
|
|
|
|
|
|
2. **正式风险等级 C1~C5 只有原有测评系统能改**;L1/L2/L3 都不能覆盖它。
|
|
|
|
|
|
3. **全系统只有「买的产品和风险等级不匹配」这一种情况可以拦截购买**;其他 Agent 不能冻户、不能拦交易。
|
|
|
|
|
|
4. **代理人 Agent 生成的话术,不能直接发给客户**,必须人工审核。
|
|
|
|
|
|
5. **数据分析只能查数(SELECT),不能改业务数据。**
|
|
|
|
|
|
6. **Redis 里的可以丢;MySQL 里的是准的。**
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 附录:需求编号对照(给开发追溯用)
|
|
|
|
|
|
|
|
|
|
|
|
阅读正文 **不需要** 记这些编号;联调需求文档时用。
|
|
|
|
|
|
|
|
|
|
|
|
| 编号 | 业务含义 |
|
|
|
|
|
|
| --- | --- |
|
|
|
|
|
|
| F-01 | 登录权限、代理人只能看名下客户 |
|
|
|
|
|
|
| F-02 | 所有对话和操作可审计 |
|
|
|
|
|
|
| F-03 | 输入安全、防注入 |
|
|
|
|
|
|
| F-04 | Agent 只读业务账,不改账 |
|
|
|
|
|
|
| C-01~C-05 | 客户 P0:持仓、产品、规则、阈值提醒、行情 |
|
|
|
|
|
|
| C-07/C-08 | 客户 P1:风格测评、资金规划 |
|
|
|
|
|
|
| A-01~A-07 | 代理人:客户概况、规则答疑、话术草稿、合规检测等 |
|
|
|
|
|
|
| D-01~D-04 | 数据分析:人话查数、SQL 留痕 |
|
|
|
|
|
|
| R-01~R-03 | 风控 P0:大额预警、适当性拦截、反洗钱名单 |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 其他文件去哪看?
|
|
|
|
|
|
|
|
|
|
|
|
| 文件 | 什么时候看 |
|
|
|
|
|
|
| --- | --- |
|
|
|
|
|
|
| **[05-多Agent共用底座清单.md](./05-多Agent共用底座清单.md)** | **先搭底座:哪些表多 Agent 共用** |
|
|
|
|
|
|
| [01-mysql-共用底座.sql](./01-mysql-共用底座.sql) | 执行建库:共用 11 张 |
|
|
|
|
|
|
| [02-mysql-agent专用.sql](./02-mysql-agent专用.sql) | 各 Agent 专用 5 张 |
|
2026-09-07 11:15:30 +08:00
|
|
|
|
| [06-用户画像L1-L3设计.md](./06-用户画像L1-L3设计.md) | L0/L1/L2/L3 边界、JSON schema、适当性分工 |
|
|
|
|
|
|
| [07-risk_suitability_log说明.md](./07-risk_suitability_log说明.md) | R-02 落库字段契约 |
|
2026-09-05 17:09:21 +08:00
|
|
|
|
| [02-redis-keys.md](./02-redis-keys.md) | 做会话缓存、画像缓存 |
|
|
|
|
|
|
| [03-milvus-collections.md](./03-milvus-collections.md) | 做产品/制度文档检索 |
|
|
|
|
|
|
| [04-neo4j-model.md](./04-neo4j-model.md) | 做持仓关系、适当性关系查询 |
|
|
|
|
|
|
| `docs/需求拆解/` | 完整业务场景与合规细则 |
|