
技能安装将提示词发送给你的 AI 安装该 skills请根据 https://skillhub.cn/install/skillhub.md安装 user_f44d78f7/exam-system-builder。一、背景你是不是也遇到过这些痛点学校、培训机构、企业培训几乎都离不开在线考试 / 测验 / 问卷这件事。但真要落地往往卡在这几个地方买现成 SaaS 太贵还担心题目和学生数据外泄想自己写但学生端、教师端、判分、成绩统计、公网访问……一套下来至少几千行代码工期劝退题目都在 Word 里手动一条条录进 JSON 题库录到怀疑人生想让校外学生用手机答题没有公网 IP、不想动路由器卡在怎么让别人访问这一步。为了解决这些问题我沉淀了一个可复用的 AI 技能在线考试系统搭建器exam-system-builder。它把从题库到前端再到公网隧道的完整搭建流程封装成可复用步骤AI 按它一次性把整套系统搭好还顺手把 12 个生产级坑都标了出来——不用你再踩一遍。二、这个技能能干什么一句话从零搭一套完全自包含的在线考试系统包含学生端、教师端、本地 Node.js 后端外加把系统暴露到公网的一键隧道。整体链路是这样的学生端填姓名 → 选试卷 →30 分钟倒计时最后 5 分钟变红、超时自动交卷提交后立刻看得分、是否合格、错题高亮并标注正确答案支持判断 / 单选 / 多选 / 问答essay四类题型问答题由学生自由文本作答、不参与自动判分成绩页标记需教师评阅。教师端通过SSE服务端实时推送接收每一次提交无需刷新、无需手动导出实时统计各卷提交数 / 合格率 / 平均分 / 最高最低分按学生聚合第几次考试、每次得分、用时、是否合格默认 60 分合格支持按试卷 / 姓名 / 仅不合格筛选支持单条删除某次成绩记录内存 磁盘同步删除SSE 实时刷新。试卷管理教师端亮点这是最省事的部分上传 Word.docx / .doc或粘贴纯文本系统自动提取题目与答案并生成预览教师校对后一键保存为banks/id.json。内置纯文本试卷排版模板复制到 Word/WPS 另存为.docx上传解析成功率最高新增 / 编辑 / 删除都通过 SSE 实时推送到教师端列表和学生端选卷页不用重启服务解析器用mammoth处理.docx、word-extractor处理.doc支持填空式答案__C__、全角题号1、判断题对/错等常见格式。公网暴露内网穿透用Cloudflare Tunnel一键打通无需公网 IP、无需改路由器临时隧道免账号一行命令就行适合演示 / 短期使用地址每次重启会变固定域名隧道有 Cloudflare 账号 域名时配置https://exam.yourdomain.com永久稳定适合正式长期使用。三、技术架构保持简单不用数据库整个系统刻意做得轻——单机、无数据库、纯文件存储层技术说明后端Node.js Express单文件server.js判分、成绩持久化、SSE 广播存储本地文件results.jsonbanks/*.json启动载入内存每次变更写回磁盘前端两个静态 HTMLstudent.html/teacher.htmlExpress 托管无需构建实时SSE/api/stream推送new_result/deleted/paper_*事件穿透cloudflared可选仅公网访问时需要核心接口一览划重点学生端拉题库的GET /api/banks只返回元数据sections[].count是题量不含questions数组——很多同学会顺手去读x.questions.length然后报undefined.length这是技能里专门记下的坑见下文 #8。四、最值钱的部分12 个生产级踩坑清单技能最大的价值之一是把作者在真实部署里踩过的坑全列了出来拿来即用、不重踩端口冲突 EADDRINUSE残留node悄悄占用 3000新实例崩溃且无提示 → 监听error事件 .bat启动前netstat预检。多选题首点答案丢失复选框onchange里只push没写回answers[key]导致答案被delete→ 每次切换都重赋值answers[key]arr。禁止手改results.json只改文件会让教师端显示陈旧数据下次提交还会用内存副本覆盖 → 永远走POST /api/clear/DELETE /api/results/:id。.bat里裸 URL 让 cmd 崩溃echo https://...会被按://切分执行 → 所有 URL 文本加双引号。.doc题干常不可恢复二进制私有编码抽不出 → 优先.docx.doc用word-extractor乱码时回退 UTF-16LE 二进制抢救。临时隧道子域易失*.trycloudflare.com每次重启都重新生成停进程 DNS 立刻撤回 → 要稳定地址用固定域名且别用沙箱 shell 的curl判断公网可达性环境没 DNS 配置用本机真实浏览器确认。提示框被弹窗遮挡toast原z-index:99弹窗用200→ 提示被压在下面像消失 → 设z-index:999。列表刷新抛undefined.length/api/banks只返回count而非questions→ 改用x.count。解析器全角题号1丢整份试卷题号正则只匹配半角(→ 必须同时支持半角/全角括号 数字/中文数字。填空式答案__C__漏识别标准答案C抓不到行内下划线答案 → 加分支/_{1,4}\s*([A-Za-zTtFf√×对错...])\s*_{1,4}/。判断题尾部错被误删去尾部把合法闭合括号也删了 → 用独立正则专门提取判断题答案。.doc需要word-extractor而非mammothmammoth只读.docx喂.doc会乱码 → 按扩展名分支处理。五、怎么用如果你用支持技能的 AI 客户端如 WorkBuddy直接对 AI 说帮我搭一套在线考试系统学生端答题自动判分教师端实时阅卷上传 Word 试卷自动解析用 Cloudflare 临时隧道让学生手机能访问。AI 会按技能里的步骤把server.js、student.html、teacher.html、paperParser.js以及一键启动/停止脚本一次性生成好并把上面的坑都提前规避掉。技能附带的可运行资源references/build-guide.md题库结构、判分函数、SSE 接线、两条隧道路径、试卷管理接口、解析器规则与代码片段、完整坑点修复片段assets/reference-impl/完整可运行参考实现server.js/paperParser.js/student.html/teacher.html/ 纯文本试卷模板assets/*.bat.md一键启动 / 停止 / 环境自动搭建脚本模板复制到项目根时存为.batassets/config.example.ymlCloudflare 固定域名隧道配置模板。六、适用场景校内期中 / 期末模拟考、随堂小测培训机构课程考核企业培训 / 新员工入职考试社团活动、调研问卷式在线答题。七、写在最后这套技能的核心理念是把搭考试系统这件原本要写几千行代码、还要踩一堆坑的事变成 AI 一次就能交付的标准流程。对学生端体验、教师端实时阅卷、Word 试卷自动解析、公网一键访问这几个高频需求都给了可直接落地的方案。如果你也在找一个不买 SaaS、数据留本地、半小时就能跑起来的在线考试方案不妨试试这个技能。有建议或想加的功能成绩导出 Excel、微信推送、多试卷模板库等也欢迎在评论区交流。