利益相关声明:作者与文中产品有直接的利益相关(开发者、自家产品等)

我一直有个挺尴尬的毛病:电脑里存了几十本英文和日文的原版电子书,但真正从头读到尾的屈指可数。

每次下定决心打开一本原版小说,前两页还能勉强靠上下文猜词,到了第三页,生词一多,阅读节奏就彻底碎了。切出去查完词典再切回来,刚才酝酿的一点点代入感早就没了。后来我也试过买市面上的分级读物,但很多初级和中级读物的故事实在太低龄,读起来像在看儿童绘本,很难坚持下去。

这两年大语言模型出来之后,我第一时间试过让网页端的聊天机器人按我的词汇量写故事。但用了几天就发现两个很别扭的地方:一是在聊天框里刷长文,总有一种在看工作消息的急躁感,完全没有翻书时的平静;二是聊天窗口没有专门针对长篇小说的记忆管理,写到第三章,前面的人物设定就全乱了,语言难度也会不知不觉飘回满篇生僻词的水平。

折腾了一圈没找到趁手的工具,我干脆决定自己动手,用 Electron 给自己写一间安静的本地外语书房,取名叫 Leaflight(叶光书房)。

先把阅读界面做得像一本书,而不是一个聊天框

刚动手写第一版的时候,我花最多时间的其实不是调模型接口,而是调纸张的颜色和翻页的手感。

我自己在电脑前看长文很容易视觉疲劳,所以前前后后调了十套不同的界面材质。白天看书的时候,我最喜欢用暖纸或者竹青这类偏温润的纸张底色;到了晚上关了灯,就切到深海或者静夜这种深色毛玻璃主题。为了防止换主题时某些字看不清,我还专门写了一段测试脚本,把每个主题下的文字对比度都跑了一遍,确保长时间盯着看不会累眼。

在翻页这件事上,我也做了一点可能看起来有点多余、但自己用着很开心的细节:除了普通的上下滚动,我加了仿真卷页、立方体翻转等八种翻页动画,并且做了一个阅读区放大功能。点一下右上角的放大按钮,左边的导航栏和章节目录就会全部收起,整个屏幕只剩下一张干净的书页。哪怕中途调了字号或者换了主题,程序也会自动记住当前读到的那句话,不会因为重新排版而找不到刚才读到哪。

怎么让生成的故事既好读、又不至于写着写着就跑偏

解决了看书的皮囊,接下来最头疼的就是怎么管住大模型的生成质量。

我们平时直接让模型写一篇四级英语水平或者日语 N4 水平的故事,它往往只在前两段听话,后面就开始夹杂各种复杂从句。为了解决这个问题,我在软件里给英语(从 A2 到 C1)和日语(从 N5 到 N1)一共九个等级分别写死了具体的句长和语法约束。每生成完一章,本地代码都会自己先算一遍平均句长、长词比例或者日文汉字密度。如果读完一章觉得还是有点吃力,直接在章节末尾点一下偏难或者偏轻松,写下一章的时候就会自动把句子往简单或复杂里微调一点。

对于学日语的朋友来说,还有一个很实际的痛点是汉字读音。所以在 N5 到 N3 这几个阶段,我让接口在返回正文的同时必须返回对应的假名标注,阅读器会直接把振假名渲染在汉字正上方,导出成 EPUB 电子书丢进 Apple Books 里也能保留注音。

至于长篇连载容易忘记前文的问题,我把每次生成拆成了结构化的数据流:模型每写完一章,除了正文之外,还必须在后台把当前的人物关系变化、还没解开的伏笔和前情摘要单独存进本地数据库里,下一章动笔前先把这份记忆塞回去。这样哪怕一口气连载几十章,剧情也不会轻易断片。我还加了个后台排队的消息盒子,点下连续生成多章之后,就可以切回书架继续看别的书,不用干等着转圈。

把科学常识藏进奇幻故事,顺便练练动笔写字

软件自己用顺手之后,我又往里面塞了两个平时学外语很需要的功能。

一个是科学融合故事。我自己平时很喜欢看带点硬核解谜色彩的小说,所以参考公开的科学课程大纲整理了二十四个涵盖物理、化学、生物和天文的知识单元。比如在故事里,主角需要利用声波反射原理去解开密室里的回声谜题。为了避免模型胡编科学事实,我把客观的科学原理单独做成了每章旁边的本地科学手记,和虚构的故事正文严格分开。

另一个是独立的写作练习台。以前读完外语书很少动笔写东西,真正要备考雅思或者日本留学试验(EJU)的时候才发现提笔忘词。所以我自己在软件里内置了一百八十多道原创的英日写作题,像雅思小作文里的柱状图和流程图,我也直接用原生组件画了出来,不用对着干巴巴的文字脑补图表。写完提交批改后,系统会从语法、词汇、逻辑和通顺度四个方面给建议。为了防止模型在批改时自己编造一段我根本没写过的原话,我还加了一道本地子串校验,只有真正出现在我草稿里的句子才允许展示批改对照。

不用配密钥也能直接看:共享书池与网页在线版

因为我是个人开发者,实在承担不起给大家提供长期免费大模型接口的服务器账单,所以这款工具最初采用了自带密钥(BYOK)的纯本地模式:所有数据都存在自己电脑的 SQLite 里,填进去的 Gemini 密钥也通过系统钥匙串加密保存在本地。

但前两天跟朋友分享的时候我发现,很多人只是想先看看里面的分级小说好不好读,一听说还要自己去申请配置密钥,哪怕软件本身免费开源也直接放弃了。

为了把这个门槛彻底抹平,我这周做了两件事。第一件是在客户端里加了一个基于 GitHub 自动同步的共享书池,里面放好了我和社区读者已经生成好的多部英日分级小说,不填密钥也能直接拉进本地书架离线阅读。比如昨天我刚用四级词汇生成了一本八章完结的校园奇幻小说,讲一个高中生突然觉醒了时间静止和局部降雨的超能力,带着全班同学在魔鬼作息里花式整活,一口气读下来完全不用查词典。

第二件事,是我干脆把前端单独抽出来,部署了一个纯静态的网页在线预览版,并且把共享书池里这六本不同难度的英日小说直接设为了默认书架。这样无论你是用电脑还是手机,不需要下载安装包,也不需要配置任何密钥,点开网页就能直接翻阅这几本小说、切换十套主题和翻页效果。

如果你平时也在学英语或日语,或者对这种本地优先的小工具感兴趣,可以直接在浏览器打开在线网页版体验:https://jayson-sheyue.github.io/Leaflight/ ,也可以在仓库的发布页下载 macOS 或安卓端安装包:Leaflight 开源仓库与在线预览入口

这也是我第一次把自己的业余开源项目整理出来分享,如果大家在体验过程中遇到什么问题,或者有什么想看的外语故事题材,非常欢迎在评论区告诉我,我会挑大家感兴趣的点子生成好长篇放进共享书池里。