DELF Vocabulary & Grammar

French learning module with four sub-skills: grammar, exercise generation, listening strategies, and reading analysis. Triggered by /delf-vocab.

Sby Skills Guide Bot
ContentIntermediate
007/27/2026
Claude Code
#french#vocabulary#grammar#delf#language-learning

Recommended for


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_patternsmastery_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_idsubjonctif_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 deréaliserprendre en main les dossierss'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_notefaux_amisgenresubjonctif 等本地化分类必须 贯穿选词、出题、反馈全过程——这是差异化于通用语言学习模板的核心
  • 批改/反馈统一走 [[delf-feedback-template]],严重度标签强制
  • 听力/阅读子能力出题验收必须调用子能力 B,不要重新写一套出题逻辑
Related skills