这个项目能做什么

Lectern 是自托管、开放格式 LMS 套件(Lectern · Scriptorium · Oracle)中的“Registrar”组件,面向大学计算机科学教师。它覆盖课程运行的行政管理生命周期:学期脚手架、成绩册整合、考试构建与验证、ISA 评分工件发布、GitHub Classroom 绑定、校园 LMS(Canvas)名单/成绩导入以及期末归档。 一个核心设计原则是开放格式。考试是 LaTeX,内容和笔记是 Markdown,名单/成绩册/登记册是 CSV,学期规格、构建清单和归档清单是 YAML。该项目认为,这使每个工件都可 diff、可 Git 版本控制、可脚本化且持久,避免专有成绩册和仅云端工作流。 工具以 `reg-*` 系列中的可脚本化 CLI 命令形式提供,包括学期创建/定稿/归档、成绩册构建与 Canvas 导出、Gradescope 题目分析、考试构建/验证、LMS 名单与成绩导入、GitHub Classroom 名单播种与用户名绑定、ISA 发布、带防篡改序列号的教学大纲生成、提交真实性分诊,以及三层实验评分流水线(recon → digest → report/feedback delivery)。 考试系统支持单一来源 `.tex` 构建和用于多套试卷(A/B/C)、每位学生个性化副本以及 Gradescope 产品的 pack-mode YAML 清单。个性化副本带有由 SHA-256 哈希派生的每位学生序列号,并且构建是确定性的,因此有争议的试卷可以从归档来源复现。 安装通过 shell 脚本或 pip 到 Python 3.11+ 环境进行;考试流水线会调用 LaTeX 工具链和 poppler 实用程序。一个完整示例端到端演示了 CECS 378 的一个完整学期。Lectern 和 Scriptorium 采用 MIT 许可;Oracle 评分引擎在单独许可下提供源代码。