Files
ClassFeedback/.claude/skills/课评生成/skill.md

47 KiB
Raw Blame History

name, description, type
name description type
课评生成 快速生成个性化课评,你只需提供学生本节课的表现,自动匹配班级风格生成高质量课评 skill

🎯 课评生成器技能包

🌟 功能说明

本技能专为穹狼科创编程课程设计,使用超简单:你只需要告诉我学生的基本信息和本节课表现,我就能自动生成符合班级风格的个性化课评。

✅ 支持课程:AIAGENT03班 / CSP04班 / CSP00班 / 体验课(2026秋季新学期) ✅ 自动匹配班级专属风格:CSP要求型 / AIAGENT温暖鼓励型 / 体验课转化型 ✅ CSP00/CSP04班课评已升级为 v2 提交诊断式写法(见下方强制规则;数据源改用全班逐生逐次提交诊断,不再用旧版 OJ 简表)

⚠️ CSP 课评强制规则(v2 · 严格执行)

适用范围:所有 CSP 班级(CSP00 / CSP04)。本规则优先级最高,覆盖本技能中其它关于 CSP 与 OJ 的旧写法。

生成任何 CSP 课评前,必须先加载并执行项目技能 .claude/skills/class-feedback-report/SKILL.md (技能名 class-feedback-report),按它的「班级课堂反馈与提交诊断」流程产出课评:

  1. 数据来源改用提交诊断:用该技能的 scripts/fetch-class-data.mjs 拉取全班逐生逐次提交 (代码 + 编译报错 + 状态 + 客观题),不再使用旧版 scripts/get_student_oj.py 的单行 OJ 简表。
  2. 报告结构必须按该技能的固定模板(🌟值得表扬 → 📊完成情况 → 💻编程题逐题诊断(第1次提交错在哪…第N次通过)→ 📝选择题/判断题错题分析 → 📖整体分析 → ✅建议)。
  3. 必须产出家长版三件套:<姓名>-<班组>-<章节号>-反馈报告.{md,html,pdf}, HTML 以 samples/report-sample.html 为样式基准,pdf 用 scripts/mkpdf.mjs 生成(单页 660px)。
  4. 审核红线(必须写进每次交付说明):报告是草稿、须教师审核;只写学习习惯不写人身评价; 代码/报错/错题选项只发对应家长、不进班级群;不做学生横向对比排名。
  5. 存档结构(2026-09-26 统一):所有课程体系统一存档到 .claude/memory/class/<班组>/<学生>/,画像在 .claude/memory/class/<班组>/<学生>/profile.md。

AIAGENT03 班、体验课不使用 OJ 报告三件套流程,但存档路径与下方通用规则相同。

快速触发:对 AI 说「整理 XX 班的课堂反馈」或「引导我进行操作」即可调用该技能;其脚本自动读取仓库根 .env(已配置 OJ 凭据)。

🌐 课评网页模版统一规则(一键导出 PDF · 强制执行)

适用范围:所有课评网页模版与由本技能生成的课评网页(AIAGENT 结构模板、C++/CSP 结构模板、CSP v2 家长版 report-sample.html、课评汇总网页等)。强制,无例外。

每张课评网页必须带一个一键导出 PDF 按钮,统一采用零依赖的 window.print() 方案(浏览器原生「另存为 PDF」,离线可用、不依赖任何外部库),并配 @media print 打印样式:

  1. 按钮:🖨️ 导出 PDF,点击即调起打印面板(用户选「保存为 PDF」即可)。
  2. 打印样式必须(否则家长收到的 PDF 会缺色/错位):
    • 隐藏所有悬浮控件:导出按钮、下载按钮、提示 toast(display:none!important);
    • * { -webkit-print-color-adjust:exact!important; print-color-adjust:exact!important; } 保留渐变与配色;
    • 卡片 break-inside:avoid 避免内容被分页截断;背景置白、去掉多余留白;
    • 若有入场动画(.animate-in 等)需在打印时强制 opacity:1; animation:none。
  3. 标准实现直接复用:参考 .claude/skills/class-feedback-report/samples/report-sample.html 的 .export-btn + @media print 片段,整段拷过去即可,无需重写。

已合规模版:samples/report-sample.html(CSP v2)。两份结构模板 output/课评汇总/模板/AIGENT课评结构模板.html、output/课评汇总/模板/C++课评结构模板 .html 本次已补齐「导出 PDF」按钮。今后新增/改写任何课评网页,都先确认带此按钮再交付。

💡 使用方式

交互式问答(推荐)

输入 /课评生成,我会按顺序问你以下信息:

📝 问题1:这次写哪个班?(列出当前所有班级选项)
  AIAGENT03班:周五下午1700、周六晚上1900、周日早上0845、周日下午1400
  CSP04班:周六早上0830、周六下午1400
  CSP00班:周五晚上1900(2课时)
  体验课

📝 问题2(AIAGENT03班):作品文件夹路径是什么?

📝 问题3(CSP00/CSP04班):OJ题目的token是什么?

📝 问题4:本节课出勤情况如何?(来了哪些学生,谁请假)

你回答完所有问题,我就会自动完成整个课评生成流程!


🔄 自动完成的工作

你提供信息后,我会自动完成:

第1阶段:课评准备

  1. 使用python-docx读取录音转写文件
  2. AI分析录音文本,识别"发言人1,2,3"对应的学生
  3. AIAGENT班:查看作品文件夹,分析每个学生作品的创意和亮点
  4. 读取课程计划,获取5个知识点
  5. 读取每个学生的画像
  6. CSP00/CSP04班:使用token查询OJ做题数据

第2阶段:课评生成

  1. 读取班级风格指南
  2. 为每个学生生成个性化课评(约200字)
    • 引用录音中的具体例子
    • AIAGENT班:描述作品创意和亮点
    • CSP班:包含OJ做题数据
  3. 生成班级总结

