图形化编程智能批卷
功能概述
解析 Scratch 3.0 工程文件(.sb3),对小学编程作业进行智能批改。直接解压 ZIP 格式的 .sb3 文件,解析 project.json 中的角色(targets)、积木树(blocks)、造型(costumes)等结构化数据,采用三维度量化评分体系,输出个性化评语与学情报告。
触发条件
用户提出以下意图时调用此技能:
- 批改 Scratch 编程作业
- 运行智能批卷 / 批改 .sb3 文件
- 检查 Scratch 作品 / 分析编程作业
- 生成学情报告 / 编程成绩统计
- 批改某某班级的 Scratch 作业
使用流程
1. 确定作业目录
确认用户提供的 .sb3 文件目录路径。标准文件命名格式(可选):班级_姓名_课时.sb3,系统自动从文件名提取学生信息。
2. 运行批改
python scripts/main.py <作业目录> [输出目录]
示例:
python scripts/main.py ./三年级一班作业
python scripts/main.py /path/to/homework ./output/批改结果
3. 输出结果
- HTML 交互式报告 — 包含 Chart.js 图表(等级分布环形图、分数段柱状图、知识点掌握率、学生三维度雷达图)
- CSV 学情总表 — 每位学生的详细得分、等级、评语
4. 呈现结果
调用 present_files 工具向用户展示 HTML 报告和 CSV 文件。
评分体系
评分规则位于 assets/rules/ 目录下,为 JSON 格式,换课时仅需更换规则文件。
三维度评分
| 维度 | 满分 | 说明 |
|---|---|---|
| 功能完成度 | 60 分 | 核心知识点落地情况(角色、事件、动作、对话等) |
| 代码规范性 | 20 分 | 积木完整性、无悬空、事件动作连接正确 |
| 创意拓展性 | 20 分 | 造型切换、循环、变量、声音等拓展应用 |
典型扣分项
| 错误类型 | 扣分 |
|---|---|
| 缺少开始事件 | -15 |
| 事件与动作脱节 | -10 |
| 悬空积木(每项) | -5 |
文件结构
scripts/
├── main.py — 主入口,接收作业目录参数
├── sb3_parser.py — .sb3 文件解析(ZIP 解压 + project.json 解析)
├── block_analyzer.py — 积木树分析(7 种检查项)
├── scoring_engine.py — 评分引擎(规则加载 + 三维度评分 + 扣分)
└── report_writer.py — 评语生成 + CSV/HTML 报表输出
assets/
└── rules/
└── 角色移动与对话.json — 课时评分规则(可扩展)
添加新课时规则
- 在
assets/rules/下新建 JSON 文件(参考角色移动与对话.json的结构) - 修改
meta.name为课时名称 - 按需调整 requirements/standards/creativity/deductions 的检查规则
- 批改时指定新的规则文件路径即可(默认使用第一个找到的规则文件)
技术要点
- .sb3 文件本质是 ZIP 压缩包,用
zipfile模块解压后解析project.json - 积木树通过递归遍历 blocks 字典分析,判断 parent/next 字段识别积木链
- 所有评分规则用 JSON 配置,零代码改动即可换课时