从一堆电子书开始
- 2026-11-14 20:57:32
01 书多到看瞎眼,却没有一个书架
我有一堆各种来源的电子书,很多,多到能看瞎眼睛的那种。这大概就是某种收藏癖吧。一直以来都是有空随便找一本看看,还经常是看几节就关了,然后就没有然后了。想想还是让 WorkBuddy 帮我整理一下。我先先从两个文件夹开始:一个叫「261本豆瓣高分」,一个叫「7762部epub格式中文电子书大全」,里面的书有各种格式,跟里面到底有多少本早对不上了,扫完是八千零六十一本 epub,当然还有一堆乱七八糟格式的。
以前想找一本,必须得知道书名或者部分名字,然后用Everything 找,这倒也快,就是总觉得哪里不对。
上一篇里,第一句话我打了删、删了打,憋了十分钟。这次没有。我把两个路径直接递了过去。
「我递过去的第一句话,大意是:把这两个文件夹里的 epub 按题材分好,提出封面,做一个点开就能看的目录页。」
这次还是一句大白话,但带着真东西:真实的文件夹、真实的文件、我要的结果。书名有多乱不用我描述,它自己去看。这跟上一篇那张排班表是一个道理:需求不一定要写成文字。
02 它先没动手,先给了一张分类表
它先给了一张规则表:十六个类,按书名和文件名里的关键词命中归类,越具体的排越前,没命中的落到「文学小说」。然后跑了一遍预览,只报结果,一个文件不动。
我盯着表找了几处拿不准的——武侠该不该单拎出来,「科幻·奇幻」放一起行不行——在对话框里说,它改。改完才动手。
八千零一十本归了位;五十一本跟豆瓣那批完全重复,MD5 核过才清掉;还有十一个「假 epub」,后缀是 .epub,其实不是压缩包,提不出封面,也照样归了位。封面提出来七千九百一十四张,一百零三兆。

▲ 第一版封面墙。书第一次有了封面,也第一次排成了一排
这一步有点歪打正着。上一篇我信了三句「已验证通过」,同事一用就报错,之后我把规矩写死:先给我看,别急着做。后来查重、删书、导入,全按这个来。
03 数字是会变的,得有人一直数
后来又添了几批,库里到了一万一千五百三十七本。十一月十二号,我打开目录页,页头写着一千四百九十九本。
我去数目录里的文件,还是一万一千多。
不是书丢了。清单里存着绝对路径,其中一千四百九十九条还指着早期那块 F 盘;重建目录页时,脚本拿「文件还在吗」过了一遍,把这批全静默丢掉了。文件好好地在 D 盘躺着,只是清单说它们不在。
改法也笨:按「分类书库」后面的相对路径重新定位,回写清单;日志里加一行——修复 X 条,丢失 Y 条。Y 不是 0,就说明真有东西没了。
1. 8061 扫出来的第一堆
2. 8010 第一批归档
3. 11537 后来添到这个数
4. 1499 页面只肯显示这个数
5. 11499 查重之后
6. 11523 现在
我用的还是上一篇那个笨办法:改完不看它怎么说,只数一个能看见的结果。上次数的是 Excel 里一千零七十五条记录,这次数的是文件个数。不一样的是,这次不用等出问题才数。
04 一个能双击打开的书架
目录页是本地的一个 HTML:封面墙、分类筛选、搜索、排序、详情弹层。点封面进阅读器,左右键翻页、A± 调字号、Esc 退出;关掉再打开,自动跳回上次读到的那一页。

▲ 点开一本就能读。翻页、字号、进度都在这一屏里
功能不是一次到位的。键盘翻页失灵,是书页渲染在 iframe 里,焦点一进去外层收不到按键;阅读进度也没存浏览器——exe 每次端口随机,地址一变本地存储就丢——最后写进了书库旁的一个 JSON 文件。
打包成一个八点四兆的 exe,双击是独立窗口,没有地址栏,关窗即退。它必须和「分类书库」同目录:有一版留在打包目录里,双击只弹个提示框等着我,我一度以为是端口没起来。
原理我依旧说不清,但我知道哪里会坏:点过书页再按左右键,重开一本书看进度回不回得去。这几下我自己点得出来。
05 那天下午,从十二点四十八改到五点零二
十一月十一号,我给它加了一个「导入书籍」按钮。就这么一个按钮,折腾了一整个下午。
双击 exe 没反应;窗口出来是空白的;开三秒自己关了;选文件夹的对话框躲在窗口后面;好不容易选完,窗口又闪退了。我一遍遍把日志拷给它,它一遍遍重打包,我再双击一遍。
根因翻出来,没有一个是我猜得到的:窗口程序里标准输出是空的,第三方库写一行日志就崩;系统代理连 127.0.0.1 也劫走;调系统 API 没声明参数类型,一个 -1 被截成无效句柄,对话框怎么调都置不了顶。
最后不是修好了,是不要了:把系统对话框换成页面里的文件夹选择器,目录列表由本地服务给,选完就在页面上点确认。它渲染在应用窗口里,不可能被挡住。

