学页|轻量互动教室
概述
学页|轻量互动教室是一款面向中小学教师的课堂互动工具生成技能。教师只需提供学段与班级名单(或直接用示例数据体验),即可获得一个零依赖、离线可用、投影即用的单文件 HTML 互动教室,解决教师"课堂上缺趁手的互动小工具""投影工具字太小后排看不清""一堆小程序广告弹窗"三大痛点。
产物是一个 HTML 文件——不需要安装任何软件、不依赖网络、双击浏览器打开就能投影使用。内置 8 件课堂互动工具,覆盖"点人—记分—计时—分组—投票—管理"全场景:
- 随机点名——滚动的名单抽取提问对象,可排除已点学生与缺席学生
- 小组记分板——多小组加减分与星级,实时排序
- 倒计时/抢答——大字号环形倒计时,支持暂停/续时,预设 30 秒/1/3/5 分钟
- 随机分组——把名单随机分成 2-6 组,可排除缺席学生
- 全班投票——快捷举手投票统计(A/B/C/D 或 是/否),即时出柱状图
- 安静倒数——无声的课堂秩序管理:全屏数字倒数+呼吸圆,不喊叫也能快速安静
- 红绿判断牌——全班手势判断题快查(对的举绿/错的举红),教师端统计
- 课堂轮盘——把"谁来回答/做什么动作/抽哪道题"做成转盘,增加课堂趣味
适用边界:本技能生成的是教师端单机工具(学生无需任何设备),适合投影场景;如需学生扫码参与的实时答题/弹幕,不属本技能范畴。
触发场景
以下情况触发本技能:
- 直接关键词:互动教室、课堂工具、随机点名、点名器、小组记分、记分板、倒计时、课堂计时、随机分组、课堂投票、课堂管理、安静倒数、课堂轮盘
- 语境触发:用户描述课堂互动工具需求(如"明天公开课需要一个随机点名工具""小组积分想投在大屏上""想要个安静下来的倒数工具")
- 材料触发:用户上传 classroom.json 配置文件,或名单文件(.xlsx/.csv/.txt,含学生姓名列)要求生成互动教室
- 组合触发:用户已用 xueye-lesson-prep 备课,课堂环节需要配套互动工具
不触发的场景:搭建课程体系(用 xueye-curriculum-builder)、录播课章节规划(用 xueye-recorded-course-manager)、设计课堂提问内容(用 xueye-quiz-generator)、学生人手一设备的在线答题(不属本技能边界)。
与其他学页技能的关系:
- xueye-quiz-generator(课堂互动题目生成器)→ 它管"问什么",本技能管"怎么呈现互动";两者可组合:用它的题目 + 本技能的投票/红绿牌工具呈现
- xueye-lesson-prep(AI备课)→ 备课产出教案课件后,本技能提供课堂现场的互动工具
交付物一览
| 交付物 | 格式 | 内容 |
|---|---|---|
| 互动教室 | .html | 单文件 HTML 教室,双击打开即用,内置 8 件互动工具(供教师课堂投影使用) |
| 教室配置源文件 | classroom.json | 机器可读的班级名单/小组/工具开关/主题配置,供校验与二次修改(供教师与 AI 二次调整) |
工作流程
生成交互教室遵循五步标准化工作流。按顺序执行,每一步的输出作为下一步的输入。
Step 1: 需求采集
从用户输入中提取教室配置关键要素。如信息不完整,提问补充。
需采集的要素:
| 要素 | 必填 | 默认值 | 示例 |
|---|---|---|---|
| 学段 | 是 | — | 小学/初中/高中 |
| 班级名 | 否 | "{学段}教室" | 八年级(3)班 |
| 学生名单 | 是 | 示例名单24人 | 姓名 list,或"从名单文件读取" |
| 小组划分 | 否 | 按名单均衡自动分4组 | [{"组名": "1组", "成员": [...]}] |
| 工具开关 | 否 | 全部8件开启 | 如"不要轮盘" |
| 主题 | 否 | 明亮(投影推荐) | 明亮/暗夜 |
| 音效 | 否 | 开 | 开/关 |
采集规则:
1. 最多提问 2 个问题,一轮问完,禁止多轮追问
2. 只问缺失的必填项(学段、名单来源);用户已表达的信息不重复问
3. 用户提供名单文件时先读取(提取姓名列),减少提问
4. 非必填项未提供时使用默认值,不提问
5. 信息齐全时直接进入 Step 2,无需确认
Step 2: 教室配置构建
把采集信息结构化为 classroom.json。
加载参考文档: references/classroom-config-schema.md — classroom.json 字段字典
构建规则:
1. 名单清洗:去空、去重名(重名加后缀如"张三(2)")、全角转半角、控制在 ≤56 人
2. 小组划分:未指定时按名单顺序均衡分组(默认4组);组名默认"1组/2组/…",小学可用趣味组名(火箭队/闪电队…)
2. 学段适配:小学界面更卡通圆润(大按钮/趣味组名/音效默认开),初高中更简洁(少装饰,音效默认开可关)
3. 工具开关:未指定的工具默认开启;明确说不要的工具在 config 中置 false,生成时完全剔除(不是隐藏)
4. 主题:默认"明亮"(投影环境下暗夜主题后排看不清);用户指定暗夜时尊重并在教室里保留主题切换按钮
5. 配置写盘:classroom.json 与最终 HTML 放同一目录,命名 {班级名}_互动教室.html
Step 3: 结构质量审查
对照 schema 审查 classroom.json 草稿,输出审查结论。
加载参考文档: references/classroom-config-schema.md(同 Step 2)
审查清单:
1. 结构完整性:meta 字段齐全(学段/班级名/名单人数/主题/音效)
2. 名单合法性:无空名、无重名、长度 2-4 字符(超长截断并提示)、总人数 ≤56
2. 小组一致性:组内成员都在名单中、无重复归组、未归组学生数 ≤ 名单的 10%(提示补齐)
3. 工具开关合法:enabled_tools 只含 8 件套枚举值
4. 投影可读性:主题默认明亮;小学默认开启音效
Step 4: 教室生成
将 classroom.json 编译为单文件 HTML 互动教室。
实现方式: 运行本技能脚本生成,全程零外部依赖(无 CDN、无网络请求、无字体下载)。
生成顺序:
1. 运行 scripts/classroom_validator.py classroom.json 校验,错误清零(warning 逐条评估)后进入下一步
2. 运行 scripts/classroom_builder.py classroom.json --outdir ./output 产出单文件 HTML
3. 检查生成日志:确认启用工具全部渲染、名单人数正确
4. 将 HTML 在浏览器打开做冒烟验证(工具切换、点名、记分)
HTML 教室设计规范:
加载参考文档: `references/design-spec.md — 单文件教室设计规范
- 零依赖:CSS/JS 全内联,无外部请求;U盘拷贝到教室电脑也能用
- 投影可读:主界面最小字号 18px,点名/记分等主数字用 10vh 以上超大字号
- 8 件套架构:顶部导航切换工具,每件工具一个独立"面板",互不干扰
- 状态记忆:记分板分数、已点名学生用 localStorage 按班级名持久化,刷新不丢
- 键盘友好:空格=点名开始/停止,1-8 数字键直达工具,Esc=退出全屏
4. 学段适配:字号、按钮大小、文案语气按学段微调(详见 stage-subject-strategy.md)
Step 5: 成果交付
将成果转化为文件交付,并提供使用说明。
交付顺序:
1. 把生成的 HTML 与 classroom.json 一起放入输出目录
2. 调用 present_files 交付 HTML(预览即体验)
3. 交付时附简短使用指引(见下)
交付后提示:
- 告诉教师:双击 HTML 即可使用,无需安装;可拷贝到 U 盘在任何教室电脑用
- 提示:改名单/小组/工具开关只需改 classroom.json 重新生成,或直接在页面上维护名单(部分工具支持页内编辑)
- 公开课前建议提前 5 分钟打开试一遍工具切换,确认投影效果
参考文档索引
以下参考文档按需加载,不必一次性全部读取:
| 文档 | 路径 | 加载时机 |
|---|---|---|
| 互动工具规范库 | references/interaction-tools.md |
Step 2 工具开关确认 |
| classroom.json 字段字典 | references/classroom-config-schema.md |
Step 2/3 配置构建与审查 |
| 单文件教室设计规范 | references/design-spec.md |
Step 4 生成时 |
| 学段学科差异化策略 | references/stage-subject-strategy.md |
Step 2/4 全程参考 |
工具脚本
| 聼 | 路径 | 用途 | 调用时机 |
|---|---|---|---|
| 教室配置校验器 | scripts/classroom_validator.py |
校验 classroom.json 的字段完整性、名单合法性、小组一致性、工具开关枚举 | Step 4 生成前 |
| 教室生成器 | scripts/classroom_builder.py |
将 classroom.json 编译为单文件 HTML 互动教室 | Step 4 |
教室配置校验用法:
python scripts/classroom_validator.py classroom.json
python scripts/classroom_validator.py classroom.json --json
教室生成器用法:
python scripts/classroom_builder.py classroom.json --outdir ./output
(可选)快速生成示例教室(体验用):
python scripts/classroom_builder.py --demo --outdir ./output
依赖的 WorkBuddy 内置技能
| 抐 | 用途 | 调用步骤 |
|---|---|---|
present_files |
交付 HTML 教室 | Step 5 |
| 文件读取能力 | 读取名单文件(.xlsx/.csv/.txt) | Step 1 |
重要约束
- 零依赖铁律:生成的 HTML 绝不引用任何外部资源(CDN/字体/图片链接),保证无网教室可用。
- 投影可读第一:一切设计服务于"教室后排学生看清",字号宁大勿小,配色对比度 ≥4.5:1。
- 单文件原则:全部 CSS/JS/数据内联在一个 HTML 文件中,禁止拆分文件或生成附属资源。
- 教师主权:所有工具操作可教师一键控制(开始/暂停/重置),学生无操作入口;页面无广告无弹窗无收集任何数据。
- 学段适配:小学界面圆润卡通+音效默认开,初高中简洁克制;文案语气与学段匹配。
- 状态可恢复:记分/点名记录刷新后不丢(localStorage),且提供"一键重置"避免跨班残留。
- 隐私安全:名单只存在本地 HTML/localStorage,不上传任何服务器;交付时提示教师妥善保管含名单的文件。