feat: 重做阅读找答案题与 AI 情境对话,并归拢本地识别、查词等既有改动

阅读"在对话里找到答案":
- 16 道题全部重写,干扰项真实出现在对话里,靠说话人归属或否定句才能作答
- 选项按题目内容确定性打乱,答案不再固定排第一;听力环节同样处理
- 去掉超纲干扰项、重复题干,收紧自由作答匹配(过去单个字母也能判对)

AI 情境对话:
- 提示词区分"AI 这一句要做什么"与"学习者随后要完成什么",并下发已教词句清单
- JSON 只强制 reply,translation/feedback 可选;不再索要用不上的 slots/evidence
- AI 不可用时页面明确提示当前回复来自内置示范脚本
- 删掉按 stage 下标猜中文翻译的兜底,避免译文与英文对不上
- 整课对话改用逐轮必需表达校验,替换"关键词沾边就算过";修正自由场景正则误伤
- 总结的"完成任务"按实际通过的轮次生成;模型点评只在结束页呈现一次
- 自由场景支持草稿续练(独立存储槽);修正回答轮数文案与永不解锁的场景标注

同时提交此前工作区中累积的改动:SenseVoice 本地识别、查词/句型解析卡、
复习与测评页调整等,并补充对话校验、选项分布和句子解析的测试。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-09-16 16:38:23 +09:00
co-authored by Claude Opus 5
parent ef2fce207a
commit 7e29c5449f
24 changed files with 2896 additions and 665 deletions
+35 -37
View File
@@ -16,6 +16,11 @@
- 本文“完成判定”是教学任务完成,不是词句掌握或阶段通过。带提示/文字可完成课程,但不算独立听说证据。出口门槛见 [A0 阶段标准](A0-STAGE-STANDARD.md),内容契约见 [开发与验收约定](M1-IMPLEMENTATION-CONTRACT.md)。
- 每段最多 8 个新增词汇项、2 个主动产出句型和 2 个理解用词块;同句型的槽位替换、缩写不重复计数。下面列的是主题总内容,不能一次全部塞入一个短课。
- 教学可看字幕/中文;独立听力先隐藏文字,查看后标记辅助。课内阅读题保留英文;正式写作评估不用课内填空替代。
- 听力题和阅读题都给三个选项,正确答案在界面上随机但稳定地排序,不能固定在第一项。阅读题必须靠对话内容才能回答:
只看说话人姓名标签或只凭常识就能猜中的题(如“谁叫 Mia?”)不合格,应改问对话里说过的句子、数字或信息。
- 阅读题至少要有两个选项在对话里真出现过,让用户必须靠“谁说的、有没有被否定”来区分;
如果只有正确答案出现在对话中,用户不读题也能挑出唯一见过的那个。干扰项一律使用已教词句,
未教过的英文(如 Goodbye./teacher/louder)不得作为选项。选项之间不能互为子串,否则判分会把两个选项当成同一个答案。
- 课程中可点英文单词或完整词块查词,优先显示当前短语的中文意思、示范音和本课例句;用户可加入复习。正式独立练习和出口评估隐藏查词入口,若需查词则改为教学练习并换题补测。
### 准备词块与分段(先教后用)
@@ -90,12 +95,12 @@
2. **词句跟读**:依次跟读 `Hello.``Im Shen.``Nice to meet you.`。每句可慢放和重录。
3. **阅读**
```text
Mia: Hello. Im Mia.
Mia: Hello. Im Mia. Whats your name?
Shen: Hi. Im Shen.
Mia: Nice to meet you.
Shen: Nice to meet you, too.
```
题目:谁叫 Mia?正确答案:第一位说话的人。
题目:Shen 说的最后一句是什么?选项为“Nice to meet you, too. / Whats your name? / Hi. Im Shen.”,正确答案:Nice to meet you, too.(三个选项都在对话里,必须分清谁说、说在哪一轮。)
4. **写一写**:填空 `Hello. Im _____.`;用户填写自己的名字。
5. **AI 对话**AI`Hi! Im Mia. Whats your name?`;用户说姓名。AI`Nice to meet you, [name].`;用户回应 `Nice to meet you, too.`
@@ -131,12 +136,12 @@
3. **跟读**:读 `S-H-E-N`,听示范并回听录音;然后拼读自己的所选姓名。识别不确定时先确认,不宣称已定位最不清晰的字母。
4. **阅读**
```text
Mia: Whats your name?
Shen: Shen.
Mia: How do you spell that?
Shen: S-H-E-N.
Mia: Im Mia. M-I-A.
Shen: Hi, Mia. Im Shen. S-H-E-N.
Mia: How do you spell Sam?
Shen: S-A-M.
```
排序题:把 `S / H / E / N` 排成正确顺序。
题目:Shen 自己的名字怎么拼写?选项为“S-H-E-N / M-I-A / S-A-M”,正确答案:S-H-E-N。三个拼写都在对话里,必须区分是谁的名字。另可加排序题:把 `S / H / E / N` 排成正确顺序。
5. **写一写**`My name is _____.` 填姓名,按实际姓名长度生成字母格,不固定三个字母。
6. **AI 对话**AI`Whats your name?` → 用户回答;AI`How do you spell that?` → 用户拼读;AI 用 `Thank you.` 收尾。
@@ -177,9 +182,9 @@
```text
Mia: Hi, Shen. How are you?
Shen: Im good, thanks. How are you?
Mia: Im okay.
Mia: Im tired today.
```
题目:Mia 状态如何?答案:okay。
题目:Mia 说自己今天怎么样?选项为“I’m tired today. / Im good, thanks. / Im okay.”,正确答案:Im tired today.(前两个选项都在对话里,必须分清是 Mia 还是 Shen 说的。)
5. **写一写**:选择一个真实状态完成 `Im ____ today.`
6. **AI 对话**AI`Hi, [name]. How are you today?`;用户回答并反问。AI 用一种状态回答。
@@ -217,10 +222,11 @@
4. **阅读**
```text
Mia: Whats your phone number?
Shen: One-three-eight.
Mia: Thank you.
Shen: My number is one-three-eight.
Mia: One-eight-three?
Shen: No. One-three-eight.
```
题目:Shen 的号码是?答案:138。
题目:Shen 的号码到底是哪一个?选项为“138 / 183 / 318”,正确答案:138。(138 和 183 都在对话里出现,必须读懂 Mia 复述错了、Shen 纠正了。C 段另用 502/520/205 一组,不与本题重复。)
5. **写一写**:将 `139` 写成英文数字(`one-three-nine`)。
6. **AI 对话**AI`Whats your phone number?`;用户用 3 位虚拟号码回答。AI 复述:`One-three-eight?`;用户说 `Yes.`
@@ -259,12 +265,10 @@
3. **跟读**`Whats this?`、`Its a pen.`、`Its my bag.`
4. **阅读**
```text
Mia: Whats this?
Shen: Its a book.
Mia: Is it your book?
Shen: Yes.
Mia: Whats this? Is it a pen?
Shen: No. Its a book.
```
题目:这是谁的书?答案:Shen 的。
题目:Shen 说那件东西是什么?选项为“A book / A pen / A phone”,正确答案:A book。(pen 也在对话里,必须读到被否定。)
5. **写一写**:先看手机图填 `It's my _____.`;再排序 `It's / a / pen`;收起句框和词库,换已教物品图片,独立写一句。笔图参考 `It's a pen.`,书图参考 `It's a book.`;需要帮助可恢复,但标记辅助完成。
6. **AI 对话**:AI 描述并出示物品图:`Whats this?`;用户回答。连续 3 个物品后结束。
@@ -302,11 +306,10 @@
3. **跟读**`Where are you from?` 和两个回答句。
4. **阅读**
```text
Mia: Where are you from?
Mia: Im from London. Where are you from?
Shen: Im from Hong Kong.
Mia: Nice!
```
题目:Shen 来自哪里?答案:Hong Kong。
题目:Shen 来自哪里?选项为“Hong Kong / London / Beijing”,正确答案:Hong Kong。(两个地点都在对话里,必须分清谁来自哪里。)
5. **写一写**:先填 `I'm from _____.`,再收起范句,仅显示中文任务“用完整英文句介绍你来自哪里”,允许自选已准备的真实/虚拟地点。参考 `I'm from China.`,只写 China 不算完整句。次日另用“介绍姓名”任务独立写 `I'm …` 或 `My name is …`,纳入复习预算。
6. **AI 对话**:AI 先问姓名(复习第 1 课),再问 `Where are you from?`;用户回答后反问 AI。
@@ -345,12 +348,10 @@
3. **跟读**`This is my mother.`、`This is my brother.`
4. **阅读**
```text
Mia: Who is this?
Shen: This is my father.
Mia: Your father?
Shen: Yes.
Mia: Who is this? Is this your father?
Shen: No. This is my mother.
```
题目:照片里的人是谁?答案:Shen 的父亲。
题目:Shen 介绍的是哪一位家人?选项为“My mother / My father / My sister”,正确答案:My mother。(father 也在对话里,必须读到被否定;干扰项只用已教的家庭成员词。)
5. **写一写**:先选词填 `This is my _____.`,再收起句框和词库,换一张已教家庭成员图独立写完整句。父亲图参考 `This is my father.`;允许虚构家庭。
6. **AI 对话**AI`Who is this?`(显示家庭成员图);用户回答。AI 追问 `Is this your mother?`;用户答 `Yes.` 或 `No.`
@@ -395,12 +396,10 @@
3. **跟读**:三句核心句,重点练 Wednesday。
4. **阅读**
```text
Mia: What day is it today?
Shen: Its Monday.
Mia: What time is it?
Shen: Its three oclock.
Mia: What day is it today? Is it Tuesday?
Shen: No. Its Monday.
```
题目:现在几点?答案:three oclock。
题目:对话中今天到底是星期几?选项为“Monday / Tuesday / Sunday”,正确答案:Monday。A/B/C 三段各用不同题干与不同星期/整点(A:Monday 猜错→TuesdayBSaturday 猜错→SundayCtwo oclock 猜错→three oclock),避免三段撞题
5. **写一写**C 段先看 5:00 填 `It's _____ o'clock.`,再收起句框,换已教整点钟面独立写完整句(3:00 参考 `It's three o'clock.`)。B 段以相同撤提示步骤练星期句,例如星期五卡参考 `It's Friday.`。
6. **AI 对话**A/B 段问 `What day is it today?`,仅用已教星期卡;七天都准备后可答真实星期。C 段再问 `What time is it?`,用 1–12 整点钟面。未教过的星期和数字不计错。
@@ -441,10 +440,9 @@
4. **阅读**
```text
Mia: I like tea. Do you like tea?
Shen: Yes, I do.
Mia: Great!
Shen: No, I dont. I like coffee.
```
题目:Shen 喜欢茶吗?答案:喜欢。
题目:Shen 喜欢喝什么?选项为“Coffee / Tea / Music”,正确答案:Coffee。(tea 也在对话里,必须读懂 `No, I dont.` 这个短答。)
5. **写一写**:先选词填 `I like _____.`,再收起句框和词库,只给中文目标“写一句你自己的喜好”。参考 `I like music.`,也接受其他已教对象,不要求照抄例句。
6. **AI 对话**AI`I like music. Do you like music?`;用户回答。AI 随后问另一项喜好,用户反问一次。
@@ -479,11 +477,11 @@
Alex: Hi! Im Alex. Whats your name?
Shen: Hi! Im Shen. Nice to meet you.
Alex: Nice to meet you, too. Where are you from?
Shen: Im from Hong Kong. How are you?
Alex: Im good, thanks. Do you like coffee?
Shen: Yes, I do.
Shen: Im from Hong Kong. Where are you from?
Alex: Im from London. Do you like coffee?
Shen: No, I dont. I like tea.
```
题目:Shen 来自哪里Shen 喜欢什么?
题目:Shen 来自哪里喜欢什么?选项为“Hong Kong, tea / London, coffee / Hong Kong, coffee”,正确答案:Hong Kong, tea。(两个地点、两种饮料都在对话里,必须同时读对来源和喜好。)
2. **排序**:将五张卡按自然对话顺序排列:问候 → 姓名 → 来自哪里 → 状态 → 喜好。
3. **关键句跟读**:用户任选 3 句重说;系统给“清楚/再慢一点/可重说”的支持性提示。
4. **写一写**:先填小抄 `I'm _____. I'm from _____. I like _____.` 作准备;完成另一项练习后收起小抄,仅按中文目标独立写姓名、地点和喜好三句,不提供句框或词库。原样立即抄写仅算练习;再用不同物品图片/钟面补一项完整句练习,可留到次日预算内完成。
+6
View File
@@ -108,6 +108,10 @@ M1 先提供与 A0 核心课对应的受控对话;这些场景是起始内容
AI 必须记住当前场景、用户身份、完成目标、已知信息及难度上限。它不能突然转换角色、重复问已回答的问题,或为了“自然聊天”而跳过任务目标。
给模型的指令必须把两件事分开:**本轮 AI 自己要说什么**,以及**学习者随后要完成什么任务**。两者混成一句会让模型替学习者把答案说出来。同时把当前课程及之前课程已教的词句作为可用语言清单随请求下发,A0 每轮最多 1 个清单外的词。
模型只需返回 `reply`(英文回复);`translation`(中文翻译)与 `feedback`(一句中文点评)可选,缺少可选字段不丢弃整条回复。是否完成任务由客户端按本轮必需表达判定,不采信模型的完成声明。AI 不可用时必须在对话页显示提示,说明当前这句来自内置示范脚本,不能让备用文案冒充 AI 回复。
## 8. 对话交互细节
### 8.1 输入与输出
@@ -135,6 +139,8 @@ AI 必须记住当前场景、用户身份、完成目标、已知信息及难
对话结束后才给完整的微反馈,且一次最多一个语言问题。零基础用户首先需要成功表达,不需要一次性接受语法课。
模型每轮返回的 `feedback` 只保留最后一条,在对话结束页和总结页以“下一次说得更好”呈现,不在对话过程中逐轮弹出。
M1 发音反馈限示范音、慢放、录音回听和可选通用练习,不评价像不像母语者。`three` 多次被转写为 `free` 可能是噪声或 ASR 错误,不能据此诊断 /θ/ 或降低掌握度;可在用户选择后展示通用对比词与动作提示,并标注“非个性化发音诊断”。真正的音素诊断需要音频证据和验证过的能力,后续另行评估。
## 9. 会话总结与复习