▲ 页面内的文件夹选择器。绕了一下午,答案是不弹对话框
— — — 有些问题不是修不好 是本来就不该在那儿修 — — —
上一篇里我写「先让它跑起来,再让它长对」,那时说的是需求;这次说的是方案本身。
06 慢也是错,删要留退路
书多了之后,打开选择器要等一两秒。我没说「优化一下」,只问了一句:打开 D 盘根目录要多久。卡住的时候八成是我没说清,这次我给它一个能测的数。
它把递归扫整棵目录树改成只扫一层,不预读。D 盘根目录从七百五十到一千五百毫秒,变成一百四十七毫秒。导入也改到后台,按钮上实时显示「导入中 12/50:书名」;目录页从「加载更多」改成固定分页,一页一百二十本,九十七页。
十三号早上又提了一个小改动:导入别把源文件搬走,拷贝一份进库。原来是移动,选错目录那个文件夹就空了。改完只有「从外面拿书进来」是拷贝,库内改分类仍是移动。它没提醒我,是我自己想到的——上次连「出库单要几张」都是用烦了才想明白。
查重同理。一万一千多本、二十点六 G,先按大小分组,只有一样大的才算 MD5,最后只读了四百一十八个文件,找出三十七组重复、三十八个冗余件。我也没让它直接删:先出报告,我确认,再加参数才动手;动的时候是移到「_重复书籍备份」里。
07 我给它起了个名字
上一次做完两套系统,最不踏实的不是 bug,是很多「当时为什么这么定」已经想不起来了。使用说明书是回头补的。
这次我把整套做法收成了一个 Skill,名字叫「阿东哥的图书库」。
我原先以为 Skill 就是几句写给 AI 的交代。做完才明白不是:它是把「这次怎么干的」连同「在哪儿摔过」一起打包,让它下次默认会做。包里四样东西——SKILL.md 写什么时候用、怎么跑、有哪些规矩;scripts 放建库、重建目录页、查重、打包的脚本;assets 放页面模板、离线阅读器和图标;references 两份文档,一份记数据格式和接口,一份按症状记坑:空白窗口、对话框被挡、总数突然变少、选完文件夹闪退,每条都写着现象、根因和现在代码里怎么处置。

▲ 一个一百六十八 KB 的包:说明书、脚本、模板、踩坑手册
让它打包的时候也摔了两次。多带了一个图像库,exe 从八点五兆涨到二十七兆,去掉才回去;打包前没清干净,把测试留下的缓存文件一起塞了进去。最后它拿六本样本从头跑了一遍:预览分类、建库、提封面、生成目录页、服务接口、查重、打包、重复启动,全过。
名字原来叫 ebook-library,后来我让它改成「阿东哥的图书库」。名字一写上,它就不像一堆脚本了,像我自己的一个家伙事儿。下次再有一堆散书,不用重新解释背景,说一句「整理电子书」它就接得上。
写这篇稿子也用了同一个道理:上一篇存在资料库里,我先让它去读一遍,文风才对上。开头那句「我还是不会写代码」,就是这么接上的。上下文能留下来,人就少说一遍。
但 Skill 不替我判断。十六类关键词是我定的,分错一本还得我改;「先报告再动手」这条规矩也是我写进去的。它记的是我怎么干活,不是替我决定干什么。
— — — 上一篇我说,难的是把一件干熟了的事,一句一句说清楚。 这次想补一句: 说清楚之后,还得让它下次不用你再说一遍 — — —
08 我在这件事里干了什么
这十几天,我还是一行代码没写。干的还是那些:
1. 想清楚要什么,说成一句人话
2. 把真实的文件夹、真实的清单交出去
3. 先要一份预览,确认了才让它动手
4. 数字一个一个核,功能一个一个点
5. 不可逆的操作,先出报告,再留备份
6. 它说修好了,我双击一遍
7. 把踩过的坑写下来,让它下次接着用
没有一件是技术活,但没有一件能省。
跟上一次比,多出来三条:信它说通过,变成自己数一遍;修症状,变成换方案;做完就完,变成做完要留得下来。一千四百九十九那次是我数出来的,它没报错,页面也没崩,只是少了一万本。
上一次留的是两套在跑的系统,这一次留的是一套能再用的做法。
09 还是不会的那些
不懂原理,还是最实在的短板。Win32、COM、ctypes、进程和窗口,我依旧不懂;每次修复最后都靠日志、截图、真点一遍。窗口为什么三秒就关、代理为什么连本机也管,我知道答案,换个地方再遇到,多半还得再问一次。
「会用工具不等于会判断,能修好不等于懂原因」,这句话还写在笔记本第一页。这次没划掉。
现在书架上是这样:一万一千五百二十三本,十六类,一万一千四百二十八张封面,二十点六 G。光「文学小说」就六千八百四十五本。exe 八点四兆,那个能带走的包一百六十八 KB。
我双击开了一次,封面墙出来,随手点开一本,翻了两页,关掉。上次第一版能登录时,我点开手有点抖;这次没有。不是它做得更好了,是我知道它怎么坏的,也知道坏了该去哪儿看。
这十几天常想起的,不是封面墙第一次亮起来,是十二号那天,我盯着页头那个一千四百九十九,又去目录里数了一遍。
上一篇结尾我写:难的不是代码。现在想再往前挪一点:难的不是让它做完,是做完之后,我还看得懂它做了什么。
记于 2026 年 11 月 13 日
如果你手上也有那么一个「一直想整理、一直没动手」的文件夹,欢迎在留言区聊聊。下次我想试试数量更多跟复杂的家庭照片整理,有思路的欢迎留言
微信扫一扫 · 添加人工客服
QQ扫一扫 · 添加人工客服