用 Python 写了个本地优先的 AI 家教:多种教学模式,教材当检索源,逐章掌握度分析

前言:为什么要做这么个东西

有人说过,电脑是人脑的延伸;如今,大模型则是人脑的近似。它能读万卷书、解万般题,人脑在"知识量"上确实追不上。但我一直觉得,工具是放大器,你自己长出来的能力才是最踏实的东西------所以这款东西我故意做得"笨":逼你想,而不是替你答。

之前试过不少学习类 AI 工具,大多止步于"你问它答",答完你还是没学会。认真学一门课,真正缺的不是答案,而是循序渐进的引导 、及时的反馈,和对自己掌握情况的清楚认知。所以我把目标定得很具体:把任意一本教材,变成一位引导式的专属家教


技术要点

1. 教材怎么变成"知识"

用户上传 PDF / TXT / Markdown 之后,程序在本地把文本切分,建一个 BM25 检索索引。关键点在于:之后所有答疑和出题,检索依据都是这本教材的原文,而不是让模型凭记忆瞎编。这能把"幻觉"压到最低------教材才是权威,模型只是讲解员。

2. 三种教学模式

同一本教材,按学习习惯切了三种教法:

  • 引导探究式(默认):引入 → 小测 → 反馈 → 追问,一步步建立直觉。
  • 讲授式:概念讲解 → 课堂作业 → 开放问答。
  • 自由问答式:就原文任意内容深问深答。

3. 掌握度为什么按"章"算

这是我觉得最有用的一个设计。通常的练习只给一个总分,但"85 分"说明不了什么------你可能是第一章熟、第三章完全没懂。所以我让每道题按它归属的章节分别计分。举例,一道题整体 85/100,同时标出第一章矩阵 90、第三章行列式 80;哪块虚,复习就专门打那块。配合"自动挑最弱章节出题"的复习规划,时间都花在刀刃上。


踩坑记录

坑一:模型直接答题,效果一言难尽。 一开始图省事,让模型凭自己的知识回答,结果经常瞎编、跟教材对不上。后来改成"以教材原文为检索依据 + 模型只负责讲解",才稳下来。教训:教材才是标准答案,别让模型当主角。

坑二:笼统总分没用。 最早练习只给一个总分,用户看完还是不知道哪弱。改成按章节分别计分后,掌握度差异才真正看得见。

坑三:隐私这关不能省。 学习数据太私密,一开始就定死:教材和对话全在本机 SQLite 里处理,不上传任何第三方;API Key 只存在本机;数据目录安装时可自选,跟程序分离,卸载后保留。


验证通过 & 现状

目前 v0.1.0,桌面版有 Windows 安装包开箱即用,也能 python server.py 直接起;模型自己填 API Base / Key / 模型名,有一键测试连接。各章节掌握度、得分趋势、不同课程之间的对比,集中在一个统计页:

说句实话,现在功能还很糙,离"好用"还有距离,但方向我认为是对的------AI 横着走的年代,最值钱的不是"知道",而是"会学"。工具再强也只是放大器,舵得自己握着。


写在最后

做这个工具,算是一次不大的尝试,也接触到不少新东西。目前 v0.1.0,欢迎各位来挑刺、提 Issue。产品介绍页在这:AI家庭教师 ,想一起聊实现的,关注公众号「软趴趴的工程师」,私信"进群"就能进产品交流群。

微信公众号:软趴趴的工程师 (一个乐于助人的工程师)