Files
ClassFeedback/.dsh/skills/class-feedback-generate/SKILL.md

44 KiB
Raw Blame History

name, description
name description
class-feedback-generate 快速生成个性化课评。提供班级、课次、学生表现(或课堂录音转写)后,自动按班级风格(CSP要求型、AIAGENT温暖鼓励型、体验课转化型)生成约200字的家长信格式课评,含OJ做题数据与作品分析,并自动质检归档。Use when 用户要求"写课评"、"生成课评"、输入 /课评生成,或提供课堂录音/出勤/学生表现需要生成家长课评。

📌 DeepSeek Harness 安装版说明:本文件移植自 .claude/skills/课评生成/skill.md,内容与原版一致,仅做以下适配:

  • 交互询问工具:AskUserQuestion → ask_user_question(DeepSeek 中的同名工具)
  • 质检流程:不依赖 Claude Code 的 .claude/agents/ subagent 调度,改为按「课评质检」技能(class-feedback-qa)执行
  • 周汇总路径:统一使用项目仓库内相对路径 output/课评汇总/ 原始文件如更新,可对照同步本文件。

🎯 课评生成器技能包

🌟 功能说明

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

✅ 支持课程:AIAGENT03班 / CSP04班 / CSP00班 / 体验课(2026秋季新学期) ✅ 自动匹配班级专属风格:CSP要求型 / AIAGENT温暖鼓励型 / 体验课转化型 ✅ CSP00/CSP04班必须查询OJ做题数据(用户提供token后自动获取A包答题情况)

💡 使用方式

交互式问答(推荐)

输入 /课评生成(或直接说"写课评/生成课评"),我会按顺序问你以下信息:

📝 问题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. 自动加载并执行「课评质检」技能(class-feedback-qa)
  2. 按质检技能完成证据核对、质量评分、家长视角检查、修订稿产出
  3. 三档放行规则自动处理:
    • ≥85分:保存原稿
    • 70-84分:直接采用修订稿
    • <70分:直接采用修订稿(质检系统已做最佳修订)
  4. 丰富度评分记录在案

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

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

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

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

🤖 交互式问答流程

当橙子输入 /课评生成 时,使用 ask_user_question 工具(DeepSeek Harness 中的交互询问工具)按顺序询问:

第1轮:班级

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

第2轮:补充材料

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

收集完成后,按下面 4 阶段流水线自行完成课评生成(全程自动,无需确认)。

注:DeepSeek Harness 中没有 Claude Code 的 subagent 定义,4 个阶段由主智能体按本技能与「课评质检」技能(class-feedback-qa)的指令直接执行。

🔄 智能体流水线模式

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

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────────┐     ┌─────────────────┐
│  课评准备阶段    │ ──→ │  课评生成阶段    │ ──→ │  课评质检+修订阶段  │ ──→ │  保存归档阶段    │
│  (Agent 1)      │     │  (Agent 2)      │     │  (质检调度器)       │     │  (收尾阶段)      │
└─────────────────┘     └─────────────────┘     └─────────────────────┘     └─────────────────┘
        │                       │                           │                        │
        ▼                       ▼                           ▼                        ▼
   收集所有数据            生成课评内容                自动质检+修订             自动保存+归档
   • 确认班型班次           • 读取风格指南              • 证据审计               • 保存个人课评
   • 录音解析(AI分析)     • 读取课评模板              • 质量评分               • 保存周汇总
   • 课程计划匹配         • 生成个人课评              • 家长视角检查           • 保存班级总结
   • 学生画像读取         • 生成班级总结              • 终稿编辑修订            • 更新学生画像
   • 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 编码,能正确读取中文。但终端渲染 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班级专属(必须执行): 对每个CSP学生,在生成课评之前必须先查询OJ做题数据:

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

将返回的OJ数据Markdown拼接到课评内容中。没有OJ数据的CSP课评是不完整的!

输出示例:

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

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

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

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

