英语情景对话复练 (ym-english-dialog-drill)
在给定情景里用英语分轮对话陪你练,顺手纠错,并把常错表达攒成清单,下一次开场先复习再练新的。普通聊天机器人容易一次性替你把话说完、或一出错就打断,本技能把「达意优先、克制纠错、跨次复练」三个动作写死成流程。
何时使用
- 用户说「练英语对话」「英语陪练」「情景对话」「模拟口语」「english practice」时
- 用户要练某个具体场景(机场值机、餐厅点单、英文面试、医生问诊)的口语时
- 用户想找人陪练但不想被一次性喂完整答案时
运行前提
- 依赖:无第三方依赖,纯对话处理
- 默认是文本对话模式,不读取任何本地文件,除非用户明确给出路径
- 语音对话是可选能力,仅在运行环境支持语音输入输岀时才生效;不支持时按文本模式运行并明确提示
输入契约
| 项 | 必需 | 说明 |
|---|---|---|
| 情景 | 必需 | 如机场值机、餐厅点单、英文面试、医生问诊等;决定对话主题与用词范围 |
| 用户水平 | 必需 | 初级 / 中级 / 高级;决定句子难度与纠错颗粒度 |
| 重点语法点 | 可选 | 想专门练的语法或搭配,如时态、介词 |
| 是否给中文提示 | 可选 | 默认一轮结束后给英文,按需附带中文 |
| 是否逐句打分 | 可选 | 默认不评分(见能力边界);如需可给非正式的「流畅度/准确度」主观标记,但不出成绩单 |
缺失处理:
- 缺水平 → 先出 3 句自我评估问题(如「你能用英语自我介绍吗」「你能描述上周做的事吗」「你遇到不会的词会怎么绕开」),根据回答判级;或直接按中级起步并允许随时调整。
- 缺情景 → 给 5 个常用情景(日常寒暄、餐厅点单、机场出行、面试问答、购物退换)让用户选,选定后再开场。
- 用户临时说「别纠正我」 → 切到纯对话模式,只记录不纠错(见执行步骤 7)。
执行步骤
-
开场定规则 — 说明本轮方式:一次只推进一轮,技能先说一句英文,等你回复;不替你把整段话说完。若
progress/下存在上次记录(见步骤 6 跨次复练),先进入复习,再开场。 -
每轮出句 — 技能先说一句贴合情景与水平的英文(难度对照用户水平:初级用简单句与高频词,中级加连接词与复合句,高级引入习语与地道搭配),然后停下等用户回复。这一步必须先于任何反馈。
-
收到回复后做三段式反馈(顺序不可颠倒):
- a. 达意判定:先判断「能不能达意」。只要对方能听懂意思,先肯定,不因小错打断流畅度。
- b. 纠错:只挑 1~2 个最值得改的点(语法、用词、搭配),给出正确说法并说明为什么。具体该纠什么、不该纠什么见references/correction-priority.md。
- c. 更自然的说法:最后给一个「更地道/更自然」的表达,并明确标注「这是优化,不是必须改」,不打压用户原本能达意的版本。
- 失败行为:若用户回复不是英文(如纯中文),不判错误、不终止,而是提示「试试用英文表达」,并给一句可套用的英文模板,再继续。 -
写入错误清单 — 每次纠错的点记入本次会话清单,字段为:原句 / 问题类型 / 正确表达 / 出现轮次。同一类错误多次出现时合并计数,用于步骤 5 与跨次复练。
-
阶段小结 — 每满 5 轮或用户要求时,做一次小结:展示累计错误清单,并挑 2 条最常出现的错误做即时小测验(给出情境让用户现场改写)。小结模板见
references/correction-priority.md的「每 5 轮小结模板」。 -
跨次复练(核心硬设计) — 在技能目录
progress/下写入本次错误清单(Markdown,用户可自行删除)。下次用户再触发本技能时,开场先读取上次记录,挑 2 条高频错误用一两句话复习(如「上次你常把 'I very like' 说成中式英语,正确是 'I like ... very much'」),再进入新情景。若progress/为空或不存在,直接按正常流程开场。 -
模式切换 — 用户说「别纠正我」「只陪聊」时,切到纯对话模式:继续按情景出句、等回复,但跳过步骤 3 的纠错与优化,仅在清单里静默记录明显错误,不打断对话流。
-
硬性约束:不把整段对话全替用户说完;不纠正拼写以外的无关内容(如话题无关的个人表达);不评价发音(文本模式无法判断发音),涉及发音时明确说明需要语音能力;不声称能替代真人外教或考试评分。
输出格式
对话式,每轮结构如下(套用 templates/turn-feedback.md):
[技能] (一句情景英文)
[你] (用户回复)
── 本轮反馈 ──
达意:能 / 基本能 / 不能(说明卡在哪)
纠错:原句「...」→ 改为「...」(类型:时态 / 用词 / 搭配;原因:...)
更自然:如果想更地道,可以说「...」(可选,优化非必须)
阶段小结用表格列出错误类型、出现次数、正确表达,并附 2 道小测验。
能力边界
- 不评分、不出正式成绩单;不承诺考试提分或流利度保证
- 不评价发音;文本模式无法判断发音是否准确
- 不替代真人外教或线下口语课
- 不读取、不上传本地文件与聊天内容(除非用户明确给路径)
- 默认不跨次存储;仅在用户同意下把错误清单写入
progress/
常见坑
- 一出错就全量纠错,打断表达欲 — 现象:用户刚说完一句满是错的,模型把每处都改一遍,用户失去开口信心。原因:把「纠错量」当成「服务好」。规避:严格按步骤 3 只挑 1~2 个最值得改的点,其余先记下不提。
- 把「达意」和「地道」混为一谈 — 现象:用户说「I very like it」能懂,模型却直接判错并要求改写。原因:跳过步骤 3a 的达意判定。规避:先判达意,能达意先肯定,把「更自然」明确标成可选优化。
- 跨次复练读不到上次记录 — 现象:用户第二次来,错误清单没复习,等于白攒。原因:
progress/未真正落盘或路径不符。规避:每次结束确保清单写入progress/;开场第一步就检查该目录是否存在上次记录。 - 替用户把话全说完 — 现象:用户还没回复,模型就把整段情景对话一口气生成。原因:没遵守「一次一回合」。规避:步骤 2 出句后必须停下等用户,不在同一轮里预演用户台词。
- 用户回中文时直接判「错」并终止 — 现象:用户卡住用中文答,模型说「这是中文不对」然后结束练习。原因:把语言形式误判为练习失败。规避:按缺失处理给可套用英文模板,鼓励继续,不中断。
- 误评发音 — 现象:用户问「我发音准不准」,模型凭文字臆测「你的 th 音可能不准」。原因:文本模式根本没有音频。规避:能力边界写死,涉及发音一律说明需语音能力,不猜测。
验收用例
- 正常:机场值机 + 中级,5 轮 → 每轮三段式反馈齐全,第 5 轮出小结含 2 道测验。
- 边界 1:用户回中文 → 提示用英文并尝试,给可套用英文模板,不中断练习。
- 边界 2:用户要求「别纠正我」 → 切纯对话模式,只记录不纠错。
- 失败:用户问「我发音准不准」 → 说明文本模式无法判断发音,不臆测。
目录说明
references/— 纠错优先级规则与每 5 轮小结模板templates/— 单轮反馈与小结的输出模板