第3阶段:课评质检+修订(自动,无需确认)

  1. 自动调用课评质检系统(证据审计员 + 质量评审员 + 5位家长视角)
  2. 质检调度器汇总意见,调用终稿编辑产出修订稿
  3. 三档放行规则自动处理:
    • ≥85分:保存原稿
    • 70-84分:直接采用修订稿
    • <70分:直接采用修订稿(质检系统已做最佳修订)
  4. 丰富度评分记录在案

第4阶段:保存归档(自动,无需确认)

  1. 保存个人课评(保存的是质检后的最佳版本)
  2. 保存到周汇总
  3. 保存班级总结
  4. 更新学生画像
  5. 生成课评汇总网页
  6. 输出完成报告

📂 从课堂录音批量生成课评(推荐工作流)

录音转写文件放在 D:\03-下载 目录,我会自动查找读取,自动完成以下流程:

🤖 交互式问答流程

当橙子输入 /课评生成 时,使用 AskUserQuestion 工具按顺序询问:

第1轮:班级

  • 问题1:写哪个班?(单选,列出当前所有班级选项:AIAGENT03 / CSP04 / CSP00 / 体验课)
  • 各班级均有固定教案,直接读取课程知识点,不询问课程内容

第2轮:补充材料

  • 问题2(CSP00/CSP04班):OJ题目的token
  • 问题2(AIAGENT03班):作品文件夹路径
  • 问题3:出勤情况(文本输入,说明谁来了、谁请假)

收集完成后,自动调用流水线的agent完成课评生成(全程自动,无需确认)。

🔄 智能体流水线模式

课评生成已拆分为4个阶段,按流水线方式协作完成(全程自动,无需用户确认):

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────────┐     ┌─────────────────┐
│  课评准备阶段    │ ──→ │  课评生成阶段    │ ──→ │  课评质检+修订阶段  │ ──→ │  保存归档阶段    │
│  (Agent 1)      │     │  (Agent 2)      │     │  (质检调度器)       │     │  (收尾阶段)      │
└─────────────────┘     └─────────────────┘     └─────────────────────┘     └─────────────────┘
        │                       │                           │                        │
        ▼                       ▼                           ▼                        ▼
   收集所有数据            生成课评内容                自动质检+修订             自动保存+归档
   • 确认班型班次           • 读取风格指南              • 证据审计               • 保存个人课评
   • 录音解析(AI分析)     • 读取课评模板              • 质量评分               • 保存周汇总
   • 课程计划匹配         • 生成个人课评              • 5位家长视角检查         • 保存班级总结
   • 学生画像读取         • 生成班级总结              • 终稿编辑修订            • 更新学生画像
   • OJ数据获取                                        • 三档自动放行           • 生成汇总网页

优势:

  • 每个阶段职责清晰,便于调试和优化
  • 可以单独重跑某个阶段(如只重跑质检)
  • 阶段间数据传递标准化,减少错误

输入文件格式

橙子提供的课堂录音转写文件为 .docx 格式,包含整节课的完整录音转写文本。

录音转写文件特点:

  • 自由文本格式,包含老师和学生的对话
  • 只有"发言人1"、"发言人2"、"发言人3"这样的标识,没有具体姓名
  • 可能包含时间戳(如"[00:05:30]")
  • 内容为整节课的完整记录,需要AI分析识别发言人

示例内容:

[00:00:15] 发言人1:好,同学们,今天我们来学习循环嵌套...
[00:02:30] 发言人2:老师,我有个问题...
[00:05:45] 发言人1:问得很好,大家注意看...
[00:10:20] 发言人3:老师,我这个程序运行不出来...

AI识别说明:

  • 发言人1通常是老师(讲解知识、提问、点评)
  • 发言人2、3等通常是学生(回答问题、提问、讨论)
  • 需要根据对话内容判断每个发言人对应的学生

Word文档格式:

  • 同样包含表格,记录学生姓名、出勤状况和课评描述
  • 使用 python-docx 库自动读取,无需手动转换

工作流程

确认班型班次 → 读取录音转写(docx) → AI分析识别发言人 → 获取课程知识点 → 读取学生画像 → 润色生成 → 确认修改 → 课评质检 → 保存

1. 读取课堂录音转写文件

自动从 D:\03-下载 目录读取课堂录音转写文件(.docx 格式),查找该目录下最新的 .docx 文件:

⚠️ 关键:docx 中文在终端显示会乱码,必须分两步读取!

第一步:用 python-docx 提取文本并保存为 UTF-8 txt 文件

from docx import Document

def extract_docx_to_txt(docx_path):
    """从docx提取文本,保存为UTF-8 txt文件(避免终端乱码)"""
    doc = Document(docx_path)
    # 提取所有段落文本
    text = '\n'.join([p.text for p in doc.paragraphs if p.text.strip()])
    # 保存为UTF-8 txt
    txt_path = docx_path.replace('.docx', '_提取.txt')
    with open(txt_path, 'w', encoding='utf-8') as f:
        f.write(text)
    return txt_path

# 对 D:\03-下载 目录下的每个录音文件执行
import glob
for fpath in glob.glob(r'D:\03-下载\*.docx'):
    txt_path = extract_docx_to_txt(fpath)
    print(f'已提取: {txt_path}')

第二步:用 Read 工具读取 txt 文件

Read 工具直接读取 _提取.txt 文件,中文显示完全正常

为什么这样做? python-docx 底层 XML 是 UTF-8 编码,能正确读取中文。但 bash 终端渲染 UTF-8 中文时会产生乱码。保存为 txt 后,用 Read 工具读取即可正常显示。

清理:课评保存完成后,删除 _提取.txt 临时文件。

录音文本特点:

  • 语音转文字质量参差不齐,常见同音字、模糊识别
  • 整节课的完整转写,包含老师和学生的对话
  • 带时间戳(如"发言人 00:04")
  • 可能有"发言人1"、"发言人2"等编号(老师通常是发言人1)
  • 学生姓名可能被转写为同音字(如"圆振"→"原证"、"艺嘉"→"YGX")

