+++ title = '极客死亡计划书 V' subtitle = 'Stirring up some chaos.' slug = 'site-report-5' tags = [ "写作","虚构入侵" ] categories = '极客死亡计划书' date = 2026-03-08 20:27:07 draft = false toc = true toot = 'https://akk.eltr.ac/objects/f35a0017-8596-4c78-97ef-ec20560aac50' +++ 在周末打开终端,`cd` 进极客死亡计划的项目目录,然后打开 Neovim 开始在自己的代码里到处晃悠,删删改改,对我而言是很放松的体验。我时常在浏览器里注意到某个网页元素,回忆起源代码的位置,立马打开编辑器看看有没有需要去毛球(lint)的地方。这种感觉,其实很像是园丁在自己的花园里闲逛,做些简单的修枝剪叶吧? 总之,某个寻常的周末,我冲了一杯非常好喝的瑰夏,在书桌前坐下,开始在代码之间漫游,发觉修枝剪叶的工作都做完了,此时,一个积压在脑后已久的想法突然涌现。我拿起铲子,盯着其中两个花圃,兴致勃勃地说道:“好,那就开始铲土,重新想象园林设计吧!”——这两个花圃就是[前不久](/weekly/57/#博客的内容分区变动)才被移植过的「议论」和「散文」。是的,我把他们又合并了。 --- ## 用词说明 为了避免误解,我们先理清一些术语。 下文的「分区」指 Hugo 的 [section](https://gohugo.io/quick-reference/glossary/#section),也就是顶层的内容目录,比如 `/posts` 下有 `/posts/xxx` 和 `/post/yyy` 等页面,这个 `/posts` 就是一个分区。 「分类」是指 Hugo 的 [taxonomy](https://gohugo.io/quick-reference/glossary/#taxonomy),本站有两种分类,一是「[文章系列](/categories/)」,二是「[标签](/tags/)」。不过,出于一些历史原因(其实就是我懒得改),「文章系列」这个分类的代码写作 `categories`,本意是分类。 --- ## 命途多舛的极客死亡大地 最初,极客死亡计划上只有一个内容分区,即 `/posts` 分区,所有的文章都放在这下面,其他的页面是如 `/about` 和 `/linkroll` 这样的顶层页面。那是段纯真简单的时光,直到某个名叫 Eltrac 的疯子突然决定要把自己写的~~垃圾~~小说都搬过来,于是网站上就多了一个 `/fictions` 分区。 骇人听闻的事件没有停止,这个疯子决定要给自己读过的每一本书在网站上留一个位置。他先对[稻草人](/weekly/)下了手,心狠手辣地把「书评」分区从周刊手里夺走了,把那些残缺的短评放进了他引以为傲的、单独的 Markdown 文件里,大喊着「原子性!」「双向链接!」的口号,使用名为短代码的邪恶武器将书评嵌入了稻草人的身体里,随后又在他飘忽不定的思绪影响下,把那短代码从整个~~奥兹国~~代码库里剥去。由于操作习惯拙劣,Git 历史的可读性极低,他的罪行也就没有留下证据,那些被他摧残的文件都改了名,或者进了垃圾桶,连 `git blame` 的机会都没有! 简而言之,极客死亡计划又多了一个 `/library` 分区,纯真简单的小骷髅就这么被知识玷污了,眼神里失去了光! 这便是「议叙文大分裂事变」的历史背景,在那之后,Eltrac 短暂地休息了一会儿,可没过多久,他便又舞起键盘,对网站历史最悠久的古迹下了狠手。一向忠心耿耿 `/posts` 分区被他无情地斩成两半,有超过半数的页面作为 `/essays` 分区的新臣民被分离了出去,就这样背井离乡。大魔头对此的辩解是: > 你也可以理解为,我把文章分成了 T 和 F 两部分(仔细想想,其实更像是 J 和 P 的两部分,判断和感知的区分)。做这个拆分是因为,我发现自己的 T 和 F 可能会在某个时间段宕机其中一个,把这个分开能让我更安心地在情绪崩溃时发疯、在好奇心超负荷运转时写一写没人关心的新话题。 {{< right "——《[稻草人周刊 Vol.57](/weekly/57/)》" >}} 何其可悲!何其可悲!仅仅是因为他自己沉迷于*愚蠢的*大众心理学理论(MBTI),就祸害了全体网站公民的身心健康!更不用说,此举损人不利己,如今大魔头每次在写作时,都会纠结要把他拙劣的文字放在哪边,`/essays` 和 `/posts` 说起来有别,但实际上本是同源,都是他那扭曲头脑不能停止转动的产物。不过,我们也不要太苛责这个敌人,毕竟他自己也尝到了苦头,那便是永远不能停止分类和修整的痛苦,如西西弗斯一般永世不能停下!别听那个叫加缪的老头儿乱说,天天推石头可不幸福! 终于,感谢上天的宽恕,误入迷途的魔头 Eltrac 得到了分类之神 cartlE 的指点。cartlE 刚莅临网站,就立刻发觉稻草人不应与 `/posts` 的子民待在一起。看着 Eltrac 在代码里给稻草人周刊写下的各种特例,神明 cartlE 皱起了眉头,发出疑问:“你是在解鸡兔同笼问题吗?把鸡放鸡笼里,兔放兔笼里不行吗?” 于是,`/posts/weekly` 从极客死亡计划的土地上消失了,取而代之的,是新成立的 `/weekly`。天下苦稻草人周刊久矣!为了恕罪,也向 cartlE 神明展示自己的悔意,Eltrac 立马给稻草人修好了[黄砖路](/weekly/),供他自由通行。 很快,高明的 cartlE 发现了 `/posts` 和 `/essays` 之间的裂谷,便命信息与沟通之神墨丘利去唤来双子座,让它用蟒蛇架起桥梁,把两块大陆合二为一了。终于,失散已久的家人又重聚了,现在 `/posts` 和 `/essays` 不再分裂,他们有了共同的新名字——`/article`。墨丘利还提议,尽管两个大陆合二为一,但旧的居民仍然保留旧的地址,避免书信不能送达,尤其是来自联邦宇宙和万维网提及的消息。[^1]新的居民以 `/article/xxx` 为地址,而旧的居民仍然保留 `/essays/xxx` 和 `/posts/xxx` 的地址。 为了展示自己真的回心转意,大魔王 Eltrac 主动提出,应该把 `/fictions` 分区更名为 `/fiction`,因为目前的其他分区分别是 `/article` `/weekly` 和 `/library`,只留一个复数形式的名字有些眨眼。神明 cartlE 听完,满意地离去了,并留下秘籍供 Eltrac 学习良好 Git commit 习惯的艺术。 就这样,暮光闪闪和他的小伙伴们终于让混沌之王无序痛改前非,懂得了友谊的魔力,小马国又恢复到了祥和之中。 *等等,你串台到哪儿去了?* ## ESC to Reality *我的天哪,究竟是什么样的读者才能读懂上面那一大坨自我意识过剩的产物……* 让我按下 Escape 键(指切换为 Neovim 的 `NORMAL MODE`,正常模式),来认真解释一下极客死亡计划目前的内容分类设计。 首先,博客目前只有四个分区: 1. [文章](/article/):一般来说,我突然想写点什么东西发出来,都会放在这。 2. [周刊](/weekly/):每周一更新的刊物,包含这周读到的有趣的文章、听到的播客和发现的不错的项目等等,是我整理和收集信息的地方。 3. [书目](/library/):我读完一本书都会写书评放在这里。 4. [虚构](/fiction/):我写的各类小说。 其他分区几乎都是不言自明的,只有「文章」需要特别说明。正如《命途多舛的极客死亡大地》一节中所述,这个分区原本是 `/posts`,一开始被称作「议叙」页面,因为它既包含议论文,又包含叙事文和散文。后来,我觉得这两种文体或许需要分开,于是新增了一个 `/essays` 分区,把议论文都放到这里来。 其实在一开始创建 `/essays` 分区的时候,我就发现了问题,我很难判断一篇文章的归属,我记得当时我花了一个下午的时间给文章重新分区。这种分区在后来又造就了更多的问题,比如:同一个「文章系列」应不应包含来自两个分区的内容?我有一个文章系列叫《代码炼金术》,这里面可能包含我尝试新技术的经历和感受,重点在于「我做了什么」,写得比较散,应该归为 `/posts`;而有的时候,我可能发现了一种新的构建软件的方式,比如[用 Lisp 而不是 HTML 写网页](/posts/webpage-as-lists/),这种有深思熟虑且形成可复用的体系的文章,似乎应该归为 `/essays`。可是,它们都是和写代码相关的,不应该都放到《代码炼金术》这个文章系列里吗?如果一个文章系列里既有议论文,又有记叙文,那不是乱套了吗? 就算不考虑文章系列,确定一篇文章属于 `/posts` 还是 `/essays` 也不容易。前者是写「我做了什么」,后者是写「我思考并的出了什么」,实际上有相当一部分文章的写作逻辑是「我做了一件事情,并且借此有了新的思考,产生了新的想法」,那这还要怎么分区? 从盒子里跳出来想问题:给议论文和记叙文分区真的是有必要的吗? 最后我接受了自己的风格就是叙中有议、议中有叙的,于是把两个分区合并到了一起。不过周刊里的东西实在是太杂了,给它单独设立分区会更合理。 ## Tag, You're It 你可能会以为,这个前不久还重新装修过[标签](/tags)和[文章系列](/categories)页面的 Eltrac,又要阴晴不定地把标签和文章系列的其中一个分类给扬掉了,毕竟已经有分区了,再算上这两个分类,网站实际上有三个维度的分类,这太复杂了! 当然,看到「你可能会以为」几个字就知道,我不会这么干。 保留文章系列其实很好理解,保留标签是为了什么? 之前在 [Jim Nielsen](https://blog.jim-nielsen.com/2022/visualizing-my-blogs-links/) 的博客上读到过这样的观点:你不需要创建标签,链接就是标签。这里的链接是指在文章中链接到的其他文章,文章之间相互引用所形成的关联,就足够让文章物以类聚了,不需要手动打标签,做额外的分类。这的确是很诱人的想法,所以我给博客做了[视觉化的双向链接图谱](https://www.geedea.pro/graph.html),然后就把「用链接替代标签」这事抛之脑后了。 不移除标签,首当其中的原因就是,双向链接图谱虽然很酷,但是不方便查询。如果真的要找我写的有关某一主题的文章,到像海一样的双链图谱里去找是低效的,这些文章之间也不一定有超链接关联。 再者,我的博客也不是维基百科。据说从维基百科的某个页面开始,一直点击页面中的第一个超链接前往不同的页面,最终会到达「哲学」这个词条。我添加超链接的习惯不如维基百科编辑者那样专业、审慎和克制,没法做到这么严谨的关联,说实话,也不需要这样严谨。 不过,要说最重要的原因,那还是因为我想要按照主题划分文章。我是个兴趣泛滥者,如果你关注我的博客足够长的时间,就会发现我既谈游戏开发,又谈前端开发,还做命令行工具;我不仅写计算机,还常常观察人类,并写下思考;我不仅对社会学、心理学和经济学这些科学感兴趣,还对文学、哲学和语言学感兴趣,我甚至还探索神秘学,会研究占星和塔罗牌;即便是文学这一个类别,我也会涉猎法国文学、拉美文学、日本推理文学和各种杂七杂八的门类。 五花八门的内容要是不按照主题分类,恐怕读者难以把握脉络,也难以找到自己真正感兴趣的内容。假设一个读者只是因为神秘学而关注我,他就可以去阅读[#神秘学](/tags/神秘学/)标签下的内容。标签实际上提供了内容的切片。 此外,并不止是文章,在我的设想里,网站的所有内容都通过标签来归类,而文章系列只是给文章的。如果你打开网站的标签页来看过,就可能发现 [#心理学](/tags/心理学/) 这个标签下不仅有我写的文章,还有《[被讨厌的勇气](/library/2024/被讨厌的勇气/)》《[天生不同](/library/2025/天生不同/)》《[如何在黑暗的房间里找到一只猫](/library/2025/如何在黑暗的房间里找到一只黑猫/)》等书籍的书评,实际上小说和周刊也按照标签归类。 ![网站页面,列出了同一个标签下的所有内容,包括普通的文章、周刊、小说和书籍,这些内容是分开罗列的](https://img.eltr.ac/geedeapro/article/site-report-5/term-page-demo.png "[#内阻力](/tags/内阻力/)标签页的截图,截于 2026 年 3 月 8 日") 不过,现实有些残酷,从 [GoatCounter](https://stats.geedea.pro/) 的统计数据来看,几乎就没有访客会点开任何一个标签页面,我设想中的「读者可以按照自己感兴趣的话题查看内容」这个需求用例实际上根本不存在。对我自己而已,我也很少在某天突发奇想「要不要看看自己写过什么和占星有关的文章呢?」,然后点开标签页面查看,对我自己的用处也不大。 所以,为什么要留着标签这个东西呢?管理标签费事费力,为了打标签,每次都要先查看已有的标签,用人眼浏览一遍,看看有没有能对得上的;还要克制住自己新增标签的欲望,避免出现太多只有一两篇文章的孤立标签;更麻烦的是,还要记住各个标签的语义,不能混用。标签也很难体现出层级关系,却在很多场景下不能避免进行细分,比如博客就同时存在「神秘学」「占星」和「塔罗」三个标签,而第一个标签实际上是后两个标签的大类——能不能合并成一个呢?它们真的经常出现。然而,有时候我只是广泛地谈一谈神秘学,比如《[好为人师如何帮我反思现代科学的局限性?](/essays/好为人师如何帮我反思现代科学的局限性/)》这篇文章,仅仅是在论述「适当的玄学和迷信为什么是有用的,甚至能达到理性的科学知识达不到的效果」这个观点;有时候,我又是在具体地谈[塔罗牌里某张牌的含义](/categories/塔罗牌漫谈/),这就没必要打上更宽泛的「神秘学」标签了。[^2] 无论以上这些问题的答案如何,都不能发现,标签的存在本身就引发了许多管理难题,而它带来的实际价值却非常少。很明显,我应该把它删掉。 可我偏不。 为什么?答案其实相当不理性,但也相当具有说服力:我不想把它删掉。我想我可能是喜欢标签体系带来的秩序感,也需要建立和维护秩序的感觉。另外,我总觉得,网站的分类就和图书馆一样,大部分找书的人其实都是找到具体书籍的编号之后,直奔书本所在地,但也不能忽视,有很少的一部分人愿意在某个主题的书架附近漫游,发现从未见过的书本。所以,标签可能大多数时候派不上用场,但对我而言,是不能没有的。 ## 最后 所以,这大概就是新的秩序了。 《极客死亡计划书》系列文章的最后,还是要给下一期留个引子。我正在思考博客的交互设计。一两个月前就有关注我的读者可能有印象,以往博客文章的底部有一个「心脏」按钮,将鼠标移上去,显示的文字是「为这篇文章献上心脏」,点击之后,心脏图标会变红,文字会变为「你已经献上心脏了」。这其实是点赞按钮,任何人都可以点击它,让点赞数量增加 1。并且,读者点赞之后,页面的最下方会出现一整排「已经收集到的心脏」,有多少点赞数就有多少心脏。我印象最深的是,有一篇文章的点赞数量超过了 20,当时页面下面非常壮观。 ![图片最上方是三个按钮,一个评论按钮、Webmention 按钮和「献上心脏」按钮。心脏的数量是 26,页面下方摆满了人体器官。](https://img.eltr.ac/geedeapro/article/site-report-5/offer-up-your-heart.png "旧的文章互动区") 可惜,「献上心脏」随着[评论系统的移除](/posts/site-report-4/)一同消失了,一直没有加回来的原因是,我在纠结如何把本身就有些复杂的新交互区设计得更简洁一些,增加元素不太明智。再者,现在博客本身也会同步来自联邦宇宙的点赞,功能上有些重叠。 不过,我想我大概还是会想办法把「献上心脏」加回来的,因为我的确需要一些实在的反馈,不只是访问统计数据。说实话,现在会在联邦宇宙上点赞和留言的读者不算多,至少我很久没看到点赞的数量超过 10 了。尽管,最健康的态度应该是完全不在乎这些数据,只关注和真实的人建立起的链接,但…… 我想我还需要再思考一下。 以前,网站的标签页面还有一个操作按钮,是一只乌鸦,按下之后会隐藏当前页面下的所有「稻草人周刊」。当时这么设计,是因为稻草人周刊混杂在文章分区内,本身的内容又很杂,容易让人抓不住重点,所以提供了一个筛选功能。当时我还费心设计了动画,把鼠标移动到乌鸦头上,页面里的稻草人周刊链接就会闪烁,点击之后这些链接就会收缩起来,直到消失;再次点击按钮,这些链接又会在入场动画之后出现。由于现在周刊是单独的分区了,没有混杂在文章里,这个按钮也就不再需要了。 这些好的改动,似乎磨灭了一些个性,有些不符合我在《[「极客死亡计划」的设计哲学](/essays/极客死亡计划的设计哲学/#8-适当地表达个性)》里提到的第八项原则。当时举的例子里,还留下的就只有 404 页面和 Batrick[^3] 了。 这些设计的去留和增改的确需要好好思考一下,不过这就是下期的内容了。 回见! [^1]: OK,我知道我有点放飞自我了,所以我~~暂时脱离精神分裂状态~~来解释一下,这里说的是:我用 Gemini(双子座)生成了一个 Python(蟒蛇)脚本,让它把两个分区合成一个了,之所以提到墨丘利(Mercury),是因为双子座的守护行星是水星(Mercury)。由于 Webmention 依赖 URL 标识源地址和目标地址,如果改了地址,仅仅作重定向是不够的,会导致旧的 Webmention 失效,除非重新发送一遍,所以就用 Python 脚本给每篇文章都添加了 `url` 属性,这样就算文件放在 `/article/xxx.md` 下,URL 也还是 `/posts/xxx` 或者 `/essays/xxx`。 [^2]: 不要建议我用大语言模型自动打标签,如果我不能清楚明白每个标签的具体语义,那做分类还有什么意义?为什么要为了支撑一个已经丧失了意义的事物的存在,而浪费大量的算力? [^3]: 如果你把页面往上滚动,就会看到一直蝙蝠从页面顶部飞下来,它是「返回顶部按钮」。点击它,Batrick 就会带你上去。