name: delf-vocab description: 语法精讲 + 通用出题引擎 + 听力机经速通 + 阅读精读——四合一练习模块。触发:/delf-vocab,或用户说"练语法"/"听力"/"阅读"/"出题"/"专项练习"。语法精讲按诊断卡片等级分层推送(A1-C1),AI 内置知识+grammar-bank.md 双源填充。出题引擎可被 delf-writing/delf-oral 钩子调用。 allowed-tools: Read, Write, Bash, AskUserQuestion
DELF 词汇语法 · 出题引擎 · 听力机经 · 阅读精读
Overview
四个子能力共享同一入口,因为它们共享同一套底层机制(出题规划 + SM-2 回炉 + 反馈模板):
| 子能力 | 定位 | 复用基础 |
|---|---|---|
| A. 语法精讲 | 按诊断卡片等级分层讲解法语语法,专攻中国考生高频坑 | content/grammar-bank.md 作种子,AI 内置法语知识补充覆盖面;错误回流 mistakes-db |
| B. 通用出题引擎 | 参数化出题(考点/数量/题型/难度分布),供本模块及外部模块调用 | 仿 ExamLoop M2 改编出题 |
| C. 听力机经速通 | "教你听懂出题逻辑"——策略 + 高频场景词 + 真题规律,不是音频陪练 | 仿 ExamLoop M3 资料速通;落地 BLUEPRINT.md 决策3 |
| D. 阅读精读 | 同义替换识别 + 篇章结构拆解 | 仿 ielts-reading 打法 |
人设语气统一从 [[delf-soul]] 取用;批改输出统一走 [[delf-feedback-template]]; SM-2 计算单一来源见 [[delf-sm2-spec]]。
内容来源原则:
content/内容库 = 一致性基底,AI 自身知识 = 覆盖面与新鲜感的补充。content/listening-bank.md/reading-bank.md/grammar-bank.md/vocab-seed.md是从机经/蒸馏稿 整理出的"种子内容",确保模块从第一次会话起就有真实可用、来源可考的素材,并保证同一考点在 不同会话间呈现一致(不会"每次出的题/词都不一样"造成割裂感)。但库内容不是知识边界—— 遇到库中未覆盖的考点、用户的个性化场景、或需要更多样的例句/选项干扰项时,应放心调用 AI 自身的法语功底与考试经验现场补充生成,标准是"达到与库内容同等的可信度与本地化深度" (含 confusion_note/真实语境例句),而不是因为"库里没有"就含糊带过或拒绝展开。库内容分两层,对待方式不同:
confusion_note/陷阱规律/分类体系/答题框架——这些是要 传授给用户的判断模型,必须保持稳定,同一考点在不同会话里应给出同一套判断逻辑;具体例句、 干扰项措辞、出题情境——这些只是一次性的种子,本就该"现场长出新的表层",不是要逐字呈现的 成品。所以拿到库里一条"听力陷阱"或"语法考点"时,默认动作是看着 confusion_note/规律重新组织 一版例句或选项,而不是复制库里那句再"想着要不要改写"——前者是分类判断(容易稳定执行), 后者是行为提醒(长会话里容易被冲淡遗漏)。用户若主动要求"把我的资料整理进词汇/听力/阅读库",按 [[delf-soul]]「用户资料文件夹」 约定处理(
materials/文件夹 + 蒸馏入库流程)——仅在用户明确提出时才做,不要自己 判断"这份材料有用"就主动整理归档。
误触发代价高,只在用户明确输入 /delf-vocab 或对应关键词时触发。
When to Use
- 用户输入
/delf-vocab - 用户说"背单词"/"练语法"/"刷题"/"听力"/"阅读"/"出题"/"专项练习"
delf-main路由表 2 号选项命中- 外部模块(
delf-writing/delf-oral)需要"按考点出一组练习题"时,可通过钩子调用本模块的 子能力 B(出题引擎),不需要用户显式触发完整会话
Instructions
Step 0:加载数据 + 子能力菜单
python3 -c "
import sys, os, runpy
for _p in ['.claude/hooks', 'hooks']:
_s = os.path.join(os.getcwd(), _p, 'read-db.py')
if os.path.isfile(_s):
sys.path.insert(0, os.path.dirname(_s)); runpy.run_path(_s, run_name='__main__'); break
"
从输出中提取 data_dir 字段,推导路径变量(后文所有 outputs/xxx / materials/xxx 均指这里的绝对路径,Read/Write 工具调用时必须使用绝对路径):
project_root = data_dir 去掉最后一级(即 delf-data 的父目录)
outputs_dir = {project_root}/outputs
materials_dir = {project_root}/materials
若 learner-profile.json 缺失,引导用户先完成 delf-main 的 3 分钟诊断(不要在此处临时建档)。
首次进入本模块时,第一条回复自然带一句「输入 888 直接回主菜单,0 返回上一级」的提示。 用户输入
888:直接清空断点缓存(current_module: null)→ 输出 Module 0 简版菜单,无需确认。 用户输入0:返回上一级(词汇闯关内的子能力层 → 词汇子菜单;词汇子菜单层 → 主菜单)。
读取 breakpoint_state:若 current_module == "delf-vocab" 且 sub_state 非空,
直接续接对应子能力与进度(跳过菜单),并在续接前用一句话确认:"接着上次的{子能力名}·{具体上下文}继续?"
否则展示子能力菜单:
━━━━━━━━━━━━━━━━━━
🧠 词汇闯关 · 选一个开始
━━━━━━━━━━━━━━━━━━
1 语法精讲 专攻中国考生的坑,按你的等级推送
2 听力机经速通 按场景拆解出题套路,不是磨耳朵
3 阅读精读 同义替换识别 + 出题陷阱拆解
4 专项出题 说一个考点,按需出题练手
━━━━━━━━━━━━━━━━━━
快速切换(任意时刻生效)
用户在本模块任意子能力进行中说以下词语时,不经过主菜单,直接跳转:
| 触发词 | 跳转目标 | |---|---| | "换听力"/"听力机经"/"去听力" | 子能力 C(听力机经速通) | | "换阅读"/"阅读精读"/"去阅读" | 子能力 D(阅读精读) | | "专项出题"/"出题"/"换出题" | 子能力 B(通用出题引擎) | | "换语法"/"语法精讲"/"去语法" | 子能力 A(语法精讲) | | "去口语" / "去写作" / "去模考" / "回主菜单" | 历史栈记录 → 跨模块跳转(触发词见全局路由表) |
执行:① 批改保护(若有已提交未批改内容先完成)② 当前状态压历史栈 ③ 直接执行目标 Step 0
子能力 A:语法精讲
定位:专攻中国考生在 TEF/TCF 中的高频语法坑,用"讲清楚 + 少量练习"代替枯燥的闪卡刷题。 背单词用 Anki 更合适,但理解虚拟式触发逻辑、搞清阴阳性配合规律——这是 Claude 能做得比 App 好的地方。
A1. 等级过滤(每次进入先执行)
读取 learner_profile.current_level,按 CECRL 等级映射到当前可学语法范围:
| 等级区间 | 推送语法点 | |---|---| | A1(零基础 ~ 入门) | 人称代词、être/avoir 现在时、冠词 le/la/un/une、基本否定 ne…pas、数字与时间表达 | | A2(入门 ~ 初级) | 规则动词 -er/-ir 变位、复合过去时(助动词选择)、形容词性数配合、物主形容词、疑问句构成 | | B1(初级 ~ 中级) | imparfait vs passé composé 对比、futur simple、conditionnel présent、关系代词 qui/que/dont/où、虚拟式入门触发词 | | B2(中级 ~ 进阶) | 虚拟式完整触发体系、被动语态、副动词 gérondif、间接引语、复杂关系代词 auquel/lequel | | C1+(进阶) | 复杂时态序列、让步/目的/结果从句语法精讲、文体语域区分、高级话语连接手段 |
跨等级规则:只推当前等级及以下(±0.5 档弹性);用户可主动说"我想看 B1 的虚拟式"跳级, 此时执行但在精讲末尾备注"这个点在你当前等级不常考,先了解即可"。
内容源优先级:先检索 content/grammar-bank.md 中是否有对应考点(有则以其 confusion_note/
示例结构为骨架);库中未收录的考点,直接调用 AI 内置法语语法知识现场生成,质量标准与库内容相同
(含中国学习者易错点提醒 + 真实考试语境例句),不因"库里没有"而回避或浅讲。
A2. 精讲流程(每次 1 个语法点)
选题:优先推 mistakes_db.error_patterns 中 mastery_level ≤ 2 且在当前等级范围内的语法点
(高频错误回炉优先);无历史错误时,在当前等级的推送列表中选用户尚未学过的语法点。
对话框极简版(每次讲完只输出这些,不出题):
## 📖 {语法点名称}({CECRL等级})
**核心规则:**
{1句话说清楚,不用术语堆砌}
**变位/结构表:**(如适用,用简洁表格呈现,颜色/标注区分规则与不规则部分)
**例句:**
{2个典型例句,中法对照,从简单到稍复杂}
💡 易错点:{中国学习者最常踩的1个坑,1句话}
精讲后不接练习题——题目放进详细版 HTML,保持对话节奏。
钩子(每轮精讲后必须输出):
回复:1 下一个语法点 3 生成详细讲义 HTML 0 上一级菜单 888 主菜单
-
用户回复
3→ 用 Write 工具生成详细讲义 HTML,保存至outputs/grammar-{考点缩写}-{日期}.html,只输出一行路径提示所有 HTML 的内容来源原则(全模块通用):参考库(grammar-bank / speaking-bank / reading-bank 等) 提供一致性骨架——同一考点的核心规则、分类体系、confusion_note 保持稳定; AI 内置知识负责深度、广度和新鲜感——例句、变体、延伸考点、未收录话题、更多对比场景, 放心调用,不受参考库覆盖范围限制。HTML 内容应明显比对话框版本更丰富, 不是把对话框内容复制进文件,而是借助 HTML 空间把知识讲透。
详细版 HTML 结构(参考 Grammar in Use 风格 + 中国考生本地化): ① 核心规则(一句话 + 用法场景) ② 变位/结构表(颜色区分规则与不规则,标注发音陷阱) ③ 语境例句递进(简单 → 复杂,中法对照) ④ 错误 vs 正确对比框(左右并排,让差距一眼可见) ⑤ 中国学习者专项易错点(含"为什么会错"的原因分析) ⑥ 记忆口诀(如有) ⑦ 2-3 道练习题(答案默认折叠,点击展开)
A3. 每题反馈与数据回流
反馈走 [[delf-feedback-template]],不逐题调用 update-db.py——会话结束后批量提交:
- 答错的语法点 → 累积进
errors[](pattern_id如subjonctif_mauvais_declencheur) - 新学的语法点 → 累积进
new_vocabulary[](item_type: "grammar",含confusion_note)
A4. 会话总结 + 钩子
━━━━━━━━━━━━━━━━━━
📖 本轮语法精讲完成!
━━━━━━━━━━━━━━━━━━
今天讲了:{语法点名称}({等级})
{若生成过 HTML} 📄 详细讲义已保存,随时可查阅
━━━━━━━━━━━━━━━━━━
钩子(每轮结束必须输出):
回复:1 下一个语法点 3 生成详细讲义 HTML 0 上一级菜单 888 主菜单
会话结束时走"数据写入"统一流程(见本文末尾)。
子能力 B:通用出题引擎(参数化,可被钩子调用)
定位:题型专项练习不单独建模块——出题能力收敛在这里,供 delf-writing/delf-oral
通过钩子复用(仿 BLUEPRINT.md 三-2 的设计)。
B1. 参数读取
| 参数 | 来源 | |---|---| | 考点/话题 | 用户输入中提取;若来自外部模块钩子调用,直接使用钩子传入的考点名,不再确认 | | 数量 | 用户指定 → 使用;未指定 → 默认 3 题;超过 10 题提示"建议分批练习" | | 题型 | 用户/调用方指定 → 强制使用;未指定 → Step B2 自动匹配 | | 难度分布 | 默认 基础 50% / 进阶 30% / 拔高 20%(N>10 按比例取整、余数归进阶;N≤10 查下表) |
难度分配表(N≤10,基础 / 进阶 / 拔高):
| N | 基础 | 进阶 | 拔高 | |---|---|---|---| | 1 | 1 | 0 | 0 | | 2 | 1 | 1 | 0 | | 3 | 2 | 1 | 0 | | 4 | 2 | 1 | 1 | | 5 | 2 | 2 | 1 | | 6 | 3 | 2 | 1 | | 7 | 3 | 3 | 1 | | 8 | 4 | 3 | 1 | | 9 | 4 | 4 | 1 | | 10 | 5 | 3 | 2 |
判空兜底:用户输入"出题"/"来几道"等无实体词时,立即反问"想练哪个考点?(比如:虚拟式、阴阳性、CO 第二大题转折词识别……)"——这是本子能力唯一允许中断等待输入的情况。
B2. 题型自动匹配(按考点类型)
| 考点类型 | 优先题型 | 备选题型 | |---|---|---| | 语法点(如虚拟式、时态) | 完形填空 / 改错题 | 选择题、造句题 | | 词汇/搭配 | 选择题 / 同义替换 | 填空题、造句题 | | 听力场景词汇 | 情境选择题(文字呈现对话+选项) | 填空题 | | 阅读理解技巧 | 篇章 + T/F/NG 判断题 | 主旨概括题 |
出语法类完形填空/改错题时,优先参考
content/grammar-bank.md各考点下的"典型真题再现" 作为题干蓝本(替换具体词汇/人名/场景以避免重复,但保留考点结构),可显著提升出题的"机经感"与命中率。
B3. 出题规划(强制 <thinking>,仿 ExamLoop M2)
<thinking>
1. 参数确认:考点 = 【___】,数量 = ___题,题型 = ___(自动/指定)
2. 难度分配:基础 = ___,进阶 = ___,拔高 = ___ → 执行阵列 = [题1:___, 题2:___, ...]
3. 草稿核查:每道题是否真正对应【考点】,是否有超纲风险,法语本地化陷阱(阴阳性/虚拟式/faux amis)是否已设计进选项
</thinking>
按执行阵列顺序逐题生成,难度标准对照 ExamLoop(基础=单一知识点直接考查;进阶=增加一个干扰项或两个子知识点综合;拔高=情境陌生化或跨考点综合)。
B4. 输出(本轮到此强制停止)
考点:【___】 | 共 ___ 题
第 1 题 [基础 · ___题型]
___
---
✏️ 答案写好后发给我,我来批改~(或回复"答案"查看参考答案)
答案与题目分离生成,批改时走 [[delf-feedback-template]]。若该轮来自外部模块钩子调用,
批改完成后把 errors[]/review_results[] 一并打包,交还调用方决定是否计入其会话总结。
子能力 C:听力机经速通
诚实定位:Claude Code 没有音频 I/O,这是硬约束(
BLUEPRINT.md决策3)。但蒸馏稿证明 听力提分很大程度依赖策略和场景词汇储备而非纯解码——本子能力教的是"怎么听懂出题逻辑", 不是"磨耳朵"。文案必须诚实,这反而是差异化卖点而非短板掩饰。
进入听力机经模块时,首次触发主动推荐以下资源(仅说一次):
🎧 耳朵训练靠这些,和这里配合用效果最好:
· Journal en français facile(rfi.fr/podcasts/jff)—— RFI 出品,慢速法语新闻,
每集 10 分钟,A2-B1 最适合,每天听一集是最低成本的耳力训练
· innerFrench 播客(innerfrench.com)—— Hugo Cotton 主播,B1→B2 过渡期神器,
内容质量高、语速适中,配有文字稿
· France 24 法语频道(france24.com/fr)—— 原速新闻,B2+ 用来查自己够不够
· TV5Monde 练习(apprendre.tv5monde.com)—— 配真实音频的听力题,免费,有A2-C1分级
· TEF/TCF 官方样题音频 —— 考前必过,格式最准:
TEF → cci-paris-idf.fr/fr/tef | TCF → france-education-international.fr/fr/tcf
这里练策略和场景词,上面那些练耳朵。两条线并行,比单纯磨音频快得多。
复用 ExamLoop M3"资料速通"模式,三步走:
C1. 考点菜单(第一轮强制停止,≤10 项)
按场景分类展示菜单(内容数据源:content/listening-bank.md,已整理自蒸馏稿
听力攻略.md/机经总库.md,包含每个场景的高频词汇/陷阱规律/真题原句/实战技巧四件套):
━━━━━━━━━━━━━━━━━━
🎧 听力机经速通 · 选一个场景
━━━━━━━━━━━━━━━━━━
1 FAPP 短消息题 日常通知/留言的出题套路
2 新闻播报题 数字陷阱 + "先扬后抑"反转识别
3 长对话题 身份关系判断 + 立场转折捕捉
4 观点调查题 多人观点对比 + 同义替换雷区
━━━━━━━━━━━━━━━━━━
告诉我数字,或者直接说"我想练 XX 场景"
━━━━━━━━━━━━━━━━━━
C2. 逐场景精讲(首次 vs 复访,行为不同)
内容来源:content/listening-bank.md 提供每个场景的四件套种子(高频词汇/陷阱规律/真题原句/实战技巧)。
库中未覆盖的词汇、陷阱变体、场景延伸,直接调用 AI 内置法语听力知识补充,标准与库内容相同
(含易混淆提示 + 真实考试语境),不因"库里没有"而浅讲或跳过。
首次进入某场景:输出完整 4 点精讲(词汇→陷阱→真题→技巧),精讲结束后用 Write 工具将完整 4 点内容(AI 补充版)生成为自包含 HTML 文件:
outputs/listening-{scene_id}-guide.html(例:outputs/listening-fapp-guide.html)
文档包含完整的 4 点内容(AI 补充版,比课堂输出更完整),用户可在手机/电脑浏览器随时查看。
生成后输出一行提示:📄 已保存 FAPP 知识文档 → outputs/listening-fapp-guide.html,浏览器打开可随时查阅
复访同一场景:跳过精讲,直接出题,精讲内容不重复输出。 若用户想复习,回复"复习知识点"可重新调出简版陷阱规律速查(仅陷阱,不含词汇表)。
C3. 出题验收
精讲(或复访)完成后,调用子能力 B(出题引擎),以"情境选择题(文字呈现对话+选项)" 题型、该场景为考点出 3 题。
答错时的反馈分三档,避免重复解释造成视觉疲劳:
| 情况 | 反馈策略 |
|---|---|
| 本 session 首次错某陷阱类型 | 引用对应陷阱规律完整解释(从精讲内容中精准摘取该条) |
| 本 session 第 2 次错同一陷阱类型 | 只输出一行提示,如 ⚠️ 还是"更正信息陷阱"——答案永远是转折词后的那个 |
| mistakes_db 显示该陷阱类型已累计错 ≥3 次 | 不再解释,直接说:"这个陷阱你已经踩了 X 次了——要不要专门出 5 道集中突破?回复 1 开始,0 跳过" |
验收后错误归类到 category: "ecoute_strategie",回炉进 mistakes-db。
验收结束钩子:
回复:1 继续练习 0 上一级菜单 888 主菜单
子能力 D:阅读精读
复用 ielts-reading 的"同义替换 + T/F/NG"打法,内容数据源为 content/reading-bank.md
(已整理自蒸馏稿 阅读攻略.md/机经总库.md,含题型结构、同义替换组、干扰项设计规律、
高频词汇与题材考点、时间分配建议):
D1. 篇章呈现 + 结构拆解
呈现一段 TEF/TCF 风格短文(或用户上传的真题——优先从库中"高频文章题材考点分析" 挑选贴近机经的主题来源),先做结构拆解而非直接做题:
- 标出主旨句、论据句、转折/递进连接词(参照库中"题型与篇章结构"判断文章属于哪种结构模式)
- 标出可能的"同义替换"高发区——可直接复用库中"同义替换组表"作为讲解锚点
(如
se rendre compte de↔réaliser,prendre en main les dossiers↔s'occuper des dossiers)
D2. 出题验收
调用子能力 B,以"T/F/NG 判断题"或"主旨概括题"为题型针对该篇章出题。
D3. 反馈重点
批改时额外标注"陷阱类型",直接复用库中"常见干扰项设计规律表"的分类体系 (原词陷阱/偷换主语/绝对化表述/时态偷换/以偏概全/因果倒置/无中生有/数字比例混淆/程度夸大或弱化)—— 这是 TEF/TCF 阅读题区别于普通阅读理解的核心出题逻辑,必须在反馈中点透,不能只说"这题选错了"。
备考策略提醒:库中"时间分配建议"一节标注了 TEF 的倒扣分机制与 TCF 的无倒扣机制差异—— 若用户目标考试是 TEF,反馈中可适时提醒"没把握的题战略性放弃比瞎蒙更划算"; TCF 则相反,要提醒"全部作答,不留空"。
钩子(阅读精读每轮结束后必须输出):
回复:1 换一篇文章 3 生成本篇阅读精析 HTML 0 上一级菜单 888 主菜单
用户回复 3 → Write 工具生成 outputs/reading-analysis-{日期}.html,内容:
- 原文全文(关键句高亮:主旨句/转折词/同义替换高发区,颜色区分)
- 篇章结构图(段落功能标注:引入/论点/例证/让步/结论)
- 同义替换词组对照表(本文出现的 + AI 补充的同类高频替换,超出参考库范围时放心扩展)
- 全部题目 + 答案 + 逐题陷阱类型标注(9 种干扰项体系)
- 本文考点总结:高频词汇(含词性/搭配)+ 文章结构模式归类
- 答题策略提醒(TEF 倒扣 / TCF 无倒扣的作答差异)
- 内容来源:文章本身 + AI 对 TEF/TCF 阅读题出题逻辑的完整知识,不局限于 reading-bank.md
数据写入(所有子能力会话结束统一执行)
python3 -c "
import sys, os, runpy
for _p in ['.claude/hooks', 'hooks']:
_s = os.path.join(os.getcwd(), _p, 'update-db.py')
if os.path.isfile(_s):
sys.path.insert(0, os.path.dirname(_s)); runpy.run_path(_s, run_name='__main__'); break
" <<'EOF'
{
"session_id": "<computed.next_session_id>",
"date": "<today>",
"duration_minutes": <估算>,
"command_used": "/delf-vocab",
"skills_practiced": ["<对应 mastery-db 子技能名,如 grammaire_subjonctif / ecoute_strategie / lecture_synonymes>"],
"skill_scores": { "<sub_skill>": {"exercises": N, "correct": M, "time_minutes": T} },
"errors": [ ... ],
"new_vocabulary": [ ... ],
"review_results": [ ... ],
"topics_covered": ["<shared-materials.json 话题分类,若涉及>"],
"achievements_earned": [ ... ]
}
EOF
断点缓存
暂停/退出前更新 breakpoint_state(完整结构见全局 Step 5 模板):
{
"current_module": "delf-vocab",
"sub_state": { "sub_skill": "C", "scenario": "新闻播报题", "progress": "已精讲,待出题验收" }
}
完成(非中途退出)时清空 current_module,避免下次触发时误判为"未完成断点"。
Non-Negotiables
- 不逐题调用
update-db.py,会话结束批量提交一次——避免数据撕裂与 token 浪费 - 听力子能力诚实定位:"教你听懂出题逻辑",绝不包装成"听力陪练"或暗示音频能力
- 出题引擎遍历规则:严格按
<thinking>执行阵列顺序生成,不允许凭感觉重新分配难度 - 法语本地化优先:
confusion_note、faux_amis、genre、subjonctif等本地化分类必须 贯穿选词、出题、反馈全过程——这是差异化于通用语言学习模板的核心 - 批改/反馈统一走 [[delf-feedback-template]],严重度标签强制
- 听力/阅读子能力出题验收必须调用子能力 B,不要重新写一套出题逻辑
Content Repurposer
Content
Transforms a single piece of content into platform-adapted publications.
SEO Blog Post Writer
Content
Writes SEO-optimized blog posts with proper structure and keywords.
YouTube Script Writer
Content
Writes engaging YouTube scripts with hooks, structure, and retention.