AI分析提取学生表现: 直接读取 _提取.txt 文件内容,分析时注意:

  • 结合学生姓名和可能的同音字变体来定位个体表现
  • 语音识别误差大的段落需结合上下文推断
  • 关注:被点名回答、主动提问、完成进度、老师评语等关键事件
# 分析提示词
analysis_prompt = f"""
分析以下课堂录音转写文本,提取每个学生的表现信息。

班级学生名单:{student_list}
注意:语音转文字可能存在同音字,请结合上下文推断学生身份(如"原证"可能是"圆振")。

请为每个学生提供:
1. 出勤状况:正常上课 / 请假 / 未到
2. 课堂表现摘要(100-200字):
   - 参与度如何
   - 哪些知识点掌握得好
   - 遇到什么问题
   - 有什么亮点表现

录音文本:
{recording_text}

请以JSON格式输出。
"""

日期规则:根据用户提供的周次信息推算具体日期,或在交互式问答时直接询问用户确认授课日期。

2. 匹配课程计划

根据班级标题中的关键词匹配对应课程计划:

班级标题关键词 课程计划路径 课程编号
AIAGENT03 .claude/lesson/AIAGENT/AIAGENT-03/2026秋季课程计划.md AIAGENT03
CSP00 / CSP04 .claude/lesson/CSP/CSP03/课程计划.md CSP00 / CSP04
体验课 .claude/lesson/体验课/ 体验课

从课程计划中提取对应课次的:

  • 课程名称(如《进制转换》)
  • 教学目标 5个知识点

重要:教案中的"教学目标"5条直接作为课评的5个知识点,不得修改或编造。

3. 读取学生画像

对每个学生,读取其个人画像档案: 路径:.claude/memory/class/[班级]/[姓名]/profile.md

4. 润色生成课评

对录音中提取的每一个学生,根据出勤状况处理,确保每个人都有对应记录:

出勤状况 处理方式 保存位置
正常上课 读取画像 + 润色表现摘要 → 生成完整课评 本班学生feedback目录
请假 生成请假记录 本班学生feedback目录
未上课 生成未到课记录 本班学生feedback目录
补课-来自XX班 读取画像 + 润色表现摘要 → 生成完整课评 补课班级的补课/[姓名]/feedback/目录

润色规则(对正常上课和补课学生):

  • 保留录音中提取的所有事实(不能遗漏任何信息)
  • 根据学生画像调整语气和侧重(如内向学生多鼓励,活泼学生提专注)
  • 套用对应班级的固定开头(5个知识点)和结尾风格
  • 将100-200字的表现摘要扩展为约200字的完整家长信格式课评
  • 绝不编造录音中没有提到的内容

⚠️ CSP00/CSP04班级专属(已升级为 v2 提交诊断式,见顶部「CSP 课评强制规则 v2 · 严格执行」): CSP 课评不再使用 get_student_oj.py 简表。生成前必须先加载并执行 .claude/skills/class-feedback-report/SKILL.md, 用 scripts/fetch-class-data.mjs 拉取全班逐生逐次提交(代码+编译报错+状态+客观题),按该技能的 「班级课堂反馈与提交诊断」流程产出课评与家长版 HTML/PDF。下方原 OJ 数据板块格式仅供历史参考,不再使用。

输出示例:

嘉博家长好,本周学习的内容是《魔幻俄罗斯方块(下)》:
1. 理解"自动化测试"的概念
2. 理解"测试覆盖":每条规则都应有对应测试
3. 功能扩展的增量思维
4. 增量需求文档的编写方法
5. 测试脚本生成与结果解读

嘉博今天表现特别棒~对增量需求文档的理解很到位,能够自己写出清晰的测试用例~
和AI协作完成俄罗斯方块的调试,遇到困难没有放弃,特别有韧性~
要是可以在写需求文档的时候再仔细检查一下边界条件就更好啦~
老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡

6. 生成班级总结(所有班级)

录音中提取的每一个班级都会生成本节课的班级总结,不局限于特定班级:

内容来源:

  • 课程名称 + 5个知识点(来自课程计划)
  • 该班级所有学生的整体表现(基于录音中提取的表现摘要汇总)
  • 亮点学生、共性问题、课堂趣事

保存路径:.claude/memory/class/[班级]/summaries/YYYYMMDD_课程编号-课次_班级反馈.md

格式:使用对应班级自己的模板(.claude/memory/class/[班级]/summaries/群发文案模板.md或班级反馈模板.md)

7. 自动课评质检(橙子无需确认,自动执行)

课评生成后,直接自动调用课评质检系统进行质量检查:

质检流程(自动执行,无需用户触发):

  1. 调用「课评质检调度器」Agent
  2. 调度器自动协调9个质检Agent(证据审计员、质量评审员、5位家长、终稿编辑)
  3. 输出:质检报告 + 修订稿(如有问题)

三档放行规则(自动处理):

  • 直接发送(≥85分且无硬伤):保持原稿,进入保存流程
  • 修订后发送(70-84分或有改进点):直接采用终稿编辑的修订稿,进入保存流程
  • 必须重写(<70分或触发硬伤):直接采用终稿编辑的修订稿,进入保存流程

⚡ 三种情况均自动进入保存流程,无需橙子确认。

质检报告格式:

📋 课评质检报告

【总分】XX / 100
【结论】直接发送 / 修订后发送 / 必须重写

【一、证据审计】
- 已核实:...
- 存疑/风险:...

【二、硬伤检查】
- 触发:无 / 第X项(说明)

【三、主要问题】(按严重程度排)
1. ...

【四、修订稿】
(若结论为"修订后发送"或"必须重写",给出完整修订后的课评)

【五、修改说明】
- 改了什么、为什么改

⚠️ CSP课评质检优先使用 Agents 系统:

CSP课评必须使用 .claude/agents/ 目录下的质检Agent系统进行质检,该系统包含:

