AI 桌面教学智能体项目计划书 (v1.0)
一、 项目概述
- 项目定位: 一款轻量、高性能、沉浸式的本地桌面端 AI 伴学软件。
- 核心价值: 告别传统的被动阅读,通过“大纲生成 -> 知识精讲 -> 伴学答疑 -> 动态测试”的闭环,提供千人千面的计算机自适应学习(CAT)体验。
- 技术基调: 极致轻量化(No-Build 理念前端 + Rust 桌面外壳),极低内存占用,高响应速度,支持本地知识库的安全隐私隔离。
二、 系统架构与技术选型
本系统采用严格的前后端分离与解耦架构,确保前端轻量、后端安全。
1. 核心技术栈
宿主环境 (Shell): Tauri 2.0 (Rust)
职责: 窗口管理、跨平台打包(Windows/macOS)、系统级 API 调用(文件系统、本地数据库读写)。
前端交互层 (View & State): HTML5 + Alpine.js
职责: 视图渲染、状态管理(响应式数据绑定)、事件总线通信。
样式引擎 (CSS): Tailwind CSS (CDN)
职责: 快速构建响应式的左中右三栏布局,统一 UI 风格。
内容渲染与处理:
Markdown 解析:
marked.min.jsXSS 防护:
DOMPurify(确保 AI 生成内容的渲染安全)代码与公式:
Prism.js(代码高亮) +KaTeX(数学公式)数据持久化 (Storage):
结构化数据: Tauri 官方
plugin-sql(SQLite) 或前端localForage(IndexedDB)。文件资产: 本地 Markdown 文件独立存储。
向量数据库: 后端集成轻量级本地向量库(如 LanceDB,或直接通过 Tauri 调用 Python 脚本封装的 ChromaDB/Faiss)。
2. 外部接口 (API)
- 大模型服务: 统一采用 OpenAI 标准接口格式(兼容 DeepSeek-V3/R1、GPT-4o、Claude 3.5 等),支持流式传输 (Server-Sent Events)。
三、 核心模块详细设计
采用经典的三栏式(Left-Nav, Main-Content, Right-Assistant)工作区布局。
模块 A:左侧导航与控制中枢 (Left Pane)
- 模块化工作区: 顶部“新建学习模块”按钮,支持创建不同的学科/项目容器。
- 动态大纲树 (Outline):
- 支持多级折叠与展开。
- 状态可视化: 节点带有进度标识(未开始、学习中、已掌握、需复习)。
- 点击任意节点,中断当前流程并切换至该会话进度。
- 分类与过滤: 中下部提供标签分类,快速筛选当前大纲视图。
- 系统设置: 底部配置入口,包含:
- 系统参数: API Key 管理、模型选择、本地知识库路径配置。
- 教学参数: AI 语气设定(如“严厉导师”或“苏格拉底式启发”)、测试题难度梯度、输出语种等。
模块 B:中部核心教学流 (Main Pane)
- Markdown 渲染区:
- 读取并渲染当前进度的
.md文件(包含文字、公式、内嵌 iframe 视频等)。 - 交互增强: 文本划词高亮,弹出“解释/扩写/翻译”快捷菜单,点击后指令自动发送至右侧答疑区。
- 动态测试引擎 (Test Engine):
- 准入机制: 底部常驻“我已学会,开始测试”与“我已学会,跳过测试”按钮。
- 动态生成: 点击“开始测试”后,触发系统工具调用(Tool Calling),AI 结合当前大纲输出 JSON 格式的考题数据。
- 交互式答题: 渲染单选/多选/填空题。采用“一题一判”机制。
- 正反馈与纠错: 答对直接进入下一题;答错不直接给答案,而是将错题信息透传至右侧,引导 AI 启发提问。
- 费曼输出模式(可选扩展): 提供文本框,要求用户用自己的话解释概念,AI 评分打通关。
模块 C:右侧 AI 伴学助手 (Right Pane)
- 顶部控制: 模型快速下拉切换,清空上下文按钮。
- 对话流渲染: 气泡式聊天界面,支持 Markdown 渲染,支持打字机流式输出。
- 上下文智能组装 (Prompt Engineering): 这是 AI 聪明的核心,发送给大模型的每次请求需静默拼装以下结构:
- System Prompt: 当前模块设定的教学人设与规则。
- Vector Search Results: (被动触发)匹配到的知识库或历史错题/笔记。
- Current Context: 中部正在阅读的 Markdown 原文片段。
- Chat History: 最近 3-5 轮对话记录(采用滑动窗口机制防 Token 溢出)。
- User Input: 用户本次的提问。
- 内容自修正: 允许 AI 通过特定的命令(如输出特殊的 XML 标签
<update_md>),通知本地环境修改并重载中部的 Markdown 文件。
四、 核心数据结构与存储机制
为了保证系统状态可预测且无遗漏,采用单一事实来源(Single Source of Truth)。
1. 课程配置文件 (course_meta.json)
维护整体大纲与进度状态,必须包含精确的映射关系。
{
"course_id": "c_982b1x",
"course_name": "高等数学基础",
"knowledge_base_path": "/local/docs/math",
"current_progress_id": "session_02",
"chapters": [
{
"session_id": "session_01",
"title": "1. 极限的定义",
"status": "completed",
"content_file": "/data/sessions/session_01.md",
"history_file": "/data/chats/chat_01.json",
"vector_ids": ["vec_001", "vec_002"]
},
{
"session_id": "session_02",
"title": "2. 导数与微分",
"status": "in_progress",
"content_file": "/data/sessions/session_02.md",
"history_file": "/data/chats/chat_02.json",
"vector_ids": []
}
]
}
2. 测试题数据交换协议 (AI Tool Call Output)
AI 生成题目必须严格遵循此结构,以便 Alpine.js 渲染前端表单。
{
"test_set": [
{
"question_id": "q1",
"type": "single_choice",
"difficulty": "medium",
"question_text": "在Vue或Alpine中,用于双向绑定的指令是?",
"options": ["x-bind", "x-model", "x-on", "x-text"],
"correct_answer": 1,
"explanation": "x-model 提供了表单元素和状态数据之间的双向绑定机制。"
}
]
}
五、 实施路线图 (Development Roadmap)
将复杂项目拆解为可执行的 Milestone(里程碑),严格控制开发节奏。
Phase 1: 原型与纯前端实现 (W1-W2)
- 目标: 完成 UI 布局和基本交互逻辑,无需后端。
- 任务:
- 编写
index.html,引入 Tailwind CSS 完成三栏布局。 - 引入
Alpine.js,实现大纲切换、测试面板呼出、聊天框内容上屏。 - 编写 Mock 模拟数据(写死的 JSON),跑通“阅读 -> 测试 -> 切换下一章”的完整逻辑。
Phase 2: Tauri 外壳与本地文件系统对接 (W3)
- 目标: 将纯网页转化为桌面应用,实现真实的数据读写。
- 任务:
- 初始化 Tauri 项目 (
npm create tauri-app)。 - 引入 Tauri
fs(文件系统) API,实现从本地硬盘真实读取和保存.md文件及course_meta.json。 - 调试跨平台打包。
Phase 3: AI 大模型 API 与流式交互接入 (W4)
- 目标: 为系统注入灵魂,实现真实的大模型对话和大纲/Markdown生成。
- 任务:
- 编写统一的 Fetch API 调用封装,支持 SSE (Server-Sent Events) 流式打字机效果。
- 完成“系统提示词”组装逻辑的代码编写。
- 实现基于 JSON Schema 的强制工具调用(Tool Calling),稳定输出格式化测试题。
Phase 4: RAG 与上下文向量化 (W5-W6)
- 目标: 解决大模型遗忘问题,实现基于本地知识库的问答。
- 任务:
- 引入本地向量化工具(将历史 Markdown 和对话切片,调用 Embedding API 获取向量)。
- 存入 SQLite (或外挂本地向量库)。
- 实现“用户提问 -> 向量检索匹配 Top 3 片段 -> 拼入 Prompt -> AI 响应”的 RAG 管道。
Phase 5: 测试、优化与发布 (W7)
- 任务:
- 代码重构,消除冗余的 JS 逻辑。
- 压力测试:渲染包含数万字及复杂 LaTeX 公式的 Markdown 时的性能表现。
- 错误处理:API 超时、断网、本地文件损坏的优雅降级提示。
六、 风险评估与应对策略
- AI 幻觉与格式破坏风险
- 表现: AI 应该输出 JSON 考题,但输出了一堆说明文字,导致前端解析崩溃。
- 应对: 严格限制提示词,使用各大模型的 JSON Mode 功能;在前端 JS 中增加
try-catch解析机制,解析失败时触发重试或优雅提示用户。
- 大上下文导致的 Token 费用激增 / 延迟卡顿
- 表现: 随着学习深入,直接拼接所有历史记录会导致 API 请求极慢。
- 应对: 坚决执行“滑动窗口 + 动态摘要”机制。超过 5 轮的对话让 AI 在后台总结为一句“当前学情摘要”替换原文。
- XSS 安全漏洞
- 表现: AI 在 Markdown 中恶意或错误生成带有
<script>标签的内容。 - 应对: 在
marked.parse()渲染前,强制通过DOMPurify.sanitize()进行清洗,绝不妥协。
此方悬停