🤖 智能多维画像推荐 Agent 系统 - 开发笔记&项目文档 01
版本: V3.0.0 状态: 开发中 开发者: 尘小风
0 写在前面的话
最近正在学习Agent开发,大半夜突然灵机一动,想做一个智能推荐系统,来给用户去智能的推荐商品/视频/文章等等的Agent系统。
最初的构想是:
-
对于B端
对B端(企业端)来说,可以直接按照我们规定的接口输入格式,进行用户画像信息的输入,然后Agent会自动分析用户画像,结合用户的需求,为他生成合适的商品关键词(电商场景下)/视频关键词(社交场景下) 然后需要一个爬虫工具,能够根据关键词去指定电商平台(当然如果是toB场景,那就直接接入自己的内部平台就完了,都不需要爬虫了)获取商品或者视频网站获取视频链接,最好是带一些关键信息,比如商品/视频的简介,商品的价格,视频的时长等,作为最终的返回数据提供给用户,给用户提供更加精准的推荐服务
-
对于C端
对于C端来说,是没有办法拿到用户的画像的,所以可以加一个入口,让用户进来先回答预设的问题,从而建立多维度的用户画像,从而完成后续的步骤,最后输出上,不仅可以推荐商品/视频,还可以告诉用户他的用户画像属性(类似什么MBTI性格测试之类的,也有一定的趣味性)
经过了三轮迭代,目前的开发进展如下,欢迎各位大佬给出更多的功能、实现上的建议。
1. 项目概览
多维画像推荐 Agent 系统 是一个基于人工智能 Agent 架构的垂直领域推荐平台。该系统不依赖传统的协同过滤算法,而是通过 LLM(大语言模型)深度理解用户的自然语言回答,构建具有“人格化”特征的用户画像。
当用户发起搜索请求时,系统会结合用户画像进行意图分析,利用 RPA 技术实时抓取全网数据(电商/视频平台),并通过多个环节进行筛选、过滤和排序,最终为用户提供高度定制化的消费与娱乐方案。系统还具备“自进化”能力,能根据用户的反馈和搜索结果的质量自动修正用户画像。
2. 核心功能
- 多维画像构建:通过生活形态问卷,利用 AI 分析用户的购买力、价格敏感度、审美风格、科技敏感度、性格关键词等深层特征。
- 智能意图识别:在搜索时,AI 不是简单匹配关键词,而是结合用户画像将自然语言转化为精准的搜索关键词组合(Intent Analysis)。
- 全网实时聚合:集成 Selenium 自动化爬虫,支持 苏宁易购(商品) 和 Bilibili(视频) 两个维度的实时数据抓取。
- 智能漏斗筛选:通过 Filter 模块对海量爬取结果进行“硬性过滤”(价格/时长)和“相关性打分”,只保留最匹配的结果。
- 画像自进化 (Self-Evolution):
- 被动进化:当搜索结果被大量剔除(Filter Failure)时,系统自动反思画像是否过于严苛并进行修正。
- 主动进化:当用户对推荐结果给予“踩”的反馈时,系统自动推断用户不满的原因并调整画像参数。
- 异步高性能架构:采用 RabbitMQ 进行任务解耦,Redis 实现分布式锁与结果缓存,SSE(Server-Sent Events)实现流式结果推送。
3. 项目亮点
- 🧠协同架构:系统不是单一的 LLM 调用,而是拆分为 Profile、Intent、Filter、Optimization四个独立的节点协同工作。
- 🔄闭环反馈机制:实现了“感知-决策-行动-反馈”的完整闭环。用户的每一次搜索失败或负面反馈,都会成为系统自我优化的养分。
- 🛡️双重兜底策略:前端实现了 SSE 流式推送 + 主动轮询(Polling)的双重机制,确保在网络不稳定或 SSE 连接断开时也能获取结果。
- ⚡高并发防护:
- Redis 分布式锁:防止对同一关键词的重复爬取,解决缓存击穿问题。
- Redis 缓存:热门搜索结果缓存 1 小时,秒级响应。
- 🎨沉浸式前端体验:基于 Framer Motion 的流畅动画,科技感十足的 UI 设计,支持红点消息通知和历史回溯。
4. Agent 架构与功能详解
系统核心由 IntelligentAgentService 驱动,包含以下四个主要部分:
4.1. 画像生成 (Profile Generator)
- 输入:用户提交的问卷答案(23道题,涵盖基础、消费、审美、科技、生活、娱乐)。
- 处理:分析用户回答的字面和隐含意义。
- 输出:结构化的 JSON 画像,包含
buyingPower(购买力),priceSensitivity(价格敏感度),aestheticStyle(审美),summary(人格化总结) 等。
4.2. 意图分析 (Intent Analyzer)
- 输入:用户当前的搜索词(如“想买个手机”) + 用户的完整画像。
- 处理:判断用户真实意图,结合画像特征(如“喜欢国货”、“参数党”)生成具体的搜索关键词。
- 思维链:需求分析 -> 相关性过滤 -> 关键词生成(核心词+修饰词)。
- 输出:
SearchIntent(关键词列表)。
4.3. 结果筛选 (Filter & Selector)
- 输入:爬虫抓取的原始数据列表 + 用户限制条件 + 搜索关键词。
- 处理:
- 硬性过滤:剔除不符合时长/价格限制的项。
- 相关性打分:LLM 对每个候选项打分 (0-100),剔除低于阈值(默认30分)的项。
- 数量控制:截取 Top N 结果。
- 特殊机制:如果剔除率超过阈值(如50%),会触发 “Filter Failure Log”,进而唤醒优化 Agent。
4.4. 反思与修正 (Optimization)
- 触发条件:
- 搜索失败:Filter 剔除了绝大多数结果。
- 负面反馈:用户对推荐结果点击了“踩”(Dislike >= 2次)。
- 处理:对比“旧画像”和“失败原因/不喜欢的内容”,逻辑推断画像的偏差并进行修正。
- 输出:更新数据库中的 User Profile,并记录进化日志。
5. 技术架构
5.1 技术栈
- 前端:React 18, Vite, Tailwind CSS, Framer Motion, Lucide React (Icons).
- 后端:Spring Boot 3.x, Spring AI (接入 DeepSeek API), Spring Security (JWT).
- 数据存储:MySQL 8.0 (持久化), Redis (缓存/锁).
- 消息队列:RabbitMQ (异步任务解耦).
- 工具:Selenium WebDriver (Headless Chrome 爬虫).
5.2 数据流转图

