guru-latihan-dinamis
AI 赋能印尼 Kurikulum Merdeka 课程出题引擎,支持认知层次分层与打印就绪试卷一键
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI 赋能印尼 Kurikulum Merdeka 课程出题引擎,支持认知层次分层与打印就绪试卷一键
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:GURU: Arjuna Quiz Engine 界面预览(来源:项目 GitHub 仓库)
想象一下,在爪哇日惹的一间教室里,清晨的阳光透过百叶窗洒在木桌上。Ibu Sari 老师面对着四十名学生,还有三门课程的期末评估要完成。她没有时间手动编写差异化题库,也没有课程专家可以咨询——她只有手中的教鞭、白板笔,以及一个强烈的愿望:让每一个孩子都能被真正看见。
这就是 GURU: Arjuna Quiz Engine 诞生的背景。它不只是一个自动生成试卷的工具,而是一个真正理解印尼课程标准(Kurikulum Merdeka)的教学副驾驶。
这个项目源于 Cerebral Valley Hackathon,团队核心成员包括 naufaldi、anandpatikat 等印尼本土开发者。项目的命名本身就深具文化意涵——在爪哇 wayang(皮影戏)传统中,Arjuna(阿周那)是完美的弓箭手:精准、专注、心怀更高使命。项目团队希望每个 AI 生成的题目卡片都像一支射向特定学习目标的箭,每份评估试卷都是对清晰性的致敬。
印尼的 Kurikulum Merdeka(独立课程)是该国教育部近年来推行的教育改革核心,强调以学生为中心、尊重发展差异。然而对于一线教师而言,将抽象的课程能力目标(Capaian Pembelajaran)转化为具体题目是一项耗时且需要专业知识的工作。Arjuna Engine 正是瞄准了这个效率缺口。
如果把传统出题比喻为手动缝制衣服(每件都需要量体裁剪),那么 Arjuna Engine 就是一台参数化的服装打印机。老师只需要定义一个"版型"(题模板),设定好变量(年级、科目、认知层次),引擎就能在几秒内生成 N 份内容不同但目标一致的试卷——所有题目共享相同的教学意图,但数字、人名、场景各不相同,从根本上杜绝了学生之间的答案抄袭问题。
1. Kurikulum Merdeka 完全对齐
引擎内置了 Kemdikbudristek 定义的 Capaian Pembelajaran(CP)和 Tujuan Pembelajaran(TP)映射表,覆盖 Fase A、B、C(分别对应小学1-2年级、3-4年级、5-6年级),支持 Bahasa Indonesia、Matematika、IPAS(科学)、PPKn(公民教育)等核心科目。这意味着老师无需自行对照课程标准,引擎直接输出符合国家规范的题目。
2. Bloom 认知层次自动分层
每个生成的题目都会自动分配认知层次标签:
老师可以通过滑动条自由调整各层次的比例,生成难度曲线自然的差异化试卷。
3. 打印就绪的 CSS 排版
引擎内置专为打印优化的 CSS 布局引擎,输出包含:学校名称/学生姓名/日期的封面头、编号统一的题目区块、独立打印的答案密钥(标注"RAHASIA")、可选的二维码链接到数字版试卷。无需浏览器打印预览调整,生成的 PDF 直接可用于打印机。
4. 模板化题目设计
区别于逐题编写,Arjuna Engine 支持定义题模板(Question Template),包含带 {variable} 占位符的题干、一组替换值列表、干扰项生成规则和正确答案配置。引擎将这些模板展开为多个内容不同但难度目标一致的变体。
项目采用 Turborepo monorepo 架构,由多个包组成:
/apps/web:React 19 SPA,使用 TanStack Router 文件路由、Tailwind CSS v4、Radix UI 原子组件/apps/api:Hono 边缘服务端,REST + SSE 双协议/packages/core:Effect-TS 实现的核心业务逻辑(题目生成引擎、策略、验证)/packages/print:打印布局引擎(React render-to-string 管线)/packages/i18n:国际化支持(印尼语/英语)Effect-TS 是这个项目的技术亮点——这是一种函数式编程库,提供确定性状态管理和 Effect(副作用)抽象,让题目生成逻辑具备高度可测试性和可组合性。所有业务逻辑都在 Effect 层而非框架层,这是专业 TypeScript 工程的标志。
数据库层使用 Drizzle ORM,开发环境连接本地 SQLite(通过 Turso CLI),生产环境切换至 Neon(边缘 Postgres)。API 部署目标明确指向 Cloudflare Workers,体现了对边缘计算的拥抱。
AI 层使用 Anthropic Claude Opus 4.7,主要应用于自然语言题模板生成(opt-in,非强制),默认题目生成逻辑完全在本地运行,不依赖云端 AI。
终端用户路径:访问 GitHub Pages(https://anandpatikat.github.io/guru-latihan-dinamis/),无需注册、下载、安装,直接在浏览器内创建题目、生成试卷、打印使用。这是最符合印尼大多数教师实际场景的方式——一个 URL 就能解决问题。
开发者贡献路径:需要 Node.js 22+、corepack、pnpm,fork 仓库后 pnpm install + pnpm dev 即可启动本地前后端联调,进入"Buat Soal Baru"页面即可体验完整题目生成流程。
项目坦诚地指出了几点局限。首先,无内置版权题库,题目生成质量依赖 Claude 的语言能力,在某些学科领域可能出现文化敏感性问题或语境偏差。其次,项目 README 明确说明"不适应用于高风险考试环境"——AI 生成题目必须经过教师人工审核,这是负责任的免责声明,但也限制了其在正式评估场景的使用深度。第三,license 为空(实测返回 null),虽然 README 声明 MIT License,但仓库本身未放置 LICENSE 文件,版权状态存在不确定性。
GURU: Arjuna Quiz Engine 代表了 AI 教育工具的一种健康方向——不是取代教师,而是处理教师最不愿意做的行政性重复劳动。其核心指标不是用户活跃度,而是"减少了多少教师加班时间"。从工程角度,项目使用 Effect-TS 将函数式编程引入教育科技领域,是一个值得关注的技术实验。随着 2026-2027 路线图的推进(离线 PWA、学校集群共享题库、SAP-SEKOLAH 系统集成),这个工具有望成为印尼教育数字化基础设施的一部分。