Agent 路径 功能
课评质检调度器 .claude/agents/课评质检调度器/agent.md 协调9个质检Agent的工作流程
课评证据审计员 .claude/agents/课评证据审计员/agent.md 事实核对(OJ数据、知识点等)
课评质量评审员 .claude/agents/课评质量评审员/agent.md 100分制评分 + 硬伤检查
课评终稿编辑 .claude/agents/课评终稿编辑/agent.md 根据反馈生成修订稿
家长-忙碌实用型 .claude/agents/家长-忙碌实用型/agent.md 快速扫读体验
家长-结果导向型 .claude/agents/家长-结果导向型/agent.md 信息缺口检查
家长-细节核对型 .claude/agents/家长-细节核对型/agent.md 文内一致性检查
家长-焦虑保护型 .claude/agents/家长-焦虑保护型/agent.md 情绪风险检查
家长-成长陪伴型 .claude/agents/家长-成长陪伴型/agent.md 成长性反馈

质检执行方式:

调用 课评质检调度器 → 调度器自动协调9个Agent → 输出质检报告 + 修订稿

核心原则(来自Agents系统):

  1. 事实以证据审计员为准:家长视角的数字意见一律忽略
  2. 不做学生横向比较:揪出"最高/最快/分水岭/紧随XX"等比较词
  3. 术语家长能懂:OLE/CE/WA/SJF/AC这类缩写要解释或换成白话
  4. 结合学生性格:完美主义型先肯定韧性再谈方法;佛系型正向收尾不施压
  5. 老师是最终决策者:给建议和修订稿,老师决定用不用(但默认直接采用修订版)

8. 保存归档(自动保存质检后的最佳版本)

无需橙子确认,质检完后直接自动保存:

质检结论 保存的版本 说明
直接发送(≥85分) 原稿(已通过质检) 原稿本身就是高质量的,直接保存
修订后发送(70-84分) 修订稿(质检后修改版) 质检发现问题 → 终稿编辑修订 → 自动保存修订版
必须重写(<70分) 修订稿(质检后修改版) 质检发现问题 → 终稿编辑修订 → 自动保存修订版
  1. 保存到学生个人单次课评文件
  2. 保存到统一周课评汇总(E:/cc/4work_project/ClassFeedback/output/课评汇总/),后写的课评放在最前面
  3. 保存班级总结
  4. 更新学生画像

9. 更新学生画像(自动)

保存课评的同时,根据本节课表现适当更新学生画像 profile.md:

更新原则:

  • 只记录新发现或明显变化,不重复已有信息
  • 更新位置:在 profile.md 的"近期表现"或"课堂观察"部分追加

触发更新的典型情况:

  • 展现出新的兴趣点(如"首次表现出对XX的浓厚兴趣")
  • 能力有明显进步(如"打字速度比上学期快了很多")
  • 性格/态度变化(如"从内向变得愿意主动提问")
  • 需要持续关注的问题(如"近两次课专注力有所下降")
  • 特殊事件(如"第一次独立完成完整作品")

不更新的情况:

  • 表现和画像中已有描述一致
  • 只是常规课堂表现,无特殊变化
  • 一次性的小问题(如"今天迟到")

更新格式示例:

**2026-05-14 第11课观察**:
- 对增量需求文档的理解力有提升,能自己写出测试用例
- 遇到困难时不再马上求助,会先尝试独立调试

📊 课评质量评分标准(生成时必须遵循)

总分 100 分 = 规范性(50 分) + 丰富度(50 分) 生成课评时必须按照此标准自检,确保每条课评都达到高质量要求!

一、规范性(自动检测,合计 50 分)

评分项目 分值 满分判定规则 扣分规则
字数合规 10 正文字数区间:180–350 字 超出 / 低于区间按梯度扣分
禁用词检查 10 全文无禁用词汇 每出现 1 个禁用词扣 2 分,扣完本项为止
结构完整性 10 评语必须包含三要素:知识点总结 + 学情反馈 + 教师签名 缺任一要素酌情扣分
Emoji 使用 10 全篇使用数量 3–5 个 过少 / 过多酌情扣分
称呼规范 10 使用学生小名、或去掉姓氏直呼名字 称呼格式不规范扣分

禁用词清单(生成时必须避免):

  • 笼统空泛词:表现不错、继续努力、很好、很棒(无具体细节时)
  • 敷衍词:还可以、一般、还行
  • 批评词:太差、不认真、不用心、态度有问题

自检要点:

  • ✅ 字数:课评正文(不含知识点和OJ数据)在 180–350 字之间
  • ✅ 禁用词:不使用上述禁用词,用具体描述代替笼统评价
  • ✅ 结构:必须有知识点总结(固定开头)+ 学情反馈(主体)+ 教师签名(结尾)
  • ✅ Emoji:全篇 3–5 个,分布在夸奖、建议、结尾等位置
  • ✅ 称呼:三字姓名去掉姓氏(如"陈圆振"→"圆振"),两字姓名直呼名字

二、丰富度(AI 语义分析,合计 50 分)

评分项目 分值 高分评判标准
具体化程度 15 评语包含具体行为细节,描述有画面感,不笼统空泛
课后建议质量 15 给出可落地、可执行的个性化课后练习 / 提升方案,不是套话建议
个性化纵向对比 10 结合学生过往学情画像,对比本次表现,体现进步 / 退步追踪
专业知识点体现 10 紧扣课程核心知识点点评,体现授课专业度,不泛泛闲聊

丰富度提升技巧:

具体化程度(15分):

  • ❌ "嘉博今天表现不错"(笼统,0分)
  • ✅ "嘉博今天自己一字一字打字,和AI聊了一节课,特别专注"(具体行为,15分)
  • ✅ "嘉博今天主动问老师'内层循环每执行完一次,外层循环的变量会变吗?',说明在认真思考"(引用原话,15分)
  • 技巧:引用学生在录音中的原话,或描述具体行为,让家长看到孩子真实的课堂表现

