Project Manual
Fluent20 用户手册与需求说明
Fluent20 是一个本地英文学习工具。核心目标不是备考,而是用真实英文视频片段提升日常交流能力、词汇量、固定搭配和自然表达。每天练习应该控制在 20 分钟左右,流程越省力越好。
使用者画像
- 英文水平:中等,可以进行基础日常对话,但表达能力和词汇量有限。
- 学习目标:提升真实日常英文交流能力,不是准备任何口语考试。
- 坚持条件:每天操作负担必须很低,不要让用户自己花时间找材料、判断材料、整理内容。
每日学习流程
- 打开工具后,首先看到今天的视频片段和日历打卡区。
- 先播放片段。看完后再决定点击 Start Learning 或 Next Clip。
- 点击 Next Clip 会换一个新片段。没有完成学习前,这个片段不应该被记录为已学。
- 点击 Start Learning 后才显示 transcript,并开始低调计时。
- 用户在 transcript 里点击单词,或框选词组、句子,再点击 Explain My Selections。
- 工具针对用户选中的内容生成解释、例句、用法和常见误区。某个词生成失败时,只显示该词的失败状态和 Retry this word,不影响其他已生成内容。
- 理解后进入练习:先看中文意思默写英文原文,再用所选表达写新句子。
- 两部分作业都检查完成后,点击 完成今天练习并打卡,保存学习时长、已学片段、选中表达、作文原文、造句原文和问题列表。
素材规则
- 素材应来自真实语境,不使用教材式、刻意放慢语速的英语学习材料。
- 当前素材来源是 The Rest Is Science 的 YouTube 视频,优先使用已下载到本地的视频和字幕。
- 片段应尽量从完整句子的开头开始,不能从半句话中间切入。
- 片段长度必须适合 20 分钟深度学习,目前要求控制在 40 秒以内。
- 用户确认完成学习的片段要保存到数据库,以后不要重复抽到同一个已学片段。
- 如果用户觉得片段不合适,可以点击 Next Clip 换一个。
讲解规则
- 讲解必须围绕用户自己选中的单词、词组、句子或表达,不要预设一大堆用户没选的内容。
- 如果用户连续点击相邻单词,系统应尽量把它理解为词组,而不是逐个解释无意义的功能词。
- 例如用户选中 “of sense” 这种明显属于短语上下文的片段时,不应只解释 “of”。要结合 transcript 判断真实要学的表达。
- 解释语言以中文为主,英文例句保留英文,并给中文意思。
- 每个生词或词组应尽量显示音标或简单发音提示,并提供点击发音。
- 解释要实用,重点是日常表达、自然搭配、语气、使用场景和容易犯错的地方。
- 每个解释区域应允许用户继续要求更多例句、更详细解释,或直接输入自己的问题。
- AI 讲解失败时不要生成“基础解释”或临时卡片。只明确提示 AI 未生成,并允许用户单独重试这个词。
练习设计
- 原文背诵/默写:系统先给中文意思,用户根据中文把英文原文默写出来,系统给反馈。
- 新句子练习:只围绕用户刚刚要求解释的词、词组或句子来造句,系统检查自然度和用法。
- 当前练习页不放 Voice Input 区块,避免打散主流程。
- 作文和造句反馈都应逐句指出拼写、语法和自然度问题。页面上可以临时显示建议,但长期学习档案不保存完整改写版。
打卡与记录
- 打卡日历放在顶部统计区的 Check-in 抽屉里,完成显示绿色,未完成或手动标记 miss 显示红色。
- 顶部统计显示总完成数、本月完成数、连续天数和已学片段数。
- 计时从 Start Learning 开始,放在不显眼的角落。
- 完成按钮只在作文批改和造句批改都完成后可点击,点击后自动打卡并保存当天学习档案。
- 长期学习档案保存日期、学习时长、视频片段、选中表达、作文原文、作文问题、造句原文、造句问题。不保存完整修改版,也不生成空泛学习报告。
- Start Learning 不能把片段标记为已学,只有 完成今天练习并打卡 才能正式提交。
UI 原则
- 主页面不要长篇介绍,用户每天只想快速开始 20 分钟练习。
- 按钮要按实际行为顺序放置:先看视频,视频下方再出现 Start Learning 和 Next Clip。
- 不需要 Learning profile 这种用户每天不会看的区域。
- 不要让说明文字挤占主学习流程。说明可以放在本 Manual 页。
- 界面要简洁、清晰、耐看,不要像临时 demo。
技术与文件
- 项目目录:
D:\Fluent20。
- 本地服务:
python server.py,默认地址 http://localhost:8765。
- 后端:Python 标准库 HTTP server + SQLite。
- 前端:
static/index.html、static/app.js、static/styles.css。
- 数据库:
data/fluent20.sqlite3。
- 本地视频:
data/videos;生成片段:data/clips。
- AI:默认按
AI_PROVIDER_ORDER=gemini,groq 调用。Gemini 失败、拥堵或额度不可用时,自动切到 Groq。
- API key 写在
D:\Fluent20\.env:GEMINI_API_KEY=...、GROQ_API_KEY=...。Groq 默认模型是 llama-3.3-70b-versatile,可用 GROQ_MODEL=... 修改。
- 换片段预览不应等待 AI,只有解释和作业反馈等需要 AI 的地方再调用。
给后续 AI 的修改原则
- 不要把工具改回考试备考方向,它的目标是日常真实英文交流。
- 不要把主流程做重。用户能少点一步就少点一步。
- 不要默认生成教材式 lesson。核心是围绕真实视频片段和用户亲自选择的表达展开。
- 不要在用户完成前把片段记录为已学。
- 如果修改片段抽取,必须继续保证片段短、开头完整、已学不重复。
- 如果修改 UI,优先保护每日学习路径:视频、开始学习、换片段、transcript、解释、练习、完成。