夜雨聆风学习资料网

ARTICLE · 1318662

AI 教师助手怎么落地:备课到学情,六个环节全打通

AI 教师助手怎么落地:备课到学情,六个环节全打通

讲三件事:这套东西能替老师做掉什么、它踩过哪些坑、你自己怎么跑起来。也讲方法:怎么判断一个「AI + 教育」的项目,是真能用还是只在演示时好看。

项
内容
系列定位
「AIGC 开源服务」计划 · 教育 AI 方向 · 开源项目重写
涉及项目
AIedu —— 老师备课、出题、上课、批改、看学情的一条龙工具
难度
跑通:会解压压缩包、双击一个文件就行;改成自己学校能用的:会改一行配置文件
阅读
约 10 分钟(全篇汉字数 4 639,按每分钟 450 字折算)

「你们这套东西,我们学校能用吗?」

这是过去两个月被问得最多的一句话。问的人不一样,担心的点也不一样。

教务主任先问能不能对接学校已有的账号;一线老师只问批改作业准不准、会不会越批越乱;信息中心的老师问得更实在——要不要买服务器、数据传到哪去了。

先给最直接的答案:能用,但它不是一套装好就完事的系统。

它是一套放在你自己机器上的开源代码。要装,要配一个模型接口,要导入你班上的学生名单。装完之后数据存在你自己电脑上,断网也能开。

下面把这六个环节一个一个摊开。你看完再决定值不值得装。

先说清楚:它到底替你做掉哪六件事

一套教学工具最容易骗人的地方,是把「能演示」当成「能用」。

演示的时候点一下,屏幕上出现一份漂亮的教案,台下就点头了。真拿回办公室,老师要的是「明天早上第一节课就能讲」,不是「这份教案看起来很像教案」。

这六件事,是老师每周都要重复干的活:

环节
原来怎么做
现在怎么做
备课
翻教材、找课件、拼一节课的流程,一节课备 1–2 小时
说清课题和学情,出 45 分钟教案,含教师活动和学生活动
出题
从题库挑、改、排版,一套卷子半小时
说清知识点和题量,出题干、选项、答案、解析
上课
学生举手、点名回答,谁没跟上不知道
学生用 6 位课堂码进来,答题和互动当场记录
作业
收本子、改、算分、登记
学生在线交,客观题自动判
批改
主观题一份一份看,一个班两小时
先按标准答案判一遍,老师复核修改
学情
自己拿 Excel 统计平均分、算及格率
自动出班级报告、知识点掌握、分层名单

它替你做掉的事。

备课和批改这两件,是老师时间被吃掉最多的地方。一个初二数学老师带两个班,一周十节课,备课本上至少五节要重写;批改一周两次作业,一次两小时。

按上面这套走,备课从「翻资料拼流程」变成「看一遍改两处」,批改从「逐份看」变成「看有争议的那几份」。

它不是替你上课。 教案是草稿,判分是初判,最后按不按这个讲、给不给这个分,仍然是老师点那一下。

你该怎么用:先只跑「备课」这一环。备课不花你任何额外时间——你本来就要备课,只是换个地方起草。用两周,觉得比以前省事了,再往下接出题和批改。

原项目 2.9 万行,为什么不能直接拿来用

这套东西的底子,来自华为 openJiuwen 生态里的一个开源项目 eduSwarm(Apache-2.0 协议)。它的产品设计很扎实:十一个教学 Agent 各有明确分工,谁调度、谁出题、谁批改、谁做学情,边界画得清楚。

问题在工程。

看什么
实际情况
业务后端
就一个文件 edu_backend.py,28 595 行,483 个函数
整个仓库
7 693 个文件
内嵌的框架
一个 openjiuwen_src 目录,5 043 个文件、60 MB,被直接拷进仓库
依赖
41 个
直接依赖,含 chromadb、faiss、pywebview、Telegram / Discord / 飞书 / 企微各家的 SDK
端口
同时起 6 个(5173 / 18092 / 19000 / 19001 / 19002 / 19200)
数据库
25 张表,靠启动时 CREATE TABLE IF NOT EXISTS 建库,没有迁移机制

