等 AI 写代码的两分钟,我做了一个练英语的 macOS 小工具
我经常遇到一个很尴尬的空档:AI 正在生成代码,测试还没跑完,手头有两三分钟,但又不值得开始一项新任务。
以前我通常会点开一部短剧,或者顺手刷几个短视频。本来只想打发等待的两分钟,结果短剧一集接一集,视频一条接一条,很快就把这段时间浪费掉了。
更麻烦的是,看短剧和刷视频会把注意力完全拉走。同事的消息错过了,AI 的代码早就生成完了,测试也已经跑完,我却常常过了好一会儿才想起来:我刚才明明只是想等两分钟。
所以我做了一个 macOS App,叫 BestLearn。
它解决的不是“没有时间学英语”,而是“两分钟的空档,不值得为学习付出一整套启动成本”。
它平时藏在桌面边缘。按一个快捷键,屏幕下方会浮出一条很窄的英语练习栏。编辑器、AI 的生成进度和测试日志都还在上面,我随时能看到任务跑到哪了。
练几句,按 Esc 把它收起来,继续刚才的工作。不需要切换窗口,也不会因为刷视频忘了时间。

实际怎么练
BestLearn 会把同一组句子拆成三个环节:
- 抄写:看着原句输入,先熟悉表达和拼写。
- 默写:只听音频,不提前显示答案。
- 填空:保留上下文,只输入缺失的内容。
输入正确的部分会变绿,错误字符会标红。答错后,App 会显示正确答案,然后继续下一句。
我没有设计成“答错必须重打三遍”。等代码时的练习本来就很短,我不想让它卡在同一句上。
三个环节也不用每次全部练完。在办公室不方便播放声音,我就只做抄写或填空。戴上耳机后,再单独练默写。

我平时基本不用鼠标,所以几个常用操作都配了快捷键。
| 操作 | 默认按键 |
|---|---|
| 呼出或隐藏学习条 | Shift + Alt + B |
| 快速隐藏并停止音频 | Shift + Alt + H |
| 在面板内隐藏 | Esc |
| 打开课程选择 | Command + K |
| 跳过 / 重播 / 结束 | ⌘1 / ⌘2 / ⌘3 |
课程选择、环节开始和结算页会直接标出数字选项。答题时改用 ⌘+数字,避免把句子里的数字当成命令。
快捷键可以自己修改。学习条也能拖到习惯的位置,App 会记住它。
我怎么用 AI 生成课程
我最开始想练的,是 code review 和会议里经常用到的句子。所以 BestLearn 支持导入 CSV,可以把自己的句子做成本地课程。
自定义课程没有录音时,默写会调用 macOS 系统语音。课程、句子和成绩都存在本机的 SQLite 数据库里。
一个 CSV 文件只放一本书。设置页可以直接下载模板,修改后保存为 UTF-8 CSV,再导入 BestLearn。重新导入相同的 book_id 会更新内容,已经存在的课次会保留成绩。

刚开始时,我还会自己在表格里填字段、排顺序、检查 ID。做过几次后,我就把这部分交给 AI 了。
我会把 CSV 模板和想练的句子一起发给 AI,让它分课、生成 ID,再按模板输出 CSV。我只需要检查一遍英文句子和中文释义。
下面是我现在用的 Prompt。把书名、场景和素材换掉就行。
你是 BestLearn 自定义课程助手。请把我提供的内容整理成可直接导入 BestLearn 的 UTF-8 CSV。
<course>
书名:[例如:程序员会议英语]
学习场景:[例如:stand-up meeting 和 code review]
希望分成几课:[例如:3 课]
我已经整理的句子或素材:
[把你想练的英文句子、中文意思或场景要求粘贴在这里。如果只有主题,请补充自然、实用、适合口语的句子。]
</course>
CSV 字段必须严格使用下面这一行,不得增删或改名:
schema_version,book_id,book_title,lesson_id,lesson_title,topic,sentence_order,sentence_id,english,chinese
生成规则:
1. schema_version 固定填写 1。
2. 一个 CSV 只包含一本书。
3. book_id、lesson_id 和 sentence_id 只使用小写英文、数字和连字符,并保证唯一。
4. 每课的 sentence_order 从 1 开始连续编号。
5. 优先保留我提供的英文句子;只在句子不自然或有明显错误时修正。
6. 每句英文都要提供自然的中文释义。
7. 字段内含逗号、引号或换行时,按标准 CSV 规则正确转义。
8. 只输出完整的 CSV 内容,不要解释,不要在 CSV 前后添加其他文字。
AI 生成后,把内容保存为 .csv 文件,就可以导入 BestLearn。
想试的话,怎么开始
- 启动 BestLearn,从菜单栏打开设置。
- 选好主题、学习条大小和透明度。
- 设置自己顺手的呼出键和快速隐藏键。
- 选择 BestLearn 内置课程,或者导入自己的 CSV。
- 按快捷键呼出学习条,选一课开始输入。
使用 BestLearn 内置课程时,需要先在网站创建 API Key。这个 Key 可以随时撤销。创建后,把它粘贴到“设置 → 账户与同步”。桌面 App 不会保存你的账号密码。
自定义 CSV 课程不会上传。断网时,已经缓存的课程仍然可以继续练。成绩会先写入本机,网络恢复后再同步。

我现在怎么用它
我不会拿 BestLearn 学一套完全陌生的内容。我更常放进去的,是那些已经见过,但总是记不住的表达。
等 AI 生成代码、跑测试或者导出文件时,我就呼出学习条,打几句英语。有时只练两分钟,有时任务跑得慢,就多练几句。
对我来说,这已经够了。至少我不会再因为“只看两分钟”点开短视频,然后把正事忘在后面。
如果让你给自己做一本英语课程,你最想先练哪个场景?