--- 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 \ --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.md:C++课程评语 - AIGC.md:AIGC课程评语 - KITTEN.md:Kitten课程评语 - 体验课.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题,理解为什么编译出错、结果不对,而不是放着不管~加油呀!💪✨