diff --git a/README.md b/README.md index b2bc161..e663f70 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,14 @@ +# 时伴 SmartMate + +> 越用越懂你的成长型 AI 排程伙伴 · 面向大学生的陪伴式日程管理平台 + # 1 项目概览 ## 1.1 总体介绍 -专门面向大学生/高执行力人群设计的日程平台,并且接入对话式AI,实现了AI的功能调用,实现在和AI对话的过程中灵活编排日程。 +时伴(SmartMate)是面向大学生的 AI 排程伙伴。通过自然语言对话管理课表与任务,更能在一次次交流中记住你的习惯、偏好和生活节奏——**越用越懂你,越排越贴心。** -除了大规模编排任务的场景,本项目还包括日程提醒、AI驱动的"小事随口记"等功能,做到:**一个平台,包揽生活大小事。** +核心能力包括:大规模智能排程、基于课表的任务编排、AI 驱动的"小事随口记",以及跨会话的长期记忆积累——做到:**一个伙伴,包揽生活大小事。** 本项目采用前后端分离设计,并且有一个**完整的工业化设计链路**:写功能-墨刀画页面-根据页面写接口-写后端-写前端(AI)。 @@ -40,6 +44,10 @@ 当你在空闲时(做完你的大主线之后),亦或是休息时间打开本项目,一眼就能看到这几个队列的事情,然后你就可以看心情选择做哪个,然后做完之后一划就完事。 +> **问题5:** 每次打开 AI 助手,都要重新告诉它"我周三有课"、"我更喜欢早上学数学"。传统工具对你没有记忆,每次都从零开始,永远是个陌生人。 + +**本项目带来的解决方案5:** 时伴内置长期记忆系统,会在对话中自动抽取并积累关于你的事实与偏好(课程、习惯、目标等)。下次对话时自动召回相关记忆注入上下文,跨会话延续对你的了解,且支持全链路优雅降级——记忆检索失败不阻断正常对话。 + ## 1.3 项目实现的功能 1. **对用户目前时间尺度的适应。** @@ -70,6 +78,8 @@ 至于后者,由于后者为动态任务,所以用户需要手动去"最近已完成任务"的清单里面选择该任务然后恢复,此时任务会自动回到未安排状态。目前暂不支持课程的撤回,课程方面的改动目前仅支持删除,其它操作后续考虑开发。 +10. **长期记忆积累。** 系统在对话中自动抽取用户相关事实与偏好,跨会话召回并注入对话上下文,实现"越用越懂你"的个性化体验。支持结构化检索 + 向量召回双路召回,全链路优雅降级。 + # 2 产品逻辑与设计 ## 2.1 业务流程图 @@ -268,7 +278,7 @@ CREATE TABLE `users` ## 5.1 技术栈 -| **分类** | **选用技术** | **在 SmartFlow-Agent 中的应用场景** | +| **分类** | **选用技术** | **在时伴中的应用场景** | | ----------------- | ---------------- | ------------------------------------------------------------ | | **Web 框架** | **Gin** | 负责全站 API 的路由分发,处理任务增删改查及智能排程的请求。 | | **持久层数据库** | **MySQL 8.0** | 存储用户、任务、课表及日程运行图(Schedules)的核心数据。 | @@ -541,8 +551,41 @@ flowchart TD T --> Z ``` +## 5.5 长期记忆系统 + +时伴的长期记忆系统采用**同步读 + 异步写**架构,确保对话体验不被记忆写入拖慢。 + +### 写路径(异步) + +``` +用户消息 → 聊天落库(同事务写 Outbox) → Kafka 投递 memory.extract.requested 事件 +→ 幂等入队 memory_jobs → Worker 抢占执行 → LLM 抽取事实 +→ 去重决策(ADD/UPDATE/DELETE/NONE) + UUID 映射防幻觉 → 持久化 memory_items +``` + +关键设计: + +1. **Outbox 保证不丢消息**:聊天持久化与事件投递在同一事务内,失败整体回滚,由 Outbox 重试。 +2. **去重决策状态机**:LLM 对抽取的事实判断是新增、更新、删除还是跳过,避免重复记忆。 +3. **UUID 映射**:为每条记忆分配唯一 ID,LLM 引用时必须使用该 ID,防止幻觉篡改。 + +### 读路径(同步) + +``` +用户消息到达 → injectMemoryContext → 结构化检索(按用户/类别过滤) ++ 向量召回(Milvus) → 重排序 → 拼接为 pinned block 注入 Prompt → LLM 生成回复 +``` + +关键设计: + +1. **双路召回**:结构化检索保证精确匹配,向量召回覆盖语义关联,两者合并后重排序取 Top-K。 +2. **优雅降级**:记忆检索失败时不阻断主对话链路,仅降级为无记忆模式,不影响正常功能。 +3. **访问时间刷新**:被召回的记忆会更新最近访问时间,热点记忆更不容易被淘汰。 + # 6 前端实现 +PS:当前前端进度大幅度落后于后端,将在后端闭环跑通后开始维护。 + ## 6.1 当前前端技术栈与工程约定 当前前端位于 `frontend/` 目录,已经落地为一个可独立运行的 Vue 单页应用。