Files
English/Doc/M1-IMPLEMENTATION-CONTRACT.md
T
shenleiandClaude Opus 5 efdff769e4 docs: 学习目标定为日常与旅行,重写学习路线与词汇分层规格
- 取消学习目标选择,不做学校场景,工作场景延后
- 词汇分两层:核心表达与分级词池,写明词池来源与校验方式
- 补充复习节点、掌握判定与阶段评估的规则说明

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 18:52:01 +09:00

18 KiB
Raw Blame History

M1 开发与验收约定

版本:1.02026-09-12|个人自用,Flutter 手机优先,支持 iPhone、Android、Mac。 本文件统一 M1 范围、数据契约、降级行为和验收。学习算法以《学习引擎规格》为准,A0 清单与评估以《A0 阶段标准》为准。其他文档不得另设升级门槛;调整时须同步更新并记录版本。

1. 冻结的范围

M1 是完整的 A0 学习闭环,不是全部 A0B2 产品:

  • 10 节种子课程及必要的分段教学;每个有新内容的教学段先做课前词汇预热,再进入听、说、读、写和简短语法解释。
  • 固定能力地图驱动的每日推荐、AI 变式和补救微课;课程总量不限。
  • 课程内及独立入口的 A0 受控任务对话;文字输入、轮流录音、转写确认、TTS。
  • 本地学习证据、掌握状态、到期复习、基础写作纠错与进度。
  • A0 四技能出口评估、未通过补练、重新评估、通过状态。
  • 课程、阅读与受控对话中的随时查词;短语优先、单词其次,提供释义、音频、例句和加入复习。
  • AI 服务配置与连接测试、离线基础练习、中断恢复和安全的数据删除。

不包含:账号、社交、付费、留存运营、通知、自建业务后台、自动同步、导出/导入、自由主题聊天、实时全双工语音、精细发音诊断。导出/导入和 A1 课程在 M2;A2 及以上逐阶段扩展,不因文档列出目标而视为已经交付。

M1 通过 A0 后记录 A0 已通过,A1 内容待提供,可继续 A0 巩固;不在运行时生成 A1 主线。A1 内容须按《学习引擎规格》第 5 节离线生成单元内容包并经确认冻结;只有 A0 通过且至少有一个已冻结的 A1 单元时才允许进入。A1 内容冻结前,入门定位只在 A0 内推荐起点;之后的定级规则见学习引擎 3.6。

2. 内容与生成契约

2.1 稳定身份与内容来源

阶段、能力、词句、课程、练习、素材均有稳定 ID 和版本。生成的变式有自己的 ID,并引用原能力及词句 ID,不能因措辞改变而产生新的核心掌握项。

内置种子内容需完成教学审校、答案校验及音频抽听后才标记 approved。外部网站和教材默认只作参考/外链;素材记录来源、许可或原创说明,不直接搬运。AI 生成内容标记来源为 AI,不能冒充人工审校。

