Trae AI 大赛参赛作品 · 学习工作赛道

CS_Assistant
智能复习助手

基于 RAG 混合召回 + SOLO Agent 主动智能的全栈 AI 辅教系统。
上传课件 → 智能问答 → 自动测验 → 错题分析 → 主动推送薄弱章节。

0
功能页面
0
向量维度
0
Agent 触发器
0
首屏 KB
在线体验 → 了解功能

核心技术创新

5 大技术亮点,从存储到检索到主动智能,全程用 Trae 开发完成。

BM25 + 向量语义混合召回

传统关键词检索无法理解语义——搜索"树的遍历"匹配不到"前序遍历"。 本项目加载 transformers.js 的 all-MiniLM-L6-v2 模型(384 维), 在浏览器端计算向量相似度,与自实现 BM25 混合: BM25 × 0.4 + 向量 × 0.6。 向量持久化到 IndexedDB,上传一次课件永久复用,无需重复计算。

// 混合召回核心逻辑(src/lib/rag.ts) const hybridScore = bm25Score * 0.4 + vectorScore * 0.6; // 有向量时走混合召回,无向量时降级纯 BM25 const finalScore = vectors.length > 0 ? hybridScore : bm25Score; return chunks.sort((a, b) => b.score - a.score).slice(0, 8); // Top8 硬限制

交互式演示:混合召回

输入问题,查看 BM25 + 向量如何各自评分并融合(点击下方问题快速体验)。

CS_Assistant
选择上方问题或输入你的问题,查看 RAG 检索过程...
💾

IndexedDB 分表设计(9 张表 + 外键索引)

数据完全存浏览器本地,后端变为纯 LLM 代理。用户隔离,刷新页面不丢失数据。 支持级联删除(删科目 → 自动删该科目的所有资料/分块/向量/对话/错题)。 缓存 TTL 自动过期,提供一键清理面板。

// 9 张分表 + 外键索引(src/lib/db.ts) subjects // id materials // id, subject_id, status chunks // id, subject_id, material_id, [subject_id+index] vectors // chunkId, subject_id chatSessions // id, subject_id, created_at quizSessions // id, subject_id, created_at wrongQuestions// id, subject_id, [subject_id+reviewed] reviewDocs // id, subject_id cache // key, expires_at(TTL 自动过期)
⚙️

Web Worker 异步解析(主线程不阻塞)

PDF/DOCX/PPTX 解析、文本分块、向量计算全部丢入 Worker 后台线程。 Worker 池并发控制(Math.min(hardwareConcurrency-1, 2)), 支持任务队列、实时进度、批量取消。上传 100MB PDF 也能流畅操作 UI。

交互式演示:异步任务进度

📄 第3章 栈与队列.pdf
解析中...
✂️ 文本分块 (chunking)
排队中...
🔢 向量计算 (384维)
排队中...
💾 持久化到 IndexedDB
排队中...
🤖

SOLO Agent 主动智能(大赛核心创新)

区别于被动问答工具——Agent 在用户无操作时主动分析学情并推送建议。 5 个触发器:condition → action 模式,带冷却管理避免重复打扰。 支持网页通知(Notification API)+ Toast 卡片双通道推送。

交互式演示:点击触发器体验 Agent 推送

在真实应用中,这些触发器会在你答错题、复习完毕、长时间未学习时自动触发。
这里可以手动触发体验效果(右下角弹出 Toast 卡片)。

⚠️
薄弱章节预警
错题率 > 60% 且未复习 ≥ 3 道时触发
🔁
高频错题提醒
同一知识点错 2 次以上时提醒
📊
每日学习日报
每天生成学习统计 + 明日规划
🔥
连续复习奖励
连续 3 天复习解锁鼓励
📋
待办提醒
有未复习错题时每 6 小时提醒
📱

PWA 离线 + 可安装

Service Worker 三级缓存策略: HTML network-first(始终最新版本,避免白屏)、 JS/CSS stale-while-revalidate(秒开)、 CDN cache-first(向量模型 23MB 下载一次永久缓存,离线可推理)。 首次加载后断网仍可访问所有已缓存页面。

// Service Worker 缓存策略(public/sw.js) if (isHTML) return networkFirst(req); // HTML 始终最新 if (isCDN) return cacheFirst(req); // 向量模型永久缓存 return staleWhileRevalidate(req); // 静态资源秒开

系统架构

浏览器端全栈架构,服务端仅做 LLM 代理(API Key 不暴露)。

浏览器端(前端)
React UI
9 个页面
Zustand
全局状态
React Router
懒加载
RAG 引擎(浏览器端)
BM25
关键词检索
transformers.js
向量检索 384维
混合召回
Top8 截断
Map-Reduce
多资料压缩
异步计算层
Web Worker 池
并发 ≤ 2
pdfjs-dist
PDF 解析
mammoth
DOCX 解析
JSZip
PPTX 解析
持久化层
IndexedDB
9 张分表
Service Worker
PWA 离线
Cache Storage
CDN 缓存
SOLO Agent 主动智能层
触发器引擎
5 个触发器
冷却管理
localStorage
Notification
网页通知
每日日报
可导出
服务端(Railway · 纯 LLM 代理)
Express
API 路由
DeepSeek-V4-Flash
LLM 推理
/api/parse
无状态解析
/api/knowledge
知识库

技术栈

全部用 Trae 开发完成,从零搭建。

前端框架

React 18 + TypeScript + Vite 6

状态管理

Zustand + React Router 6

UI 样式

Tailwind CSS + CSS Variables

Markdown 渲染

react-markdown + remark/rehype

数学公式

KaTeX(懒加载)

流程图

Mermaid(按需加载)

本地存储

IndexedDB(9 张分表)

RAG 检索

BM25 + transformers.js 向量

异步计算

Web Worker 池

文件解析

pdfjs-dist + mammoth + JSZip

AI 模型

DeepSeek-V4-Flash

部署

Railway + Vercel

5 步体验指南

进入应用后,按以下步骤体验完整流程。

1

加载演示数据

设置页 → 滚动到底部 → 点击"加载示例数据"。预置 4 份数据结构课件 + 测验 + 错题,无需手动上传。

2

AI 智能问答

对话页 → 选择"数据结构"科目 → 提问"什么是栈?和队列有什么区别?"。AI 基于课件内容回答,标注来源。

3

自动测验

测验页 → 选择题型和难度 → 开始答题。故意答错几道,体验错题自动归档。

4

SOLO Agent 推送

答错几道题后等待 3 秒,右下角会自动弹出"薄弱章节预警"卡片。点击"去处理"跳转复习。

5

每日日报

分析页 → 点击"查看今日日报"。查看学习统计、各科目详情、薄弱知识点、明日规划,支持导出 Markdown。

体验地址

两个部署均可访问,数据存储在浏览器本地(IndexedDB)。