Skip to main content

沙之书 · The Book of Sand

· 6 min read

缘起

之前在 GitHub 上看到有人用 vibe coding 做了博尔赫斯的《阿莱夫》:是一个可交互的网页,页面上有无穷无尽、混乱奔涌的文字,可以通过鼠标操作让混乱变为有序。 当时觉得挺有意思——原来 vibe coding 不只是写业务代码,也能把文学里的有趣的东西做成可触摸的界面。

于是就想着用自己最喜欢的《沙之书》做一个类似的实现。

沙之书

一本无始无终的书。没有第一页,也没有最后一页;页码巨大而混乱,像沙一样数不清。书里的插画,翻过去就再也找不到——「仔细瞧瞧。以后再也看不到了。」

博尔赫斯把无限压进一本实体书:人渴望穷尽它,却注定被它淹没。最终叙述者把它藏进图书馆的某架,不再打开。沙之书的核心,是无限与人之有限的对照:我们面对的是无法被「读完」的世界,而阅读与选择本身,就是与这种无限共处的方式。

这个项目试图用代码重现这种体验:你可以一直翻页,但永远翻不到头。页码是随机的,内容也是随机的,但每次翻页都会生成新的内容。


不仅如此

这个项目在「沙之书」主阅读之外,还做了一组变体,统称「不仅如此」。每一变体都是一本「沙之书」的变奏:有限规则 + 随机生成 = 无穷无尽的内容。它们既是对原文的延伸,也是对当下信息与欲望的隐喻。

当然每个变体都基于有限的资源池(词库、模板、规则),通过随机组合产生无限可能。你刷得越多,就越会发现这些看似不同的内容,其实都来自同一套模板。 我已经尽量用程序来模拟无限,但实际上计算机不能产生真正的无限,每个比特位的状态总和是有限的。

大字报

动作、对象、修饰语从词库里随机组合,生成一墙一墙的标语,字体粗重、排列密集,不断刷新。

集体话语从来不需要无穷多的新词,只需有限的句式与词条反复排列——狂热与口号共享同一套语法。

它提醒我们:那些听起来雷霆万钧的句子,拆开往往只是填空。

电视时代 模仿老式电视频道:新闻播报的标题与城市名、综艺节目的环节、电视剧的桥段,被随机拼成永远播不完的「节目单」。

电视曾是整代人共有的沙之-书;

今天换成了信息流与推荐算法,我们依然在等「下一帧」。内容在变,那种「总还有下一档」的喂养感没有变。

小红书 笔记式的标题、正文模板、话题标签和图片位随机组合,一屏一屏往下刷。

生活方式被拆成可替换的模块:emoji、关键词、固定话术。当「分享」越来越像在填模板,真实经历与表演之间的那条线就越来越模糊。

我们是在记录生活,还是在批量生产「生活感」?

抖音 短视频式的画面元素与文案随机生成,上下滑动即可切换,没有序章也没有终章。无限滚动、即时刺激、每条都「不一样」。

它是注意力经济的沙之书:平台与算法不给你起点和终点,只给你「下一个」。

我们以为自己在选择,其实是在被「下一帧」选择。

消费主义 商品名、品牌、价格、评分、促销标签和广告语随机组合成一张张商品卡片,向下滚动即可无限加载。

货架是无限的,欲望被许诺在「下一件」里满足,而满足本身被永远推迟。

消费主义的沙之-书没有最后一页——只有「加购」和「再逛一会儿」。

疯狂之旅 从数百个旅行目的地中随机抽一个,配上一句随机选中的网红口号(如「我在 xx 很想你」「勇敢的人先享受 xx」),一键或按方向键即可换一站。

远方被压缩成地名与金句的排列组合,打卡变成模板填空。我们追逐的究竟是那片土地,还是那句可以填进任何地名的句子?

它隐喻的是:当旅行也被标准化成「必去」「必拍」「必文案」,体验还剩多少不可替代的重量。

主义主义 各种「主义」——政治、艺术、哲学、生活——以词条的形式随机出现,一个接一个,没有分类也没有尽头。思想被标签化、可无限列举;

我们习惯给一切冠以「某某主义」,仿佛命名即理解。

它追问的是:我们是在用这些词澄清立场、逼近真相,还是在用词条代替思考,拉帮结派,铲除异己,把复杂的世界塞进一个个「-ism」的格子里。

大语言模型 模仿与 LLM 的对话:提问与回答都由有限语料随机组合生成,却营造出无穷对谈、有问必答的幻觉。

语言与知识的沙之书在此时有了新的肉身:它看似无所不答,实则无始无终,没有「第一页」的权威,也没有「最后一页」的定论。

在「智能」面前,人之有限依然成立——我们仍要自己决定相信什么、追问到哪里、在哪一-页合上书。


技术实现

项目使用 React + TypeScript + Vite 构建,所有内容通过算法生成,不依赖外部 API。

每个变体都基于有限的资源池(词库、模板、规则),通过随机组合产生无限可能。

字体使用本地静态资源,确保加载速度。页面支持键盘导航和手势滑动,方便快速浏览。内容生成使用种子随机数算法, 确保每次刷新都能产生不同的结果,但同一页面的内容保持稳定。内容生成使用种子随机数算法, 确保每次刷新都能产生不同的结果,但同一页面的内容保持稳定。


结语

沙之书不会给你第一页,也不会给你最后一页。这个项目亦然:每个变体都可以一直刷下去,没有终点。

愿你在无穷的随机里,偶尔停一下——想想自己正在翻的,究竟是哪一本书。

Refs