一个文件 2.9 万行是什么概念:你打开它,想找一个「批改」的函数,得先滚三分钟;改一处,不知道会碰坏哪里。

没有迁移机制是更麻烦的一条。学校用一年,表结构要加个字段,你得手工连数据库敲 SQL,还得记住上次敲过什么。换个环境部署,数据就搬不过去了。

这一节你可以先跳过。 如果你不写代码,记住一句就够:原项目东西太多、绑得太死,直接装进学校大概率装不上。

我改的五处,是五个判断。

第一,不留「待补充」的坑。 很多 AI 项目给你一套骨架,里面写着 [LLM填充],看着结构完整,实际一句话都没有。这套不这样:要么给真内容,要么进降级模式。没配模型接口时,用内置的教学法模板生成一份能直接上课的教案——而不是给你空白让你自己填。

第二,数字在本地算,模型只负责写建议。 学情里的平均分、及格率、分布,全部由程序算出来;模型拿到的是算好的数字,只写「下一步该做什么」。这样你随时能核对:页面写 67%,你自己拿计算器算也是 67%。反过来,让模型自己算数,它偶尔会算错,而且错得很自然。

第三,批改过的卷子不再重判。 同一份答卷,模型判两次可能是 77 分和 68 分。分数一旦发到学生手上就是承诺,不能自己变。已经判过的就默认复用,要重判,老师自己勾「强制重判」。这不是技术问题,是产品判断。

第四,把「算分」和「存库」分开。 等模型的时间可以同时等,写数据库必须排队。拆开之后,一个班的主观题批改从两分钟压到十几秒。

第五,算总分不再硬凑 100。 原来随便出 3 道题也给你凑成 100 分,结果出现「判断题 30 分、简答题 45 分」这种卷子。现在是按题型给基准分,题少了就是一份小测,不假装是期末卷。

你该怎么用:这五条你能直接搬到自己项目里去。尤其是第二条和第三条——凡是涉及钱的、涉及学生分数的,数字都该本地算、结果都不该回滚。

接上模型之后,暴露了十个问题

这是全文最值得看的一段。不是因为问题多,是因为这些问题全都只有真跑起来才会露出来。

我把原项目重写完之后,一直用内置模板跑,测试全过,看着挺好。接上 DeepSeek 之后,一天之内露出来十个。

挑了五个讲透:

一、模型的答案可能不在选项里,而学生怎么选都是错。

出一道四个选项的单选题,模型给的正确答案是「E」。

原来的逻辑完全信任模型,直接存下来。到判分的时候,四个选项里没有 E,于是全班每一个人都被判错——而且没有任何提示。老师只会觉得「这次怎么都不对」。

现在会校验:答案必须落在这道题自己的选项里。多选只有一个正确答案的,自动降成单选;实在判断不了的,这道题丢掉并记一条日志。宁可少一道题,不能让学生白丢分。

二、分数会自己变。

一份答卷,学生交的时候显示 77.7 分,老师点了「批改全部」之后变成 68.7 分。

原因是模型每次判分有细微差别。我试过把随机性调到最低,还是差 1.5 分。模型本身不完全确定,压参数压不干净。

真正的解法不在模型那边:已经判过的就不许再判。要重判,老师自己勾「强制重判」。

三、删一个教案,接口直接报错。

老师删掉一份教案,如果这份教案已经生成了课件,删除会失败——页面只显示一个错误。

我一开始以为问题在别处:接口返回 500,服务端日志里却一条异常都没有。只能把那段逻辑拆出来,在进程里直接调一次,真正的异常才露出来——数据库里那个关联字段设了「不许为空」,删除规则写的却是「删了就把关联置空」。两条规则打架,一删就撞。

改成允许为空,我以为完事了。再删一次,还是报错。

这次的原因更隐蔽:程序把「没有关联」写成了空字符串。空字符串不等于「没有」——在数据库看来,它仍然是一个指向不存在记录的引用。得把程序里所有读这个字段的地方一起改。

这一类问题,看代码看不出来,必须真的删一次才知道。

四、重复批改,同一份作业在学情里被算了两次。

