更新课评系统代码
This commit is contained in:
@@ -1,12 +1,126 @@
|
||||
---
|
||||
name: keping-advanced
|
||||
description: 穹狼乐高编程高级课评生成Skill。当用户需要生成个性化课评、写课后反馈、创建学生评价时使用。根据学生画像、课程教案、历史课评、学期周数等多维度信息,自动生成180-350字专业课评(根据输入丰富度弹性调整)。支持自动周数计算和主题关联。采用"生成即自动保存"流程:课评生成后立即自动保存到 feedback/ 个人课评文件(课评规范V1.0标准),无需教师确认。支持补课/体验学生的灵活处理。适用于2.5岁-小学四年级学生,支持幼儿积木、少儿编程、机器人竞赛等多种课程类型。触发词:/课评、/keping、/写课评、生成课评。
|
||||
version: 4.0.0
|
||||
description: 穹狼乐高编程高级课评生成Skill。当用户需要生成个性化课评、写课后反馈、创建学生评价时使用。根据学生画像、课程教案、历史课评、学期周数等多维度信息,自动生成180-350字专业课评(根据输入丰富度弹性调整)。支持自动周数计算和主题关联。采用"生成即自动保存"流程:课评生成后立即自动保存到 feedback/ 个人课评文件(课评规范V1.0标准),无需教师确认。支持补课/体验学生的灵活处理。适用于2.5岁-小学四年级学生,支持幼儿积木、少儿编程、机器人竞赛等多种课程类型。交互式流程:输入 /周几(如 /周六)、/今天 或 /交互式 启动友好的多轮对话流程。触发词:/课评、/keping、/写课评、生成课评、/周六、/今天、/交互式、/批量。
|
||||
version: 4.3.0
|
||||
author: 穹狼教学团队
|
||||
---
|
||||
|
||||
# 高级课评生成 Skill
|
||||
|
||||
## 命令识别与流程选择
|
||||
|
||||
本技能根据不同的触发命令,自动选择相应的流程:
|
||||
|
||||
| 触发命令 | 流程选择 | 说明 |
|
||||
|---------|---------|------|
|
||||
| **`/周几`** | **交互式流程(推荐)** | **按上课日快速索引**,如 `/周六`、`/周日`、`/周四` |
|
||||
| `/今天` | 交互式流程(今天的班级) | 自动判断当天星期几,启动交互式流程 |
|
||||
| `/交互式` | 交互式流程(通用) | 启动交互式流程,显示完整班级列表 |
|
||||
| `/批量` | 批量输入模式 | 启动批量输入模式 |
|
||||
| `/课评`/`/keping`/`/写课评`/`生成课评` | 标准模式 | 需要用户提供日期、班级、学生表现等完整信息 |
|
||||
|
||||
## 交互式流程实现(v4.3)
|
||||
|
||||
### 第一步:按上课日快速索引
|
||||
|
||||
当用户输入 `/周六`(或 `/今天`、`/周四` 等)时,执行以下操作:
|
||||
|
||||
1. 根据星期几匹配对应班级(如 `/周六` → 匹配所有含"周六"的班级目录)
|
||||
2. 如果输入的 `/今天`,自动计算当天星期几再匹配
|
||||
3. 读取 `.claude/memory/class/` 目录,筛选匹配的班级
|
||||
4. 使用 AskUserQuestions 工具,以单选形式展示匹配的班级选项
|
||||
5. 添加"其他班级(手动输入)"选项
|
||||
6. 记录用户选择的班级
|
||||
|
||||
**工作日对照表**:
|
||||
|
||||
| 指令 | 匹配班级示例 |
|
||||
|:-----|:-------------|
|
||||
| `/周四` | 发现世界-周四19点 |
|
||||
| `/周五` | AICODE03小Q周五1900 |
|
||||
| `/周六` | 发现世界-周六09点、Wedo创造世界-周六1030、AICODE03小Q周六1400 等 |
|
||||
| `/周日` | 发明世界-周日14点、SPIKE02-周日1030 等 |
|
||||
|
||||
**AskUserQuestions 参数配置(以 /周六 为例):**
|
||||
```
|
||||
{
|
||||
"questions": [
|
||||
{
|
||||
"question": "请选择今天要写课评的班级",
|
||||
"header": "班级选择",
|
||||
"options": [
|
||||
"发现世界-周六09点",
|
||||
"Wedo创造世界-周六1030",
|
||||
"AICODE03小Q周六1400",
|
||||
"Wedo创造世界-周六16点",
|
||||
"发现世界-周六19点",
|
||||
"手动输入其他班级名称"
|
||||
],
|
||||
"multiSelect": false
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 第二步:学生名单加载(B模式分开展示)
|
||||
|
||||
选择班级后:
|
||||
1. 检查该班级目录:`.claude/memory/class/{班级}/`
|
||||
2. 查找该班级下的现有学生(有 profile.md 的子目录)
|
||||
3. 展示学生列表(B模式:每人独立显示,含状态标记按钮)
|
||||
4. 如果无学生,提示教师手动输入学生名单
|
||||
|
||||
**B模式展示格式**:
|
||||
|
||||
```
|
||||
┌─ 学生1: 乔乔 ─────────────────────────┐
|
||||
│ 状态:[✅出勤] [🚫请假] [📝体验] [🔄补课] │
|
||||
│ 表现:_____________________________ │
|
||||
└────────────────────────────────────────┘
|
||||
|
||||
┌─ 学生2: 昊昊 ─────────────────────────┐
|
||||
│ 状态:[✅出勤] [🚫请假] [📝体验] [🔄补课] │
|
||||
│ 表现:_____________________________ │
|
||||
└────────────────────────────────────────┘
|
||||
...
|
||||
```
|
||||
|
||||
### 第三步:一次性批量填写学生表现
|
||||
|
||||
教师在输入框中一次性输入所有学生表现(多行):
|
||||
|
||||
```
|
||||
乔乔:gj5→zd3→zt ↑++
|
||||
昊昊:慢热→zd3→反复调 →
|
||||
小明 体验
|
||||
小红:搭了3层,开心 ↑
|
||||
```
|
||||
|
||||
**标记快捷操作**:
|
||||
- `{学生} 请假` → 标记为请假(不生成课评)
|
||||
- `{学生} 体验` → 标记为体验学生(仅汇总)
|
||||
- `{学生} 补课` → 标记为补课学生(跨班级自动保存)
|
||||
- `{学生} 出勤` → 恢复默认出勤状态
|
||||
|
||||
### 第四步:确认并批量生成
|
||||
|
||||
展示已填写的所有学生预览汇总表,待教师确认后一次性生成所有课评。
|
||||
|
||||
**汇总格式**:
|
||||
|
||||
```
|
||||
| 学生 | 状态 | 表现摘要 | 标记 |
|
||||
|:-----|:----:|:---------|:----:|
|
||||
| 乔乔 | ✅ 待生成 | gj5→zd3→zt ↑++ | 出勤 |
|
||||
| 昊昊 | ✅ 待生成 | 慢热→zd3→反复调 → | 出勤 |
|
||||
| 小明 | 📝 仅汇总 | 体验课 | 体验 |
|
||||
| 小红 | ✅ 待生成 | 搭3层 ↑ | 出勤 |
|
||||
|
||||
[全部生成] → 一次性生成所有课评
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 功能概述
|
||||
|
||||
本Skill根据学生画像、课程教案、历史表现等多维度信息,自动生成个性化课后评价(180-350字,根据输入丰富度弹性调整)。
|
||||
@@ -164,7 +278,7 @@ author: 穹狼教学团队
|
||||
- 评价维度
|
||||
- 适龄提示
|
||||
|
||||
**路径**:`memory/lesson/{课程目录}/{课程代码}.md`
|
||||
**路径**:`.claude/memory/lesson/{课程目录}/{课程代码}.md`
|
||||
|
||||
**输出**:`lesson_content` 对象(含`week_number`周数信息)
|
||||
|
||||
@@ -375,9 +489,9 @@ ELSE IF student_type == "guest"(补课/体验学生):
|
||||
.claude/memory/class/{班级}/{学生}/feedback/
|
||||
|
||||
# 课程教案
|
||||
memory/lesson/01-发现世界-螺丝刀/{课程代码}.md
|
||||
memory/lesson/08-SPIKE/{课程代码}.md
|
||||
memory/lesson/09-AICODE-AICODE/{课程代码}.md
|
||||
.claude/memory/lesson/01-发现世界-螺丝刀/{课程代码}.md
|
||||
.claude/memory/lesson/08-SPIKE/{课程代码}.md
|
||||
.claude/memory/lesson/09-AICODE03/{课程代码}.md
|
||||
|
||||
# 学期周数与主题映射
|
||||
.claude/rules/15-semester-weeks.md
|
||||
@@ -495,6 +609,7 @@ memory/lesson/09-AICODE-AICODE/{课程代码}.md
|
||||
|
||||
| 版本 | 日期 | 更新内容 |
|
||||
|-----|------|---------|
|
||||
| **v4.3.0** | **2026-05-16** | **交互式流程优化**:新增 `/周几` 快速索引指令;B模式分开展示学生 + 独立输入区 + 快捷标记按钮(请假/体验/补课/出勤);批量输入+批量生成 |
|
||||
| **v4.0.0** | **2026-05-14** | **同步课评规范V1.0**:改用 `.claude/memory/class/` 目录结构(feedback/*.md 单次文件);统一课程编号(AI编程→AICODE,C++→CSP);补课双向追踪(`(补课-去班级名).md`);删除"待确认"步骤,生成即自动保存 |
|
||||
| v3.1.0 | 2026-05-05 | **生成即双轨保存**:删除"待确认"状态,改为生成后立即自动保存;出勤嵌入班级汇总 |
|
||||
| v2.5.0 | 2026-05-01 | **统一字数标准**:将课评字数统一为弹性范围180-350字,与系统规则保持一致 |
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
{
|
||||
"name": "keping-advanced",
|
||||
"skill_name": "keping-advanced",
|
||||
"version": "4.0.0",
|
||||
"description": "高级课评生成Skill v4.0 - 支持学期周数自动计算(仅用于后端课程主题匹配)、课程主题自动匹配、三段式课评生成、自动保存到feedback/个人文件(课评规范V1.0标准)",
|
||||
"triggers": ["/课评", "/keping", "/写课评", "生成课评"],
|
||||
"version": "4.3.0",
|
||||
"description": "高级课评生成Skill v4.3 - 支持交互式流程(/周六、/今天)、学期周数自动计算(仅用于后端课程主题匹配)、课程主题自动匹配、三段式课评生成、自动保存到feedback/个人文件(课评规范V1.0标准)",
|
||||
"triggers": ["/课评", "/keping", "/写课评", "生成课评", "/周六", "/周日", "/周四", "/周五", "/今天", "/交互式", "/批量"],
|
||||
"semester_config": {
|
||||
"baseline_date": "2026-03-02",
|
||||
"week_calculation": "Floor((current_date - baseline) / 7) + 1",
|
||||
@@ -10,6 +11,42 @@
|
||||
"current_week": 11,
|
||||
"current_date": "2026-05-14"
|
||||
},
|
||||
"interactive_workflow": {
|
||||
"enabled": true,
|
||||
"default_mode": "interactive",
|
||||
"weekday_quick_index": {
|
||||
"enabled": true,
|
||||
"commands": ["/周一", "/周二", "/周三", "/周四", "/周五", "/周六", "/周日"],
|
||||
"mapping_method": "匹配班级目录中对应星期关键词"
|
||||
},
|
||||
"step_1_weekday_select": {
|
||||
"title": "选择上课日",
|
||||
"subtitle": "请选择要处理的星期(或使用 /周几 快速索引)",
|
||||
"options": ["周四", "周五", "周六", "周日", "其他"],
|
||||
"custom_input_label": "其他日子",
|
||||
"allow_custom": true
|
||||
},
|
||||
"step_2_class_selected": {
|
||||
"title": "填写学生表现(B模式)",
|
||||
"subtitle": "一次性输入所有学生的表现(每行一个),支持速记符号和快捷标记(请假/体验/补课)",
|
||||
"default_students": ["乔乔", "昊昊", "小明", "小红"],
|
||||
"quick_mark_buttons": ["请假", "体验", "补课", "出勤"],
|
||||
"display_mode": "B_split_view",
|
||||
"batch_input_hint": "乔乔:gj5→zd3→zt ↑++\n昊昊:慢热→zd3→反复调 →\n小明 体验\n小红:搭了3层,开心 ↑"
|
||||
},
|
||||
"step_3_batch_generate": {
|
||||
"title": "确认批量生成",
|
||||
"subtitle": "预览所有已填写的学生,确认后一次性批量生成课评",
|
||||
"confirm_label": "全部生成",
|
||||
"cancel_label": "取消",
|
||||
"modify_label": "修改学生"
|
||||
}
|
||||
},
|
||||
"batch_workflow": {
|
||||
"enabled": true,
|
||||
"header": ["学生", "核心表现", "情绪"],
|
||||
"default_students": ["乔乔", "昊昊", "小明", "小红"]
|
||||
},
|
||||
"course_mapping": {
|
||||
"发现世界": {"prefix": "DISC", "week_mapping": {"1": "DISC-001", "2": "DISC-002", "3": "DISC-003", "4": "DISC-004", "5": "DISC-005", "6": "DISC-006", "7": "DISC-007", "8": "DISC-008", "9": "DISC-009", "10": "DISC-010", "11": "DISC-011", "12": "DISC-012", "13": "DISC-013", "14": "DISC-014", "15": "DISC-015", "16": "DISC-016", "17": "DISC-017", "18": "DISC-018", "19": "DISC-019", "20": "DISC-020"}},
|
||||
"SPIKE": {"prefix": "SPIKE", "week_mapping": {"1": "SPIKE-001", "2": "SPIKE-002", "3": "SPIKE-003", "4": "SPIKE-004", "5": "SPIKE-005", "6": "SPIKE-006", "7": "SPIKE-007", "8": "SPIKE-008", "9": "SPIKE-009", "10": "SPIKE-010", "11": "SPIKE-011", "12": "SPIKE-012", "13": "SPIKE-013", "14": "SPIKE-014", "15": "SPIKE-015", "16": "SPIKE-016", "17": "SPIKE-017", "18": "SPIKE-018", "19": "SPIKE-019", "20": "SPIKE-020"}},
|
||||
@@ -64,7 +101,7 @@
|
||||
"input": ["学生姓名", "班级"],
|
||||
"output": ["最近10次课评", "能力发展趋势", "进步轨迹", "反复问题"],
|
||||
"file_pattern": ".claude/memory/class/{班级}/{学生}/feedback/",
|
||||
"limit": 10
|
||||
"limit": 3
|
||||
},
|
||||
{
|
||||
"id": "step5",
|
||||
@@ -239,5 +276,5 @@
|
||||
"class_summary_save_failed": {"message": "班级总结保存失败,已加入待补存队列。", "action": "add_to_compensation_queue", "fallback": "下次生成课评前自动补存,或教师输入'补存'手动触发"}
|
||||
},
|
||||
"created_at": "2026-03-25",
|
||||
"updated_at": "2026-05-14"
|
||||
"updated_at": "2026-05-16"
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
---
|
||||
|
||||
## ⚡ 快速用法(v4.0 课评规范V1.0标准)
|
||||
## ⚡ 快速用法(v5.0 课评规范V1.0标准)
|
||||
|
||||
### 1. 极简输入(推荐)- 自动计算周数和主题
|
||||
|
||||
@@ -64,13 +64,14 @@
|
||||
| 4月20日-26日 | 第8周 | DISC-008 | SPIKE-008 | AICODE03-008 |
|
||||
| 4月27日-5月3日 | 第9周 | DISC-009 | SPIKE-009 | AICODE03-009 |
|
||||
| 5月4日-10日 | 第10周 | DISC-010 | SPIKE-010 | AICODE03-010 |
|
||||
| **5月11日-17日** | **第11周** | **DISC-011 鳄鱼** | **SPIKE-011 摩天轮** | **AICODE03-008** |
|
||||
| 5月11日-17日 | 第11周 | DISC-011 鳄鱼 | SPIKE-011 摩天轮 | AICODE03-011 魔幻俄罗斯方块(下) |
|
||||
| **5月18日-24日** | **第12周** | **DISC-012 数字宝箱** | **SPIKE-012 直升机** | **AICODE03-012 涂鸦PK(一)** |
|
||||
|
||||
**当前**:2026年5月14日 = **第11周**
|
||||
**当前**:2026年5月22日 = **第12周**
|
||||
|
||||
---
|
||||
|
||||
## 📋 8步流程速览(v4.0)
|
||||
## 📋 8步流程速览(v5.0)
|
||||
|
||||
| 步骤 | 动作 | 耗时 | 输出 |
|
||||
|:---:|:-----|:---:|:----|
|
||||
@@ -79,7 +80,7 @@
|
||||
| **3** | **计算周数+匹配主题** | **<1s** | **第X周、课程代码、知识点** |
|
||||
| 4 | 读取历史课评(feedback/目录) | <1s | 近10次记录、趋势 |
|
||||
| 5 | 解析本节课表现 | <1s | 关键行为、情绪 |
|
||||
| 6 | 生成个性化课评 | 2-3s | 180-350字文本(关联主题) |
|
||||
| 6 | 生成个性化课评 | 2-3s | 220-300字(标准版)/ 300-400字(详细版) |
|
||||
| 7 | 自动保存 feedback/*.md | <1s | 课评规范V1.0标准文件 |
|
||||
| 8 | 更新成长记录 | <1s | 更新确认 |
|
||||
|
||||
@@ -100,13 +101,13 @@
|
||||
|
||||
---
|
||||
|
||||
## 📚 第11周主题速查(当前周:2026年5月14日)
|
||||
## 📚 第12周主题速查(当前周:2026年5月22日)
|
||||
|
||||
| 班级 | 课程代码 | 主题 | 核心知识点 |
|
||||
|-----|:-------:|:-----|:-----------|
|
||||
| 发现世界 | DISC-011 | **鳄鱼** | 嘴巴开合、铰链结构、咬合功能 |
|
||||
| SPIKE | SPIKE-011 | **摩天轮** | 圆周运动、速度控制、观赏设计 |
|
||||
| AICODE03 | AICODE03-008 | **我的个人主页(上)** | 内容先行、板块化设计、自定义智能体 |
|
||||
| 发现世界 | DISC-012 | **数字宝箱** | 密码锁、数字认知、空间藏物 |
|
||||
| SPIKE | SPIKE-012 | **直升机** | 螺旋桨、升力原理、飞行控制 |
|
||||
| AICODE03 | AICODE03-012 | **涂鸦PK(一)** | 精准需求编写、新窗口审核、角色属性设计 |
|
||||
|
||||
---
|
||||
|
||||
@@ -117,7 +118,23 @@
|
||||
| `→` | 行为发展/时间线 | `观望5分钟→主动尝试` |
|
||||
| `,` | 并列行为 | `搭3层,自己调高度` |
|
||||
| `→`情绪 | 情绪变化 | `兴奋→烦躁` |
|
||||
| `比上周` | 纵向对比 | `比上周主动` |
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Emoji 使用规范
|
||||
|
||||
**总数量**:每篇课评使用 **3-5个** Emoji
|
||||
|
||||
| 位置 | 数量 | 用途 | 推荐表情 |
|
||||
|------|:----:|------|----------|
|
||||
| 第1段(知识点) | 1个 | 段尾点缀 | 🔍 💡 ⚙️ 🎯 |
|
||||
| 第2段(掌握与操作) | 1-2个 | 分散插入 | 💪 ✨ 📈 🤝 |
|
||||
| 第3段(亮点与成长) | 1-2个 | 分散插入 | 😊 🌟 💫 🎉 |
|
||||
| 第4段(建议) | 1个 | 段尾点缀 | 🏠 🔧 📚 |
|
||||
|
||||
**使用原则**:
|
||||
- 学龄前版(2.5-6岁):表情丰富,增强亲切感
|
||||
- 小学版(6-10岁):适度使用,保持专业性
|
||||
|
||||
---
|
||||
|
||||
@@ -125,9 +142,9 @@
|
||||
|
||||
| 年龄段 | 字数 | 语气 | 侧重点 |
|
||||
|-------|:---:|:----|:-------|
|
||||
| 2.5-6岁 | 180-350 | 温暖具体 | 参与、情绪、兴趣 |
|
||||
| 6-8岁 | 190-350 | 尊重专业 | 能力、习惯、逻辑 |
|
||||
| 8-10岁 | 200-350 | 成长数据 | 项目、竞赛、自主 |
|
||||
| 2.5-6岁 | 220-300(标准版)<br>300-400(详细版) | 温暖具体 | 参与、情绪、兴趣 |
|
||||
| 6-8岁 | 220-300(标准版)<br>300-400(详细版) | 尊重专业 | 能力、习惯、逻辑 |
|
||||
| 8-10岁 | 220-300(标准版)<br>300-400(详细版) | 成长数据 | 项目、竞赛、自主 |
|
||||
|
||||
---
|
||||
|
||||
@@ -147,13 +164,12 @@
|
||||
|
||||
生成后自动检查:
|
||||
|
||||
- [ ] 字数 180-350 字(根据输入丰富度弹性调整)
|
||||
- [ ] 5个必写模块完整
|
||||
- [ ] 字数 220-300字(标准版)/ 300-400字(详细版)
|
||||
- [ ] 4个必写模块完整(知识点、掌握与操作、亮点、建议)
|
||||
- [ ] 学生姓名正确
|
||||
- [ ] **知识点与当周主题关联**
|
||||
- [ ] 周数仅在后台使用,正文不显示
|
||||
- [ ] 无禁用词汇
|
||||
- [ ] 纵向对比有据
|
||||
- [ ] 建议可操作
|
||||
|
||||
---
|
||||
@@ -165,7 +181,7 @@
|
||||
.claude/memory/class/{班级}/{学生}/profile.md ← Step 1
|
||||
.claude/rules/15-semester-weeks.md ← Step 3(周数计算)
|
||||
.claude/rules/10-style.md ← Step 2
|
||||
memory/lesson/**/{课程代码}.md ← Step 3
|
||||
.claude/memory/lesson/**/{课程代码}.md ← Step 3
|
||||
.claude/memory/class/{班级}/{学生}/feedback/ ← Step 4
|
||||
|
||||
# 写入(课评规范V1.0标准)
|
||||
@@ -194,4 +210,4 @@ memory/lesson/**/{课程代码}.md ← Step 3
|
||||
|
||||
---
|
||||
|
||||
*速查卡 v4.0 | 2026-05-14 | 同步课评规范V1.0*
|
||||
*速查卡 v5.0 | 2026-05-22 | 同步课评规范V1.0*
|
||||
|
||||
456
.claude/skills/keping-optimizer/SKILL.md
Normal file
456
.claude/skills/keping-optimizer/SKILL.md
Normal file
@@ -0,0 +1,456 @@
|
||||
---
|
||||
name: keping-optimizer
|
||||
description: 课评工作流程优化Skill。提供三级备份机制、自动补全缺失信息、路径自动创建、速记符号自动补全、智能班级预加载、实时校验提醒等功能,让课评更高效更安全。
|
||||
version: 1.0.0
|
||||
author: 穹狼教学团队
|
||||
---
|
||||
|
||||
# 课评工作流程优化 Skill
|
||||
|
||||
## 功能概述
|
||||
|
||||
本Skill提供一系列工作流程优化功能,提升课评生成效率、数据安全性和规范一致性。
|
||||
|
||||
### 核心能力
|
||||
- **三级备份机制**:防止数据丢失,提供完整恢复选项
|
||||
- **自动补全缺失信息**:日期、课程编号、课次自动填入
|
||||
- **路径自动创建**:自动创建不存在的目录结构
|
||||
- **速记符号自动补全**:输入时实时提示和补全
|
||||
- **实时校验提醒**:保存前检查规范,提前发现问题
|
||||
- **智能班级预加载**:根据时间自动预加载当天班级
|
||||
|
||||
---
|
||||
|
||||
## 一、三级备份机制
|
||||
|
||||
### 功能说明
|
||||
确保课评数据安全,防止因系统问题或人为失误导致数据丢失。
|
||||
|
||||
### 备份策略
|
||||
```
|
||||
┌───────────────────────────────────────────────────────┐
|
||||
│ 第1级:直接保存到目标路径(主保存) │
|
||||
│ └── 路径:.claude/memory/class/... │
|
||||
│ │
|
||||
│ 第2级:同时保存到 .backup/ 目录(时间戳备份) │
|
||||
│ └── 路径:.claude/.backup/YYYYMMDD_HHMMSS_{学生}.md│
|
||||
│ │
|
||||
│ 第3级:写入前备份现有文件(防止覆盖) │
|
||||
│ └── 路径:原文件路径 + .md.bak │
|
||||
└───────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 执行流程
|
||||
```
|
||||
1. 检查目标路径是否存在 → 不存在则自动创建
|
||||
2. 检查是否存在旧文件 → 存在则先备份为 .md.bak
|
||||
3. 写入新文件到主路径
|
||||
4. 同时写入备份到 .claude/.backup/ 目录
|
||||
5. 确认两次写入都成功
|
||||
6. 删除超过7天的旧备份(自动清理)
|
||||
```
|
||||
|
||||
### 恢复功能
|
||||
```
|
||||
指令:/恢复 乔乔
|
||||
→ 列出该学生的所有备份版本
|
||||
→ 选择版本恢复
|
||||
|
||||
指令:/恢复备份
|
||||
→ 恢复最近一次备份
|
||||
```
|
||||
|
||||
### 自动清理策略
|
||||
- 保留最近7天的所有备份
|
||||
- 保留每月1号的备份(长期存档)
|
||||
- 自动删除超过时间的备份
|
||||
|
||||
---
|
||||
|
||||
## 二、自动补全缺失信息
|
||||
|
||||
### 功能说明
|
||||
教师只需输入核心表现,系统自动补全日期、课程编号、课次等元信息。
|
||||
|
||||
### 自动补全规则
|
||||
|
||||
| 信息项 | 补全规则 | 默认值 |
|
||||
|--------|---------|--------|
|
||||
| **日期** | 取当天日期,格式YYYYMMDD | 20260516 |
|
||||
| **课程编号** | 根据班级名称自动匹配 | 如AICODE03-01 |
|
||||
| **课次** | 根据学期周数自动计算 | 第11周 = 课次11 |
|
||||
| **课程主题** | 根据课程代码+周数自动匹配 | 如"蜥蜴" |
|
||||
|
||||
### 输入示例
|
||||
|
||||
**极简输入**:
|
||||
```
|
||||
/课评 班级:发现世界-周四19点
|
||||
乔乔:gj5→zd3→zt ↑++
|
||||
```
|
||||
|
||||
**自动补全后**:
|
||||
```
|
||||
日期:20260516
|
||||
班级:发现世界-周四19点
|
||||
课程编号:DISC-011
|
||||
课次:第11课
|
||||
课程主题:鳄鱼
|
||||
```
|
||||
|
||||
### 手动覆盖规则
|
||||
如果教师显式输入了某项信息,优先使用教师输入:
|
||||
```
|
||||
日期:4月2日 ← 教师指定,优先使用
|
||||
班级:发现世界-周四19点
|
||||
乔乔:gj5→zd3→zt ↑++
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、路径自动创建
|
||||
|
||||
### 功能说明
|
||||
自动创建不存在的目录结构,避免因目录缺失导致保存失败。
|
||||
|
||||
### 自动创建的目录结构
|
||||
```
|
||||
.claude/memory/class/
|
||||
├── {班级名称}/
|
||||
│ ├── summaries/ ← 自动创建
|
||||
│ ├── {学生姓名}/
|
||||
│ │ └── feedback/ ← 自动创建
|
||||
│ └── 补课/
|
||||
│ └── {学生姓名}/
|
||||
│ └── feedback/ ← 自动创建
|
||||
└── .backup/ ← 自动创建
|
||||
```
|
||||
|
||||
### 执行逻辑
|
||||
```python
|
||||
目标路径:.claude/memory/class/AICODE03小Q周五1900/乔乔/feedback/
|
||||
检查:.claude/memory/class/ → 存在
|
||||
检查:.claude/memory/class/AICODE03小Q周五1900/ → 存在?
|
||||
→ 不存在,自动创建
|
||||
检查:.claude/memory/class/AICODE03小Q周五1900/乔乔/ → 存在?
|
||||
→ 不存在,自动创建
|
||||
检查:.claude/memory/class/AICODE03小Q周五1900/乔乔/feedback/ → 存在?
|
||||
→ 不存在,自动创建
|
||||
→ 目录完整,可以保存!
|
||||
```
|
||||
|
||||
### 目录缺失提示
|
||||
创建目录时提供提示:
|
||||
```
|
||||
⚠️ 目录不存在,已自动创建:.claude/memory/class/.../feedback/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、速记符号自动补全
|
||||
|
||||
### 功能说明
|
||||
输入速记符号时实时提示含义,并提供Tab补全功能。
|
||||
|
||||
### 速记符号速查表
|
||||
|
||||
| 符号 | 含义 | 完整描述 |
|
||||
|------|------|---------|
|
||||
| `gj` | 观望 | gj5=观望5分钟 |
|
||||
| `zd` | 主动搭 | zd3=主动搭3层 |
|
||||
| `zt` | 自己调整 | 球卡住时自己调整 |
|
||||
| `wb` | 完成 | 独立完成搭建 |
|
||||
| `zx` | 专注 | zx15=专注15分钟 |
|
||||
| `sb` | 失败后调整 | sb2=失败2次后成功 |
|
||||
| `ts` | 探索 | ts5=探索5分钟 |
|
||||
| `cz` | 创造 | cz3=3种创意方案 |
|
||||
| `wt` | 提问 | wt3=提问3次 |
|
||||
| `hz` | 合作 | 合作完成 |
|
||||
| `fx` | 分享 | 分享想法/作品 |
|
||||
|
||||
### 自动补全交互示例
|
||||
|
||||
**示例1:自动补全数字**
|
||||
```
|
||||
教师输入:乔乔:gj
|
||||
系统提示:
|
||||
├─ gj3 → 观望3分钟
|
||||
├─ gj5 → 观望5分钟
|
||||
└─ gj10 → 观望10分钟
|
||||
教师按Tab键:→ gj5
|
||||
```
|
||||
|
||||
**示例2:符号理解提示**
|
||||
```
|
||||
教师输入:乔乔:zd3
|
||||
系统提示:✅ 识别为「主动搭3层」
|
||||
```
|
||||
|
||||
**示例3:模糊匹配**
|
||||
```
|
||||
教师输入:乔乔:g5
|
||||
系统提示:是否是 gj5(观望5分钟)? [是/否]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、实时校验提醒
|
||||
|
||||
### 功能说明
|
||||
保存前自动检查课评是否符合规范,提前发现并提醒问题。
|
||||
|
||||
### 校验清单
|
||||
|
||||
| 检查项 | 规范要求 | 检查方式 |
|
||||
|--------|---------|---------|
|
||||
| **课程编号** | CSP/AICODE前缀,不是C++/AI | 正则匹配 |
|
||||
| **日期格式** | YYYYMMDD格式 | 格式验证 |
|
||||
| **目录结构** | 完整路径存在 | 路径检查 |
|
||||
| **文件命名** | 符合规范要求 | 正则匹配 |
|
||||
| **课评正文** | 不提及"补课"等词 | 关键词扫描 |
|
||||
| **字数范围** | 180-350字 | 字数统计 |
|
||||
|
||||
### 校验结果展示
|
||||
|
||||
**通过(全部绿色)**:
|
||||
```
|
||||
✅ 课程编号:AICODE03-11(符合规范)
|
||||
✅ 日期格式:20260516(正确)
|
||||
✅ 目录结构:完整存在
|
||||
✅ 文件命名:规范
|
||||
✅ 课评正文:无违规词汇
|
||||
✅ 字数:210字(符合要求)
|
||||
```
|
||||
|
||||
**存在问题(黄色警告)**:
|
||||
```
|
||||
⚠️ 课程编号:AI03-11(不是标准格式)
|
||||
→ 建议改为:AICODE03-11
|
||||
|
||||
⚠️ 课评正文:检测到「补课」词汇
|
||||
→ 建议删除或替换
|
||||
```
|
||||
|
||||
### 校验时机
|
||||
- **生成后立即校验**:课评生成完成即检查
|
||||
- **保存前最终校验**:写入文件前最后检查
|
||||
- **教师可跳过**:警告不阻塞保存,但记录在待修复列表
|
||||
|
||||
---
|
||||
|
||||
## 六、智能班级预加载
|
||||
|
||||
### 功能说明
|
||||
每次打开系统时,根据当前时间自动预加载当天的班级。
|
||||
|
||||
### 预加载规则
|
||||
|
||||
| 当前时间 | 自动预加载班级 |
|
||||
|---------|----------------|
|
||||
| 周一上午10点 | 小小班-周一上午10点 |
|
||||
| 周一下午16点 | 小小班-周一下午16点 |
|
||||
| 周四晚上19点 | 发现世界-周四19点 |
|
||||
| 周六上午10点 | SPIKE-周六上午10点 |
|
||||
| 周六下午14点 | AICODE03-周六下午14点 |
|
||||
|
||||
### 快捷指令
|
||||
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| **`/周几`** | **按上课日快速索引(推荐)**,如 `/周六`、`/周日`、`/周四` |
|
||||
| `/今天` | 自动判断当天星期几,选择对应班级 |
|
||||
| `/本周` | 选择本周的班级列表 |
|
||||
| `/班级` | 手动选择班级 |
|
||||
| `/模板 {班级}` | 加载班级学生名单模板 |
|
||||
|
||||
### 模板加载示例
|
||||
|
||||
**指令**:`/模板 周四19点`
|
||||
|
||||
**自动生成**:
|
||||
```
|
||||
班级:发现世界-周四19点
|
||||
日期:20260516
|
||||
|
||||
乔乔:______
|
||||
昊昊:______
|
||||
小明:______
|
||||
小红:______
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 七、批量处理优化
|
||||
|
||||
### 7.1 并行生成 + 逐份实时保存
|
||||
|
||||
**问题**:全部生成后统一保存,一旦中断全部丢失
|
||||
|
||||
**优化**:生成一份立即保存一份
|
||||
|
||||
```
|
||||
教师输入5个学生 → 系统并行生成
|
||||
→ 乔乔课评生成完成 → 立即保存 ✅
|
||||
→ 昊昊课评生成完成 → 立即保存 ✅
|
||||
→ 其他继续...
|
||||
```
|
||||
|
||||
**中断恢复**:
|
||||
```
|
||||
上次中断:乔乔、昊昊已保存,小明、小红未完成
|
||||
重新运行:检测到已保存的学生,直接跳过,继续处理未完成的
|
||||
```
|
||||
|
||||
### 7.2 批量修改工具
|
||||
|
||||
**功能**:一次性修改多个课评的共同内容
|
||||
|
||||
**指令格式**:
|
||||
```
|
||||
/批量修改 {查找内容}→{替换内容}
|
||||
```
|
||||
|
||||
**示例**:
|
||||
```
|
||||
/批量修改 搭建→拼搭
|
||||
→ 自动查找并替换本周所有课评中的"搭建"为"拼搭"
|
||||
|
||||
/批量添加 继续加油!
|
||||
→ 自动在所有课评结尾添加"继续加油!"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、快捷指令大全
|
||||
|
||||
| 指令分类 | 指令 | 功能描述 |
|
||||
|---------|------|---------|
|
||||
| **班级选择** | **`/周几`** | **按上课日快速索引(推荐)**,如 `/周六`、`/周日` |
|
||||
| | `/今天` | 自动判断当天星期几,选择对应班级 |
|
||||
| | `/本周` | 选择本周班级列表 |
|
||||
| | `/班级 {班级名}` | 手动选择指定班级 |
|
||||
| **模板加载** | `/模板 {班级}` | 加载班级学生名单模板 |
|
||||
| | `/空模板` | 创建空模板 |
|
||||
| **批量操作** | `/批量修改 {查找}→{替换}` | 批量替换课评内容 |
|
||||
| | `/批量添加 {内容}` | 批量在课评结尾添加内容 |
|
||||
| **数据恢复** | `/恢复 {学生}` | 恢复该学生的备份 |
|
||||
| | `/恢复备份` | 恢复最近一次备份 |
|
||||
| | `/清理备份` | 清理过期备份文件 |
|
||||
| **校验检查** | `/检查` | 检查本周课评是否符合规范 |
|
||||
| | `/检查 {班级}` | 检查指定班级课评 |
|
||||
| **保存与补存** | `/补存` | 尝试重新保存失败的课评 |
|
||||
| | `/学生 {姓名}` | 查看学生档案和历史课评 |
|
||||
|
||||
---
|
||||
|
||||
## 九、待修复列表功能
|
||||
|
||||
### 功能说明
|
||||
保存校验发现问题但教师选择跳过保存时,自动记录在待修复列表,后续可集中处理。
|
||||
|
||||
### 待修复列表存储
|
||||
```
|
||||
路径:.claude/.tasks/fix-list-YYYYMMDD.md
|
||||
```
|
||||
|
||||
### 待修复项目格式
|
||||
```markdown
|
||||
# 待修复列表 - 2026-05-16
|
||||
|
||||
## 发现世界-周四19点
|
||||
|
||||
- [ ] 乔乔:课程编号不规范(AI03-11 → 建议改为 AICODE03-11)
|
||||
- [ ] 昊昊:课评正文包含"补课"词汇(需要删除或替换)
|
||||
- [ ] 小明:字数仅140字(需要补充内容)
|
||||
|
||||
## AICODE03-周六14点
|
||||
|
||||
- [ ] 小红:文件命名不符合规范
|
||||
```
|
||||
|
||||
### 修复流程
|
||||
```
|
||||
指令:/修复
|
||||
→ 展示待修复列表
|
||||
→ 逐个处理或批量自动修复
|
||||
→ 修复完成从列表移除
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 十、组合使用示例
|
||||
|
||||
### 完整优化流程示例
|
||||
|
||||
**Step 1:智能预加载班级**
|
||||
```
|
||||
教师:/周六(或 /今天)
|
||||
→ 自动加载:发现世界-周六09点
|
||||
```
|
||||
|
||||
**Step 2:加载班级模板**
|
||||
```
|
||||
教师:/模板 周四19点
|
||||
→ 自动生成学生名单模板
|
||||
```
|
||||
|
||||
**Step 3:速记符号输入(自动补全)**
|
||||
```
|
||||
乔乔:gj5→zd3→zt ↑++
|
||||
昊昊:慢热→zd3→反复调 →
|
||||
```
|
||||
|
||||
**Step 4:生成并立即保存(三级备份)**
|
||||
```
|
||||
→ 生成乔乔课评 → 立即保存(三级备份)✅
|
||||
→ 生成昊昊课评 → 立即保存(三级备份)✅
|
||||
```
|
||||
|
||||
**Step 5:实时校验提醒**
|
||||
```
|
||||
✅ 乔乔:全部通过
|
||||
⚠️ 昊昊:课程编号不规范,建议改为DISC-011
|
||||
→ 教师确认修改 → 自动修复后保存
|
||||
```
|
||||
|
||||
**Step 6:完成!**
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
✅ 全部完成!
|
||||
已保存学生:2人
|
||||
已备份文件:4份(主文件+备份)
|
||||
待修复项目:0项
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 依赖文件
|
||||
|
||||
```
|
||||
# 规则文件
|
||||
.claude/rules/00-core.md
|
||||
.claude/rules/20-workflow.md
|
||||
.claude/rules/21-shorthand.md
|
||||
|
||||
# 学生数据
|
||||
.claude/memory/class/{班级}/{学生}/profile.md
|
||||
.claude/memory/class/{班级}/{学生}/feedback/
|
||||
|
||||
# 备份目录(自动创建)
|
||||
.claude/.backup/
|
||||
.claude/.tasks/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 版本历史
|
||||
|
||||
| 版本 | 日期 | 更新内容 |
|
||||
|-----|------|---------|
|
||||
| **v1.0.0** | **2026-05-16** | 初始版本:三级备份、自动补全、路径自动创建、速记补全、实时校验、智能预加载、批量处理、待修复列表 |
|
||||
|
||||
---
|
||||
|
||||
*维护者:穹狼教学团队*
|
||||
*最后更新:2026-05-16*
|
||||
30
.claude/skills/keping-optimizer/config.json
Normal file
30
.claude/skills/keping-optimizer/config.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "keping-optimizer",
|
||||
"version": "1.0.0",
|
||||
"description": "课评工作流程优化Skill",
|
||||
"triggers": [
|
||||
"/优化",
|
||||
"/optimizer",
|
||||
"/备份",
|
||||
"/恢复",
|
||||
"/检查",
|
||||
"/补存",
|
||||
"/周几",
|
||||
"/周一",
|
||||
"/周二",
|
||||
"/周三",
|
||||
"/周四",
|
||||
"/周五",
|
||||
"/周六",
|
||||
"/周日",
|
||||
"/今天",
|
||||
"/本周",
|
||||
"/模板",
|
||||
"/批量修改",
|
||||
"/修复"
|
||||
],
|
||||
"enabled": false,
|
||||
"auto_load": true,
|
||||
"created_at": "2026-03-25",
|
||||
"updated_at": "2026-05-16"
|
||||
}
|
||||
219
.claude/skills/keping-optimizer/速查卡.md
Normal file
219
.claude/skills/keping-optimizer/速查卡.md
Normal file
@@ -0,0 +1,219 @@
|
||||
# 课评优化工具速查卡
|
||||
|
||||
## 一、核心优化功能
|
||||
|
||||
| 功能 | 说明 | 使用场景 |
|
||||
|------|------|---------|
|
||||
| **三级备份** | 防止数据丢失,主文件+备份+bak文件 | 所有保存操作自动执行 |
|
||||
| **自动补全** | 日期、课程编号、课次自动填入 | 教师只需输入学生表现 |
|
||||
| **路径自动创建** | 自动创建不存在的目录 | 首次保存新学生/新班级 |
|
||||
| **速记补全** | 输入过程中实时提示速记含义 | 快速输入时 |
|
||||
| **实时校验** | 保存前检查规范,提前发现问题 | 生成完成后 |
|
||||
| **智能预加载** | 根据时间自动预加载当天班级 | 开始工作时 |
|
||||
|
||||
---
|
||||
|
||||
## 二、速记符号表
|
||||
|
||||
### 核心符号(必记)
|
||||
| 符号 | 含义 | 完整描述 |
|
||||
|------|------|---------|
|
||||
| `gj` | 观望 | gj5=观望5分钟 |
|
||||
| `zd` | 主动搭 | zd3=主动搭3层 |
|
||||
| `zt` | 自己调整 | 球卡住时自己调整高度 |
|
||||
| `wb` | 完成 | 独立完成搭建 |
|
||||
| `↑` | 开心/积极 | 情绪良好 |
|
||||
| `→` | 稳定/平和 | 情绪稳定 |
|
||||
| `++` | 比上周进步 | 表现更好 |
|
||||
|
||||
### 扩展符号
|
||||
| 符号 | 含义 | 完整描述 |
|
||||
|------|------|---------|
|
||||
| `zx` | 专注 | zx15=专注15分钟 |
|
||||
| `sb` | 失败后调整 | sb2=失败2次后成功 |
|
||||
| `ts` | 探索 | ts5=探索5分钟 |
|
||||
| `cz` | 创造 | cz3=3种创意方案 |
|
||||
| `wt` | 提问 | wt3=提问3次 |
|
||||
| `hz` | 合作 | 合作完成 |
|
||||
| `fx` | 分享 | 分享想法/作品 |
|
||||
|
||||
---
|
||||
|
||||
## 三、快捷指令
|
||||
|
||||
### 班级选择
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| **`/周几`** | **按上课日快速索引(推荐)**,如 `/周六`、`/周日` |
|
||||
| `/今天` | 自动判断当天星期几,选择对应班级 |
|
||||
| `/本周` | 选择本周班级列表 |
|
||||
| `/班级 {班级名}` | 手动选择指定班级 |
|
||||
|
||||
### 模板工具
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| `/模板 {班级}` | 加载班级学生名单模板 |
|
||||
| `/空模板` | 创建空模板 |
|
||||
|
||||
### 批量操作
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| `/批量修改 {查找}→{替换}` | 批量替换课评内容 |
|
||||
| `/批量添加 {内容}` | 批量在课评结尾添加内容 |
|
||||
|
||||
### 数据恢复
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| `/恢复 {学生}` | 恢复该学生的备份 |
|
||||
| `/恢复备份` | 恢复最近一次备份 |
|
||||
| `/清理备份` | 清理过期备份文件 |
|
||||
|
||||
### 校验检查
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| `/检查` | 检查本周课评是否符合规范 |
|
||||
| `/检查 {班级}` | 检查指定班级课评 |
|
||||
|
||||
### 保存与补存
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| `/补存` | 尝试重新保存失败的课评 |
|
||||
| `/学生 {姓名}` | 查看学生档案和历史课评 |
|
||||
|
||||
### 修复工具
|
||||
| 指令 | 功能 |
|
||||
|------|------|
|
||||
| `/修复` | 处理待修复列表中的项目 |
|
||||
|
||||
---
|
||||
|
||||
## 四、规范检查要点
|
||||
|
||||
### 课程编号规范
|
||||
| 错误 | 正确 |
|
||||
|------|------|
|
||||
| C++ | CSP |
|
||||
| AI03 | AICODE03 |
|
||||
| AI编程 | AICODE |
|
||||
|
||||
### 日期格式
|
||||
- ✅ 正确:20260516
|
||||
- ❌ 错误:2026/05/16、5月16日、05/16
|
||||
|
||||
### 文件命名
|
||||
- ✅ 正确:20260516_DISC-011.md
|
||||
- ❌ 错误:5月16日课评.md、第11周课评.md
|
||||
|
||||
### 禁用词汇(课评正文)
|
||||
- ❌ 补课、来补课、作为补课学生
|
||||
- ❌ 第一次上课(除非教师明确说明)
|
||||
- ❌ C++、AI编程(使用标准编号)
|
||||
|
||||
---
|
||||
|
||||
## 五、备份与恢复
|
||||
|
||||
### 备份位置
|
||||
```
|
||||
主文件:.claude/memory/class/{班级}/{学生}/feedback/YYYYMMDD_课程编号-课次.md
|
||||
备份文件:.claude/.backup/YYYYMMDD_HHMMSS_{学生}.md
|
||||
旧文件备份:原文件路径.md.bak
|
||||
```
|
||||
|
||||
### 恢复流程
|
||||
1. 输入 `/恢复 {学生姓名}`
|
||||
2. 从列出的备份版本中选择
|
||||
3. 确认恢复
|
||||
|
||||
---
|
||||
|
||||
## 六、待修复列表
|
||||
|
||||
### 位置
|
||||
```
|
||||
.claude/.tasks/fix-list-YYYYMMDD.md
|
||||
```
|
||||
|
||||
### 查看与修复
|
||||
```
|
||||
指令:/修复
|
||||
→ 展示待修复列表
|
||||
→ 逐个处理或批量自动修复
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 七、完整工作流程示例
|
||||
|
||||
### 高效课后流程
|
||||
|
||||
```
|
||||
1. 打开系统
|
||||
└─ /周六(或 /今天)→ 自动加载发现世界-周六09点
|
||||
|
||||
2. 加载学生模板
|
||||
└─ /模板 周四19点 → 显示学生名单
|
||||
|
||||
3. 速记输入(自动补全)
|
||||
└─ 乔乔:gj5→zd3→zt ↑ ++
|
||||
系统提示:gj5→zd3→zt ↑++
|
||||
|
||||
4. 生成课评
|
||||
└─ 并行生成 → 实时保存一份一份
|
||||
|
||||
5. 自动校验
|
||||
└─ ✅ 全部通过 ⚠️ 或 警告提示
|
||||
|
||||
6. 保存完成
|
||||
└─ 三级备份同时保存 ✅
|
||||
|
||||
7. 查看待修复
|
||||
└─ /修复 处理未完成项目
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、常见问题
|
||||
|
||||
### Q: 备份会占用空间吗?
|
||||
A: 自动保留最近7天备份,每月1号备份长期保留,自动清理超过时间的备份。
|
||||
|
||||
### Q: 速记符号记不住怎么办?
|
||||
A: 不用记住,输入时系统会自动提示含义,按Tab键可自动补全。
|
||||
|
||||
### Q: 校验警告可以跳过吗?
|
||||
A: 可以,警告不阻塞保存,但会记录在待修复列表,后续可集中处理。
|
||||
|
||||
### Q: 目录不存在怎么办?
|
||||
A: 系统会自动逐级创建完整目录结构,无需手动操作。
|
||||
|
||||
---
|
||||
|
||||
## 九、情绪符号对照表
|
||||
|
||||
| 符号 | 含义 | 对应表述 |
|
||||
|------|------|---------|
|
||||
| `↑` | 开心/积极/投入 | 开心、投入、积极、热情、参与度高 |
|
||||
| `→` | 稳定/平和/正常 | 稳定、平和、正常、专注、认真 |
|
||||
| `↓` | 低落/烦躁 | 低落、烦躁、不开心、需要关注 |
|
||||
| `~` | 波动/反复 | 情绪波动、反复不定 |
|
||||
| `++` | 进步/提升 | 比上周好、进步明显、状态提升 |
|
||||
| `↑↑` | 非常开心/兴奋 | 特别开心、非常投入、状态极佳 |
|
||||
| `↓↓` | 特别低落/需要关注 | 非常低落、需要关注、情绪不好 |
|
||||
| `gd` | 孤独/独自玩 | 喜欢独自玩、独自活动 |
|
||||
| `jl` | 焦虑/紧张/不安 | 紧张、焦虑、不安 |
|
||||
|
||||
---
|
||||
|
||||
## 十、示例速记组合
|
||||
|
||||
```
|
||||
乔乔:gj5→zd3→zt ↑++ → 观望5分钟→主动搭3层→自己调整,开心,比上周进步
|
||||
昊昊:慢热→zd3→反复调 → → 慢热,主动搭3层,反复调整,稳定
|
||||
小明:专注15→完成→分享→合作 ↔ 专注15分钟→完成→分享→合作
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*速查卡版本:v1.0.0*
|
||||
*最后更新:2026-05-16*
|
||||
227
.claude/skills/keping-simplified/SKILL.md
Normal file
227
.claude/skills/keping-simplified/SKILL.md
Normal file
@@ -0,0 +1,227 @@
|
||||
---
|
||||
name: keping-simplified
|
||||
description: 超级简化版课评生成器!只需输入 "/课评" 即可启动,表单直连提交,AI自动检测并生成。为穹狼乐高编程设计。
|
||||
version: 5.1.0
|
||||
author: 穹狼教学团队
|
||||
---
|
||||
|
||||
# keping-simplified — 超级简化版课评生成器
|
||||
|
||||
## 🚀 核心特点
|
||||
|
||||
**超级简单!一键启动!**
|
||||
- 只需输入 `/课评` 即可启动,无需记住一堆命令
|
||||
- 启动即显示当前周数+班级选择
|
||||
- 自动匹配课程主题(基于学期周数映射表)
|
||||
- 本地网页表单:学生状态快捷选择 + 速记输入 + 进度条
|
||||
- **直连提交**:表单直接 POST 到本地服务器,无需复制粘贴
|
||||
- AI 自动检测信号文件 → 生成课评 → 双轨保存
|
||||
- 完成后自动清理临时数据
|
||||
|
||||
---
|
||||
|
||||
## 📋 完整工作流程
|
||||
|
||||
### 第一步:启动(只需一个命令!)
|
||||
```
|
||||
用户输入:/课评
|
||||
```
|
||||
立即执行以下操作:
|
||||
1. ✅ 计算当前周数(基于3月2日开学)
|
||||
2. ✅ 显示当天对应周几的班级列表
|
||||
3. ✅ 自动匹配每个班级的当周课程主题
|
||||
|
||||
---
|
||||
|
||||
### 第二步:班级选择
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🎯 选择班级 | 第X周 YYYY-MM-DD
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
可选班级:
|
||||
[1] 发现世界-周四19点(DISC-011 鳄鱼)
|
||||
[2] Wed创造世界-周六1030(CREATE-011 推磨机器人)
|
||||
[3] AICODE03小Q周六1400(AICODE03-011 AI文档写作)
|
||||
[4] SPIKE02-周日1030(SPIKE-011 摩天轮)
|
||||
[5] 手动输入班级名称
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
用户选择班级后,系统自动:
|
||||
1. 启动本地表单服务器(`python src/form_server.py`)
|
||||
2. 读取该班级目录,加载学生名单和画像
|
||||
3. 匹配当周课程主题(从学期周数映射表)
|
||||
|
||||
---
|
||||
|
||||
### 第三步:打开网页表单 + 直连提交
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🖥️ 表单服务器已启动!
|
||||
👉 http://localhost:8088/form?class=发现世界-周四19点&week=11&course=DISC-011&theme=鳄鱼&date=2026-05-16
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
**表单已自动填入:班级、周数、日期、课程主题、学生名单(含画像摘要)**
|
||||
|
||||
用户在浏览器中:
|
||||
1. 为每位学生选择状态(出勤/请假/补课/体验)
|
||||
2. 填写课堂表现(支持速记符号)
|
||||
3. 点击「🚀 提交并保存」
|
||||
4. 看到「✅ 提交成功」→ 可关闭页面
|
||||
|
||||
**数据自动 POST 到本地服务器 → 保存为 JSON → 写入信号文件**
|
||||
|
||||
**表单预览**:
|
||||
```
|
||||
┌──────────────────────────────────────────┐
|
||||
│ 📝 课评填写表单 - 发现世界-周四19点 │
|
||||
│ 第11周 · DISC-011 鳄鱼 · 2026-05-16 │
|
||||
├──────────────────────────────────────────┤
|
||||
│ 📊 填写进度:3/6 · █████░░ 50% │
|
||||
├──────────────────────────────────────────┤
|
||||
│ ┌─梁昕乔───────────────────────┐ │
|
||||
│ │ 📋 性格内向,需鼓励... │ │
|
||||
│ │ [出勤] [请假] [补课] [体验] │ │
|
||||
│ │ 表现:____________________ │ │
|
||||
│ │ (速记提示:gj=观望、zd=主动) │ │
|
||||
│ └──────────────────────────────┘ │
|
||||
│ ┌─钟昀昊───────────────────────┐ │
|
||||
│ │ [出勤] [请假] [补课] [体验] │ │
|
||||
│ │ 表现:____________________ │ │
|
||||
│ └──────────────────────────────┘ │
|
||||
│ ┌─+ 添加临时学生──────────────┐ │
|
||||
│ │ 姓名:____ 状态:[补课/体验] │ │
|
||||
│ └──────────────────────────────┘ │
|
||||
├──────────────────────────────────────────┤
|
||||
│ [🚀 提交并保存] │
|
||||
└──────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 第四步:AI 自动检测 → 生成并保存
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🔔 检测到表单提交 | 发现世界-周四19点 | DISC-011 鳄鱼
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
[1/3] 生成梁昕乔课评... ✅ 已保存
|
||||
[2/3] 生成钟昀昊课评... ✅ 已保存
|
||||
[3/3] 生成林瀚丞课评... ✅ 已保存
|
||||
📝 其他学生请假,不生成课评
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
✅ 全部完成!已保存 3 人 | 请假 2 人
|
||||
🗑️ 已清理临时数据文件
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
点击「提交」后:
|
||||
1. ✅ 数据自动 POST 到本地服务器
|
||||
2. ✅ 服务器保存为 `.claude/.tmp/evaluation_input_{班级}.json`
|
||||
3. ✅ 写入信号文件 `EVALUATION_READY.txt`
|
||||
4. ✅ AI 检测到信号,读取 JSON 数据
|
||||
5. ✅ 批量生成所有学生课评(180-350字三段式)
|
||||
6. ✅ 自动保存到标准路径(双轨)
|
||||
7. ✅ 清理临时数据文件
|
||||
|
||||
---
|
||||
|
||||
## 📋 课评生成规则
|
||||
|
||||
### 学生状态处理
|
||||
- **出勤** → 正常生成课评,保存到 `feedback/`
|
||||
- **请假** → 仅生成请假记录 `(请假).md`
|
||||
- **补课** → 保存到 `补课/feedback/`
|
||||
- **体验** → 保存到 `补课/feedback/`
|
||||
|
||||
### 三段式结构(固定不变)
|
||||
```
|
||||
第1段(30-55字):课程知识点,末尾1个emoji
|
||||
第2段(100-220字,弹性):掌握+环节+亮点,1-3个emoji分散插入
|
||||
第3段(30-55字):课后建议,末尾1个emoji
|
||||
```
|
||||
|
||||
### 称呼规则
|
||||
- 优先用小名/昵称
|
||||
- 其次用去姓称名
|
||||
- 单字名叠字化
|
||||
|
||||
### Emoji规则
|
||||
- 第1段:🔍 💡 ⚙️(根据课程类型)
|
||||
- 第2段:💪 ✨ 📈 🎯(根据亮点)
|
||||
- 第3段:🏠 🔧(根据建议)
|
||||
|
||||
---
|
||||
|
||||
## 💾 自动保存规则
|
||||
|
||||
### 文件路径(课评规范V1.0标准)
|
||||
```
|
||||
.claude/memory/class/{班级}/
|
||||
├── summaries/YYYYMMDD_{课程编号}_{班级反馈}.md
|
||||
├── {学生}/
|
||||
│ └── feedback/YYYYMMDD_{课程编号}_{课次}.md
|
||||
└──补课/{学生}/
|
||||
└── feedback/YYYYMMDD_{课程编号}.md
|
||||
```
|
||||
|
||||
### 无需确认,自动保存!
|
||||
课评生成后立即保存,无需教师点击确认。
|
||||
|
||||
---
|
||||
|
||||
## 📊 速记符号对照表
|
||||
|
||||
| 速记 | 含义 |
|
||||
|------|------|
|
||||
| gj# | 观望#分钟 |
|
||||
| zd# | 主动搭#层 |
|
||||
| zt | 自己调整 |
|
||||
| wb | 完成 |
|
||||
| ↑ | 开心 |
|
||||
| → | 稳定 |
|
||||
| ++ | 比上周进步 |
|
||||
| -- | 需关注 |
|
||||
|
||||
---
|
||||
|
||||
## 📝 触发方式
|
||||
|
||||
**主触发词:**
|
||||
- `/课评` → 启动超级简化流程
|
||||
- `/keping-simple` → 别名
|
||||
|
||||
**不触发其他技能:**
|
||||
- 不要触发 `keping-advanced` 或 `keping-optimizer`
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ 关键配置
|
||||
|
||||
### 学期周数计算基准
|
||||
- 开学日期:2026年3月2日
|
||||
- 周数公式:Floor((当天-3月2日)/7) +1
|
||||
|
||||
### 班级目录路径
|
||||
```
|
||||
.claude/memory/class/{班级名称}/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 质量检查清单
|
||||
- [ ] 字数:180-350(根据输入丰富度)
|
||||
- [ ] 三段式结构完整
|
||||
- [ ] Emoji位置正确(段末/分散插入)
|
||||
- [ ] 称呼正确(不用全名)
|
||||
- [ ] 无周数显示(正文)
|
||||
- [ ] 路径符合课评规范V1.0
|
||||
|
||||
---
|
||||
|
||||
*版本:v5.1.0(表单直连提交)*
|
||||
*维护者:穹狼教学团队*
|
||||
*最后更新:2026-05-20*
|
||||
232
.claude/skills/keping-simplified/assets/form_template.html
Normal file
232
.claude/skills/keping-simplified/assets/form_template.html
Normal file
@@ -0,0 +1,232 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>课评填写表单 - 穹狼乐高编程</title>
|
||||
<style>
|
||||
:root {
|
||||
--primary:#6366f1; --secondary:#8b5cf6; --accent:#f59e0b; --success:#10b981;
|
||||
--bg:#f8fafc; --card:#ffffff; --text:#1e293b;
|
||||
}
|
||||
body { font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif; background:var(--bg); color:var(--text); margin:0; padding:20px; }
|
||||
.container { max-width:900px; margin:0 auto; }
|
||||
.card { background:var(--card); border-radius:16px; padding:24px; box-shadow:0 4px 20px rgba(0,0,0,0.08); margin-bottom:16px; }
|
||||
.header { text-align:center; padding:16px 0; }
|
||||
.header h1 { font-size:24px; margin:0 0 8px 0; }
|
||||
.header .meta { color:#64748b; font-size:14px; }
|
||||
.progress { margin:16px 0; }
|
||||
.progress-bar { display:flex; gap:8px; align-items:center; }
|
||||
.progress-text { font-weight:600; min-width:80px; }
|
||||
.progress-track { flex:1; height:12px; background:#e2e8f0; border-radius:999px; overflow:hidden; }
|
||||
.progress-fill { height:100%; background:linear-gradient(90deg,var(--primary),var(--secondary)); border-radius:999px; transition:width 0.3s ease; }
|
||||
.student { display:flex; gap:12px; align-items:start; padding:16px; background:#fafafa; border-radius:12px; margin-bottom:12px; }
|
||||
.student-header { min-width:140px; }
|
||||
.student-name { font-weight:700; font-size:18px; margin-bottom:8px; }
|
||||
.student-profile { font-size:12px; color:#94a3b8; margin-bottom:6px; max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
||||
.status-buttons { display:flex; gap:6px; flex-wrap:wrap; }
|
||||
.status-btn { padding:6px 12px; border-radius:999px; border:2px solid #e2e8f0; background:#fff; cursor:pointer; font-weight:600; font-size:13px; transition:all 0.2s; }
|
||||
.status-btn:hover { border-color:#cbd5e1; }
|
||||
.status-btn.active { background:#ecfdf5; border-color:#10b981; color:#059669; }
|
||||
.status-btn[data-status=请假].active { background:#fef2f2; border-color:#f87171; color:#dc2626; }
|
||||
.status-btn[data-status=补课].active { background:#fffbeb; border-color:#f59e0b; color:#d97706; }
|
||||
.status-btn[data-status=体验].active { background:#eff6ff; border-color:#3b82f6; color:#2563eb; }
|
||||
.input-group { flex:1; display:flex; flex-direction:column; gap:8px; }
|
||||
.input-group label { font-size:13px; font-weight:600; color:#475569; }
|
||||
.input-group textarea { width:100%; padding:12px; border:2px solid #e2e8f0; border-radius:10px; min-height:80px; resize:vertical; font-size:14px; transition:border-color 0.2s; }
|
||||
.input-group textarea:focus { outline:none; border-color:var(--primary); }
|
||||
.symbols { font-size:12px; color:#94a3b8; display:flex; gap:12px; flex-wrap:wrap; }
|
||||
.add-student { border:2px dashed #cbd5e1; padding:16px; border-radius:12px; text-align:center; cursor:pointer; color:#64748b; transition:all 0.2s; }
|
||||
.add-student:hover { border-color:var(--primary); color:var(--primary); background:#eef2ff; }
|
||||
.actions { display:flex; gap:12px; justify-content:center; padding-top:16px; flex-wrap:wrap; }
|
||||
.btn { padding:14px 32px; border-radius:10px; font-weight:700; font-size:16px; cursor:pointer; border:none; transition:transform 0.1s,opacity 0.2s; }
|
||||
.btn-primary { background:linear-gradient(135deg,var(--primary),var(--secondary)); color:#fff; }
|
||||
.btn-success { background:linear-gradient(135deg,var(--success),#059669); color:#fff; }
|
||||
.btn:hover { transform:translateY(-2px); }
|
||||
.btn:active { transform:translateY(0); }
|
||||
.btn:disabled { opacity:0.5; cursor:not-allowed; transform:none; }
|
||||
.course-card { background:linear-gradient(135deg,#6366f115,#8b5cf615); border-left:4px solid var(--primary); }
|
||||
.course-title { font-size:18px; font-weight:700; margin:0 0 8px 0; }
|
||||
.course-details { color:#475569; line-height:1.6; }
|
||||
.toast { position:fixed; top:20px; left:50%; transform:translateX(-50%); padding:16px 32px; border-radius:12px; color:#fff; font-weight:600; z-index:1000; display:none; animation:fadeIn 0.3s; }
|
||||
.toast.success { background:var(--success); }
|
||||
.toast.error { background:#ef4444; }
|
||||
.toast.info { background:var(--primary); }
|
||||
@keyframes fadeIn { from{opacity:0;transform:translateX(-50%) translateY(-10px);} to{opacity:1;transform:translateX(-50%) translateY(0);} }
|
||||
.spinner { display:inline-block; width:16px; height:16px; border:2px solid #fff; border-top-color:transparent; border-radius:50%; animation:spin 0.6s linear infinite; margin-right:8px; vertical-align:middle; }
|
||||
@keyframes spin { to{transform:rotate(360deg);} }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="card header">
|
||||
<h1>📝 课评填写表单</h1>
|
||||
<div class="meta" id="classInfo">班级:发现世界-周四19点 | 第11周 | 2026-05-16</div>
|
||||
<div class="progress">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-text" id="progressText">0/5 完成</div>
|
||||
<div class="progress-track"><div class="progress-fill" id="progressFill" style="width:0%"></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card course-card">
|
||||
<div class="course-title" id="courseTitle">📚 课程目标:DISC-011 蜥蜴</div>
|
||||
<div class="course-details" id="courseDetails">
|
||||
核心知识点:关节连接、可动结构、仿生设计<br>
|
||||
课时长度:60分钟
|
||||
</div>
|
||||
</div>
|
||||
<div id="studentsList"></div>
|
||||
<div class="add-student" id="addStudentBtn">+ 添加临时学生(补课/体验)</div>
|
||||
<div class="actions">
|
||||
<button class="btn btn-primary" id="submitBtn">🚀 提交并保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="toast" id="toast"></div>
|
||||
<script>
|
||||
const SERVER_URL = window.location.origin;
|
||||
|
||||
const templateStudents = [{name:"梁家铭", status:"出勤", performance:""},{name:"简思瑜", status:"出勤", performance:""},{name:"简思霖", status:"请假", performance:""},{name:"罗钧龄", status:"出勤", performance:""},{name:"黄晓瑜", status:"出勤", performance:""},{name:"黄馨宸", status:"请假", performance:""}];
|
||||
|
||||
let students = [...templateStudents];
|
||||
let currentClass = "发现世界-周四19点";
|
||||
let currentWeek = 11;
|
||||
let currentDate = "2026-05-16";
|
||||
let courseInfo = {code:"DISC-011", title:"蜥蜴", knowledge:["关节连接","可动结构","仿生设计"], duration:"60分钟"};
|
||||
|
||||
function showToast(msg, type) {
|
||||
const t = document.getElementById("toast");
|
||||
t.textContent = msg;
|
||||
t.className = "toast " + type;
|
||||
t.style.display = "block";
|
||||
setTimeout(function(){ t.style.display = "none"; }, 3000);
|
||||
}
|
||||
|
||||
function init() {
|
||||
renderStudents();
|
||||
updateProgress();
|
||||
}
|
||||
|
||||
function renderStudents() {
|
||||
var container = document.getElementById("studentsList");
|
||||
container.innerHTML = "";
|
||||
students.forEach(function(s, idx) {
|
||||
var el = document.createElement("div");
|
||||
el.className = "student";
|
||||
var profileHtml = s.profile ? '<div class="student-profile" title="' + s.profile.replace(/"/g,'"') + '">📋 ' + s.profile.substring(0,40) + '...</div>' : '';
|
||||
el.innerHTML =
|
||||
'<div class="student-header">' +
|
||||
'<div class="student-name">' + s.name + '</div>' +
|
||||
profileHtml +
|
||||
'<div class="status-buttons">' +
|
||||
'<button class="status-btn' + (s.status=='出勤'?' active':'') + '" data-status="出勤" data-idx="' + idx + '">出勤</button>' +
|
||||
'<button class="status-btn' + (s.status=='请假'?' active':'') + '" data-status="请假" data-idx="' + idx + '">请假</button>' +
|
||||
'<button class="status-btn' + (s.status=='补课'?' active':'') + '" data-status="补课" data-idx="' + idx + '">补课</button>' +
|
||||
'<button class="status-btn' + (s.status=='体验'?' active':'') + '" data-status="体验" data-idx="' + idx + '">体验</button>' +
|
||||
'</div></div>' +
|
||||
'<div class="input-group">' +
|
||||
'<label>课堂表现(支持速记:gj观望、zd主动)</label>' +
|
||||
'<textarea id="perf-' + idx + '" placeholder="例如:gj5观望5分钟→zd3主动搭3层→zt自己调整,开心↑">' + (s.performance||'') + '</textarea>' +
|
||||
'<div class="symbols">' +
|
||||
'<span>💡 gj#=观望#分钟</span><span>💡 zd#=主动搭#层</span><span>💡 zt=自己调整</span>' +
|
||||
'<span>💡 ↑=开心</span><span>💡 →=稳定</span><span>💡 ++=进步</span>' +
|
||||
'</div></div>';
|
||||
container.appendChild(el);
|
||||
});
|
||||
|
||||
document.querySelectorAll(".status-btn").forEach(function(b) {
|
||||
b.addEventListener("click", function(e) {
|
||||
var idx = parseInt(b.dataset.idx);
|
||||
students[idx].status = b.dataset.status;
|
||||
renderStudents();
|
||||
updateProgress();
|
||||
});
|
||||
});
|
||||
|
||||
document.querySelectorAll(".input-group textarea").forEach(function(t) {
|
||||
t.addEventListener("input", function(e) {
|
||||
var idx = parseInt(t.id.replace("perf-",""));
|
||||
students[idx].performance = t.value;
|
||||
updateProgress();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function updateProgress() {
|
||||
var done = students.filter(function(x) {
|
||||
return x.status !== '出勤' || (x.performance && x.performance.trim());
|
||||
}).length;
|
||||
var total = students.length;
|
||||
var pct = Math.round((done/total)*100);
|
||||
document.getElementById("progressText").textContent = done + '/' + total + ' 完成';
|
||||
document.getElementById("progressFill").style.width = pct + '%';
|
||||
}
|
||||
|
||||
function addStudent() {
|
||||
students.push({name:"新学生", status:"体验", performance:"", profile:""});
|
||||
renderStudents();
|
||||
updateProgress();
|
||||
}
|
||||
|
||||
function submitForm() {
|
||||
var btn = document.getElementById("submitBtn");
|
||||
var origText = btn.textContent;
|
||||
|
||||
// 检查出勤学生是否都填了表现
|
||||
var unfilled = students.filter(function(s) {
|
||||
return s.status === '出勤' && (!s.performance || !s.performance.trim());
|
||||
});
|
||||
if (unfilled.length > 0) {
|
||||
var names = unfilled.map(function(s){ return s.name; }).join('、');
|
||||
showToast('⚠️ 出勤学生 ' + names + ' 还未填写表现', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
// 按钮loading状态
|
||||
btn.disabled = true;
|
||||
btn.innerHTML = '<span class="spinner"></span>提交中...';
|
||||
|
||||
var payload = {
|
||||
class: currentClass,
|
||||
week: currentWeek,
|
||||
date: currentDate,
|
||||
course: courseInfo,
|
||||
students: students.map(function(s) {
|
||||
return {
|
||||
name: s.name,
|
||||
status: s.status,
|
||||
performance: s.performance || ''
|
||||
};
|
||||
})
|
||||
};
|
||||
|
||||
fetch(SERVER_URL + '/api/submit', {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify(payload)
|
||||
})
|
||||
.then(function(r) { return r.json(); })
|
||||
.then(function(data) {
|
||||
if (data.success) {
|
||||
showToast('✅ 提交成功!' + data.message, 'success');
|
||||
btn.innerHTML = '✅ 已保存 — 可关闭此页面';
|
||||
btn.className = 'btn btn-success';
|
||||
} else {
|
||||
showToast('❌ 提交失败:' + data.message, 'error');
|
||||
btn.disabled = false;
|
||||
btn.textContent = origText;
|
||||
}
|
||||
})
|
||||
.catch(function(err) {
|
||||
showToast('❌ 网络错误:无法连接服务器,请确认服务器已启动', 'error');
|
||||
btn.disabled = false;
|
||||
btn.textContent = origText;
|
||||
});
|
||||
}
|
||||
|
||||
document.getElementById("addStudentBtn").addEventListener("click", addStudent);
|
||||
document.getElementById("submitBtn").addEventListener("click", submitForm);
|
||||
init();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
34
.claude/skills/keping-simplified/config.json
Normal file
34
.claude/skills/keping-simplified/config.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "keping-simplified",
|
||||
"skill_name": "keping-simplified",
|
||||
"version": "5.0.0",
|
||||
"description": "超级简化版课评生成器!只需输入 \"/课评\" 即可启动,一键生成,自动保存。支持周数选择、班级选择、学生状态选择、速记输入、进度条显示。为穹狼乐高编程设计。",
|
||||
"triggers": [
|
||||
"/课评",
|
||||
"/keping-simple",
|
||||
"/简单课评",
|
||||
"生成课评",
|
||||
"写课评"
|
||||
],
|
||||
"semester_config": {
|
||||
"baseline_date": "2026-03-02",
|
||||
"week_calculation": "Floor((current_date - 2026-03-02) / 7) + 1",
|
||||
"total_weeks": 20,
|
||||
"current_week": 11,
|
||||
"current_date": "2026-05-17"
|
||||
},
|
||||
"class_types": {
|
||||
"DISC": { "prefix": "DISC", "age_group": "preschool", "style": "warm" },
|
||||
"CREATE": { "prefix": "CREATE", "age_group": "preschool", "style": "warm" },
|
||||
"INVENT": { "prefix": "INVENT", "age_group": "preschool", "style": "warm" },
|
||||
"TUBE": { "prefix": "TUBE", "age_group": "preschool", "style": "warm" },
|
||||
"SPIKE": { "prefix": "SPIKE", "age_group": "elementary", "style": "concise" },
|
||||
"AICODE03": { "prefix": "AICODE03", "age_group": "elementary", "style": "technical" },
|
||||
"CSP": { "prefix": "CSP", "age_group": "elementary", "style": "technical" }
|
||||
},
|
||||
"paths": {
|
||||
"class_root": ".claude/memory/class",
|
||||
"lesson_root": ".claude/memory/lesson",
|
||||
"template": ".claude/skills/keping-simplified/assets/form_template.html"
|
||||
}
|
||||
}
|
||||
285
.claude/skills/keping-simplified/references/generation_rules.md
Normal file
285
.claude/skills/keping-simplified/references/generation_rules.md
Normal file
@@ -0,0 +1,285 @@
|
||||
# keping-simplified — 生成规则详解
|
||||
|
||||
## 1️⃣ 启动流程规则
|
||||
|
||||
### 第一步:响应 /课评 命令
|
||||
|
||||
当用户输入 `/课评`,立即启动简化流程。**跳过任何其他判断**。
|
||||
|
||||
```python
|
||||
用户输入:/课评
|
||||
→ 执行:启动简化流程
|
||||
→ 目标:一周数+日期选择界面
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2️⃣ 周数与日期计算规则
|
||||
|
||||
### 基准设置
|
||||
- **学期开学日**:2026-03-02(第1周周一)
|
||||
- **当前日期**:自动获取今天的日期
|
||||
- **周数计算公式**:
|
||||
```
|
||||
周数 = Floor((当前日期 - 2026-03-02) / 7) + 1
|
||||
```
|
||||
|
||||
### 日期选择界面示例
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
📅 第11周 | 选择日期
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
当前日期:2026-05-16
|
||||
|
||||
请选择周几:
|
||||
[1] 周一
|
||||
[2] 周二
|
||||
[3] 周三
|
||||
[4] 周四
|
||||
[5] 周五
|
||||
[6] 周六
|
||||
[7] 周日
|
||||
|
||||
[其他日期] 手动输入 YYYY-MM-DD
|
||||
```
|
||||
|
||||
### 用户选择后
|
||||
- 根据周几推算具体日期(基于当前周)
|
||||
- 进入班级选择
|
||||
|
||||
---
|
||||
|
||||
## 3️⃣ 班级选择规则
|
||||
|
||||
### 读取班级列表
|
||||
1. 扫描 `.claude/memory/class/` 目录
|
||||
2. 列出所有班级文件夹名称
|
||||
3. 按字母/时间排序显示
|
||||
|
||||
### 界面示例
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🎯 选择班级 | 第11周 · 2026-05-16
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
可选班级:
|
||||
[1] 发现世界-周四19点
|
||||
[2] Wedo创造世界-周六1030
|
||||
[3] AICODE03小Q周六1400
|
||||
[4] SPIKE02-周日1030
|
||||
[5] 手动输入班级名称
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4️⃣ 课程目标加载规则
|
||||
|
||||
### 策略 A:找到课程教案(优先)
|
||||
|
||||
按顺序查找:
|
||||
1. 班级目录下是否有历史课程记录
|
||||
2. memory/lesson/ 目录下查找第X周课程
|
||||
3. 基于班级类型匹配课程编号
|
||||
|
||||
**匹配成功后显示:**
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
📚 课程目标确认
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
课程代码:DISC-011
|
||||
课程主题:蜥蜴
|
||||
核心知识点:关节连接、可动结构、仿生设计
|
||||
课时长度:60分钟
|
||||
|
||||
[1] 确认使用这个
|
||||
[2] 修改课程目标
|
||||
```
|
||||
|
||||
### 策略 B:没找到课程教案(降级)
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
⚠️ 未找到课程教案,请手动输入
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
请填写本周课程目标:
|
||||
课程主题:
|
||||
核心知识点:
|
||||
[1] 跳过,用通用模板
|
||||
[2] 保存为常用课程
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5️⃣ HTML 表单启动规则
|
||||
|
||||
### 创建并打开表单
|
||||
|
||||
1. 复制模板 `assets/form_template.html`
|
||||
2. 替换占位符:
|
||||
- `CLASS_NAME` → 班级名
|
||||
- `WEEK_NUM` → 周数
|
||||
- `DATE_STR` → 日期
|
||||
- `COURSE_CODE` → 课程代码
|
||||
- `COURSE_TITLE` → 课程主题
|
||||
- `STUDENTS_LIST` → 学生JSON
|
||||
3. 保存为临时文件(例如 `temp_form_YYYYMMDD_HHMMSS.html`)
|
||||
4. 自动在浏览器打开
|
||||
|
||||
### 学生列表加载
|
||||
|
||||
从班级目录读取:
|
||||
- `.claude/memory/class/{班级}/` 下的子文件夹
|
||||
- 每个子文件夹是一个学生
|
||||
- 读取 `profile.md` 获取小名/昵称(如果有)
|
||||
|
||||
```json
|
||||
{
|
||||
"students": [
|
||||
{ "name": "梁家铭", "nickname": null },
|
||||
{ "name": "简思瑜", "nickname": "小鱼" },
|
||||
...
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6️⃣ 速记符号解析规则
|
||||
|
||||
### 速记对照表
|
||||
|
||||
| 速记 | 解析为中文描述 |
|
||||
|------|--------------|
|
||||
| `gj#` | 观望#分钟 |
|
||||
| `zd#` | 主动搭#层 |
|
||||
| `zt` | 自己调整 |
|
||||
| `wb` | 完成 |
|
||||
| `zx#` | 专注#分钟 |
|
||||
| `sb#` | 失败#次后调整 |
|
||||
| `ts#` | 探索#分钟 |
|
||||
| `cz#` | 创造#种方案 |
|
||||
| `wt#` | 提问#次 |
|
||||
| `hz` | 合作 |
|
||||
| `fx` | 分享 |
|
||||
| `tq` | 求助 |
|
||||
| `mr` | 融入 |
|
||||
| `ms` | 模仿 |
|
||||
| `jy` | 建议给同伴 |
|
||||
| `bd` | 被带动 |
|
||||
| `zl` | 孤立/独自 |
|
||||
| `cq` | 冲突/争执 |
|
||||
| `↑` or `kx` | 开心 |
|
||||
| `→` or `wd` | 稳定 |
|
||||
| `↓` or `fd` | 烦躁/低落 |
|
||||
| `~` or `bd` | 情绪波动 |
|
||||
| `↑↑` or `kc` | 非常开心/兴奋 |
|
||||
| `→→` or `wa` | 非常稳定/沉浸 |
|
||||
| `gd` | 孤独/独自玩 |
|
||||
| `jl` | 焦虑/紧张 |
|
||||
| `++` | 比上周进步 |
|
||||
| `--` | 需关注 |
|
||||
|
||||
### 解析示例
|
||||
|
||||
```
|
||||
输入:gj5→zd3→zt ↑++
|
||||
解析:观望5分钟后主动搭3层,自己调整,开心,比上周进步
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7️⃣ 课评生成规则
|
||||
|
||||
### 三段式结构(固定不变)
|
||||
|
||||
**第1段(课程知识点,30-55字):**
|
||||
- 包含:主题、1-2个核心知识点
|
||||
- 末尾1个emoji:🔍 💡 ⚙️(根据类型)
|
||||
|
||||
**第2段(课堂细节,100-220字,弹性):**
|
||||
- 整合:掌握程度+环节表现+成长亮点
|
||||
- emoji:1-3个,自然分散插入
|
||||
|
||||
**第3段(课后建议,30-55字):**
|
||||
- 具体可操作的家庭活动
|
||||
- 末尾1个emoji:🏠 🔧
|
||||
|
||||
### 字数弹性规则
|
||||
|
||||
| 输入丰富度 | 目标字数范围 |
|
||||
|----------|-----------|
|
||||
| 很简洁(只有1-2个速记)| 180-220 |
|
||||
| 中等(3-5个速记)| 220-280 |
|
||||
| 详细(5个以上+情绪+对比)| 280-350 |
|
||||
|
||||
### 称呼规则
|
||||
|
||||
1. 优先用小名/昵称(从 `profile.md` 读取)
|
||||
2. 其次用去姓称名(双字名 → 去掉姓)
|
||||
3. 单字名 → 叠字化
|
||||
|
||||
### Emoji 分配
|
||||
|
||||
| 位置 | 表情库 |
|
||||
|------|-------|
|
||||
| 第1段末尾 | 🔍 💡 ⚙️ |
|
||||
| 第2段亮点处 | 💪 ✨ 📈 🎯 🤝 😊 |
|
||||
| 第3段末尾 | 🏠 🔧 |
|
||||
|
||||
---
|
||||
|
||||
## 8️⃣ 保存规则
|
||||
|
||||
### 文件路径标准
|
||||
|
||||
```
|
||||
.claude/memory/class/{班级名称}/
|
||||
├── summaries/
|
||||
│ └── YYYYMMDD_{课程代码}_{班级反馈}.md
|
||||
├── {学生姓名}/
|
||||
│ └── feedback/
|
||||
│ └── YYYYMMDD_{课程代码}_{课次}.md
|
||||
└──补课/{学生姓名}/
|
||||
└── feedback/
|
||||
└── YYYYMMDD_{课程代码}.md
|
||||
```
|
||||
|
||||
### 学生类型-保存路径映射
|
||||
|
||||
| 学生状态 | 保存位置 |
|
||||
|---------|--------|
|
||||
| 出勤 | {班级}/{学生}/feedback/ |
|
||||
| 请假 | {班级}/{学生}/feedback/(带 `(请假)` 标记)|
|
||||
| 补课 | {班级}/补课/{学生}/feedback/ |
|
||||
| 体验 | {班级}/补课/{学生}/feedback/ |
|
||||
|
||||
### 自动保存时机
|
||||
|
||||
课评生成完成后立即保存,无需教师确认。
|
||||
|
||||
---
|
||||
|
||||
## 9️⃣ 请假/补课/体验处理
|
||||
|
||||
### 请假
|
||||
- 生成:请假记录文件
|
||||
- 路径:`feedback/YYYYMMDD_{课程编号}(请假).md`
|
||||
- 内容:简洁说明请假
|
||||
|
||||
### 补课
|
||||
- 路径:`补课/{学生}/feedback/YYYYMMDD_{课程编号}.md`
|
||||
- 课评正文:不提及"补课"二字
|
||||
- 文件名:可标记来源
|
||||
|
||||
### 体验
|
||||
- 路径:`补课/{学生}/feedback/YYYYMMDD_{课程编号}.md`
|
||||
- 课评:正常写(不提"体验")
|
||||
|
||||
---
|
||||
|
||||
*最后更新:2026-05-16*
|
||||
67
.claude/skills/keping-simplified/快速参考卡.md
Normal file
67
.claude/skills/keping-simplified/快速参考卡.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 🚀 keping-simplified — 快速参考卡
|
||||
|
||||
## 💡 如何启动(只需一个命令!)
|
||||
```
|
||||
输入:/周六(或 /课评)
|
||||
```
|
||||
|
||||
## 📋 完整流程(v5.0 直连提交版)
|
||||
```
|
||||
1️⃣ /周六
|
||||
↓
|
||||
2️⃣ 选择班级(已显示当周课程主题)
|
||||
↓
|
||||
3️⃣ 打开浏览器表单 → 填写学生表现 → 点击「提交并保存」
|
||||
↓ (数据 POST 到本地服务器,无需复制粘贴!)
|
||||
4️⃣ AI 自动检测信号文件 → 生成课评 → 双轨保存
|
||||
↓
|
||||
5️⃣ 完成!🗑️ 自动清理临时文件
|
||||
```
|
||||
|
||||
## ⌨️ 速记符号(最常用的)
|
||||
| 速记 | 含义 |
|
||||
|------|------|
|
||||
| gj# | 观望#分钟 |
|
||||
| zd# | 主动搭#层 |
|
||||
| zt | 自己调整 |
|
||||
| ↑ | 开心 |
|
||||
| → | 稳定 |
|
||||
| ++ | 比上周进步 |
|
||||
|
||||
## 📂 保存路径(自动)
|
||||
```
|
||||
.claude/memory/class/{班级}/
|
||||
├── summaries/
|
||||
│ └── YYYYMMDD_{课程}_班级反馈.md
|
||||
├── {学生}/
|
||||
│ └── feedback/
|
||||
│ └── YYYYMMDD_{课程}.md
|
||||
└──补课/{学生}/
|
||||
└── feedback/
|
||||
└── YYYYMMDD_{课程}.md
|
||||
```
|
||||
|
||||
## ⚙️ 四段式结构(输出固定)
|
||||
| 段落 | 内容 | 字数 | Emoji |
|
||||
|------|------|------|------|
|
||||
| 1️⃣ | 课程知识点 | 30-55 | 1个末尾 |
|
||||
| 2️⃣ | 掌握程度与操作细节 | 80-150 | 1-2个分散插入 |
|
||||
| 3️⃣ | 课堂亮点与成长 | 60-120 | 1-2个分散插入 |
|
||||
| 4️⃣ | 课后建议 | 30-55 | 1个末尾 |
|
||||
|
||||
**总字数**:标准版 220-300字,详细版 300-400字
|
||||
**总Emoji数**:3-5个
|
||||
|
||||
## 🎨 Emoji 使用规范
|
||||
|
||||
**总数量**:每篇课评使用 **3-5个** Emoji
|
||||
|
||||
| 位置 | 数量 | 用途 | 推荐表情 |
|
||||
|------|:----:|------|----------|
|
||||
| 第1段(知识点) | 1个 | 段尾点缀 | 🔍 💡 ⚙️ 🎯 |
|
||||
| 第2段(掌握与操作) | 1-2个 | 分散插入 | 💪 ✨ 📈 🤝 |
|
||||
| 第3段(亮点与成长) | 1-2个 | 分散插入 | 😊 🌟 💫 🎉 |
|
||||
| 第4段(建议) | 1个 | 段尾点缀 | 🏠 🔧 📚 |
|
||||
|
||||
---
|
||||
*版本:v5.0 | 最后更新:2026-05-22*
|
||||
Reference in New Issue
Block a user