备考练习技能(Exam Practice Coach)
这个技能解决什么
把「一个学习单元」端到端变成可交付的备考练习,并形成闭环:
生成练习页 → 手机整卷作答 → 交卷零操作上报成绩 → 读取云端批改 → 错题只重做+变式 → 知识卡留存 → 每 6 天交叉复习 → 漏做自动补做
三个不变量:用户零打字、错题不整卷重做、发布后必须实测。
何时使用
- 要「出几道题 / 做练习页 / 生成诊断包 / 今天学什么」
- 要「批改 / 看错题 / 出变式题 / 安排复习」
- 要「把知识点做成卡片 / 速记卡 / 考点卡」
- 要「发布到手机 / 给个做题链接 / 同步到线上」
- 「昨天漏做了 / 补一下」
铁律(违反即返工)
- 整卷交卷,不逐题提交。作答只记录,交卷统一判分;交卷前可任意改;解析显示「你的答案 / 正确答案」。
- 只重做错题 + 变式扩展,禁止整卷重做。页面提供「只重做这 N 道错题」,隐藏答对题。
- 用户零打字。首选云端自动上报;兜底才用「复制结果」一行码。禁止要求逐题罗列答案或手打成绩。
- 发布必须实测。
deploy回执不算数,须 HTTP 200 且线上字节数 + sha256 与本地一致。失败如实说明,严禁"链接保持不变"含糊带过。 - 知识卡 = PNG 落盘,直接写入用户事先指定的文件夹。不要让用户从聊天内联图下载/复制(实测残缺且粘贴失败)。
- 每条解析带源定位(
<源锚点> p<页>)。无出处不写;资料缺失如实说明,不编页码。 - 多选/不定项全对才得分;少选多选均判错。
- 漏做不假装完成。已生成但无得分 = 🕳 待补,不推进。
标准流程(0–8,共 9 段)
> references/workflow.md 是逐段展开的唯一权威版本;下表只是索引,两处不得出现不一致。
| 段 | 动作 | 验收 |
|---|---|---|
| 0 初始化(一次性) | 建 mobile/、复制模板、开通云库、建成绩表、首次发布 |
链接可访问 |
| 1 生成练习页 | 基于 page-template.html 改 QS / DAY_ID / UNIT / LSKEY / TOTAL,接 7 处上报 |
自检脚本本地全绿 |
| 2 发布与验证 | 入口页追加卡片 → 同目录 deploy → 实测 | --base 实测字节一致 |
| 3 批改 | 读成绩表 → 全对标记完成 / 有错只批错题 | 台账回填 |
| 4 错题处置 | 页面只重做错题 + 对话侧 5 道变式 + 错题本登记 | 错题本更新 |
| 5 知识卡 | make_card.py 渲染 PNG → 用户文件夹 → 识图核验 |
文字完整无叠压 |
| 6 交叉复习 | 每 6 天:全部错题+变式 + 随机抽旧题打乱顺序选项 | 新页发布+实测 |
| 7 漏做补做 | 未作答标 🕳、并入要点卡 + 2 道变式、连续 2 个转补救专项 | 台账一致 |
| 8 云端回传(可选) | 云端生成的页经 ima 回传 → 本地重建 → 发布 | 同段 2 验收 |
资源地图
exam-practice-coach/
├── SKILL.md
├── references/
│ ├── workflow.md # 0–8 段完整 SOP(唯一权威流程)
│ ├── lessons.md # 16 条教训(动手前先读)
│ ├── question-bank-schema.md # const QS 数据结构(唯一格式定义)
│ ├── ledger-and-plan.md # plan.md / 台账 / 错题本 / 作答口径
│ ├── cloud-report.md # 成绩表 DDL、RLS、cloud-config、Node 链路自测
│ └── ima-relay.md # 云端生成→ima 回传→本地发布
├── scripts/
│ ├── make_card.py # 知识卡 PNG(跨平台字体回退)
│ ├── cos_put.py # ima COS 上传
│ └── verify_practice_page.js # 自检:语法+接线+题库+TOTAL+线上字节
└── assets/
├── practice-page/
│ ├── page-template.html # 通用骨架(示例题库,改 QS 即用)
│ ├── example-mmt-page.html # 完整成品示例(7 题/9 点/含案例)
│ ├── index-template.html # 入口页模板
│ ├── cloud-config.js # 配置模板(占位,需填真实值)
│ └── report.js # 上报模块(原样复制)
└── card-spec-example.json # 知识卡 spec 样例
按需加载顺序
- 动手前先读
references/lessons.md—— 16 条已踩过的坑,能避免大部分返工。 - 改题库前读
references/question-bank-schema.md——QS的唯一格式定义。 - 走完整流程读
references/workflow.md—— 0–8 段逐步操作(唯一权威流程)。 - 建云库 / 读成绩读
references/cloud-report.md—— DDL、RLS、配置、链路自测。 - 维护计划与台账读
references/ledger-and-plan.md。 - 云端生成或回传读
references/ima-relay.md。
快速命令
SKILL=<技能目录>
ROOT=<学习工作区根>
# 1) 初始化:复制模板
mkdir -p "$ROOT/mobile" "$ROOT/tools"
cp "$SKILL/assets/practice-page/"{cloud-config.js,report.js,index-template.html} "$ROOT/mobile/"
cp "$SKILL/assets/practice-page/page-template.html" "$ROOT/mobile/dayNN.html"
cp "$SKILL/scripts/"{make_card.py,cos_put.py} "$ROOT/tools/"
# 2) 改完题库后自检(本地)
node "$SKILL/scripts/verify_practice_page.js" "$ROOT/mobile"
# 3) 发布后自检(含线上字节比对,必跑)
node "$SKILL/scripts/verify_practice_page.js" "$ROOT/mobile" \
--base https://<前缀>.app.workbuddy.host --sharecode <CODE>
# 4) 知识卡
python "$ROOT/tools/make_card.py" "<输出目录>/U4速记卡.png" "<spec.json>"
做题页必备的 7 处上报接线
模板已内置;改题时不要删。
<script src="https://cdn.jsdelivr.net/npm/@tencent-ai/workbuddy-cloud-sdk@dev/lib/index.global.js"><script src="cloud-config.js"><script src="report.js"><div id="rpt">状态条submitAll()内真实调用sendReport()saveState()带reported:!!window.__wbReportedrestore()里if(!s.reported) sendReport();
自检脚本按上述 6 个静态标记 + sendReport() 调用次数(定义 + 交卷 + 补报 ≥3)判定,防止只留函数定义却漏接交卷上报。
交付前自检清单
- [ ]
verify_practice_page.js本地全绿(语法 + 接线 + 常量 + LSKEY 唯一 + 题库/TOTAL 一致) - [ ]
deploy后--base实测每页 200 且字节/sha256 一致 - [ ] 入口页卡片只追加、旧页未删
- [ ] 台账已回填(得分、错题、下一单元)
- [ ] 知识卡已落盘用户文件夹并识图核验无叠压
与其他能力的关系
- 知识来源:优先读工作区
wiki/concepts/<slug>.md;缺页先编译知识库。 - 云端生成:走
references/ima-relay.md的混合链路。 - 定时:诊断包可用
automation_update建本地 recurring;交叉复习必须本地(需读本地错题本)。