5.3 数据库设计 (DomainModels)
- users: 用户基础表 (username, password).
- user_profiles: 用户画像表(存储 JSON 结构的画像数据,支持版本回溯).
- search_histories: 搜索历史表 (Query, Keywords, ResultJSON, isRead).
- agent_action_logs: Agent 行为日志表(记录画像生成、修正、推荐等关键动作).
6. API 文档
基础路径: http://localhost:8080/api/v2
6.1 认证模块
| 方法 | 路径 | 描述 | 参数 |
|---|---|---|---|
| POST | /auth/register | 用户注册 | {username, password} |
| POST | /auth/login | 用户登录 | {username, password} |
6.2 问卷与画像
| 方法 | 路径 | 描述 | 参数 |
|---|---|---|---|
| GET | /questionnaire | 获取问卷题目 | 无 |
| POST | /questionnaire/submit | 提交问卷并生成画像 | {userId, answers: [...]} |
| GET | /user/profiles | 获取用户画像历史 | ?userId=xxx |
6.3 推荐与任务
| 方法 | 路径 | 描述 | 关键参数 |
|---|---|---|---|
| POST | /recommend | 发起推荐请求(异步) | userId, query, type (COMMODITY/VIDEO) |
| GET | /stream/{taskId} | SSE 任务进度监听 | taskId |
| GET | /user/history | 获取搜索历史 | userId |
6.4 反馈与通知
| 方法 | 路径 | 描述 | 参数 |
|---|---|---|---|
| POST | /feedback/dislike | 提交负面反馈(触发修正) | userId, [dislikedItems] |
| GET | /user/unread-count | 获取未读消息数 | userId |
| POST | /user/mark-read | 标记所有消息已读 | userId |
7. 前端功能描述
7.1 欢迎与认证 (Welcome & Auth)
- 功能:登录/注册页,支持 JWT Token 本地存储。
- 视觉:动态背景,渐变文字,使用 Framer Motion 实现入场动画。
- 逻辑:首次登录用户会被自动引导至问卷流程,老用户直接进入主页。