批改一次生成一份班级报告,批改两次就生成两份,学情汇总时把同一份作业算进去两遍。数字看着没问题,但整个班的平均分是错的。

五、及格率写死 60 分。

总分不固定是 100 之后,这个判断就失效了:一份总分 12 分的小测,第一名也得不了 60 分,及格率永远是 0。

改成按得分率算:拿到满分的六成,就算及格。

剩下的五个:题量少时强行凑 100 分、解析里出现「解析:解析:」、学情里写「平均得分率 0.748」看着像乱码、学生名单只增不减(这一条到现在仍未修,见文末边界节)、批量批改一题一题串行等。

你该怎么用:如果你也在做带判分的工具,把「答案校验」「判过不重判」「重复提交去重」这三条先加上。这三个坑不用踩也能想到,但大多数人是在出过一次事故之后才想到。

它现在实际跑成什么样

不说「效果显著」,说数字。下面这些都能自己复现。

项目
实测
后端代码
5 131 行 / 38 个文件,最大的一个文件 448 行
前端代码
4 057 行 / 17 个文件
直接依赖
9 个(原来是 41 个)
端口
后端 1 个(8000),前端开发时 1 个
自动化测试
24 个用例,全部通过
页面巡检
9 个页面,零报错
生成速度
教案 6–8 秒、10 页课件 8–12 秒、12 道题 6–9 秒
单份主观题判分
1–2 秒
打包体积
305 KB,压缩后 89 KB

判分质量用一个具体的例子说:一道 20 分的主观题,我准备了五份作答,从完全正确到完全跑题。

得分是 15、10、8、3、0。评语能指出具体的错处,比如「代入 b=-6 时,-b 应该变成 6,你写成了 -6」。

注意这里我没有给百分比。 二十份、五十份卷子的抽样我还没做,没有的东西不写成有。上面这五档能拉开梯度,是我实际看到的;它能不能顶替老师批五十份卷子,得你自己拿班上的卷子试。

你该怎么读这一节:只记两行就够——生成一份教案 6–8 秒,判一份主观题 1–2 秒。其余数字给要算部署成本的人看。

你该怎么把它跑起来

三步。前两步大概二十分钟,第三步看你手速。

第一步,装后端。 装好 Python 之后,在 backend 目录建一个虚拟环境,装依赖,然后启动。第一次启动会自动建库,并建一个账号:teacher1,密码 demo1234。

第二步,配模型。 在 backend/.env 里填三行:接口地址、密钥、模型名。任何兼容 OpenAI 接口的模型都能用,不限于某一家。不填也能跑,只是走内置模板,出来的内容偏模板化但能用。

第三步,装前端,开浏览器。 打开 127.0.0.1:5173,用上面那个账号登录。学生端在同一个地址后面加 #/student,学生不用注册,输入 6 位课堂码就能进。

想先看看长什么样、不想自己动手的,仓库里有一个演示数据脚本,跑一遍会生成两个互不相干的老师、两个班、作业和批改记录,其中还包括一次「老师 A 想打开老师 B 的班级被拒绝」。

它替你做掉的事:你不用碰数据库、不用配反向代理、不用管账号体系。这三样是最花时间也最容易出错的地方,已经写在代码里了。

这些事我们不做,也不承诺

第一,不替你写作业,也不替学生写。 这套工具做的是老师备课和批改的辅助,学生端只用来上课答题、交作业。任何把它改造成「代写作业」的用法,都不在它的设计范围内。

第二,不承诺提分。 没有任何证据表明用一套备课工具能提高考试成绩。它省的是老师的时间,不是学生的分数。这两件事经常被混为一谈。

第三,学生信息只存在你自己的机器上。 默认用本地数据库,不联网、不上传。但有个前提得说清楚:只要你配了外部模型接口,你发给它看的内容就会离开你的电脑。学生姓名、答题内容,都会进到请求里。真要处理真实学生数据,要么用本地部署的模型,要么先把姓名脱敏。

第四,判分只是初判,责任在老师。 主观题的分数是机器给的,老师复核后才算数。学生拿到的分数如果出了错,责任在使用的人,不在工具。这不是免责话术,是这套东西的设计前提——所以界面上每一份主观题卷都可以改分。

