46 KiB
name, description, type, agent_created
| name | description | type | agent_created |
|---|---|---|---|
| 课评生成 | 快速生成个性化课评,你只需提供学生本节课的表现,自动匹配班级风格生成高质量课评 | skill | true |
🎯 课评生成器技能包
🌟 功能说明
本技能专为穹狼科创编程课程设计,使用超简单:你只需要告诉我学生的基本信息和本节课表现,我就能自动生成符合班级风格的个性化课评。
✅ 支持四大课程:C++/AICODE/Kitten/体验课 ✅ 自动匹配班级专属风格:AICODE03温暖鼓励型/K4温和鼓励型/CSP03要求型/体验课转化型 ✅ CSP班级必须查询OJ做题数据(自动调用API获取A包答题情况)
💡 使用方式
方式一:交互式问答(推荐)
输入 /课评生成,我会使用选择题的方式问你所有问题:
📝 问题1:课堂录音文件路径是什么?(.docx格式)
- [ ] 稍后提供
- [ ] 还没有录音
📝 问题2:这是哪个班级的课?
- [ ] AICODE03橙子周六1900(需要作品文件夹)
- [ ] AICODE03橙子周日0845
- [ ] AICODE03橙子周日1400
- [ ] CSP03橙子周六0830(需要OJ数据)
- [ ] CSP03橙子周六1400
- [ ] CSP03橙子周日1030
- [ ] K4橙子周五1900
- [ ] K4橙子周日1900
📝 问题3:这是第几课?题目是什么?
- [ ] 稍后提供
- [ ] 还不确定
📝 问题4:作品文件夹路径?(仅AICODE班需要)
- [ ] 稍后提供
- [ ] 不需要(CSP/K4班)
你选择或填写完所有问题,我就会自动完成整个课评生成流程!
方式二:直接提供信息
如果你已经知道所有信息,可以直接告诉我:
课堂录音文件:第11课录音转写.docx
班级:AICODE03橙子周六1900
课次:第11课
题目:《AI训练师》
出勤:来了陈嘉博、王子墨,请假谭俊研
作品文件夹:D:\作品\第11课
🔄 自动完成的工作
你提供信息后,我会自动完成:
第1阶段:课评准备
- 获取API出勤数据
- 使用python-docx读取录音转写文件
- AI分析录音文本,识别"发言人1,2,3"对应的学生
- AICODE班:查看作品文件夹,分析每个学生作品的创意和亮点
- 读取课程计划,获取5个知识点
- 读取每个学生的画像
- CSP班:调用OJ API查询A包做题数据
第2阶段:课评生成
- 读取班级风格指南
- 为每个学生生成个性化课评(约200字)
- 引用录音中的具体例子
- AICODE班:描述作品创意和亮点
- CSP班:包含OJ做题数据
- 生成班级总结
- 展示给你确认
第3阶段:课评收尾
- 课评质检(CSP班调用证据审计员)
- 丰富度评分(告诉你每个学生的分数)
- 保存归档(个人课评 + 周汇总 + 班级总结)
- 更新学生画像
- 输出完成报告
📂 从课堂录音批量生成课评(推荐工作流)
橙子提供课堂录音转写文件(.docx格式),文件路径会直接告诉我,我会自动完成以下流程:
🤖 交互式问答流程
当橙子输入 /课评生成 时,使用 AskUserQuestion 工具一次性问完所有问题:
第1轮:收集基本信息
- 问题1:录音文件路径(文本输入)
- 问题2:班级(单选:AICODE03/CSP03/K4的各个时间段)
- 问题3:课次和题目(文本输入)
- 问题4:出勤情况(单选:全部到齐/有人请假)
第2轮:根据班级类型追问
- 如果是AICODE班:追问作品文件夹路径
- 如果是CSP班:无需追问(OJ数据自动获取)
- 如果是K4班:无需追问
收集完成后,自动调用三个阶段的agent完成课评生成。
🔄 智能体流水线模式
课评生成已拆分为3个独立智能体,按流水线方式协作完成:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 课评准备阶段 │ ──→ │ 课评生成阶段 │ ──→ │ 课评收尾阶段 │
│ (Agent 1) │ │ (Agent 2) │ │ (Agent 3) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
▼ ▼ ▼
收集所有数据 生成课评内容 质检+保存+归档
• API授课数据 • 读取风格指南 • 课评质检
• 录音解析(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库自动读取,无需手动转换
工作流程
获取API授课数据 → 读取录音转写(docx) → AI分析识别发言人 → 获取课程知识点 → 读取学生画像 → 润色生成 → 确认修改 → 课评质检 → 保存
0. 获取API授课数据(必须第一步执行)
⚠️ 这是强制步骤,必须在读取笔记之前执行!
在开始处理任何课评之前,必须先调用公司API获取橙子老师近期的授课数据,用于:
- 确认橙子老师实际带了哪些班级
- 获取每个班级的真实授课日期(
teaching_date),用于课评文件名
执行命令(Python):
import urllib.request
import json
from datetime import datetime, timedelta
API_BASE_URL = "https://api.qonnwolf.com/api/v1"
AUTHORIZATION = "Bearer <从.env文件读取>"
# 计算最近7天的日期范围
end_date = datetime.now()
start_date = end_date - timedelta(days=7)
# 查询橙子老师的出勤数据
dates_to_query = []
current = start_date
while current <= end_date:
dates_to_query.append(current.strftime('%Y-%m-%d'))
current += timedelta(days=1)
results = []
for date in dates_to_query:
url = f"{API_BASE_URL}/reports/teaching-schedule?teaching_date={date}"
req = urllib.request.Request(url)
req.add_header('Authorization', AUTHORIZATION)
try:
with urllib.request.urlopen(req) as response:
data = json.loads(response.read().decode('utf-8'))
for item in data['data']['items']:
teacher = item.get('teacher_name', '')
if '橙子' in teacher or '程城' in teacher:
results.append({
'teaching_date': item['teaching_date'], # API返回的真实授课日期
'class_name': item['class_name'],
'time': item['teaching_time_period'],
'lesson': item['lesson_name'],
'student_count': item['student_count'],
'attendance': item['attendance'],
'students': item.get('student_names', [])
})
except Exception as e:
print(f"查询 {date} 失败: {e}")
# 输出结果
for r in results:
print(f"日期:{r['teaching_date']} 班级:{r['class_name']} 时间:{r['time']} 课程:{r['lesson']}")
返回数据说明:
| 字段 | 说明 | 用途 |
|---|---|---|
teaching_date |
API返回的真实授课日期 | 必须用此日期作为课评文件名中的YYYYMMDD |
class_name |
班级名称 | 用于确认班级目录名 |
time |
上课时间段 | 用于确认班级(如19:00-20:30对应晚上班) |
lesson_name |
课程名称 | 用于匹配课程计划 |
student_count |
学生数 | 用于确认班级人数 |
attendance |
出勤统计 | 到课/请假/缺课人数 |
students |
学生名单 | 用于确认学生 |
日期规则(重要):
- ✅ 必须使用API返回的
teaching_date作为课评文件名中的日期 - ✅ 如果笔记中的日期与API返回的
teaching_date不一致,以API为准 - ✅ 文件名格式:
{API返回的teaching_date}_课程编号-课次.md
班级匹配规则:
根据API返回的 class_name 和 time 匹配笔记中的班级:
| API返回的class_name | 对应班级目录 | 识别依据 |
|---|---|---|
| AICODE03... | AICODE03橙子周六1900 / AICODE03橙子周日0845 / AICODE03橙子周日1400 | class_name含"AICODE03" + time判断 |
| CSP03... | CSP03橙子周六0830 / CSP03橙子周六1400 / CSP03橙子周日1030 | class_name含"CSP03" + time判断 |
| KITTEN04... | K4橙子周五1900 / K4橙子周日1900 | class_name含"KITTEN04" + time判断 |
1. 读取课堂录音转写文件
解析用户提供的课堂录音转写文件(.docx 格式):
使用python-docx库读取:
from docx import Document
def read_recording_docx(file_path):
"""读取课堂录音转写的docx文件"""
doc = Document(file_path)
content = []
for para in doc.paragraphs:
text = para.text.strip()
if text:
content.append(text)
return '\n'.join(content)
# 使用示例
file_path = r"课堂录音转写文件路径" # 例如:第15课录音转写.docx
recording_text = read_recording_docx(file_path)
录音文本特点:
- 整节课的完整录音转写,包含老师和学生的对话
- 可能包含时间戳(如"[00:05:30]")
- 可能包含说话人标识(如"老师:"、"学生:")
- 内容为自由文本,不是结构化的表格
AI分析提取学生表现: 由于录音是自由文本格式,需要使用AI分析提取每个学生的表现信息:
# 分析提示词
analysis_prompt = f"""
分析以下课堂录音转写文本,提取每个学生的表现信息。
班级学生名单:{student_list}
请为每个学生提供:
1. 出勤状况:正常上课 / 请假 / 未到
2. 课堂表现摘要(100-200字):
- 参与度如何
- 哪些知识点掌握得好
- 遇到什么问题
- 有什么亮点表现
录音文本:
{recording_text}
请以JSON格式输出。
"""
日期规则:批量流程中,所有日期(文件名
YYYYMMDD、授课日期)统一以API返回的teaching_date为准,不使用录音文件中的日期。
2. 匹配课程计划
根据班级标题中的关键词匹配对应课程计划:
| 班级标题关键词 | 课程计划路径 | 课程编号 |
|---|---|---|
| AICODE03 | .claude/lesson/AICODE/课程计划.md |
AICODE03 |
| CSP03 | .claude/lesson/CSP03/课程计划.md |
CSP03 |
| Kitten04 / K4 | .claude/lesson/Kitten04/课程计划.md |
Kitten04 |
从课程计划中提取对应课次的:
- 课程名称(如《进制转换》)
- 教学目标 5个知识点
重要:教案中的"教学目标"5条直接作为课评的5个知识点,不得修改或编造。
3. 读取学生画像
对每个学生,读取其个人画像档案:
路径:.claude/memory/class/[班级]/[姓名]/profile.md
4. 润色生成课评
对录音中提取的每一个学生,根据出勤状况处理,确保每个人都有对应记录:
| 出勤状况 | 处理方式 | 保存位置 |
|---|---|---|
| 正常上课 | 读取画像 + 润色表现摘要 → 生成完整课评 | 本班学生feedback目录 |
| 请假 | 生成请假记录 | 本班学生feedback目录 |
| 未上课 | 生成未到课记录 | 本班学生feedback目录 |
| 补课-来自XX班 | 读取画像 + 润色表现摘要 → 生成完整课评 | 补课班级的补课/[姓名]/feedback/目录 |
润色规则(对正常上课和补课学生):
- 保留录音中提取的所有事实(不能遗漏任何信息)
- 根据学生画像调整语气和侧重(如内向学生多鼓励,活泼学生提专注)
- 套用对应班级的固定开头(5个知识点)和结尾风格
- 将100-200字的表现摘要扩展为约200字的完整家长信格式课评
- 绝不编造录音中没有提到的内容
⚠️ CSP班级专属(必须执行): 对每个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. 确认流程(橙子检查)
所有课评和班级总结生成后,先展示给橙子看,不保存:
- 按班级分组展示:个人课评 + 班级总结
- 等待橙子确认或提出修改意见
- 如有修改,即时调整后再次展示,直到橙子满意
8. 课评质检(橙子确认修改后执行)
橙子确认课评内容无误后,自动调用课评质检系统进行最终质检:
触发条件:橙子说"可以了"、"没问题"、"确认"等表示确认的语句
质检流程:
- 调用「课评质检调度器」Agent
- 输入:橙子确认后的班级总结 + 所有学生的个人课评
- 调度器自动协调9个质检Agent(证据审计员、质量评审员、5位家长、终稿编辑)
- 输出:质检报告 + 修订稿(如有问题)
三档放行规则:
- 直接发送(≥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 |
成长性反馈 |
CSP质检执行方式:
调用 课评质检调度器 → 调度器自动协调9个Agent → 输出质检报告 + 修订稿
核心原则(来自Agents系统):
- 事实以证据审计员为准:家长视角的数字意见一律忽略
- 不做学生横向比较:揪出"最高/最快/分水岭/紧随XX"等比较词
- 术语家长能懂:OLE/CE/WA/SJF/AC这类缩写要解释或换成白话
- 结合学生性格:完美主义型先肯定韧性再谈方法;佛系型正向收尾不施压
- 老师是最终决策者:给建议和修订稿,老师决定用不用
9. 保存归档
橙子最终确认后,执行以下保存操作:
- 保存到学生个人单次课评文件
- 保存到统一周课评汇总(
E:/cc/4work_project/ClassFeedback/output/课评汇总/),后写的课评放在最前面 - 保存班级总结
- 更新学生画像
10. 更新学生画像(自动)
保存课评的同时,根据本节课表现适当更新学生画像 profile.md:
更新原则:
- 只记录新发现或明显变化,不重复已有信息
- 更新位置:在 profile.md 的"近期表现"或"课堂观察"部分追加
触发更新的典型情况:
- 展现出新的兴趣点(如"首次表现出对XX的浓厚兴趣")
- 能力有明显进步(如"打字速度比上学期快了很多")
- 性格/态度变化(如"从内向变得愿意主动提问")
- 需要持续关注的问题(如"近两次课专注力有所下降")
- 特殊事件(如"第一次独立完成完整作品")
不更新的情况:
- 表现和画像中已有描述一致
- 只是常规课堂表现,无特殊变化
- 一次性的小问题(如"今天迟到")
更新格式示例:
**2026-05-14 第11课观察**:
- 对增量需求文档的理解力有提升,能自己写出测试用例
- 遇到困难时不再马上求助,会先尝试独立调试
📊 课评质量评分标准(生成时必须遵循)
总分 95 分 = 规范性(40 分) + 丰富度(55 分) 生成课评时必须按照此标准自检,确保每条课评都达到高质量要求!
一、规范性(自动检测,合计 40 分)
| 评分项目 | 分值 | 满分判定规则 | 扣分规则 |
|---|---|---|---|
| 字数合规 | 10 | 正文字数区间:180–350 字 | 低于 150 字扣 6-10 分;低于 180 字扣 3-5 分;超 400 字扣 1-3 分 |
| 禁用词 | 10 | 全文无禁用词汇 | 每出现 1 个禁用词扣 2 分,扣完本项为止 |
| 结构完整 | 10 | 评语必须包含三要素:知识点总结 + 学情反馈 + 教师签名 | 缺任一要素扣 4-6 分;三要素齐全但比例失衡扣 1-3 分 |
| Emoji 使用 | 5 | 全篇使用数量 3–5 个 | 0 个扣 5 分,1 个扣 3 分,2 个扣 1 分;超 8 个扣 1-2 分 |
| 称呼规范 | 5 | 使用去掉姓氏的小名直呼学生 | 用全名扣 3 分;用"同学"后缀扣 2 分;称呼不统一(前后不一致)扣 1-2 分 |
禁用词清单(生成时必须避免):
- 笼统空泛词:表现不错、继续努力、很好、很棒(无具体细节时)
- 敷衍词:还可以、一般、还行、差不多
- 批评词:太差、不认真、不用心、态度有问题、懒
- 比较词:最(最认真/最快/最好)、比其他同学、全班第一
- AI味浓词:总体来说、综上所述、相信在未来的学习中
自检要点:
- ✅ 字数:课评正文(不含知识点和OJ数据)在 180–350 字之间。低于 150 字严重不足,低于 180 字偏短
- ✅ 禁用词:不使用上述禁用词,用具体描述代替笼统评价;不做学生横向比较
- ✅ 结构:必须有知识点总结(固定开头)+ 学情反馈(主体)+ 教师签名(结尾)。缺少任何一个要素都是严重扣分项
- ✅ Emoji:全篇 3–5 个,分布在夸奖、建议、结尾等位置。没有 Emoji 是重扣分项(扣 5 分),这是本维度最容易拿的回分项
- ✅ 称呼:三字姓名去掉姓氏(如"陈圆振"→"圆振"),两字姓名直呼名字,课评全文称呼保持一致。这是当前最短板,务必重视
二、丰富度(AI 语义分析,合计 55 分)
| 评分项目 | 分值 | 高分评判标准 |
|---|---|---|
| 具体化程度 | 15 | 评语包含具体行为细节、课堂互动片段、原话引用,有画面感,不笼统空泛 |
| 课后建议质量 | 10 | 给出可落地、可执行的个性化课后练习 / 提升方案,不是套话建议 |
| 个性化纵向对比 | 15 | 结合学生过往学情画像,对比本次表现,体现进步 / 退步追踪,有具体参照点 |
| 专业知识点体现 | 15 | 紧扣课程核心知识点点评,用专业术语诊断学生卡点,体现授课专业度 |
丰富度提升技巧:
具体化程度(15分)—— 当前得分 11.0,核心提升项:
- 不只是写"表现不错",要让家长「看到」孩子在课堂上的样子。
- 课堂行为描写三要素(每条课评至少包含 2 项):
- 具体动作:做了什么、说了什么、写了什么代码
- 互动细节:问了什么问题、回答了什么问题、和同学怎么协作
- 情绪状态:遇到困难时的反应、攻克后的小表情、专注时的状态
- ❌ "嘉博今天表现不错"(笼统,0分)
- ✅ "嘉博今天自己一字一字打字,和AI聊了一节课,特别专注"(具体动作 + 状态,12分)
- ✅ "嘉博今天主动问老师'内层循环每执行完一次,外层循环的变量会变吗?',问完之后自己打开IDE验证,验证成功时回头冲我笑了一下"(原话引用 + 动作 + 情绪,15分)
- 技巧:引用学生在录音中的原话,或描述具体行为,让家长看到孩子真实的课堂表现
课后建议质量(10分)—— 当前得分 8.1,稳中提升:
- ❌ "继续加油"、"多练习"(套话,0分)
- ✅ "课后可以试着用AI生成一个故事,然后自己改编结尾,锻炼创意表达"(可执行,10分)
- 技巧:给出"做什么" + "怎么做" + "达到什么效果",三步缺一不可
个性化纵向对比(15分)—— 当前得分 8.7,重点提升项:
- 不只是和上节课比,要给出具体的参照点。
- 纵向对比三层次(每条课评至少包含 1 层):
- 能力对比:之前不会 XX,本节课掌握了 XX
- 习惯对比:之前上课容易分心,本节课能全程专注
- 心态对比:之前不敢问问题,本节课主动提问 N 次
- ❌ 不提过往表现(0分)
- ❌ "比之前有进步"(模糊对比,3分)
- ✅ "上节课讲到循环时还需要老师反复提醒,这节课自己主动说'老师我能用两层循环做吗',独立思考的意愿明显增强了"(有参照点 + 有具体行为,15分)
- 技巧:读取学生画像,找到至少 1 个明确的对比参照点,写进课评
专业知识点体现(15分)—— 当前得分 11.9,稳定优势项:
- ❌ "今天学了新知识"(泛泛,0分)
- ❌ "对循环嵌套有一定了解"(只有一个知识点名词,5分)
- ✅ "对角色设置+限制条件+输出格式的系统提示词优化,有一定了解"(专业术语 + 具体应用,12分)
- ✅ "本节课的 substr 和 find 函数,子煜能准确说出两者的参数含义和返回值类型,在课堂练习中处理字符查找的场景时直接用了 find,没有走弯路"(术语精准 + 行为印证,15分)
- 技巧:紧扣本节课教案中的知识点,用专业术语点评,并用学生的实际操作来印证理解程度
⚙️ 核心生成逻辑(自动完成,你不需要操作)
1. 读取参考资料 → 2. AICODE班分析作品/CSP班拉取OJ数据 → 3. 生成个性化课评 → 4. 橙子确认修改 → 5. 自动质检 → 6. 自动保存
1. 自动读取参考资料
我会自动找到以下资料用于生成课评:
- 学生画像:
.claude/memory/class/[班级]/[姓名]/profile.md(了解学生性格特点和适用风格) - 班级风格指南:根据课程类型读取对应规则(
.claude/rules/[课程].md) - 课评格式模板:根据课程类型选择对应模板(
.claude/templates/[课程].md),包含标准版和极简版 - 本节课教案:到
.claude/lesson/目录下查找对应班级、对应课次的教案,确保课评内容与实际教学一致,不编造内容 - 过往课评:读取该学生的历史课评,避免重复用词
- 课堂录音转写:
.docx格式,使用python-docx库读取,AI分析提取学生表现 - AICODE班作品:查看作品文件夹,分析每个学生作品的创意和亮点
💡 模板库路径:
../../templates/
AICODE.md:AICODE创意编程课评模板(标准版 + 极简版)CSP.md:C++/CSP课程课评模板KITTEN.md:Kitten课程课评模板课评汇总网页.html:家长版课评汇总HTML网页模板(翻页浏览、温暖画册风格)
2. AICODE班级专属:查看作品文件夹(必须执行)
⚠️ 这是强制步骤,AICODE课评必须包含作品创意描述!
执行时机:在生成每个AICODE学生的课评之前,先查看该学生的作品文件夹。
执行流程:
- 识别出AICODE班级的学生
- 查看作品文件夹(橙子提供的本地路径)
- 分析每个学生作品的:
- 创意点:有什么独特的想法
- 技术点:用了什么技术实现
- 亮点:有什么特别出彩的地方
- 将作品分析用中文写进课评中
示例(生成陈嘉博的AICODE课评):
嘉博今天表现特别棒~主动问老师关于循环嵌套的问题,说明在认真思考~
自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景,
还添加了音效和暂停功能,创意很棒!
老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡
3. CSP班级专属:自动获取OJ做题数据(必须执行)
⚠️ 这是强制步骤,CSP课评必须包含OJ数据!
执行时机:在生成每个CSP学生的课评之前,先查询该学生的OJ数据。
查询命令(对每个CSP学生执行):
python scripts/get_student_oj.py \
--homework-id <作业ID> \
--student "<学生姓名>"
执行流程:
- 识别出CSP班级的学生
- 对每个CSP学生,运行上述命令获取OJ数据
- 命令会输出该学生的OJ数据Markdown(包含A包每道题的完成情况)
- 将返回的OJ数据Markdown直接拼接到该学生的课评内容中
示例(生成杨林轩的CSP课评):
# 第1步:获取OJ数据
python scripts/get_student_oj.py \
--homework-id 6a2bbd65aeff4da880b8f01d \
--student "杨林轩"
# 第2步:把返回的OJ数据整合到课评中
返回格式示例:
## 【OJ做题数据】
**完成情况**: 4/5 (共8次提交)
| 题目 | 状态 | 提交次数 | 错误类型 |
|------|------|----------|----------|
| CSP0309A1 银行叫号模拟 | ✅ 通过 | 1 | — |
| CSP0309A2 模拟发牌 | ✅ 通过 | 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 个 ✓
- 称呼:去掉姓氏直呼名字 ✓
- 具体化:有具体行为细节 ✓
- 建议质量:可落地执行的个性化建议 ✓
- 纵向对比:结合画像对比过往表现 ✓
- 专业点评:紧扣课程知识点 ✓
📋 生成后确认流程(必须遵守)
- 一批课评全部生成后,我会先把所有课评展示给你,不保存
- 等待你确认没问题后,再执行保存操作
- 如果你需要修改,我会根据你的要求修改后再次给你确认,直到你满意再保存
🎨 各班级风格规范(自动匹配)
AICODE03班 - 家长信格式·温暖鼓励型
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点(与 CSP03 一致)
- 课程目标后空一行,再写"课评反馈:"正文
- 多用"很棒"、"特别棒"、"超棒"和波浪号"~"
- 描述具体行为:"一字一字打字"、"和AI聊了一节课"
- 温和建议用"要是...就更好啦~"
- 必须描述作品创意和亮点:用中文描述学生作品的创意、技术点、亮点
- 表情包使用:课评正文中适当穿插表情,让文字更生动温暖
- 夸奖时:🌟✨🎉👍
- 鼓励时:💪🔥🚀
- 温和建议时:😊💡🌸
- 结尾固定:"老师会继续关注【姓名】的表现,期待看到更多精彩!🌟💡"
⚠️ AICODE03班强制要求:
- 必须查看作品文件夹,了解每个学生作品的创意和亮点
- 必须用中文描述作品,写进课评中
- 描述技巧:
- ❌ "嘉博的作品做得不错"(笼统)
- ✅ "嘉博的作品是一个猜数字游戏,用了独特的渐变色背景,还添加了音效和暂停功能,创意很棒!"(具体描述)
AICODE03班作品描述示例
嘉博今天表现特别棒~对循环嵌套的理解很到位,能快速理解并动手尝试~
自己完成了课堂练习,特别专注!作品是一个猜数字游戏,用了独特的渐变色背景,
还添加了音效和暂停功能,创意很棒!
要是可以在代码注释上再详细一点就更好啦~
老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡
K4班 - 家长信格式·温和鼓励型
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点
- 肯定创意:"能够有自己的创意"
- 温和指出:"不过老师发现...专注力有些下降"
- 表情包使用:K4班学生年龄小,多用可爱活泼的表情增加亲和力
- 表扬创意时:🎨🌈✨🌟
- 鼓励坚持时:💪🐱🚀
- 提醒专注时:👀💡😊
- 结尾可用:"继续加油哦!🌟"、"相信你会把程序做得更完整!🚀"
CSP03班 - 家长信格式·要求型
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点
- 表扬积极:"状态在线"、"早早到校等候超积极"
- 期望要求:"希望多思考"、"理解为什么这么写,不只是抄完就好~"
- 表情包使用:CSP班学生偏大,表情偏励志和认可风格
- 表扬状态时:💪✨🎯🔥
- 肯定进步时:📈👏🌟
- 提出期望时:💡📝😊
- 结尾固定:"加油呀!💪✨"
⚠️ CSP03班强制要求:
- 必须查询OJ做题数据,没有OJ数据的CSP课评是不完整的
- 执行命令:
python scripts/get_student_oj.py --homework-id <作业ID> --student "<姓名>" - OJ数据板块放在课评正文后面,格式见下方模板
CSP03班 OJ数据板块格式(自动生成)
OJ作业包定位说明:
- A包 = 课堂练习(包含5道具体题目,必须全部列出)
- B包 = 必须完成的课后家庭作业(未完成会明确提醒家长督促)
- C包 = 拓展训练(学有余力的同学可挑战)
## 【OJ做题数据】
**A包(课堂练习)完成情况**: 4/5 (共8次提交)
| 题目 | 类型 | 状态 | 提交次数 | 思考模式 | 错误类型 |
|------|------|------|----------|----------|----------|
| CSP03-XXA1 | 基础题 | ✅ 通过 | 1 | 一气呵成 | — |
| CSP03-XXA2 | 基础题 | ✅ 通过 | 1 | 一气呵成 | — |
| CSP03-XXA3 | 基础题 | ✅ 通过 | 2 | 调试改进 | WA×1 |
| CSP03-XXA4 | 提高题 | ✅ 通过 | 2 | 调试改进 | WA×1 |
| CSP03-XXA5 | 提高题 | ❌ 未通过 | 2 | 遇到困难 | CE×1, WA×1 |
---
| CSP03-XXB | 课后作业(必做) | ✅ 已完成 | 3 | 反复调试 | WA×2 |
| CSP03-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编程班统一用AICODE,不得使用AI、C++等缩写 - 文件名规则:
YYYYMMDD_课程编号-课次.md(如20260418_CSP05-07.md、20260330_AICODE03-02.md) - 日期要求:文件名中的
YYYYMMDD必须与校宝teaching_date完全一致,不得使用编写/提交日期 - 特殊状态文件:
- 请假:
YYYYMMDD_课程编号-课次(请假).md - 未上课:
YYYYMMDD_课程编号-课次(未到).md - 补课:正常文件名
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- 这里的课程编号使用补课班级本身的编号(如去CSP03班补课,就用
CSP03)
- 这里的课程编号使用补课班级本身的编号(如去CSP03班补课,就用
- 文件内容正常写课评,无需特殊标记
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汇总)。
判断逻辑:
- 计算本节课所属的教学周次(第X周)
- 构造文件名:
第{X}周{星期时间}{课程编号}课评.html- 星期时间从API数据中提取(如"周日下午"、"周六早上")
- 课程编号如
AICODE03、CSP03、K4 - 示例:
第14周周日下午AICODE03课评.html
- 检查
output/课评汇总/目录下是否已存在该文件 - 如果已存在,跳过不覆盖(避免误删橙子手动修改过的网页)
- 如果不存在,基于模板生成新的HTML文件
模板路径:.claude/templates/课评汇总网页.html
生成规则(基于模板,替换以下动态内容):
| 模板位置 | 替换内容 | 数据来源 |
|---|---|---|
<title>、顶部标题 |
第X周 · [课程编号]班课评 | 周次 + 课程编号 |
| 顶部副标题、封面日期 | YYYY年M月D日 · 《课程名称》 · 橙子老师 | API的teaching_date + 课程计划 |
| 封面大标题 | 《课程名称》 | 课程计划 |
| 封面副标题 | 课程领域 · 第X课 | 课程计划 |
| 封面信息区 | 📅日期、⏰时间、👩🏫老师 | API数据 |
| 知识点列表 | 5条知识点 | 课程计划中的教学目标 |
| 学生卡片 | 每张卡片一个学生 | 本节课所有学生的课评 |
| 状态标签 | 正常上课/补课/请假/未到 | 出勤记录 |
| 页脚 | 穹狼科创 · [课程编号]班 · 橙子老师 | 课程编号 |
| JS totalCards | 学生总数 | 实际学生数量 |
| 进度点 | N个,对应N个学生 | 学生数量 |
| 导出内容 | 课程信息和知识点 | 同上 |
学生卡片生成规则:
- 为每个学生生成一张
.student-card - 第一张卡片必须有
active类,其余没有 - 课评正文中的换行符
\n替换为<br> - 评价指标根据班级风格选取2~4个:
- AICODE班:课堂互动、专注度、作品完成、知识点掌握
- CSP班:课堂互动、专注度、OJ完成情况、知识点掌握
- K4班:课堂互动、创意表达、作品完成、专注度
- 请假/未到课的学生也要生成卡片,课评内容写简短说明,状态标签用
badge-absent
保存路径:
output/课评汇总/第{X}周{星期时间}{课程编号}课评.html
保存完成后额外提示:
✅ 课评汇总网页已生成:output/课评汇总/第X周[星期时间][课程编号]课评.html
可直接用浏览器打开,发给家长浏览
如果文件已存在则提示:
⏭️ 课评汇总网页已存在(第X周[星期时间][课程编号]课评.html),跳过生成
如需更新,请手动删除后重新生成
保存完成后我会告诉你:
✅ 已保存X条课评 ✅ 周汇总已更新:[周数]周汇总文件已更新,新课评已放在最顶部 ✅ 课评汇总网页:output/课评汇总/第X周[星期时间][课程编号]课评.html(如已存在则跳过)
📝 示例课评(参考)
从课堂录音转写生成课评示例:
用户提供:第15课录音转写.docx(任意路径)
↓
系统自动:检测到docx格式 → 使用python-docx读取录音文本 → AI分析提取学生表现
↓
后续流程:匹配课程计划 → 读取学生画像 → 生成课评
AICODE课程 - 鼓励型
李明今天虽然是第一次接触AI绘画,但我看到了你眼里的好奇,这就是最好的开始。你的描述很有画面感,"想要一个会眨眼的可爱猫咪",这就是好的Prompt。虽然操作还有点生疏,但老师注意到你一直在尝试,这份坚持比做对题目更珍贵。下次可以把想法先写在便签纸上,分点列出,跟AI沟通会更顺畅。记住,编程最大的门槛不是英文或数学,是敢于尝试的勇气,你已经有了。继续和你的"AI搭档"对话吧,它会越来越懂你的。
CSP03班 - 家长信格式·要求型(含OJ数据)
家长好,本周学习的内容是《字符串处理》:
- string 类型的声明与使用
- 字符串的输入输出(cin / getline)
- 字符串的拼接与比较操作
- 常用字符串函数(size / substr / find)
- 培养独立调试与耐心排查错误的能力
子煜状态在线,课堂互动积极,能够跟上老师的节奏。对于字符串的基本操作掌握得不错,在讲解 substr 和 find 函数时能迅速理解并动手尝试。
【OJ做题数据】
A包(课堂练习)完成情况: 4/5 (共8次提交)
题目 类型 状态 提交次数 思考模式 错误类型 CSP03-07A1 基础题 ✅ 通过 1 一气呵成 — CSP03-07A2 基础题 ✅ 通过 1 一气呵成 — CSP03-07A3 基础题 ✅ 通过 2 调试改进 WA×1 CSP03-07A4 提高题 ✅ 通过 2 调试改进 WA×1 CSP03-07A5 提高题 ❌ 未通过 2 遇到困难 CE×1, WA×1
| CSP03-07B | 课后作业(必做) | ✅ 已完成 | 3 | 反复调试 | WA×2 | | CSP03-07C | 拓展训练(选做) | ⬜ 未提交 | 0 | — | — |
📊 分析: A包5道题完成了4道,基础题全部掌握,提高题第5道考察的是字符串边界处理,还需要加强;B包必做课后作业已完成,知识点巩固得不错;C包拓展题未提交,学有余力可以尝试挑战。 错误分布: 编译错误1次,答案错误4次,主要是边界条件考虑不周全,建议课后多练类似题目。
A包前4题完成得都不错,说明课堂知识点吸收得很好。第5题虽然没做出来但也尝试了2次,调试能力在进步。希望课后能抽时间把第5题搞明白,理解边界条件的处理方法,而不是放着不管~加油呀!💪✨