# Generate Student Feedback

> 读取当天课表，按真实开始时间依次处理一对一与欧亚班课反馈；一对一支持分号回答四问或从会议纪要、时间轴和课堂转写中提取，欧亚班课按固定模板生成课程反馈。用于每日 15:30 自动询问，以及生成、整理、填写或发布当天课后反馈。

- Skill: `tgozen63/generate-student-feedback` (Agent Skill, multi-file: 9 files)
- Install (CLI): `npx skillmds@latest add tgozen63/generate-student-feedback`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tgozen63/generate-student-feedback/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: TGozen63 (https://skillmd.com/u/tgozen63)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/tgozen63/generate-student-feedback

---


# 生成与提交学生课后反馈

## 启动方式

1. 当用户消息去除首尾空白后完全等于“反馈”时，启动当天完整流程：读取当天全部一对一课程与欧亚班课，合并后按真实开始时间从早到晚逐项询问并处理反馈。
2. 每日自动任务计划在 15:30（Asia/Shanghai）触发。触发时仅在 15:30（含）至 16:30（不含）内继续；若因电脑关机、应用未运行或其他原因在窗口外延迟触发或补触发，保持静默，不读取课表、不询问、不补运行。时间符合后，再检查同一任务中当天是否已有用户手动发送的“反馈”：若有则静默；若没有则启动当天完整流程。
3. 用户直接要求为某位学生生成、整理或填写反馈时，也执行本 skill；已有的信息不要重复询问，只补问缺失的必要信息。
4. 微信端只生成文本，不发送到微信或企业微信。网页端仅通过新东方混合学习中心填写和发布。

## 读取当天反馈课表

1. 使用 `Asia/Shanghai` 的当前日期解释“今天”。首次使用时，将 `references/schedule.example.json` 复制为 `references/schedule.local.json`，填写课表目录和工作表名称；该本机文件已被忽略，不上传 Git。
2. 优先运行本 skill 的 `scripts\lookup_schedule.py --cache-output "{临时 JSON 路径}"`，读取缓存中的 `courses`、`excluded` 与 `missing_times`；若当前环境不能运行 Python，可读取当天有效的 `feedback-schedule-cache.json`。
3. 分类口径与课时统计一致：只有欧亚、云中学、AP 微积分及历史班级沃隆港/伍伦贡/卧龙岗、新南、双学分/启程 3915、英本、IG、OSSD、VET/14800 等明确名称算班课；家长会与其他会议忽略；其余有有效授课时间的课程即使没有一对一后缀也算一对一。
4. 反馈流程保留全部一对一课程，并在班课中只保留欧亚；云中学、AP 微积分和其他历史班课暂不生成反馈。欧亚 `OH` 既不计课时也不进入反馈，只保留实际存在的 `L` 与 `T` 时段。
5. 将保留的课程按 `start_time` 合并排序。若同一学生当天有两节一对一课程，仍按两节分别询问；同一天欧亚的多个 L/T 分段合并为一份班课反馈。
6. 从一对一课程名识别学生姓名和科目；无法可靠识别时，用一个简短问题确认。课程名称、日期、类型和时间逐字依据脚本结果，不猜测。
7. 没有一对一或欧亚班课时，告知用户“今天课表中没有需要生成反馈的课程”，然后结束。
8. 某节课时间缺失时，指出对应课程的时间缺失，不自行补写；其余课程仍可继续。

## 一对一学生分流

- 网页端学生：`references/web-feedback.local.json` 中 `web_students` 列出的学生。
- 微信端学生：不在上述名单中的其他学生。
- 只按从课表课程名可靠识别出的完整姓名分流，不使用模糊匹配。
- 每次只处理排序后的一个课程项目。完成当前一对一或欧亚班课后，再询问下一项。

## 统一四问

向所有学生询问相同的四项内容：

```text
{学生姓名}（{display_date} {上课时间}）
请按顺序回答，并用分号分隔：
1. 学生上次作业完成情况；
2. 学生今天学了哪些内容；
3. 学生今天学得怎样，有哪些需要注意和改进的地方；
4. 作业是什么。
```

解析规则：

- 中文分号 `；` 和英文分号 `;` 均可作为分隔符；按前三个分号切分，第四部分保留为作业内容。
- 用户只提供三个部分、第四部分为空，或明确表示没有说明作业时，将第 4 项写为“完成下发作业文档”。
- 第 1 项可以回答“无”“未检查”“没有上次作业”等，按原意保留，不虚构完成情况。
- 第 2 或第 3 项缺失时，只追问缺失项；不要猜测课堂内容或学习表现。
- 用户要求跳过某位学生时，跳至下一位，不生成或提交该生反馈。

## 会议纪要输入

用户未按四问作答，而是提供线上会议纪要、带时间轴的课堂记录、课堂转写或课程摘要时，不要要求用户重新按分号回答；直接从材料中提取并简要整理四项答案。时间戳只帮助判断主题顺序，不写入反馈正文：

1. 先自行判断材料是否实际讨论了上次作业。只有出现作业完成、检查、讲解、订正或具体作业问题等明确证据时，才提取“上次作业完成情况”；若完全没有讨论作业，将该项标记为“纪要未提及”，并在最终【课堂表现】中彻底省略作业相关句子，不写“未检查”“未完成”或默认作业评价。
2. 从后续新授、拓展与主要练习内容中提取“今天学了哪些内容”，合并重复知识点并保留关键公式、方法和章节名。
3. 只把材料中明确出现的学生掌握、独立完成、错误或困难写成学习表现。没有学生个体表现证据时，不虚构“掌握良好”等评价；改为从纪要中的易错点、强调事项和解题规范提炼中性的“需注意/建议加强”内容。
4. 从纪要中的课后作业、练习或后续任务提取第 4 项；完全没有提及时，仍可把【课后作业】填为“完成下发作业文档”，但这个默认值不得倒推到【课堂表现】中。
5. 用户同时给出学生姓名并明确要求生成、正式填写或发布今日反馈时，视为已经提供完整材料及网页端动作确认；核对当天课表后直接处理，不再重复询问四问或发布确认。
6. 会议标题、发言人、自动摘要中的措辞只能作为材料来源，不能据此推断学生态度、出勤、成绩或未明确出现的学习效果。
7. 纪要总结只保留作业中的主要问题、课程核心主题、明确的学习表现与最关键的改进建议；合并同类知识点，避免罗列纪要的全部小标题和例题细节。

## 微信端处理

1. 收到四项答案后，按“整理与写作规则”生成一条可直接复制给学生或家长的纯文本。
2. 展示成品文本，然后询问课表中的下一名学生。
3. 不使用浏览器，不发送到微信或企业微信。

### 微信端固定格式

```text
{学生姓名}同学课后反馈
【上课时间】：{display_date 与课表中的一对一课程时间}
【所授科目】：{科目}
【上课内容】：{从第2项提取的一个高度概括的简短课程主题}
【课堂表现】：{第1项、第2项具体内容和第3项润色后的连贯反馈}
【课后作业】：{第4项；未说明时为“完成下发作业文档”}
```

日期显示为 `M/D`；【上课内容】只写一个简短主题；所有具体知识点写入【课堂表现】。

## 欧亚班课反馈

遇到排序后的欧亚班课时，只询问以下两个问题，并等待用户用一个中文或英文分号分隔答案：

```text
欧亚班课（{display_date}，L/T 实际时段）
请用分号分隔回答：
1. 上课内容；
2. 今日缺勤学生及情况（不填则默认全勤）。
```

解析与生成规则：

- 分号前为上课内容；分号后只记录缺勤学生，例如“丁鹏请假”。第二项缺失、留空或用户明确说“无”时，写“全勤”。
- 从上课内容概括一个简短作业主题，生成“完成{主题}作业”。不得凭空增加未讲授的知识点；若有多个并列主题，可保留为“完成{主题1、主题2}作业”。
- 标题 `新加坡预科2026 S1 课程反馈` 和科目标签 `【MATH】` 固定不变。
- 日期使用 `M月D日 星期X`。只写课表中实际存在的 L/T：各自一行，时间把冒号显示为点号；同一类型有多个真实时段时依次列出或用顿号分隔。不得写 OH，也不得用 OH 补足缺少的 T。
- 欧亚反馈只生成可复制文本，不使用一对一网页发布流程。

固定模板：

```text
新加坡预科2026 S1 课程反馈
{M月D日 星期X}

【MATH】
L: {实际 L 时间；没有则省略整行}
T: {实际 T 时间；没有则省略整行}

上课内容：
{用户提供并整理后的上课内容}

本周作业：
完成{从上课内容概括的主题}作业

今日学生出勤情况：
{缺勤学生与情况；未填写时为“全勤”}
```

## 网页端处理

网页端仅处理本机配置中列出的学生。首次使用时，将 `references/web-feedback.example.json` 复制为 `references/web-feedback.local.json` 并填写学生名单、教师和站点地址；`browser_family` 固定为 `chrome`，该本机文件已被忽略，不上传 Git。需要执行网页端分支时，完整读取 [网页填写规则](references/web-feedback.md) 和 Chrome 控制技能。默认只调用 `scripts/run_web_feedback.mjs` 的唯一入口；该入口固定连接用户的 Chrome，负责登录状态恢复、课表页接管、底层填写流程、计时和最终页面整理，不得改用内置浏览器。只有入口明确报告页面结构变化或无法唯一定位时，才退回手动逐步操作。

1. 在四问末尾追加：“该生为网页端学生；回复四项答案即表示确认把整理后的反馈填写并发布到新东方学情反馈页面，并在发布成功后点击【复制个人分享链接】。”
2. 用户回复四项答案后，视为对当前课程、当前学生填写、发布并复制个人分享链接的动作时确认；无需在填写后重复确认。
3. 将四项答案严格映射到 4 个网页字段：
   - 授课内容：从第 2 项提取的一个高度概括的课程主题。
   - 班级学情反馈：第 2 项的详细课堂学习内容与第 3 项的掌握情况、问题和改进建议，合并为连贯文本。
   - 建议练习：第 4 项；缺失时为“完成下发作业文档”。
   - 上节课练习情况：第 1 项；若明确为“无”或“没有上次作业”，可留空。
4. 不填写课堂出勤、入门测、出门测、课堂表现、课中掌握情况、提升方案或图片等其他模块。
5. 核对课程日期、时间和学生后，用新内容替换上述 4 个目标字段；其余字段保持原样。
6. 填写后逐字段回读核对，再保存并发布。确认发布成功后，从最新页面快照定位目标学生的“复制个人分享链接”按钮，确认唯一后点击；确认复制成功后再简短汇报并询问下一名学生。
7. 登录状态失效时，唯一入口先在 Chrome 点击“教师登录”，同时检测原标签页跳转和 Chrome 新开的通行证标签页；识别密码登录区域后，使用浏览器已保存的账号密码并点击“登录”或“登 录”，不得读取凭据。浏览器未自动填充、出现验证码或登录失败时，请用户在当前 Chrome 手动登录。其他页面结构、课程匹配、发布或复制链接失败时，同样不丢失内容：准确区分已完成的步骤，输出该生的四字段网页草稿和失败原因，然后继续处理其余学生。

## 整理与写作规则

1. 保留用户和课表提供的事实、姓名、题号、章节、公式名与知识点，不擅自增加成绩、态度、行为或学习效果。
2. 对简短答案适度扩句，修正口语、重复、错别字和标点，使表达专业、具体、温和；不要把一条信息扩写成多个未经提供的新事实。
3. 第 1 项回答“未检查”时如实写明，不推断完成情况；会议纪要完全未讨论作业时，则不在【课堂表现】中出现任何作业相关内容。
4. 从第 2 项提取一个高度概括的主题；同时保留第 2 项的具体知识点。
5. 将第 2 项具体内容与第 3 项掌握、问题和建议合并成简洁、连贯的反馈，通常控制在 2—4 句话；按主题组织，不复述课堂发生的时间顺序。
6. 评价优点时说明具体掌握情况；指出问题时使用建议性表达，并给出对应的简短建议。
7. 不使用空泛夸奖，不夸大进步，不给学生贴标签。
8. 从课表课程名判断科目；无法判断时询问用户，不擅自填写。
9. 反馈正文不使用“首先、随后、然后、接着、最后”等时间顺序词。描述课程内容时使用“本节课学习了……”或“本节课讲解了……”，直接概括核心知识点。
10. 标题保留学生完整姓名；正文需要点名时，两字姓名使用全名，三字姓名使用后两个字。例如“方博”仍写“方博”，“刘秉恒”写“秉恒”。四字及以上姓名默认使用完整姓名，除非用户另有说明。
11. 课程内容句不使用学生姓名开头；评价学生的掌握情况、问题和改进建议时使用姓名简称。姓名不必在每句话中重复出现。

## 完成条件

- 按真实开始时间处理完当天所有一对一课程与欧亚班课。
- 微信端学生均已输出可复制文本或按用户要求跳过。
- 网页端学生均已确认发布成功并点击“复制个人分享链接”，或已输出四字段草稿与明确失败原因。
- 欧亚班课已输出固定模板反馈或按用户要求跳过。
- 最后汇总当日微信端已生成名单、网页端已发布名单、欧亚班课反馈以及失败或跳过名单。

