首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >用AI写了个小工具waitword | AI Thinking(写代码的时候) 顺便学英语背个单词

用AI写了个小工具waitword | AI Thinking(写代码的时候) 顺便学英语背个单词

原创
作者头像
拉丁解牛说技术
修改2026-07-15 13:12:50
修改2026-07-15 13:12:50
60
举报

最近用AI 基于go开发设计了一个waitword小工具,代码已开源到https://github.com/lukyFun/waitword,3步轻松安装。方便大家在AI coding、在写脚本查问题、日常terminal工作都能无时无刻学一点英语。


一、每天 8 小时盯着终端,大部分时间在等 --- 时间不能浪费!

程序员的工作方式在过去两年发生了一个安静的变化:我们从"敲代码的人"变成了"等 AI 敲代码的人"。用 Claude Code、Codex、Qwen Code ,workBuddy,openclaw这些 AI CLI 干活,一个任务跑几十秒到几分钟是常态;再加上跑测试、跑构建、等部署,一天里盯着终端干等的碎片时间,加起来远比想象的多。

我一直想背单词,也装过不少工具——它们都有一个共同的失败模式:需要我主动打开它。最近用AI实现了个小工具,让英语单词自己送到我的眼前,不断重复出现在我本来就在看的地方,不要求我做任何操作,于是有了 waitword。而且一天工作12个小时,他们就重复的出现12小时,单词再也不会忘记了!

比如我工作的时候,发出指令后,盯着终端等 AI——那就让单词出现在终端的状态栏里。

二、waitword:它是什么

一句话:一张挂在终端状态栏里的单词卡,每 15 秒自动换下一个词。非常轻量,没有后台进程。

在 Claude Code 里等 AI 干活时,底部状态栏长这样:

不用 AI CLI 的场景也覆盖了:tmux 状态栏可以常驻自动轮换;zsh/bash 则是每敲完一条命令,提示符上方出现一张卡:

内置七套词库共 28,000+ 词:四级(默认)、六级、高考、考研、雅思、托福、程序员英语,一条命令切换。想主动检验的时候,waitword quiz 对当天的词做一轮拼写测试,答错的词第二天自动回来找你。

三条命令跑起来:

代码语言:javascript
复制
go install github.com/lukyFun/waitword@latest
waitword now                      # 验证:输出一张单词卡
waitword adapter claude-code      # 接入你的终端,回车确认即可

支持 Claude Code、Qwen Code、tmux、starship、zsh / bash、WezTerm、PowerShell。

项目地址:https://github.com/lukyFun/waitword

三、核心设计:时间即状态

3.1 一行公式,消灭所有状态

做这类工具最自然的思路是:维护一个"当前进度"——现在背到第几个词了,用户看完一个就推进一格。这意味着要有状态存储,要有进程去更新状态,多个界面之间还要同步状态。

waitword 选了另一条路:显示哪个词,是墙上时钟时间的纯函数

代码语言:javascript
复制
index = (自纪元天数 × 每日批量 + (unix秒 ÷ 间隔) % 每日批量) % 词库大小

任何时刻调用 waitword now,它用当前时间算出该显示哪个词,打印,退出。整个过程没有读写任何进度状态。15 秒后再调一次,时间变了,算出来的自然是下一个词。

这一行公式直接消灭了三样东西:进度数据库(不存在)、后台守护进程(不需要,状态栏每几秒拉起一次进程即可,进程活不过 10 毫秒)、状态同步逻辑(没有状态,无需同步)。

3.2 多端天然同步

纯函数设计有个附赠的性质:所有界面天然显示同一个词。Claude Code 的状态栏、tmux 的状态条、zsh 的提示符,各自独立调用 waitword now,但因为输入(时间)相同,输出必然相同。

3.3 每日批次:重复次数才是记忆的硬通货

waitword 设置了每日批次:公式里的"自纪元天数"把每天锚定到固定的 30 个词上,这 30 个词全天循环滚动,约 7 分钟一轮。一个工作日下来,每个词能在你眼前出现几十次。第二天,公式里的天数加一,批次自动前移 30 个词。

3.4 cloze 挖空:无状态也能做"动画"

只看不想,记忆效率有限,所以每第 4 个词做成挖空:先显示 r_______t adj. 有弹性的,几秒后揭晓答案。

3.5 quiz 与全项目唯一的状态文件

被动看终究不如主动写。新增waitword quiz 命令,输入后,可以对当天批次做拼写测试:给释义和首尾字母,你敲出完整单词,答错的词记下来,第二天自动插进批次最前面

四、工程取舍

4.1 为什么是 Go:statusline 给的硬约束

宿主环境给了一个不可协商的约束:状态栏每 5~15 秒就要拉起一次这个进程。这意味着冷启动时间就是用户体验本身——Node.js 起一次 50~100 毫秒还要求用户装运行时,Python 类似;Go 编译出的原生二进制冷启动在毫秒级,且单文件分发,用户拿到一个文件就是全部。

另一个刻意的选择是零第三方依赖,只用标准库。对一个功能边界清晰的小工具,每引入一个依赖都是在给未来的构建失败和供应链风险买期权。整个项目目前约 1500 行,标准库完全够用。

4.2 词库编译进二进制:8MB 换零依赖

七套词库(约 5MB 文本)直接编译进了二进制,而不是运行时联网下载:

优势

代价

装完即用:无首次下载、无网络依赖、离线可用、不依赖任何词库服务器的存活

二进制从 2.5MB 涨到约 8MB

4.3 改用户配置文件的分寸感

接入终端意味着要往用户的 ~/.zshrc~/.claude/settings.json 这类文件里写配置。自动改用户的配置文件是件需要分寸感的事,waitword 的规则是:

  • 写入前先备份原文件;
  • 自己写的内容用标记块包裹,重复执行不会写第二份,--remove 只删标记块内的部分;
  • JSON 配置做按键合并,用户原有配置一个键都不动;卸载时如果发现配置不是 waitword 写的,拒绝删除;
  • 两个例外坚决不自动改:WezTerm 的 Lua 配置以 return config 结尾,往后追加代码是语法错误;PowerShell 的 profile 路径因版本而异——这两家只打印片段让用户自己贴。

waitword uninstall 则把这些全部倒放一遍:清数据、清配置、最后删掉二进制自己。能一条命令装上的东西,就该一条命令干净地离开。

五、安装与项目地址

代码语言:javascript
复制
go install github.com/lukyFun/waitword@latest
waitword adapter claude-code     # 或 tmux / zsh / qwen-code / ...

项目开源在 GitHub:https://github.com/lukyFun/waitword

(中英文文档,预编译二进制覆盖 macOS / Linux / Windows)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、每天 8 小时盯着终端,大部分时间在等 --- 时间不能浪费!
  • 二、waitword:它是什么
  • 三、核心设计:时间即状态
    • 3.1 一行公式,消灭所有状态
    • 3.2 多端天然同步
    • 3.3 每日批次:重复次数才是记忆的硬通货
    • 3.4 cloze 挖空:无状态也能做"动画"
    • 3.5 quiz 与全项目唯一的状态文件
  • 四、工程取舍
    • 4.1 为什么是 Go:statusline 给的硬约束
    • 4.2 词库编译进二进制:8MB 换零依赖
    • 4.3 改用户配置文件的分寸感
  • 五、安装与项目地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档