课后建议质量(15分):

  • ❌ "继续加油"、"多练习"(套话,0分)
  • ✅ "课后可以试着用AI生成一个故事,然后自己改编结尾,锻炼创意表达"(可执行,15分)
  • 技巧:给出"做什么"、"怎么做"、"达到什么效果"

个性化纵向对比(10分):

  • ❌ 不提过往表现(0分)
  • ✅ "比上节课专注力明显提升,能完整听完讲解再动手"(有对比,10分)
  • 技巧:读取学生画像,对比上次表现,指出进步/需要保持的地方

专业知识点体现(10分):

  • ❌ "今天学了新知识"(泛泛,0分)
  • ✅ "对角色设置+限制条件+输出格式的系统提示词优化,有一定了解"(专业,10分)
  • 技巧:紧扣本节课教案中的知识点,用专业术语点评

⚙️ 核心生成逻辑(全程自动,无需人工确认)

1. 确认班型和班次 → 2. 读取参考资料 → 3. AIAGENT班分析作品 / CSP班拉取OJ数据 → 4. 生成个性化课评 → 5. 自动质检+修订 → 6. 自动保存

1. 自动读取参考资料

我会自动找到以下资料用于生成课评:

  • 学生画像:.claude/memory/class/[班级]/[姓名]/profile.md(了解学生性格特点和适用风格)
  • 班级风格指南:根据课程类型读取对应规则(.claude/rules/[课程].md)
  • 课评格式模板:根据课程类型选择对应模板(.claude/templates/[课程].md),包含标准版和极简版
  • 本节课教案:AIAGENT03班到 .claude/lesson/AIAGENT/AIAGENT-03/2026秋季课程计划.md 按课次查找对应教案;CSP00/CSP04班到 .claude/lesson/CSP/CSP03/课程计划.md
  • 过往课评:读取该学生的历史课评,避免重复用词
  • 课堂录音转写:.docx格式,使用python-docx库读取,AI分析提取学生表现
  • AIAGENT班作品:查看作品文件夹,分析每个学生作品的创意和亮点

💡 模板库路径:../../templates/

  • AIAGENT.md:AIAGENT创意编程课评模板(标准版 + 极简版)
  • CSP.md:C++/CSP课程课评模板
  • KITTEN.md:Kitten课程课评模板
  • 课评汇总网页.html:家长版课评汇总HTML网页模板(翻页浏览、温暖画册风格)

2. AIAGENT班级专属:查看作品文件夹(必须执行)

⚠️ 这是强制步骤,AIAGENT课评必须包含作品创意描述!

执行时机:在生成每个AIAGENT学生的课评之前,先查看该学生的作品文件夹。

执行流程:

  1. 识别出AIAGENT班级的学生
  2. 查看作品文件夹(橙子提供的本地路径)
  3. 分析每个学生作品的:
    • 创意点:有什么独特的想法
    • 技术点:用了什么技术实现
    • 亮点:有什么特别出彩的地方
  4. 将作品分析用中文写进课评中

示例(生成陈嘉博的AIAGENT课评):

嘉博今天表现特别棒~主动问老师关于循环嵌套的问题,说明在认真思考~

自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景,
还添加了音效和暂停功能,创意很棒!

老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡

3. CSP班级专属:自动获取OJ做题数据(必须执行 · 已升级为 v2,见顶部规则)

⚠️ CSP 课评已改用 .claude/skills/class-feedback-report 的提交诊断式流程:不再用 get_student_oj.py 简表,改为 fetch-class-data.mjs 拉全班逐生逐次提交后,按该技能模板写诊断报告。 本小节的旧命令仅作历史参考。

⚠️ 这是强制步骤,CSP课评必须包含OJ数据!

执行时机:在生成每个CSP学生的课评之前,先查询该学生的OJ数据。

查询命令(对每个CSP学生执行):

python scripts/get_student_oj.py \
  --homework-id <作业ID> \
  --student "<学生姓名>"

执行流程:

  1. 识别出CSP班级的学生
  2. 对每个CSP学生,运行上述命令获取OJ数据
  3. 命令会输出该学生的OJ数据Markdown(包含A包每道题的完成情况)
  4. 将返回的OJ数据Markdown直接拼接到该学生的课评内容中

示例(生成杨林轩的CSP课评):

# 第1步:获取OJ数据
python scripts/get_student_oj.py \
  --homework-id 6a2bbd65aeff4da880b8f01d \
  --student "杨林轩"

# 第2步:把返回的OJ数据整合到课评中

返回格式示例:

## 【OJ做题数据】

**完成情况**: 4/5 (共8次提交)

| 题目 | 状态 | 提交次数 | 错误类型 |
|------|------|----------|----------|
| CSP0409A1 银行叫号模拟 | ✅ 通过 | 1 | — |
| CSP0409A2 模拟发牌 | ✅ 通过 | 2 | WA×1 |
...

**📊 分析**: 完成4题,第5题有尝试但尚未通过...

注意事项:

  • 作业ID需要从OJ系统获取(如 6a2bbd65aeff4da880b8f01d)
  • 如果学生姓名在OJ系统中不匹配,会返回空数据
  • 返回的Markdown直接拼接到课评正文后面,不要修改格式

docx文件处理注意事项:

  • 确保已安装python-docx库:pip install python-docx
  • docx文件中的表格会自动转换为Markdown表格格式
  • 文件编码问题已解决,无需担心乱码

3. 自动生成课评(统一格式,所有课程通用)

固定格式(必须严格遵守):

【学生姓名】家长好,我们本周上课的课程是《XXX》

课程目标:
1. 【知识点1】
2. 【知识点2】
3. 【知识点3】

课评反馈:
【具体课评内容,约200字,包含优点、建议、期望】

老师签名:橙子