7.2 生活形态评测 (Questionnaire)
- 功能:23 道单选题,涵盖生活方方面面。
- 视觉:顶部带有动态进度条,题目切换流畅。
- 交互:点击选项自动跳转下一题,支持“退出重测”。

7.3 全息画像展示 (Profile View)
- 功能:展示 AI 生成的“数字替身”。
- 核心板块:
- AI 总结:一句话描述用户特征(如“注重性价比的实用主义者”)。
- 维度标签:科技感、购买力、价格敏感度、审美风格的可视化标签。
- 交互:点击“开启智能推荐”进入搜索页。

7.4 智能推荐中心 (Recommend View)
- 功能:核心交互界面。
- 双模式切换:电商搜索(苏宁) / 视频搜索(B站)。
- 状态反馈:加载中显示 Loading 动画与实时状态文本(“AI 正在分析意图...”、“Agent 正在筛选...”)。
- 结果卡片:展示标题、描述、价格/时长、来源。
- 即时反馈:每张卡片右下角有👍 / 👎 按钮。点击不喜欢会静默触发后台 Agent 修正画像。
- 亮点:若有新结果推送(SSE/Polling),顶部会弹出 Toast 提示用户查看。


7.5 个人数字档案 (Dashboard)
- 功能:查看历史记录。
- 推荐历史:查看之前的搜索词、AI 生成的关键词以及当时的推荐结果。未读记录会有红点标记。
- 画像迭代记录:查看画像随时间变化的轨迹(版本控制),直观感受 AI 对用户认知的不断修正过程。


8 目前构想的后续开发动作
-
画像生成:分层画像 + 版本管理
-
把用户画像拆分为静态标签(如答题得出的知识水平、领域偏好)和动态标签(如历史检索需求、结果满意度),静态标签稳定更新,动态标签由优化节点实时调整。
-
给画像添加版本号,每次优化后生成新的画像版本,方便回溯:当调整后效果变差时,可快速回滚到上一版有效画像。
-
关键词提炼:双向反馈 + 多维度关键词生成
-
建立关键词与画像标签的映射关系(如 “知识水平低”→关键词:回复更基础、更具体;“领域偏好强”→关键词:更垂直),让关键词生成更精准。
-
接收筛选节点的反馈:若剔除结果过多,自动扩展关键词的同义词 / 相关词;若结果冗余,收缩关键词范围,减少无效检索。
-
筛选节点:多维度筛选规则 + 阈值自适应
-
除了结合用户需求和画像,可增加结果相关性评分(如与关键词的匹配度)、结果质量评分(如权威度、时效性)等维度,综合排序筛选,避免单一规则导致的过度剔除。
-
由协调节点根据历史筛选效果,自适应调整 “剔除阈值”:比如某类需求下剔除率过高,自动降低剔除严格度。
-
自动优化:量化优化目标 + A/B 测试机制
-
避免模糊调整:设定量化指标,如 “筛选结果留存率≥60%”“用户满意度≥80%”,优化节点根据指标偏差调整画像或关键词,而非凭经验调整。
-
引入 A/B 测试:对同一用户,并行生成两个版本的画像 / 关键词,分别推送筛选结果,根据用户反馈选择更优的版本,提升优化的准确性。

