智能批改作业——毕业设计/论文多文档自动化审查。触发词:"批改作业"、"审查毕业设计"、"毕设审查"、"审查存档"、"智能批改"、上传论文/毕设存档文件或目录。 支持:doc/docx/pdf/pptx 批量读取、多维度评分(内容完整性/格式规范性/逻辑一致性/论证合理性)、跨文档一致性检查(书名词号日期引用)、...
---
name: auto-grading
description: |
智能批改作业——毕业设计/论文多文档自动化审查。触发词:"批改作业"、"审查毕业设计"、"毕设审查"、"审查存档"、"智能批改"、上传论文/毕设存档文件或目录。
支持:doc/docx/pdf/pptx 批量读取、多维度评分(内容完整性/格式规范性/逻辑一致性/论证合理性)、跨文档一致性检查(书名词号日期引用)、PPT答辩评审(基本信息/内容结构/视觉美感/观点表达)、GB/T 7714参考文献格式校验。
内置安全护栏:每条问题标注出处文件和置信度,输出前自动执行三问自查(证据可溯源/排除提取噪声/排除文件混淆)——宁可漏报,不可误报。
---
# 智能批改作业 Skill v1.0
> 串联 doc-browser(批量读取)→ academic-workflow(评分模板) → 输出审核报告
## 触发场景
- 用户上传毕业设计存档目录、zip 压缩包、或指定路径
- 用户说「批改作业」「审查毕业设计」「毕设审查」「审查存档」「智能批改」
- 用户要求对学生毕业论文/毕业设计做规范性检查
## 审查流程(5 步)
### 第①步:批量读取(doc-browser 模式)
对目标目录中所有文件执行:
| 文件类型 | 工具 | 提取内容 |
|---------|------|---------|
| `.docx` | python-docx | 全文 + 图片数 + 域代码残留检测(TOC/HYPERLINK/PAGEREF/REF) |
| `.doc` (WPS) | textutil → antiword → olefile 二进制提取(三级降级) | 全文 |
| `.pdf` (查重报告) | PyPDF2 | 全文 + 定位重复率数值 |
| `.pptx` | python-pptx | 幻灯片文本 + 图片数 + 页数 |
**文件优先规则**:当同一文档存在 `.doc` 和 `.docx` 两个版本时,检查 `.docx` 是否为模板半成品(判断标准:含占位符/格式说明文字/旧项目名),若是则改读 `.doc`。
**数据交接**:提取文本写入 `/tmp/auto_grading/` 目录下对应的 `.txt` 文件。
### 第②步:单文档评分
按毕业设计评审模板(`references/review_template.md`)对每份核心文档评分:
| 文档类型 | 评分维度 | 满分 |
|---------|---------|:----:|
| 创作报告/论文 | 内容完整性 + 格式规范性 + 逻辑一致性 + 论证合理性 | 100 |
| 文献综述 | 同上 | 100 |
| 开题报告 | 同上 | 100 |
| 外文翻译 | 格式规范性 + 翻译质量 | 60 |
| 申报表/任务书/进程表 | 格式规范性 + 栏位完整性 | 40 |
### 第③步:跨文档交叉审查
| 检查维度 | 满分 | 具体检查项 |
|---------|:----:|---------|
| 要素一致性 | 50 | 游戏名称/学生姓名/学号/指导教师在所有文档中完全一致;日期逻辑(开题<中期<答辩<提交);审批栏完整 |
| 引用一致性 | 30 | 三套参考文献(创作报告/文献综述/任务书)重叠度合理;正文引用条目均在参考文献列表中存在 |
| 分工一致性 | 20 | 小组分工表与创作报告中个人角色一致;申报表课题方向与分工表匹配 |
### 第④步:PPT 答辩评审
| 维度 | 满分 | 说明 |
|------|:----:|------|
| 基本信息完整 | 20 | 题目/姓名/学号/指导教师/学院/日期 齐全 |
| 内容结构 | 30 | 选题背景→设计思路→过程展示→成果呈现→总结展望,逻辑清晰 |
| 视觉美感 | 25 | 版式统一、配色协调、图文比例合理、无文字堆砌 |
| 观点表达 | 25 | 核心创新点突出、设计过程有说服力、成果有实物/视频支撑 |
### 第⑤步:输出汇总报告
> 必须在输出前执行安全护栏
## 安全护栏(Harness Engineering)
**核心原则:宁可漏报,不可误报。**
### 三层硬约束
| 层级 | 机制 | 执行方式 | 防什么 |
|------|------|---------|--------|
| **L1 格式校验** | `scripts/harness.py --input` | Python 脚本强制执行 | 阻止 `evidence` 为空的虚假 bug |
| **L2 证据回溯** | `scripts/harness.py` 自动 grep 原文 | 脚本在提取文本中搜索 evidence 字符串 | 阻止幻觉/编造出来的问题 |
| **L3 版本校验** | `scripts/harness.py --archive-dir` | 检测 .doc/.docx 并存,自动选正确版本 | 阻止审错模板文件 |
### 审查工作流(L1+L2+L3 全链路)
```
① batch_extract.py 提取文本 → /tmp/auto_grading/
② LLM 评分 + 输出 issues.json(每条含 file/issue/evidence/confidence)
③ harness.py --input issues.json --txt-dir /tmp/auto_grading --archive-dir <存档目录>
├── L1: 校验 evidence 非空、confidence 有效
├── L2: grep 原文确认 evidence 真实存在
│ ├── 找到 → passed(高/中置信度保持)
│ └── 未找到 → 自动降级为 ⚠️待验证
└── L3: 有 .doc/.docx 冲突时自动选择正确版本
④ 输出清洗后的 clean_issues.json + 护栏报告
```
### 为什么这套 Harness 能防止之前的虚假 bug
之前的错误(报"图1-1来源错误"但实际不存在)→ L2 会因 evidence 字符串在原文中找不到而自动降级。
之前的错误(审了模板 .docx 而非正式 .doc)→ L3 会检测模板残留信号,自动选 .doc。
### 第⑤步:输出结构化评审结果
**① 输出 JSON**(给 harness.py 校验):
```json
{
"student": "姓名",
"review_date": "2026-06-15",
"single_doc_scores": {
"创作报告": {"完整性": 30, "规范性": 13, "逻辑性": 15, "论证": 16, "总分": 74}
},
"cross_check": {"要素一致性": 45, "引用一致性": 25, "分工一致性": 18, "总分": 88},
"ppt_review": {"基本信息": 18, "内容结构": 25, "视觉美感": 20, "观点表达": 22, "总分": 85},
"issues": [
{
"file": "创作报告.doc",
"issue": "副标题仍为'以曹乐川为主'",
"evidence": "游戏《归浦:数字宿命》——以曹乐川为主",
"confidence": "高"
}
]
}
```
**② 运行 harness.py** 校验:
```bash
python3 scripts/harness.py --input /tmp/issues.json \
--txt-dir /tmp/auto_grading --archive-dir <存档目录>
```
**③ 基于清洗后的 clean_issues 生成 Markdown 报告**(评分表 + 交叉审查表 + 修改清单 + 整体评价)。
## 安装依赖
```bash
pip install PyPDF2 python-docx python-pptx olefile
# macOS 自带 textutil、antiword(可选)
```
don't have the plugin yet? install it then click "run inline in claude" again.