生成规则:

  • 课程目标从本节课教案中提取真实知识点,禁止编造
  • 课评反馈包含:优点表扬 + 温和建议 + 鼓励期望
  • 表情包丰富原则:课评正文中适当穿插表情符号,让文字更生动有温度,每个课评至少使用3-5个表情,分布在夸奖、建议、结尾等位置
  • CSP班级专属要求:必须查询OJ系统的A包作业完成情况,进行详细分析(包含完成率、思考模式、错误分布、改进建议),【OJ做题数据】板块放在课评反馈的最后部分
  • 称呼规则:三字姓名默认去掉姓氏,直呼后两个字(如"陈圆振"→"圆振"),更亲切
  • 内容完全基于从录音中提取的表现信息和教案知识点,不编造内容
  • ⚠️ 质量自检(必须执行):每条课评生成后,按照「课评质量评分标准」自检:
    • 字数:正文 180–350 字 ✓
    • 禁用词:无笼统空泛词 ✓
    • 结构:知识点总结 + 学情反馈 + 教师签名 ✓
    • Emoji:3–5 个 ✓
    • 称呼:去掉姓氏直呼名字 ✓
    • 具体化:有具体行为细节 ✓
    • 建议质量:可落地执行的个性化建议 ✓
    • 纵向对比:结合画像对比过往表现 ✓
    • 专业点评:紧扣课程知识点 ✓

📋 生成后流程(自动执行,无需确认)

  1. 课评全部生成后,直接自动启动质检流程
  2. 质检后自动选择最佳版本(≥85分用原稿,<85分用终稿编辑的修订稿)
  3. 自动保存归档(个人课评 + 周汇总 + 班级总结 + 汇总网页)
  4. 自动更新学生画像
  5. 输出完成报告

🎨 各班级风格规范(自动匹配)

AIAGENT03班 - 家长信格式·温暖鼓励型

  • 固定开头:"【学生名】家长好,本周学习的内容是《...》" + 5个知识点(开头加学生称呼,如"嘉博家长好",与 CSP04 一致)
  • 课程目标后空一行,再写"课评反馈:"正文
  • 多用"很棒"、"特别棒"、"超棒"和波浪号"~"
  • 描述具体行为:"一字一字打字"、"和AI聊了一节课"
  • 温和建议用"要是...就更好啦~"
  • 必须描述作品创意和亮点:用中文描述学生作品的创意、技术点、亮点
  • 表情包使用:课评正文中适当穿插表情,让文字更生动温暖
    • 夸奖时:🌟✨🎉👍
    • 鼓励时:💪🔥🚀
    • 温和建议时:😊💡🌸
    • 结尾固定:"老师会继续关注【姓名】的表现,期待看到更多精彩!🌟💡"

⚠️ AIAGENT03班强制要求:

  • 必须查看作品文件夹,了解每个学生作品的创意和亮点
  • 必须用中文描述作品,写进课评中
  • 描述技巧:
    • ❌ "嘉博的作品做得不错"(笼统)
    • ✅ "嘉博的作品是一个猜数字游戏,用了独特的渐变色背景,还添加了音效和暂停功能,创意很棒!"(具体描述)

AIAGENT班作品描述示例

嘉博今天表现特别棒~对循环嵌套的理解很到位,能快速理解并动手尝试~

自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景,
还添加了音效和暂停功能,创意很棒!

要是可以在代码注释上再详细一点就更好啦~

老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡

CSP00/CSP04班 - 家长信格式·要求型

  • 固定开头:"【学生名】家长好,本周学习的内容是《...》" + 5个知识点(开头加学生称呼,如"圆振家长好")
  • 表扬积极:"状态在线"、"早早到校等候超积极"
  • 期望要求:"希望多思考"、"理解为什么这么写,不只是抄完就好~"
  • 表情包使用:CSP班学生偏大,表情偏励志和认可风格
    • 表扬状态时:💪✨🎯🔥
    • 肯定进步时:📈👏🌟
    • 提出期望时:💡📝😊
    • 结尾固定:"加油呀!💪✨"

⚠️ CSP00/CSP04班强制要求:

  • 必须查询OJ做题数据,没有OJ数据的CSP课评是不完整的
  • 执行命令:python scripts/get_student_oj.py --homework-id <作业ID> --student "<姓名>"
  • OJ数据板块放在课评正文后面,格式见下方模板

CSP00/CSP04班 OJ数据板块格式(自动生成 · 已弃用,v2 见顶部规则)

⚠️ 此简表为旧版写法,CSP 课评现已改用 .claude/skills/class-feedback-report 的提交诊断式报告 (🌟表扬→逐次提交诊断→整体分析→建议)。保留仅为历史参考。 OJ作业包定位说明:

  • A包 = 课堂练习(包含5道具体题目,必须全部列出)
  • B包 = 必须完成的课后家庭作业(未完成会明确提醒家长督促)
  • C包 = 拓展训练(学有余力的同学可挑战)
## 【OJ做题数据】

**A包(课堂练习)完成情况**: 4/5 (共8次提交)

| 题目 | 类型 | 状态 | 提交次数 | 思考模式 | 错误类型 |
|------|------|------|----------|----------|----------|
| CSP04-XXA1 | 基础题 | ✅ 通过 | 1 | 一气呵成 | — |
| CSP04-XXA2 | 基础题 | ✅ 通过 | 1 | 一气呵成 | — |
| CSP04-XXA3 | 基础题 | ✅ 通过 | 2 | 调试改进 | WA×1 |
| CSP04-XXA4 | 提高题 | ✅ 通过 | 2 | 调试改进 | WA×1 |
| CSP04-XXA5 | 提高题 | ❌ 未通过 | 2 | 遇到困难 | CE×1, WA×1 |

---
| CSP04-XXB | 课后作业(必做) | ✅ 已完成 | 3 | 反复调试 | WA×2 |
| CSP04-XXC | 拓展训练(选做) | ⬜ 未提交 | 0 | — | — |

**📊 分析**: A包5道题完成了4道,基础题全部掌握,提高题第5道考察的是边界条件处理,还需要加强;B包必做课后作业已完成,知识点巩固得不错;C包拓展题未提交,学有余力可以尝试挑战。
**错误分布**: 编译错误1次,答案错误4次,主要是边界条件考虑不周全,建议课后多练类似题目。

