SeeEnglish 文档

从第一次打开,到把自己的工具接上本地 API。SeeEnglish 是一个本地优先的英语语言索引: 没有账号,没有每日任务,所有数据都保存在你的电脑里。

文档概览

SeeEnglish 由桌面程序和本地服务组成。桌面程序负责记词、复习、词库和个人页面; 本地 API 负责读写 SQLite 数据库。Web 页面和桌面端共用同一套数据,不需要同步。

本地优先:默认只监听 127.0.0.1,没有账号系统, 学习内容不会上传到云端。API 默认不需要鉴权,请不要把本地端口直接暴露到公网。
项目说明
桌面程序Windows 10 / 11,当前用户安装,支持系统托盘保活
本地 APIhttp://127.0.0.1:8765/api
数据目录%APPDATA%\SeeEnglish\seeenglish.db
当前版本1.0.0

安装

在 下载页 下载 Windows 安装包,双击后按向导完成安装。

  • 安装到 %LOCALAPPDATA%\Programs\SeeEnglish
  • 当前用户安装,不需要管理员权限
  • 默认创建桌面快捷方式和开始菜单入口
  • 安装完成后可以直接启动,不需要另外安装 Python、Node.js 或浏览器扩展
SmartScreen:安装包目前没有代码签名,Windows 可能提示“发布者未知”。 点击“更多信息 → 仍要运行”即可。安装包来自官网的正式下载地址。

首次启动

双击桌面上的 SeeEnglish。窗口会立即显示预加载动画,同时启动本地 API; 准备完成后自动进入主界面。首次启动会在数据目录创建空白数据库和默认词库。

主界面左侧是记词、复习、词库、个人四个入口。你可以直接从“记词”开始, 也可以先在“词库”里看看默认词库。

卸载与数据

可以在 Windows 设置的“应用”里卸载 SeeEnglish,也可以从开始菜单的 SeeEnglish 文件夹运行卸载程序。

卸载默认会删除:

  • 安装目录中的程序文件
  • %APPDATA%\SeeEnglish 里的数据库、设置和日志
  • %LOCALAPPDATA%\SeeEnglish 里的缓存
  • 桌面、开始菜单快捷方式和卸载注册项
没有“保留数据”选项。卸载即清空本地数据,操作不可恢复。 如果需要保留词库,请先在词库页导出 JSON 备份。

记词

记词页是 SeeEnglish 的入口。输入一个单词,应用会尝试匹配词库里的已有词和词形变化,例如复数、过去式、现在分词和不规则形态。

新建或补充

  • 没有匹配时,可以把它作为新词条收录。
  • 已有词条时,按钮会变成“补充到词条”,不会重复创建。
  • 词条可以保存个人联想、例句和关联词。

关联词

关联是单向的:如果 input 关联了 out,在 input 里会看到 out, 但 out 不会自动出现 input。在词库展开词条后点击关联词,会跳到目标词并自动展开。

复习

复习没有每日任务,也没有强制性队列。进入复习页后,会随机遇到一个词:

  1. 先写下你记得的意思、关键词或画面。
  2. 翻开记录,查看词库里的联想、例句和关联词。
  3. 自己判断“想起来了”或“还差一点”。

每个词每 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 URLhttp://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 接入遇到问题,欢迎发邮件:

we1258357219@163.com

也可以在 GitHub 查看项目动态。