# 摘要
我们家孩子上初中了,我用SOLO 20分钟制作了一个网页版的中考英语词汇默写工具。市面上的背单词App在都在手机和pad上操作,主要考虑手机屏幕小打字慢,而且孩子用手机可能就会玩别的去了。所以我干脆自己动手,把中考英语考纲的单词整理成一份Markdown文件,扔给 SOLO,让它帮我做一个专门的网页版默写工具。SOLO 从解析词汇文件到写前端页面,再到实现自动批改和错题管理,全部快速搞定,而且现在还有Agent自动测试环节(很赞
)。最终产出一个纯前端、打开即用、界面清爽的默写工具。
# 背景
孩子今年初一,英语词汇是基础中的基础,但背单词这件事,说起来简单,但是要有有效的工具和方法。买练习册吧,里面的词汇和上海考纲不是完全对得上,有些超纲词浪费时间,有些考纲词又没覆盖到。用手机 App 背单词吧,孩子拿着手机就忍不住切出去刷视频,而且大部分 App 的词汇库都是通用的,没法按上海考纲精准练习。
最靠谱的方式其实还是****默写****——家长报中文,孩子写英文。但问题是:
- 每天出题得我从考纲里手动挑单词,挑完还得抄到纸上,一折腾就是半小时
- 批改更痛苦,1700多个个单词的考纲,我有时候自己都不确定拼写得对不对
- 哪些词孩子反复写错,我心里没数,没法针对性复习
所以就用 TRAE SOLO,帮我搞定!
# 实践过程
## 第一步:准备词汇数据
我网上找了一份24版的词汇PDF文件,由于文件大于200M,无法上传SOLO直接处理(PS我用的是网页版,期待win桌面版尽快出来~),所以预先用TRAE IDE处理成 Markdown 文档,里面按 A-Z 字母分组列出了全部单词,每个单词都标注了音标、词性和中文释义。格式大概长这样:
```
### A
#### 1. *ability /əˈbɪlətɪ/ (复 abilities) n. 能力;才能
#### 2. *able /ˈeɪbl/ adj. 能够的;有能力的
…
### B
#### 100. *back /bæk/ adv. 回到原处;向后
…
```
## 第二步:向 SOLO 描述需求
我没有急着让 SOLO 直接写代码,而是先把需求想清楚,用提示词描述给它:
> 我上传的是初中英语考纲词汇,我想设计一个网页版的初中英语考纲词汇的默写小工具,具有以下功能:
> 1. 单词首字母 A-Z 词汇分组可自由选择,以及错误单词库,可以单选也可以多选,并设置全选和取消全选按钮
> 2. 可自由输入默写数量
> 3. 可选择显示中文和词性默写,和显示音标默写两种模式
> 4. 默写完成后自动批改,显示分数和答案列表
> 5. 收集错误单词,形成错误单词库
> 6. 按照输入的默写数量随机从考纲词汇中抽取单词
> 7. 界面要美观,符合中学生审美习惯
## 第三步:SOLO 的工作过程
SOLO 接收到需求后的操作流程让我印象很深,它不是上来就噼里啪啦写代码,而是有条不紊地分步推进。
**先是数据解析。** SOLO 读取了我上传的 Markdown 文件,发现格式不统一后,自己写了一个 Python 解析脚本。它用正则表达式匹配各种词条格式,处理了括号备注、多词性标注等特殊情况,最终从文件里提取出了 1558 个单词的结构化数据。
不过第一次解析的结果并不完美。SOLO 发现有些词条的中文释义里混入了词性标注(比如 `& v. 梦;梦想`,`n. & v. 做,干`),它主动进行了二次清洗,针对 `dare`、`do`、`welcome` 这几个特殊词条做了手动修正,确保数据干净。
**然后是前端开发。** SOLO 用纯 HTML + CSS + JavaScript 构建了一个单页应用,把 1558 个单词的数据直接嵌入到页面里。这意味着整个工具就是一个 HTML 文件,不需要后端服务器,双击打开就能用。
**测试方面**,SOLO 自己会进行网页前端功能测试,自己出题,自己默写,并校对结果,这个确实很赞,不需要我来测试,反馈给SOLO问题,基本上表面上的功能问题都被解决了。
**交互细节上**,SOLO 也考虑得比较周到:
- 默写时按 Enter 键自动跳到下一题,最后一题按 Enter 直接提交
- 提交后显示分数(百分制)、正确/错误数量、用时
- 答案详情支持筛选:全部 / 仅看错误 / 仅看正确
- 错题自动收集到错题库,数据存在浏览器 localStorage 里,关掉页面也不会丢
## 第四步:踩坑和迭代
工具第一版生成后,我拿给孩子实际用了一下,发现了两个问题。
**第一个坑:随机性不行。** 我连续出了几轮 20 个单词的默写,发现有些字母开头的词反复出现,有些字母的词几乎抽不到。比如 C 开头的词有 200 多个,但好几轮都没抽到;某些小分组的词倒是经常出现。
我把这个问题反馈给 SOLO:“每次的单词随机性不行,不够分散,要使用更合理的随机方法。” SOLO 直接换成了 **Fisher-Yates 洗牌算法**,这是一种经典的、保证等概率的随机排列算法。改完之后,单词分布明显均匀了。
**第二个坑:没有清空错题的功能。** 孩子练了好几轮,错题库积累了很多。后来想清掉重新开始,发现根本没有这个按钮。我又反馈给 SOLO:“增加一个错题库清零的按钮。” SOLO 很快就在错题按钮旁边加了一个"
清零"按钮,点击后清空所有错题数据,同时如果错题组已经被选中了也会自动取消选中,逻辑很严谨。
# 成果展示
## 最终功能
| 功能 | 说明 |
|------|------|
| 字母分组选择 | A-Z 共 25 个字母分组,每个按钮显示单词数量,支持单选/多选/全选/取消全选 |
| 错题库 | 自动收集默写错误的单词,支持选择错题库进行专项练习 |
| 错题清零 | 一键清空错题库,重新开始 |
| 自由设置数量 | 输入任意默写数量,自动从选中范围内随机抽取 |
| 中英默写模式 | 显示中文释义和词性,写出对应英文单词 |
| 音标默写模式 | 显示音标,写出对应英文单词 |
| 自动批改 | 提交后自动判分,显示正确/错误数量和用时 |
| 答案详情 | 逐题展示正确答案,支持筛选"全部/仅看错误/仅看正确" |
| 重做错题 | 一键将本轮错题重新组成新一轮默写 |
| 错题持久化 | 错题数据保存在浏览器本地,关闭页面不丢失 |
## 数据规模
- **1558 个考纲单词**,覆盖 A-Y 共 25 个字母分组
- 每个单词包含:英文拼写、国际音标、词性标注、中文释义
## 技术实现
- **纯前端单页应用**:HTML + CSS + JavaScript,无需服务器,双击 HTML 文件即可使用
- **数据嵌入**:1558 个单词数据直接嵌入 HTML 文件,离线也能用
- **本地存储**:使用 localStorage 持久化错题数据
- **Fisher-Yates 洗牌算法**:保证单词抽取的随机性和均匀分布
# 效果与总结
## 提效对比
| 对比项 | 以前 | 现在 |
|--------|------|------|
| 出题 | 我从考纲里抽背或抄到纸上,15分钟 | 选好字母范围和数量,点一下按钮,3 秒出题 |
| 批改 | 逐个对照答案,遇到不认识的词还得查字典,5 分钟 | 提交后自动批改,秒出分数和详细结果 |
| 错题整理 | 靠记忆,哪些词反复错心里没数 | 自动收集,打开就能看到错题库,一键重做 |
| 复习针对性 | 只能笼统地"再看看" | 错题库精准定位薄弱词汇,专项突破 |
## 使用体验
孩子用了几天之后的反馈:
- “单词随机性不错”
- “界面友好,用起来简单”
- “错题功能挺有用的,能知道自己哪些词不会”
作为家长,我最大的感受是****省心****。以前每天出题批改得花半小时,现在孩子自己打开网页就能练,练完我扫一眼错题库就知道他今天哪些词没掌握。
## 对 SOLO 的评价
说实话,作为一个完全不会写代码的家长,整个过程给我的体验非常好:
1. **真的零门槛**。我就是用大白话把需求说了一遍,SOLO 全部理解了,不需要我解释任何技术术语
2. **自己会处理脏活累活**。词汇文件格式不统一这种事,我自己处理要崩溃,SOLO 写个脚本几分钟就搞定了
3. **迭代特别快**。我发现问题反馈过去,SOLO 马上就能理解并修复,前后两轮对话就搞定了一个完整可用的工具
4. **产出质量超出预期**。界面美观、功能完整、交互流畅,如果不是自己亲历,我很难相信这是一个不会写代码的人"做"出来的
整个过程就像请了一个全栈工程师搭档,我负责提需求和验收,它负责干活,配合非常顺畅。









