Files
ClassFeedback/.claude/skills/课评生成/skill.md
chengzi 52f21814e8 为CSP班级课评集成OJ数据自动查询功能:
- 批量模式新增Python脚本调用指令和参数映射表
- 单条模式新增--get-student-oj命令说明
- 新增OJ数据板块格式模板和思考模式联动规则
- 新增含OJ数据的CSP03课评示例
2026-05-06 15:50:17 +08:00

497 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: 课评生成
description: 根据课程记录文档批量生成个性化课评,支持单条生成和批量生成两种模式
type: skill
---
# 🎯 课评生成器技能包
## 📁 文件结构
```
课评生成/
├── 技能说明.md # 本文件(完整技能指南)
└── 使用模板/ # 存放各类模板和示例
├── 学生画像模板.md
├── 课评示例.md
└── 课程记录模板.md # 批量生成用的课程记录文档模板
```
## 🌟 功能说明
本技能包专为穹狼科创编程课程设计,支持两种生成模式:
1. **批量生成(推荐)**:用户提供课程记录 md 文档,自动解析学生名单并批量生成课评
2. **单条生成**:针对单个学生逐一确认信息、读取资料、生成课评
综合学生用户画像、教学方案、过往表现和课程特点生成约200字的个性化课评。支持C++、AIGC、Kitten、体验课四大课程按班级匹配专属评语风格。所有课评统一汇总到 `课评汇总-2026春季.md`,便于查阅和归档。
⚠️ **执行规则:调用本技能时无需询问用户确认,直接按流程自动完成所有步骤。**
---
## 📋 模式一:批量课评生成(推荐)
### 使用流程
```
1. 用户提供课程记录文档 → 2. 解析学生名单与表现 → 3. 按学生读取资料 → 4. 逐一生成课评 → 5. 保存到个人汇总(按课次顺序追加) → 6. 生成 output 周汇总文件
```
### 1. 课程记录文档格式
用户提供的课程记录文档md 格式)应包含以下内容:
```markdown
# 第X周课程记录
**日期范围**2026-04-17 至 2026-04-19
---
## 【周五下午 1700 AI03班】1人上课
### 李梓宁
- **课程**AI大作家
- **日期**2026-04-17
- **课次**第7课
- **表现**:对自己的小说特别上心,不断调试修改,主动要求更好的效果,精益求精
- **状态**:✅ 出勤
---
## 【周五晚上 1900 K4班】4人上课
### 陈圆振
- **课程**:彩虹生成器
- **日期**2026-04-17
- **课次**第7课
- **表现**:思维敏捷,掌握分支嵌套知识点,认真完成作品,课堂积极性高
- **状态**:✅ 出勤
### 彭煜腾
- **课程**:彩虹生成器
- **日期**2026-04-17
- **课次**第7课
- **表现**:掌握循环嵌套结构,迅速完成作品,出现 bug 能主动拉着老师讨论
- **状态**:✅ 出勤
---
## 【周六下午 1400 CSP03班】4人上课1人请假
### 郑子煜
- **课程**:字符串处理
- **日期**2026-04-18
- **课次**第7课
- **状态**:⏸ 请假
- **备注**:请家长督促在家复习本周字符串相关知识点
```
### 2. 解析与处理流程
1. **读取课程记录文档**:解析出周次、日期范围、各班级、学生名单及表现
2. **过滤状态**:只处理 **状态为「✅ 出勤」** 的学生,跳过请假/缺勤学生
3. **OJ数据自动获取仅CSP班级**如果是CSP班级调用Python脚本拉取所有出勤学生的OJ做题数据。**此步骤必须执行,不可跳过。**
**步骤3.1:确定参数**
- 课程代码:`CSP03-<课次编号>`(从课次提取,如"第7课"→`CSP03-07`,注意补零到两位数)
- 班级目录名(`--class-name` 参数),映射关系:
| 课程记录中的班级名 | --class-name 参数 |
|---|---|
| 周六早上0830CSP03班 | 橙子周六0830CSP03 |
| 周六下午1400CSP03班 | 橙子周六1400CSP03 |
| 周日早上1030CSP03班 | 橙子周日1030CSP03 |
- 日期:`YYYYMMDD` 格式(从课程记录中提取)
- 学生名单:所有出勤学生姓名,逗号分隔
**步骤3.2:执行脚本(一次性拉取所有出勤学生数据)**
```bash
python scripts/update_feedback_with_oj.py \
--course CSP03-<课次编号> \
--title "<课程名称>" \
--class-name "<班级目录名>" \
--date <YYYYMMDD> \
--students "学生1,学生2,学生3"
```
脚本会:
- 登录OJ系统凭据从 `.env` 读取)
- 从 `config/hw_dict.json` 查找对应课次的作业ID
- 抓取所有出勤学生的提交记录A=课堂练习, B=课后作业, C=拓展练习)
- 控制台输出每个学生的完成率、思考模式、错误分布
- 分析结果自动保存到 `.claude/memory/oj/analysis/CSP03-XX_student_analysis.json`
**步骤3.3:读取分析结果**
分析JSON中包含每个学生的
- `completion`:完成率(如 "2/3"
- `total_attempts`:总提交次数
- `problems`:每题详情(状态、提交次数、思考模式、错误类型)
- `total_errors`错误分布WA/CE/RE/TLE 各几次)
4. **按学生循环处理**
- 读取该学生的用户画像(`.claude/memory/class/[班级]/[姓名]/profile.md`
- 读取过往课评(`.claude/memory/class/[班级]/[姓名]/feedback/课评汇总-2026春季.md`
- **读取本节课上课目标(必须!):到 `.claude/lesson/` 目录下查找对应班级、对应课次的教案文件,获取本节课的教学目标和知识点,作为课评中本节课内容的唯一依据,禁止编造课程内容
- 读取班级风格指南(`.claude/rules/CPP.md`CSP03班使用"家长信格式·要求型"风格)
- **对于CSP班级**从步骤3的分析JSON中提取该学生的OJ做题数据生成【OJ做题数据】板块见下方OJ板块格式整合到课评的"建议/期望"部分之前
- 结合课程记录中的「表现」字段和OJ做题数据生成个性化课评
5. **保存课评**:将新课评按课次顺序追加到个人汇总文件 **末尾**详见下方保存规则CSP班级的课评会自动包含OJ数据部分
6. **更新出勤登记**:为出勤学生添加出勤记录
### 3. 保存课评(按课次顺序追加)
**目标文件路径**
`.claude/memory/class/[班级]/[姓名]/feedback/课评汇总-2026春季.md`
**操作步骤**
1. 检查汇总文件是否存在,不存在则按模板创建
2. 读取现有文件的全部内容
3. **按课次顺序追加新课评到文件末尾**
- 找到文件最后一个课评条目
- 在其后追加新条目,编号为 **最后一条编号 + 1**
- 新条目编号与 `lesson` 文件夹中的课程顺序一一对应
4. **无需重新编号**:原有条目编号保持不变
5. **新条目格式**
```markdown
## 第[N]条:[课程名称]
**授课日期**[日期]
**课评内容**
[课评正文]
---
```
**示例**(追加前):
```markdown
# 李梓宁 课评汇总2026春季
**班级**周五下午1700AI03班
**学生**:李梓宁
---
## 第1条AI是怎么想的
**授课日期**2026-03-08
**课评内容**...
---
## 第2条AI的记忆之谜
...
```
**示例**(追加后):
```markdown
# 李梓宁 课评汇总2026春季
**班级**周五下午1700AI03班
**学生**:李梓宁
---
## 第1条AI是怎么想的
**授课日期**2026-03-08
**课评内容**...
---
## 第2条AI的记忆之谜
...
---
## 第3条AI大作家
**授课日期**2026-04-17
**课评内容**
[新课评正文]
---
```
### 4. 生成 output 周汇总文件
**所有学生课评生成完毕后**汇总本周所有课评到一个markdown文件
**文件路径**`output/第[X]周课评汇总.md`
- 如果 `output` 文件夹不存在,自动创建
- 如果目标文件不存在,自动新建;如果已存在,覆盖写入最新内容
**文件格式**(按日期倒叙排列,最新课程在前):
```markdown
# 第X周课评汇总
📅 日期范围:[日期范围]
---
## 【周日下午 1400 AI03班】4人上课
### 贺楚悦
**课程**AI大作家插图生成
**日期**2026-04-19
[课评正文]
---
### 林俊宇
**课程**AI大作家插图生成
**日期**2026-04-19
[课评正文]
---
## 【周日早上 0845 AI03班】3人上课1人缺勤
### 卢皓霖
⏸ 请假
**备注**:请家长督促在家复习本周知识点
---
### 黄俊博
**课程**AI大作家插图生成
**日期**2026-04-19
[课评正文]
---
### 穹狼科创 · 2026春季学期 ✨
```
**排序规则(倒叙)**
- 按班级分组,**日期最晚的班级排在最前面**(倒叙排列)
- 同一班级内,学生顺序保持课程记录文档中的顺序
- 请假/缺勤学生也列出,标注状态和备注
**生成步骤**
1. 读取课程记录文档,按日期从晚到早排序班级(倒叙)
2. 对每个班级,输出班级标题和人数信息
3. 对出勤学生,从个人课评汇总文件中提取最新一条课评内容
4. 对请假/缺勤学生,输出状态说明和复习建议
5. 检查 `output` 文件夹是否存在,不存在则创建
6. 保存到 `output/第[X]周课评汇总.md`
---
## 📋 模式二:单条课评生成(备用)
当不需要批量生成,只需要为单个学生写课评时使用。
### 使用流程
```
1. 确认学生/课程/课次 → 2. 自动获取OJ数据仅CSP班级运行Python脚本→ 3. 读取相关资料 → 4. 收集本次表现 → 5. 生成课评CSP班级自动整合OJ数据→ 6. 保存到学生文件夹(按课次顺序追加)
```
### 1. 确认基本信息
- 学生姓名_______
- 班级_______
- 课程类型□CPP □AIGC □KITTEN □体验课
- 本节课次第_______课
- 课评风格:根据班级自动匹配
- AI03班 → 温暖鼓励型
- K4班 → 家长信格式·温和鼓励型
- CSP03班 → 家长信格式·要求型
- 体验课 → 家长信格式·转化导向型
### 2. OJ数据获取仅CSP班级必须执行
如果课程类型为CPP且班级为CSP03班运行以下命令获取该学生的OJ做题数据
```bash
python scripts/update_feedback_with_oj.py \
--course CSP03-<课次编号> \
--get-student-oj "<学生姓名>"
```
**参数说明**
- `--course`CSP03-课次如第7课→`CSP03-07`(课次必须补零到两位数)
- `--get-student-oj`学生姓名脚本会输出该学生的OJ数据Markdown板块
- 脚本自动从 `.env` 读取OJ登录凭据从 `config/hw_dict.json` 查找作业ID
脚本输出的Markdown内容包含完成情况、每题状态表含思考模式和错误类型、分析和错误分布。将此内容直接作为【OJ做题数据】板块嵌入课评。
### 3. 读取参考资料
- **风格指南**`.claude/rules/[课程].md`
- CPP.mdC++课程评语
- AIGC.mdAIGC课程评语
- KITTEN.mdKitten课程评语
- 体验课.md体验课转化评语
- **用户画像**`.claude/memory/class/[班级]/[姓名]/profile.md`
- 参考6种学生类型内向谨慎型、信心不足型、新手入门型、聪明浮躁型、潜力待挖型、容易满足型
- **本节课上课目标(必须读取!):** 到 `.claude/lesson/` 目录下查找对应班级、对应课次的教案文件,获取本节课的教学目标和知识点,作为课评中本节课内容的唯一依据,禁止编造课程内容:
- K4班课程`.claude/lesson/K4/README.md`
- AI03班课程`.claude/lesson/AI03/AICODE-03/` 或 `.claude/lesson/AI03/AICODE-06/`
- CSP03班课程`.claude/lesson/CSP03/知识点.md`
- 体验课根据实际体验内容从对应lesson文件读取
- **过往课评**:读取该学生的 `课评汇总-2026春季.md` 和最近课评,避免重复用词
### 4. 收集本次表现
```
掌握程度:□优秀 □良好 □一般 □待提高
课堂互动:□积极 □一般 □被动 □缺席
具体表现:
- 优点_________________________
- 不足_________________________
- 进步_________________________
```
### 5. 生成课评约200字
根据选择的风格组合内容:
- 开场白30字+ 优点60字+ 建议60字+ 结束语50字
- **CSP班级专属**自动整合OJ做题数据包括完成情况、错误分布、思考模式分析放在课评的单独板块
- 姓名称呼规则:如果学生姓名是三字姓名,正文中默认去掉姓氏,只保留后两个字称呼,例如"陈圆振"写作"圆振""王晨语"写作"晨语",让语气更亲切。
### 6. 保存课评(按课次顺序追加)
保存规则与「模式一」第3节相同将新课评按课次顺序追加到个人汇总文件末尾原有条目编号保持不变。
### 7. 更新出勤登记(自动)
保存课评后,自动在出勤登记文件中记录本次出勤:
**出勤登记文件路径**
`.claude/memory/class/[班级]/[姓名]/feedback/出勤登记-2026春季.md`
**记录格式**
```
| 日期 | 课程 | 课次 | 状态 | 备注 |
| 2026-04-06 | AI大作家下 | 第5课 | ✅ 出勤 | |
```
**操作步骤**
1. 检查出勤登记文件是否存在,不存在则从模板创建
2. 查找日期列,如果已有今日记录则更新,否则在表格末尾添加新行
3. 状态标记为"✅ 出勤"
4. 备注栏留空
---
## 🎨 学生类型速查
| 观察点 | 鼓励型学生 | 激励型学生 |
|--------|------------|------------|
| **语言特征** | "我不会"、"对不对"、"好难" | "我会了"、"太简单"、"够用了" |
| **课堂表现** | 专注但沉默、需要确认、害怕出错 | 反应快、爱抢答、满足现状 |
| **作品完成** | 慢但认真、反复确认 | 快但粗糙、不愿优化 |
| **提问方式** | 被动等待老师发现 | 主动但缺乏深度 |
## 💡 生成技巧
### AI03班 - 温暖鼓励型
- 多用"很棒"、"特别棒"、"超棒"和波浪号""
- 描述具体行为:"一字一字打字"、"和AI聊了一节课"
- 温和建议用"要是...就更好啦~"
- 固定结尾:"老师会继续关注【姓名】的表现,期待看到更多精彩!🌟💡"
### K4班 - 家长信格式·温和鼓励型
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点
- 肯定创意:"能够有自己的创意"
- 温和指出:"不过老师发现...专注力有些下降"
- 鼓励结尾:"继续加油哦!"、"相信你会把程序做得更完整"
### CSP03班 - 家长信格式·要求型
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点
- 表扬积极:"状态在线"、"早早到校等候超积极"
- 期望要求:"希望多思考"、"理解为什么这么写,不只是抄完就好~"
- 鼓励结尾:"加油呀!💪✨"
#### CSP03班 OJ数据板块格式必须包含
课评正文后、鼓励结尾前插入以下格式的OJ做题数据板块
```markdown
## 【OJ做题数据】
**完成情况**: 2/3 (共5次提交)
| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 |
|------|------|----------|----------|----------|
| CSP03-XXA | ✅ 通过 | 1 | 一气呵成 | — |
| CSP03-XXB | ✅ 通过 | 2 | 调试改进 | WA×1 |
| CSP03-XXC | ❌ 未通过 | 2 | 遇到困难 | CE×1, WA×1 |
**📊 分析**: 完成2题C题有尝试但尚未通过建议课后继续完成。
**错误分布**: 答案错误1次编译错误1次。
```
OJ数据板块中各字段直接从步骤3保存的分析JSON中提取
- `completion` → "完成情况"
- `total_attempts` → "共X次提交"
- 每题 `solved` → 状态(✅通过 / ❌未通过 / ⬜未提交)
- 每题 `attempts` → 提交次数
- 每题 `pattern` → 思考模式
- 每题 `errors` → 错误类型(如 WA×2, CE×1
- `total_errors` → 错误分布总结
**思考模式描述联动**
- 如果学生有题目是"一气呵成",在课堂表现中提到"思路清晰,代码一次通过"
- 如果"调试改进",提到"能够自己发现并修正问题,调试能力不错"
- 如果"遇到困难",在期望部分温和提出"希望课后多练习XX类型题目"
- 如果有未提交题目,建议"课后抽时间完成未提交的练习"
### 体验课 - 家长信格式·转化导向型
- 固定开头:"家长好,今天体验的是《...》课程" + 课程价值介绍
- 突出"第一次":强调新体验,降低焦虑,突出潜力
- 建立愿景:描述继续学习后孩子能达到的水平
- 自然引导报课:用期待和相信引导,不硬推销
- 鼓励结尾:"期待在正式课堂上再次见到【姓名】!"
## ⏱️ 时间分配
### 批量生成模式
- 读取课程记录文档2分钟
- **CSP班级OJ数据拉取**3分钟运行Python脚本
- 按学生读取资料可并行10分钟
- 逐一生成课评20分钟
- 保存到个人汇总3分钟
- 生成 output 周汇总文件3分钟
- 更新出勤登记2分钟
- **总计约40-45分钟**
### 单条生成模式
- 准备阶段5分钟
- 资料读取10分钟
- 表现记录5分钟
- 生成撰写15分钟
- 保存归档5分钟
- **总计40分钟**
## 📝 示例课评
**AIGC课程 - 鼓励型**
> 李明今天虽然是第一次接触AI绘画但我看到了你眼里的好奇这就是最好的开始。你的描述很有画面感"想要一个会眨眼的可爱猫咪"这就是好的Prompt。虽然操作还有点生疏但老师注意到你一直在尝试这份坚持比做对题目更珍贵。下次可以把想法先写在便签纸上分点列出跟AI沟通会更顺畅。记住编程最大的门槛不是英文或数学是敢于尝试的勇气你已经有了。继续和你的"AI搭档"对话吧,它会越来越懂你的。
**CSP03班 - 家长信格式·要求型含OJ数据**
> 家长好,本周学习的内容是《字符串处理》:
> 1. string 类型的声明与使用
> 2. 字符串的输入输出cin / getline
> 3. 字符串的拼接与比较操作
> 4. 常用字符串函数size / substr / find
> 5. 培养独立调试与耐心排查错误的能力
>
> 子煜状态在线,课堂互动积极,能够跟上老师的节奏。对于字符串的基本操作掌握得不错,在讲解 substr 和 find 函数时能迅速理解并动手尝试。
>
> ## 【OJ做题数据】
>
> **完成情况**: 2/3 (共5次提交)
>
> | 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 |
> |------|------|----------|----------|----------|
> | CSP03-07A | ✅ 通过 | 1 | 一气呵成 | — |
> | CSP03-07B | ✅ 通过 | 2 | 调试改进 | WA×1 |
> | CSP03-07C | ❌ 未通过 | 2 | 遇到困难 | CE×1, WA×1 |
>
> **📊 分析**: 完成2题C题有尝试但尚未通过建议课后继续完成。
> **错误分布**: 答案错误2次编译错误1次。
>
> A题一次通过说明课堂知识吸收得不错。B题虽然出了点小错但能自己调试改正调试能力在进步。不过C题上卡住了希望课后能抽时间继续思考C题理解为什么编译出错、结果不对而不是放着不管加油呀💪✨