ARTICLE 01 · LONG LETTER ON THE SCREEN

本站的界面设计是如何来的

起 · 先有一个名字

这个站是从一个名字开始的:二维猴子打字机。

名字的根是一个经典的思想实验——无限猴子定理。流传最广的表述是:让无数只猴子在无数台打字机上随机敲击,给予无限长的时间,它们几乎必然打出莎士比亚的全部著作。

定稿之前我考证过一次出处,结果发现两件事。第一,这个比喻最早来自法国数学家博雷尔,1913 年,但他说的不是莎士比亚,是"一百万只猴子每天打十小时,一年后能抄出世界上最富图书馆的所有藏书"——而且他的本意是反讽这件事几乎不可能。第二,莎士比亚确实是后世加上去的;而我一开始想用的《红楼梦》,是中文网络又一个本土化改写,没有出处。既然要引用,就用经得起查的。所以副标题署的是:—— 博雷尔,1913。

但这个名字真正属于我的部分,是把"二维"引进来之后的四个拓展:

猴子是二维的——数据、赛博、没有身体。正因为不占空间,它才能被无限复制,"无限只"才成立。这是第一层。可是少了一维的东西,叠多少层也长不出那一维,二维的存在永远无法到达三维。这是第二层,是这个底色里的无力。第三层是:打出来的字虽然是二维的,但字可以有"意义",而意义能越过维度,到达三维的世界。第四层最近才补上,也最直白:我用 AI 开发,每天看着 token 从屏幕里涌出来——这不就是让二维猴子在打字吗。猴子就是 Agent,打的字就是 token。

一个名字,四句话。接下来的问题是:一个网站怎么把这四句话"长"出来,而不是把它们印在页面上。

承 · 把概念翻译成规矩

我给这个站定的第一条规矩是:字体就是语义。等宽字体是噪声和数据,衬线字体是意义和人话。一句产品描述出现在等宽里,它是数据;转成衬线,它是被人认领了的话。不用解释,看到就懂。

第二条是颜色只有两个有名字:青色代表"机器在跑",朱砂红代表"意义"——朱砂禁止当装饰色用,它出现的地方一定是有什么被认出来了。除此之外,全站几乎没有颜色。

第三条是不许有进度。最早的设计里有过"红楼进度条:已输出 N 字 / 不可达",后来全删了。猴子不朝着任何全集努力,它只是打;我不催促,只是看。一个诚实的主页不该假装自己在接近莎士比亚。

[图1] 最早的书稿风原型——太纸面,被否

这些规矩不是装饰风格,是判定标准:任何一个元素,都要能回答"它扣的是四层里的哪一层",答不上来就删。

转 · 走过的弯路

这个站现在的样子,是被否出来的。

第一版是"书稿":米纸、朱砂批注、装订线,很文雅。但它是纸面的美学,而这个概念是赛博的——猴子是数据,不是文房四宝。第二版是"游戏关卡":像素、计分器、关卡编号,太死板,八位机装不下"无限复制"。第三版是"天文图录":铜版刻线、轨道环,好看,但图录终究是纸上的东西,而且整个界面太暗,我自己就不喜欢暗色的界面。

[图2] 游戏关卡版——八位机装不下"无限"

弯路不止在风格。最早我把概念讲成了"五重梗",后来自己觉得说得太满——定理原文不是我的梗,是名字的背景;我的部分只有四个拓展,于是收成"四种写法"。田字格页最早被做成了"整个页面的底纹是田字格",其实我要的只是 2×2 的排布——一个传话的笑话,但也说明一件事:概念在转述中是会变形的,每一轮都得回去对原话。

还有个更隐蔽的问题:怎么表达"偶尔碰出了有意义的话"?最初是计数器,"已命中 N 次"。但我的产品只有十几个,将来也就二三十个——计数器会把"少"变成耻辱。后来改成"余烬":一句有意义的话停留几秒,然后坍缩成一粒微光,沉到屏幕下缘的星带里。不明示数字。三粒是稀疏的夜空,三十粒是星海,同一套视觉,它跟着我一起长。

[图3] 字符海版组件——猴子由字符聚成,又散回字符海
[图4] 机房版组件——定稿的基础

合 · 最后长成的样子

最后定的方案叫"机房阵列",它几乎就是这个概念的字面照片:

一间明亮的机房,打字机工位向远处排开,越远越小,一直排到页顶、淡到看不见——无限不是画出来的数量,是"延伸不到头"的感觉。猴子坐进工位,打一阵字,下班散掉;打字机有时留下等新猴,有时和猴子一起拆掉。工位常换猴,永远在招人。每台打字机用一根绿色的电缆把输出汇进右侧的大屏,屏幕里乱码不停上刷,偶尔——真的只是偶尔——有一句完整的话从乱码里亮起来,转成衬线,染一点朱砂。

你甚至可以按住任意一只猴子。按住它,乱码会停住,它会替你说一句确认的话;松开手,代码继续往上刷,那句话停留一拍,沉进余烬星带。

[图5] 定稿的首页

首页只有这一屏:上面是名字和出处,中间是机房,下面一排四个入口。不翻页,不滚动,没有进度条,没有计数器。看着猴子打很久什么都没有,是这个站的诚实。

尾 · 猴子负责打字,我负责认出那一行

设计到最后一轮,剩下的是四层里最难的一层:意义怎么越过维度?

最早的动画是让那句有意义的话"自己飞出屏幕"——这演错了,那样意义就成了字自带的属性。后来改成:整屏噪声里有一个视线框,只有当你的目光在某一行上停下来,那一行才变成衬线、染上朱砂、获得厚度,穿过维度边界。不被看,它就永远是噪声。

猴子不知道自己在打什么。对它来说,莎士比亚和乱码是同一类东西。意义不在屏幕里,不在 token 里,只在我看见、我停下、我说"这行有用"的那一刻才开始存在。

猴子负责打字。我负责认出那一行。

这个站就是我每天的工作台,现在它是你的屏幕了。