内容来源:

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

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

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

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

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

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

  1. 加载并执行「课评质检」技能(class-feedback-qa,已随本技能安装)
  2. 按质检技能完成:证据核对 → 100分制质量评分 → 7个硬伤检查 → 家长视角检查 → 终稿修订
  3. 输出:质检报告 + 修订稿(如有问题)

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

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

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

质检报告格式:

📋 课评质检报告

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

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

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

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

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

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

⚠️ CSP课评质检要求:

CSP课评必须执行完整质检。质检角色如下(.claude/agents/ 目录下有各角色的详细 agent.md,可读取参考;在 DeepSeek Harness 中由主智能体按角色逐项执行,或用 subagent 工具并行模拟多视角):

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 成长性反馈

质检执行方式(DeepSeek Harness):

加载「课评质检」技能(class-feedback-qa)→ 按技能流程执行全部质检角色 → 输出质检报告 + 修订稿

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

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

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

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

质检结论 保存的版本 说明
直接发送(≥85分) 原稿(已通过质检) 原稿本身就是高质量的,直接保存
修订后发送(70-84分) 修订稿(质检后修改版) 质检发现问题 → 终稿编辑修订 → 自动保存修订版
必须重写(<70分) 修订稿(质检后修改版) 质检发现问题 → 终稿编辑修订 → 自动保存修订版
  1. 保存到学生个人单次课评文件
  2. 保存到统一周课评汇总(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班作品:查看作品文件夹,分析每个学生作品的创意和亮点

💡 模板库路径:.claude/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做题数据(必须执行)

⚠️ 这是强制步骤,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. 课评全部生成后,直接自动启动质检流程(加载 class-feedback-qa 技能)
  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数据板块格式(自动生成)

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,放在补课班级下的 补课/ 目录中

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

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

格式:

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

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

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

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

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

同时保存到统一的课评汇总目录,同一周的课评放在同一个文件里,新生成的放在最顶部: 根目录: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. 确认当周日文件夹:output/课评汇总/第X周课评汇总/(不存在则按「第一周课评汇总」的格式新建,含 总览.html)
  3. 构造文件名:第X课-课程名称-班级.html
    • 课程名称用当天实际内容(如 基础回顾·OJ五题精讲)
    • 同一班次多个时段用 -上午/-下午/-时间 区分(示例:第1课-基础回顾-CSP04-0830.html、-1400.html)
    • 示例:第1课-基础回顾-CSP04-1400.html
  4. 检查该周文件夹下是否已存在该文件:已存在则跳过不覆盖(避免误删橙子手动修改过的网页);不存在则基于模板生成
  5. 生成后必须登记到该周 总览.html:按上课时间升序插入一张 course-card,并更新顶部统计

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

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

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

学生卡片生成规则:

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

保存路径:

output/课评汇总/第X周课评汇总/第X课-课程名称-班级.html

保存完成后额外提示:

✅ 课评汇总网页已生成:output/课评汇总/第X周课评汇总/第X课-课程名称-班级.html
   并已登记到该周 总览.html(按时间排序)
   可直接用浏览器打开,发给家长浏览

如果文件已存在则提示:

⏭️ 课评汇总网页已存在(第X周课评汇总/第X课-课程名称-班级.html),跳过生成
   如需更新,请手动删除后重新生成,并保持总览登记

📌 目录约束(强制执行,详见 output/课评汇总/README.md):

  • 网页课评一律放入对应周 第X周课评汇总/ 文件夹,禁止散落在 output/课评汇总/ 根目录。
  • 每周格式与 第一周课评汇总/ 完全一致:总览.html + 各班次 第X课-课程名称-班级.html(+ 可选 照片/ 子目录)。
  • 每新增一个班次,必须在 总览.html 登记卡片并按上课时间升序排列、更新顶部统计;未登记视为该课评未归档。

保存完成后我会告诉你:

✅ 已保存X条课评 ✅ 周汇总已更新:[周数]周汇总文件已更新,新课评已放在最顶部 ✅ 课评汇总网页:output/课评汇总/第X周课评汇总/第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题搞明白,理解边界条件的处理方法,而不是放着不管~加油呀!💪✨