自动判断规则:

  • ✅ A包所有5道题必须全部列出,不管是否完成,不能只显示1个A包
  • ✅ 如果B包未完成/未通过:明确标注"【重要提醒】B包是必须完成的课后家庭作业,麻烦家长督促孩子在本周内完成提交"
  • ✅ 如果B包已完成:表扬"课后作业完成及时,知识点巩固得不错"
  • ✅ 如果C包完成了:重点表扬"主动完成拓展训练,探索精神值得鼓励"
  • ✅ 如果C包未完成:不做硬性要求,只提"学有余力可以尝试挑战"
  • ✅ 对A包中未完成的题目,给出具体的知识点建议,帮助孩子针对性提高

体验课 - 家长信格式·转化导向型

  • 固定开头:"【学生名】家长好,今天体验的是《...》课程" + 课程价值介绍(开头加学生称呼,如"小明家长好")
  • 突出"第一次":强调新体验,降低焦虑,突出潜力
  • 建立愿景:描述继续学习后孩子能达到的水平
  • 自然引导报课:用期待和相信引导,不硬推销
  • 表情包使用:体验课要展示活力和吸引力,表情丰富但不过度
    • 欢迎首次体验时:🎉👋✨🌟
    • 展示潜力时:💡🚀🎯💪
    • 建立愿景时:📈🌈🔮
    • 结尾固定:"期待在正式课堂上再次见到【姓名】!💻✨"

💾 保存规则(你确认后自动执行)

你确认课评没问题后,我会自动保存到多个位置,严格遵守课评规范V1.0要求:

📌 命名规范(必须严格遵守)

  • 课程编号规则:C++竞赛班统一用CSP,AI编程班统一用AIAGENT,不得使用AI、C++等缩写
  • 文件名规则:YYYYMMDD_课程编号-课次.md(如20260418_CSP04-07.md、20260330_AIAGENT03-02.md)
  • 日期要求:根据用户提供的周次信息推算具体日期,或询问用户确认
  • 特殊状态文件:
    • 请假:YYYYMMDD_课程编号-课次(请假).md
    • 未上课:YYYYMMDD_课程编号-课次(未到).md
    • 补课:正常文件名 YYYYMMDD_课程编号-课次.md,放在补课班级下的 补课/ 目录中

✅ 存档路径统一规则(2026-09-26 起,全部课程适用)

所有课评、家长版报告、班级汇总统一存 .claude/memory/class/ 对应班级目录, 不再使用 Class-2026-X/ 或 output/课评汇总/:

  • 家长版三件套(发给家长):.claude/memory/class/<班级>/<学生>/<姓名>-<班级>-<课次>-反馈报告.{md,html,pdf}
    • 例:.claude/memory/class/CSP04橙子周六1400/张雨禾/张雨禾-CSP04橙子周六1400-04-反馈报告.md
    • HTML 以 samples/report-sample.html 为样式基准;PDF 用 scripts/mkpdf.mjs 单页 660px 生成
  • 内部课评正本(校宝核查用):.claude/memory/class/<班级>/<学生>/feedback/YYYYMMDD_课程编号-课次.md
  • 补课生:.claude/memory/class/<班级>/补课/<学生>/feedback/(家长版报告同放该目录)
  • 学生画像:.claude/memory/class/<班级>/<学生>/profile.md(随班级存放,每次课评后更新成长记录)
  • 班级汇总 / 上课通知 / 质检报告:.claude/memory/class/<班级>/summaries/YYYYMMDD_课程编号-课次_班级反馈.md

1. 保存到学生个人单次课评文件(必须,用于自动化统计)

为每位学生生成单独的单次课评文件,这是课评完成率统计的依据: 路径:.claude/memory/class/[班级]/[姓名]/feedback/YYYYMMDD_课程编号-课次.md

格式:

# 课程名称:[课程名称]

**授课日期**: [YYYY-MM-DD]

**课评内容**:
[生成的课评正文]

---
**老师签名:橙子**

2. 保存到统一周课评汇总(后写的放上面)

同时保存到统一的课评汇总目录,同一周的课评放在同一个文件里,新生成的放在最顶部: 根目录:E:/cc/4work_project/ClassFeedback/output/课评汇总/ 文件名规则:202X年教学第X周课评汇总.md(比如「2026年教学第18周课评汇总.md」) 排序规则:最新生成的课评放在文件的最前面,旧的课评在后面,倒序排列 班级分组:同一个班级的课评放在一起,按班级分组展示

4. 补课学生处理

核心原则:学生来哪个班补课,课评就保存在那个班的 补课/ 目录下。

  • 保存路径:.claude/memory/class/[补课班级]/补课/[学生姓名]/feedback/
  • 文件名:YYYYMMDD_课程编号-课次.md
    • 这里的课程编号使用补课班级本身的编号(如去CSP04班补课,就用 CSP04)
  • 文件内容正常写课评,无需特殊标记

5. 班级总结保存

为每个班级保存本节课的班级总结: 路径:.claude/memory/class/[班级]/summaries/YYYYMMDD_课程编号-课次_班级反馈.md 格式:使用课评规范V1.0中的班级群发文案模板

6. 未到课记录生成

学生请假或未上课(人没到且无请假),都要生成记录文件:

请假:

  • 路径:.claude/memory/class/[班级]/[姓名]/feedback/YYYYMMDD_课程编号-课次(请假).md
  • 格式:使用课评规范V1.0中的请假记录模板

未上课:

  • 路径:.claude/memory/class/[班级]/[姓名]/feedback/YYYYMMDD_课程编号-课次(未到).md
  • 格式:简要记录本次未到课,无课评内容

7. 生成课评汇总网页(新增)

为每个班级生成本节课的家长版课评汇总HTML网页,方便橙子直接发给家长浏览。