2.2 最小课程结构(实现时转为有版本的 JSON Schema

对象 必填内容 约束
课程 schemaVersion、lessonId、revision、stageVersion、source、status、abilityIds、prerequisiteIds、targetItemIds、receptiveChunks、newItemIds、previewItemIds、estimatedMinutes、tasks status 为 draft / validated / approved / rejected;只有 validated 或 approved 可学习
练习 taskId、skill、type、prompt、stimulus、targetItemIds、answerSpec、rubricId、supportPolicy、variantFamilyId skill 为 listening / speaking / reading / writing;题型限定在客户端支持的模板中
答案 判定方式、参考答案、可接受变体、必需信息槽、排除条件、简短解释 选择题有唯一答案;开放题不以字符串完全相等作为正确条件
素材 assetId、文本、语言、音频来源/生成状态、来源许可、校验摘要 听力题答案与实际播放文本一致;无音频时不伪装为听力题
对话 scenarioId、角色、允许词句、目标信息槽、最少任务要求、最多用户轮数、收尾条件 M1 通常 3–5 个用户回答轮;简单种子任务可更短,不能为凑轮次重复提问

每个可展示的英文词块要能关联 LexiconEntry:entryId、词形/短语、音标(可选)、词性(可选)、适合当前阶段的中文释义、TTS/课程音频、一个已学例句、关联能力/词句 ID、版本与来源。点击时优先匹配最长已定义短语,如 Nice to meet you,再匹配单词;专名、数字和标点不强制提供词典条目。释义应服务当前句义,避免塞入完整词典义项或未学复杂例句。

一个教学分段最多新增 8 个词汇项、2 个需要主动产出的句型;数字、字母、星期较多时拆段,每段约 10–15 分钟,完成种子主题不等于只用一天。复习段可以没有新词。固定短语按词块教学,所含功能词不再逐词重复计算,但必须提供整句释义和音频;新增理解用词块每段最多 2 个,超过则先增加准备段。

10–15 分钟为整段合计,已包含预热、应用练习、受控对话和独立尝试;后续词句步骤用于句中应用而非重复词卡。每日 10/20/30 分钟的分配、积压阈值、复核降级均以《学习引擎规格》2.1、2.2a、3.2 为唯一执行规则。

每段必须标注 independentTaskIds 和各技能的完成状态;独立任务可复用对话最后一轮或写作题,时长约 30–90 秒。撤掉帮助后换内容值,恢复帮助则标记辅助,不当场无限循环;跳过保持待做。完整句写作从第 5 课逐步练,第 6–10 课落实自由输出,不用填槽证据代替出口能力。种子主题四技能机会映射见课程包。

有新增内容的教学段在正式任务前必须定义 previewItemIds:只包含该段会遇到的新增词汇和理解词块,通常 3–6 项,最多不超过本段的新词/词块预算。每项有词条、音频、当前句义与一项轻量匹配/听辨;可逐项重放、查词、跳过或回看。预热完成只记为 exposed,不产生掌握成功、失败或复习到期日;没有新增内容的复习段不显示预热。

对话额外新词指本段与已学内容之外的词:每轮最多 1 个、整段对话最多 2 个,先教学再使用;出口评估为 0。额外新词仅作扩展复习,不自动加入阶段核心分母。

2.3 每日生成流程

  1. 本地规则先选到期复习、未完成任务或已满足前置条件的能力,给 AI 明确的目标 ID;没有薄弱项时正常复习或选下一个能力,不硬造错误。
  2. 请求包含阶段版本、能力及词句白名单、理解用词块、个人薄弱项、提示策略、题型和新词预算。不发送真实电话号码;姓名、地点可使用虚拟资料。
  3. 输出完整课程/练习对象,不能只返回一段聊天文字。对话单轮返回 reply、已提取信息槽、证据引用、完成建议和可选的一条反馈。
  4. 本地检查结构、ID 引用、前置关系、必填答案、词句预算、轮次;专名与词形变化使用明示的允许表,不用简单英文词数误判超纲。
  5. 用独立审核请求检查自然度、答案与材料一致性、难度及无提示可解性;可以同一模型,但输入不包含生成时的推理。审核失败或不确定不发布。AI 审核并非正确性保证,提供“内容有问题”入口,标记后隔离相关题目与评分证据并重新计算受影响状态。
  6. 校验通过后保存版本,再展示。每个生成任务最多自动修复 1 次;仍失败则用同能力已审核的内置/缓存模板,不无限重试。若无可用变式,提供已审核原题复习并说明不是新迁移证据。

生成、审核、转写失败均不得改变掌握度。AI 只能提出判定,客户端根据证据和规则更新状态;不采信模型单独返回的“已掌握/可以升级”。

2.4 判题边界

封闭题优先本地判定。开放题返回 correct / incorrect / uncertain、原始作答证据片段、缺失信息和可选改进,不得补写用户未表达的信息。用户说出有效同义表达应接受;轻微大小写或标点不阻断表达成功。检测到无法确认的答案或用户质疑时记 uncertain,安排不同题重测,不直接降级或升级。

课程完成只表示完成教学任务,可以带提示或文字完成;词句掌握和阶段通过另按有效证据计算。离线自由写作可以保存为 pending,不假装已获得 AI 纠错。

2.5 查词与学习证据

教学模式中,课程正文、AI 消息、阅读材料、听力文字稿和纠错示例均支持点词/点短语;查词卡显示中文意思、原句、播放/慢放、一个简短例句,以及“加入复习”。如果当前内容来自动态生成,优先使用本地已审核词条;缺失时可请求文字 AI 生成临时释义,标记“待审核”,不自动加入核心清单或掌握计算。断网时只显示本地词条或“暂时无法查询”,不编造解释。

教学中点词、看释义或翻译不会失败,也不阻止完成课程;相应 attempt 记录 lookupEntryIdslookupCount 与是否查看整句翻译。用户主动“加入复习”创建低优先级认识/回忆练习,不能直接标记已掌握;同一词条一天最多自动加入一次,避免误触堆积队列。

独立练习与出口评估默认隐藏查词、整句翻译、词库和句框。用户仍可选择“先查词再练习”,系统将当前题切换为教学态,清楚提示“本题不计独立听/读/说/写证据”,然后提供另一等价题补测;不把查词行为记为语言错误。查看词条本身不等于看答案,正式评估中不提供入口以避免该边界含混。

3. 本地数据最小约定

实体 必须保存的信息
StageDefinition / AbilityNode 阶段版本、核心项 ID、能力 ID、前置条件、出口规则版本、内容是否就绪
Lesson / Task / Asset 上述内容契约、生成/审核来源、版本、可用状态、缓存引用
AttemptEvidence 唯一 attemptId、taskId/版本、目标词句、技能、原始作答、输入方式、转写原文/修改后文本、确认/修改标记、提示/翻译/字幕/重放/查词词条次数、结果、判定来源、时间、variantFamilyId
PreviewExposure lesson/段版本、词条 ID、首次/最后查看时间、播放次数、是否跳过;只用于恢复和推荐回看,不计掌握
LexiconEntry / SavedWord 稳定词块 ID、当前释义/音频/例句版本、来源与审核状态;用户收藏时间、复习状态、是否核心项
MasteryItem 稳定词句 ID、状态、首次正式教学时间、分技能证据、有效成功/失败引用、检查点、到期时间、需复核标记与复核阶段;必须能从证据重算
StudySession / ConversationSession 当前步骤、已提交轮次、信息槽、请求 ID、暂停/待反馈/完成状态;原始录音仅引用本机路径
StageAssessment 评估版本、题目版本、四技能结果与证据、提示情况、pending / passed / needsPractice / invalidated、补练目标
ProviderConfiguration 地址、模型、能力测试结果和时间;密钥仅存安全存储,不写入数据库日志

相同 attemptId 的重复提交只入账一次;证据、掌握状态和复习更新使用一次本地事务。网络重试不得产生多份学习成功。题目升级保留旧作答对应的旧版本;无效内容导致的结果失效需显示原因,而非显示“你退步了”。

一题多个目标时记录每个目标的证据片段、技能和结果,只对实际证明的目标更新,不把整句正确广播给所有词。每天同词句最多推进一次间隔。首次正式教学时间在释义/示范加首次应用尝试后登记;预热、查词、收藏及整课结束均不能重置它。复核中的词句暂不计入首次阶段升级门槛,既有阶段通过记录保留。

4. 语音边界和异常恢复

设备原生 STT/TTS 是否离线可用取决于设备、系统、语言包及权限,启动时探测,不作跨平台保证。原生识别也可能联网,首次使用说明数据去向;云端转写仅在用户启用后发送录音。M1 默认代理只接收文字。

情况 行为 学习证据
无网络/AI 未配置 内置课程、缓存/本机可用音频、本地答案题和模板复习;动态生成暂停 本地可判定题正常记账,开放题 pending
STT 无权限/不可用 保留录音回听(若录音权限可用),提供文字练习或稍后重试 文字不能替代口语达标,缺口为待评估而非失败
TTS/音频不可用 可继续阅读/写作;听力题留待补做 不把看文本答题计为听力
转写无置信度、与回答目标不符或用户质疑 显示“我没有完全听清”,确认/修改/重说;无可靠置信度时统一先确认 修改后仅记文字表达;有争议的原语音不判错
超时/断网/429 保留已提交内容和当前轮;提示手动重试,429 按服务等待时间限制重试 pending,不扣掌握度
401/403/模型不存在 引导修正配置,停止自动重试 不修改学习结果
非法 JSON/超纲回答 不展示为正式题目或计分结果;最多修复一次,转缓存模板 无合格结果则 pending
退出/来电/重复点击 停止录音并保存步骤,返回时“继续上次练习”;请求结果按 ID 去重 不重复计分

默认单次 AI 请求 30 秒超时;用户可取消。切换服务由用户明确操作,不自动切换到另一付费服务。连接测试依次检查地址/鉴权、选定模型短文本、结构化返回;流式可选,失败时可使用非流式。测试会发送极短测试文本且可能计费,界面事先说明;兼容地址不意味着语音能力也兼容。

手机的 localhost 不是 Mac;设置页提供局域网连通性说明。远程连接使用 HTTPS,不通过不可信明文地址发送 Token,不关闭证书验证。测试和错误日志隐藏 Token 与敏感内容。

发音只提供示范、慢放、回听及可选通用提示。重复 ASR 错误不能诊断音素;转写准确也不等于已证明真人都能听懂。M1 的口语证据为受控场景下的有限代理指标,个性化音素诊断和更高阶段真人可理解度复核后续另行验证。

5. 开发顺序和验收样例

先完成一条纵向闭环,再扩展全部种子内容与平台;以下是待开发验收要求,不代表已经测试通过。

  1. 本地一课:听力 → 跟读 → 阅读 → 写作 → 本地记录,中断后可继续。
  2. 接入文字受控对话、结构校验、开放答案反馈和失败降级。
  3. 接入录音、TTS、STT、转写确认和分技能证据。
  4. 接入每日推荐、间隔复习、生成变式与 A0 四技能出口评估。
  5. 完成全部种子段和评估题组的教学/音频审校;iPhone、Android 真机后完成 Mac 同流程验收。
编号 场景 必须结果
AC01 完成 10 节但掌握不足 不解锁 A1,推荐当前阶段补练
AC02 新生成 100 个扩展词 A0 核心分母仍为 60,不覆盖旧核心 ID
AC03 看翻译答对听力、修改转写后答对 可完成练习,不记独立听力/口语成功
AC04 AI 声称通过但缺少必需信息 客户端不通过;显示待补信息或待确认
AC05 缺一次复习/一周未打开 逾期项保留,不补造成功、不集中要求补做四次
AC06 网络或识别连续失败 不因技术失败降级;可以本地练习且保留待评估
AC07 相同题立即重做、重复提交请求 不增加独立间隔/迁移证据,不重复记账
AC08 生成非法格式、错答案、超纲题 拒绝该结果,修复最多一次后使用合格模板
AC09 A0 门槛及两次四技能评估都满足 记录 A0 通过;M1 显示 A1 待提供,不编造 A1 课程
AC10 口语待评估但文字全部通过 不标记完整阶段通过,给出补测入口
AC11 清空数据 二次确认具体范围;仅删除所选本机记录,密钥单独管理
AC12 手机和 Mac 分别练习 各自进度独立,界面不暗示已同步
AC13 教学中点 fromNice to meet you 优先显示短语或词块的中文释义、音频、例句和加入复习;不退出当前学习步骤
AC14 评估时尝试查词 提示先转为练习;当前题不产生独立证据,并提供等价题补测
AC15 开始含新词的教学段 先显示仅覆盖本段的课前词汇预热;预热后进入课程,跳过不阻止学习
AC16 只看完词汇预热 保存观看位置,可回看;不增加掌握度、不创建到期复习、不让课程自动完成
AC17 10 分钟内未完成课程 保存下一步骤,预热和对话不重复计时;未做技能不自动完成
AC18 结尾独立尝试时查词 允许继续,记辅助;下一次换题,不增加本次独立证据
AC19 一题正确说 I like tea 分别检查 tea 与 I like 的表达证据,不推断其他词或听力成功
AC20 复习积压超过阈值 暂停推荐新段,交替照顾最早到期和近期错误,总预算不增加
AC21 主题分三天完成 各词句从自己的首次正式教学日排期,不等主题结课
AC22 已掌握项一次答错后复核成功 保留历史与状态,先 7 天抽查,再回 30 天;不重走四次
AC23 第 10 课已说姓名地点喜好但未反问 留出反问机会;五项齐全才成功,上限缺项记待补练

6. 文档索引

本轮学习流程修订:统一教学总预算,增加撤提示的独立尝试,落实写作递进;复习改为按时间选任务并逐词句取证,按词句首次正式教学日起算;单次遗忘先复核;第 10 课统一五项完成条件。本轮修改仅涉及 Markdown 规格与文字线框,HTML 原型和应用实现尚未同步这些变更。