第五,它还没有的这些,现在就是没有。 没有导出 Word 教案、没有导出 PPT 课件、没有「一个学校多个年级组」的分层管理、学生名单加上去之后在页面上删不掉(只能改数据库)。这些都在待办里,但没做的我不写成做了。

你该怎么用:把这几条当成你验收的标准。如果哪一条被说成「已支持」而实际没有,那就是有问题。

回到开头那个问题

回到最开始:「你们这套东西,我们学校能用吗?」

答案还是一样——能用,但不是装好就完事。差别在于,现在你知道这「装完」之后要配什么、它替你省的是哪段时间、以及它明确不做什么。

如果你今天下午就想动手,做这三件:

① 先把仓库拉下来,跑一遍演示数据脚本,看这个界面你愿不愿意用;

② 挑你上周刚备的一节课,让它出一份教案,和你自己备的对着看,差在哪;

③ 找一份你班上判过的作业,把主观题喂进去,看它给的初判和你的分数差多少。

前两件半小时内能做完。第三件做完,你就知道自己该不该往下走了。

下载与参与

仓库放在 AtomGit(一个国内的代码托管平台),打开就能看到说明和全部代码:

  • AIedu · 教师工作台
     —— https://atomgit.com/qzp001/AIedu
  • 原项目 eduSwarm(Apache-2.0,本项目是对它的重写)
     —— https://atomgit.com/agent-best-practices/eduSwarm

打开仓库首页有一个「下载 zip」按钮;没登录会先弹登录框,关掉照样能下载。解压之后,根目录里有一份 README,安装步骤写在最前面。

说明与免责

  1. 本文所述工具为教学辅助工具,输出的教案、试题、判分为参考草稿,不构成教学决策依据。
  2. 主观题判分由程序与模型给出初判,最终分数以任课教师复核为准。
  3. 本文未对判分准确性作任何量化承诺;文中的五档得分是单题样例的实测结果,不构成整体准确性声明。
  4. 使用外部模型接口时,提交的内容会经过第三方服务;处理真实学生信息前请先脱敏,并遵守所在地区关于未成年人个人信息保护的规定。
  5. 仓库中的学校名称、教师姓名、学生姓名、成绩均为虚构的演示数据。
  6. 引用的开源项目信息来自其公开仓库,不代表该项目的开发者对本文的认可、授权或背书。
  7. 本文封面图为程序绘制,未使用图像生成模型。

资料来源

一手材料 · 项目仓库与实际运行结果

  • AIedu 仓库
    (含全部代码、数据库迁移文件、测试用例与说明)—— 本篇「它现在实际跑成什么样」一节的代码规模、依赖数、端口数与安装步骤,均以该仓库实际内容为准。https://atomgit.com/qzp001/AIedu
  • eduSwarm 原项目仓库
    (Apache-2.0)—— 本篇「原项目 2.9 万行」一节的行数(28 595)、函数数(483)、文件数(7 693)、内嵌目录文件数(5 043)、依赖数(41)、端口数(6)、建表数(25),均由该仓库文件实际统计得出。https://atomgit.com/agent-best-practices/eduSwarm
  • 本地实测记录
     —— 生成耗时、24 个测试用例、9 个页面巡检、打包体积,来自本地实际运行,非估算。

二手材料 · 第三方服务公开文档

  • DeepSeek 开放平台接口文档
     —— 「配模型」一节的接口格式与兼容性说明。https://api-docs.deepseek.com

全帧派AI小派 · 研究撰稿

开源项目人才专项入库通道现已开放。

我们特别欢迎开发并发布过超过 3 项 AI 应用开源项目的人员申请加入生成式人工智能(AIGC)人才库,为此推出20 人的免费入库名额。入库要求为:在知名来源平台(如 atomgit、GitHub 等)发布过项目,且单个项目下载量超过 1000次以上(含 1000),我们不看您开源项目的Star数量,重点看您的项目被下载使用的次数,这也是各行业和企业关心的。

请提供您的开源项目地址供查验,核实后我们与您联系后续入库事宜。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料