执行时机:在所有课评保存完成后执行(无论是否已有Markdown汇总)。

判断逻辑:

  1. 计算本节课所属的教学周次(第X周)
  2. 构造文件名:第{X}周{星期时间}{课程编号}课评.html
    • 星期时间从用户提供的班次信息中提取(如"周日下午"、"周六早上")
    • 课程编号如 AIAGENT03、CSP04、CSP00
    • 示例:第14周周日下午AIAGENT03课评.html
  3. 检查 output/课评汇总/ 目录下是否已存在该文件
  4. 如果已存在,跳过不覆盖(避免误删橙子手动修改过的网页)
  5. 如果不存在,基于模板生成新的HTML文件

模板路径:.claude/templates/课评汇总网页.html

生成规则(基于模板,替换以下动态内容):

模板位置 替换内容 数据来源
<title>、顶部标题 第X周 · [课程编号]班课评 周次 + 课程编号
顶部副标题、封面日期 YYYY年M月D日 · 《课程名称》 · 橙子老师 用户提供的日期 + 课程计划
封面大标题 《课程名称》 课程计划
封面副标题 课程领域 · 第X课 课程计划
封面信息区 📅日期、⏰时间、👩‍🏫老师 用户提供的数据
知识点列表 5条知识点 课程计划中的教学目标
学生卡片 每张卡片一个学生 本节课所有学生的课评
状态标签 正常上课/补课/请假/未到 出勤记录
页脚 穹狼科创 · [课程编号]班 · 橙子老师 课程编号
JS totalCards 学生总数 实际学生数量
进度点 N个,对应N个学生 学生数量
导出内容 课程信息和知识点 同上

学生卡片生成规则:

  • 为每个学生生成一张 .student-card
  • 第一张卡片必须有 active 类,其余没有
  • 课评正文中的换行符 \n 替换为 <br>
  • 评价指标根据班级风格选取2~4个:
    • AIAGENT班:课堂互动、专注度、作品完成、知识点掌握
    • CSP班:课堂互动、专注度、OJ完成情况、知识点掌握
  • 评价指标根据班级风格选取2~4个:
    • AIAGENT03班:课堂互动、专注度、作品完成、知识点掌握
    • CSP00/CSP04班:课堂互动、逻辑思维、OJ完成情况、代码能力
  • 请假/未到课的学生也要生成卡片,课评内容写简短说明,状态标签用 badge-absent

保存路径:

output/课评汇总/第{X}周{星期时间}{课程编号}课评.html

保存完成后额外提示:

✅ 课评汇总网页已生成:output/课评汇总/第X周[星期时间][课程编号]课评.html
   可直接用浏览器打开,发给家长浏览

如果文件已存在则提示:

⏭️ 课评汇总网页已存在(第X周[星期时间][课程编号]课评.html),跳过生成
   如需更新,请手动删除后重新生成

保存完成后我会告诉你:

✅ 已保存X条课评 ✅ 周汇总已更新:[周数]周汇总文件已更新,新课评已放在最顶部 ✅ 课评汇总网页:output/课评汇总/第X周[星期时间][课程编号]课评.html(如已存在则跳过)


📝 示例课评(参考)

从课堂录音转写生成课评示例:

用户提供:第15课录音转写.docx(任意路径)
↓
系统自动:检测到docx格式 → 使用python-docx读取录音文本 → AI分析提取学生表现
↓
后续流程:匹配课程计划 → 读取学生画像 → 生成课评

AIAGENT课程 - 鼓励型

李明今天虽然是第一次接触AI绘画,但我看到了你眼里的好奇,这就是最好的开始。你的描述很有画面感,"想要一个会眨眼的可爱猫咪",这就是好的Prompt。虽然操作还有点生疏,但老师注意到你一直在尝试,这份坚持比做对题目更珍贵。下次可以把想法先写在便签纸上,分点列出,跟AI沟通会更顺畅。记住,编程最大的门槛不是英文或数学,是敢于尝试的勇气,你已经有了。继续和你的"AI搭档"对话吧,它会越来越懂你的。

CSP04班 - 家长信格式·要求型(含OJ数据)

子煜家长好,本周学习的内容是《字符串处理》:

  1. string 类型的声明与使用
  2. 字符串的输入输出(cin / getline)
  3. 字符串的拼接与比较操作
  4. 常用字符串函数(size / substr / find)
  5. 培养独立调试与耐心排查错误的能力

子煜状态在线,课堂互动积极,能够跟上老师的节奏。对于字符串的基本操作掌握得不错,在讲解 substr 和 find 函数时能迅速理解并动手尝试。

【OJ做题数据】

A包(课堂练习)完成情况: 4/5 (共8次提交)

题目 类型 状态 提交次数 思考模式 错误类型
CSP04-07A1 基础题 ✅ 通过 1 一气呵成 —
CSP04-07A2 基础题 ✅ 通过 1 一气呵成 —
CSP04-07A3 基础题 ✅ 通过 2 调试改进 WA×1
CSP04-07A4 提高题 ✅ 通过 2 调试改进 WA×1
CSP04-07A5 提高题 ❌ 未通过 2 遇到困难 CE×1, WA×1

| CSP04-07B | 课后作业(必做) | ✅ 已完成 | 3 | 反复调试 | WA×2 | | CSP04-07C | 拓展训练(选做) | ⬜ 未提交 | 0 | — | — |

📊 分析: A包5道题完成了4道,基础题全部掌握,提高题第5道考察的是字符串边界处理,还需要加强;B包必做课后作业已完成,知识点巩固得不错;C包拓展题未提交,学有余力可以尝试挑战。 错误分布: 编译错误1次,答案错误4次,主要是边界条件考虑不周全,建议课后多练类似题目。

A包前4题完成得都不错,说明课堂知识点吸收得很好。第5题虽然没做出来但也尝试了2次,调试能力在进步。希望课后能抽时间把第5题搞明白,理解边界条件的处理方法,而不是放着不管~加油呀!💪✨