SeeEnglish 文档
从第一次打开,到把自己的工具接上本地 API。SeeEnglish 是一个本地优先的英语语言索引: 没有账号,没有每日任务,所有数据都保存在你的电脑里。
文档概览
SeeEnglish 由桌面程序和本地服务组成。桌面程序负责记词、复习、词库和个人页面; 本地 API 负责读写 SQLite 数据库。Web 页面和桌面端共用同一套数据,不需要同步。
127.0.0.1,没有账号系统,
学习内容不会上传到云端。API 默认不需要鉴权,请不要把本地端口直接暴露到公网。
| 项目 | 说明 |
|---|---|
| 桌面程序 | Windows 10 / 11,当前用户安装,支持系统托盘保活 |
| 本地 API | http://127.0.0.1:8765/api |
| 数据目录 | %APPDATA%\SeeEnglish\seeenglish.db |
| 当前版本 | 1.0.0 |
安装
在 下载页 下载 Windows 安装包,双击后按向导完成安装。
- 安装到
%LOCALAPPDATA%\Programs\SeeEnglish - 当前用户安装,不需要管理员权限
- 默认创建桌面快捷方式和开始菜单入口
- 安装完成后可以直接启动,不需要另外安装 Python、Node.js 或浏览器扩展
首次启动
双击桌面上的 SeeEnglish。窗口会立即显示预加载动画,同时启动本地 API; 准备完成后自动进入主界面。首次启动会在数据目录创建空白数据库和默认词库。
主界面左侧是记词、复习、词库、个人四个入口。你可以直接从“记词”开始, 也可以先在“词库”里看看默认词库。
卸载与数据
可以在 Windows 设置的“应用”里卸载 SeeEnglish,也可以从开始菜单的 SeeEnglish 文件夹运行卸载程序。
卸载默认会删除:
- 安装目录中的程序文件
%APPDATA%\SeeEnglish里的数据库、设置和日志%LOCALAPPDATA%\SeeEnglish里的缓存- 桌面、开始菜单快捷方式和卸载注册项
记词
记词页是 SeeEnglish 的入口。输入一个单词,应用会尝试匹配词库里的已有词和词形变化,例如复数、过去式、现在分词和不规则形态。
新建或补充
- 没有匹配时,可以把它作为新词条收录。
- 已有词条时,按钮会变成“补充到词条”,不会重复创建。
- 词条可以保存个人联想、例句和关联词。
关联词
关联是单向的:如果 input 关联了 out,在 input 里会看到 out,
但 out 不会自动出现 input。在词库展开词条后点击关联词,会跳到目标词并自动展开。
复习
复习没有每日任务,也没有强制性队列。进入复习页后,会随机遇到一个词:
- 先写下你记得的意思、关键词或画面。
- 翻开记录,查看词库里的联想、例句和关联词。
- 自己判断“想起来了”或“还差一点”。
每个词每 5 次见面结算一次。每次结算后,词条贡献和词库总分才会更新; 复习结果页会显示当前贡献、本档进度和关联词。点击结果页里的关联词,会跳到词库里的目标词并展开。
词库
词库页支持 A–Z 栅格和列表两种浏览方式,可以按“全部 / 未归档 / 已归档”筛选,也可以搜索单词、联想和关联词。
词条操作
- 展开词条查看个人联想、例句和关联词。
- 点击“修改”编辑单词、联想、例句和关联词。
- 归档后不再参与复习,但仍保留在词库中;可以取消归档。
- 删除会同时移除该词的复习记录和分数贡献。
句子视图
切换到“句子”可以单独浏览所有例句,并直接修改或删除某一句。修改句子不会影响词条的其他内容。
快捷键
记词、复习和词库都可以只用键盘完成。所有按键遵循同一条规则: 回车不会跳过步骤。光标在输入框里时,回车先确认这段内容并让光标离开, 主按钮随之亮起,再按一次回车才真正执行。
通用
| 按键 | 作用 |
|---|---|
| Ctrl + F | 聚焦当前页面的搜索框 |
| / | 同上,光标不在输入框里时可用 |
| ↑ / ↓ | 在多条候选之间移动 |
| Tab | 取当前候选放进输入框,并展开详情 |
| Enter | 执行亮起的主按钮;在输入框里先确认内容 |
| Shift + Enter | 在输入框里换行 |
| Esc | 返回上一级,关闭最上面一层 |
记词
- 输入单词后出现多条匹配:用 ↑ ↓ 选择,Enter 或 Tab 取当前项;没有选择时默认取第一条。
- 匹配列表的最后一项是「新词条」,选中它会把当前输入单独收录,不补充已有词。
- 补充卡片里,Enter 先把当前输入框的内容确认掉,按钮亮起后再按一次才保存。
- 在补充卡片里按 Ctrl + F 会直接跳到关联词搜索。
- Esc 关闭补充卡片并放弃这次编辑。已经保存成功之后,Esc 不会撤销这次保存。
复习
- 写下答案后,Enter 确认输入,再按一次翻开记录。
- 翻开后默认选中「想起来了」,用 ← → 在「还差一点 / 想起来了」之间切换,Enter 确认。
- 结果页默认选中「再遇一个」,直接按 Enter 进入下一个词。
- 归档确认出现时,Esc 取消。
词库
- / 或 Ctrl + F 聚焦搜索框。
- ↑ ↓ 在词条之间移动,Enter 展开或收起当前词条。
- Esc 先收起展开的词条,再按一次清空搜索。
- 在搜索框里按 Tab 或 Enter,会把第一条匹配的词填进搜索框并展开它。
- 打开编辑、导入导出或选择词库时,Esc 按层级依次关闭。
个人与设置
个人页面显示当前词库的总掌握分、最近 30 天趋势、见面次数和结算次数。所有统计都基于当前选中的词库。
外观与偏好
- 字色、界面动效和背景装饰可以按喜好调整。
- 沉浸模式会隐藏页头和标题,把空间留给卡片和内容。
- 关闭窗口时可以选择每次询问、最小化到托盘或直接退出。
系统托盘
选择“最小化到托盘”后,点击窗口关闭按钮会隐藏窗口,程序继续在后台运行,本地 API 和词库仍然在线。 托盘菜单可以重新打开主界面、修改关闭行为或退出程序。
多词库与导入导出
词库页右上角的“选择词库”可以创建、编辑、切换和删除词库。默认词库不能删除。每个词库有独立的词条和复习进度。
导出
导出会生成一个 JSON 文件,包含当前词库的词条、联想、例句、关联关系和复习状态。建议在换电脑或卸载前导出。
导入
导入会把 JSON 合并到当前词库:已存在的同名词条会合并,不会重复创建。导入前建议先导出一份当前词库作为备份。
本地 API
SeeEnglish 的桌面程序启动时会在本机运行一个 FastAPI 服务。API 和 Web 页面、桌面端共用同一份 SQLite 数据, 可以用来做自己的脚本、编辑器插件或自动化工具。
| 项目 | 值 |
|---|---|
| Base URL | http://127.0.0.1:8765/api |
| 数据格式 | JSON(请求和响应) |
| 鉴权 | 无;仅限本机访问 |
| CORS | 允许 localhost / 127.0.0.1 来源 |
| API 文档 | http://127.0.0.1:8765/docs(Swagger UI) |
先确认本地服务正在运行:
curl http://127.0.0.1:8765/api/health
# PowerShell
Invoke-RestMethod http://127.0.0.1:8765/api/health
正常响应:
{
"status": "ok",
"service": "seeenglish",
"version": "1.0.0"
}
约定与错误
所有写操作使用 JSON 请求体,并设置 Content-Type: application/json。词库通过查询参数 library_id 指定,默认是 1。
错误响应会带 HTTP 状态码和 JSON detail:
{
"detail": {
"code": "duplicate_word",
"message": "这个词已经在词库里。",
"entry_id": 12
}
}
| 状态码 | 含义 |
|---|---|
| 200 / 201 | 成功 |
| 404 | 词库或词条不存在 |
| 409 | 重复词条、已归档等冲突 |
| 422 | 请求字段不合法 |
| 503 | 本地服务暂时不可用 |
词库 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/libraries | 列出所有词库 |
| POST | /api/libraries | 新建词库 |
| PATCH | /api/libraries/{id} | 修改名称或分组 |
| DELETE | /api/libraries/{id} | 删除非默认词库 |
curl -X POST http://127.0.0.1:8765/api/libraries \
-H "Content-Type: application/json" \
-d '{"name":"阅读记录","group_name":"学习"}'
词条与匹配 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/words?library_id=1&q=&limit=100 | 列出词条,可按关键词筛选 |
| GET | /api/words/match?q=apples&library_id=1 | 词形与模糊匹配 |
| POST | /api/words?library_id=1 | 新建词条 |
| POST | /api/words/{id}/supplement | 补充已有词条 |
| PATCH | /api/words/{id} | 修改词条 |
| DELETE | /api/words/{id} | 删除词条 |
| POST | /api/words/{id}/archive | 归档词条 |
| POST | /api/words/{id}/unarchive | 取消归档 |
新建词条:
curl -X POST "http://127.0.0.1:8765/api/words?library_id=1" \
-H "Content-Type: application/json" \
-d '{
"word": "serendipity",
"note": "意外发现美好事物的能力",
"sentence": "It was pure serendipity.",
"related_ids": []
}'
补充已有词条(保留原有内容,只补充提供的字段):
curl -X POST "http://127.0.0.1:8765/api/words/12/supplement" \
-H "Content-Type: application/json" \
-d '{
"note": "在旧书店遇到的一本书",
"sentence": "A moment of serendipity.",
"related_ids": [3, 8]
}'
复习 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/review/overview?library_id=1 | 当前词库的分数、进度、趋势 |
| GET | /api/review/next?library_id=1&exclude_id=12 | 随机取下一个复习词 |
| POST | /api/review/{entry_id}?library_id=1 | 提交一次复习结果 |
curl -X POST "http://127.0.0.1:8765/api/review/12?library_id=1" \
-H "Content-Type: application/json" \
-d '{"result":"correct","answer":"意外的发现"}'
result 只接受 correct 或 incorrect。每 5 次复习结算一次,响应里会包含更新后的词条、本次结果和总览。
导入 / 导出 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/export?library_id=1 | 导出词库 JSON 附件 |
| POST | /api/import?library_id=1 | 合并导入词库 JSON |
curl -L "http://127.0.0.1:8765/api/export?library_id=1" -o library.json
curl -X POST "http://127.0.0.1:8765/api/import?library_id=1" \
-H "Content-Type: application/json" \
--data-binary "@library.json"
个人统计 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/profile?library_id=1 | 总览、统计和最近 30 天分数序列 |
| GET | /api/stats?library_id=1 | 当前词库的计数摘要 |
这些接口适合做自己的学习面板、编辑器插件或自动化脚本。
常见问题
数据在哪里?
默认在 %APPDATA%\SeeEnglish\seeenglish.db。卸载会删除这个目录,需要保留时请先导出。
Web 和桌面端的数据是分开的吗?
不是。它们共用同一个本地 API 和同一个 SQLite 数据库。桌面端写入后,Web 刷新即可看到。
为什么关闭窗口后程序还在?
如果你选择“最小化到托盘”,程序会继续在系统托盘运行,本地 API 也会保持可用。需要彻底退出时,请使用托盘菜单里的“退出程序”。
端口 8765 被占用怎么办?
开发环境可以用 app.py --port 8766 换端口;安装版的端口由桌面程序管理,确认没有重复启动即可。
API 能开放到局域网或公网吗?
默认只绑定 127.0.0.1,没有鉴权,不建议直接暴露到公网。如果确实需要,请自行加反向代理、鉴权和 HTTPS。
联系我们
使用、安装或 API 接入遇到问题,欢迎发邮件:
也可以在 GitHub 查看项目动态。