<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Nalanyinyun&apos;s Library</title><description>纳兰音韵的大图书馆</description><link>https://nalanyinyun.work/</link><language>zh_CN</language><item><title>频响、动态与不可逆损失</title><link>https://nalanyinyun.work/posts/%E9%A2%91%E5%93%8D%E5%8A%A8%E6%80%81%E4%B8%8E%E4%B8%8D%E5%8F%AF%E9%80%86%E6%8D%9F%E5%A4%B1/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E9%A2%91%E5%93%8D%E5%8A%A8%E6%80%81%E4%B8%8E%E4%B8%8D%E5%8F%AF%E9%80%86%E6%8D%9F%E5%A4%B1/</guid><description>为什么音乐听起来刺耳、发闷，缺频响？也许这里会有一点答案</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;导论&lt;/h2&gt;
&lt;p&gt;我们讨论音质时，往往会先想到播放器、耳机、音箱，或者 DAC 与放大器。但在很多情况下，真正决定听感的，可能早在音乐被播放之前就已经发生了。&lt;/p&gt;
&lt;p&gt;同一首音乐，在不同平台、不同发行版本之间，可能会表现出完全不同的频响、动态与空间感。有些版本听起来具有冲击力，却在响度归一化之后显得扁平而疲劳；有些版本高频明亮，却伴随着难以缓解的刺耳感；还有一些作品，即使设备本身没有明显问题，声音依然拥挤、混浊，难以分辨不同乐器与人声的位置。&lt;/p&gt;
&lt;p&gt;这些现象并不总来自回放设备。&lt;/p&gt;
&lt;p&gt;在数字音乐的发行链路中，从混音、母带处理、动态压缩，到有损编码与流媒体平台的响度标准，都会对最终听感产生深远影响。其中一些变化是可逆的，例如均衡器能够部分修正频响倾向；但另一些损失则几乎无法恢复，例如动态压缩造成的瞬态丢失、编码过程中被舍弃的频率信息，以及被响度战争长期塑形后的母带风格。&lt;/p&gt;
&lt;p&gt;我们不讨论“玄学音质”，也不会尝试用主观形容词定义声音。相反，我们更关注一些能够被观察、测量与可视化的内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;频谱与频响&lt;/li&gt;
&lt;li&gt;动态范围与 LUFS&lt;/li&gt;
&lt;li&gt;波形与峰值限制&lt;/li&gt;
&lt;li&gt;有损编码带来的不可逆损失&lt;/li&gt;
&lt;li&gt;不同数字发行版本之间的差异&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也许在排除了设备因素之后，我们仍然能够从数字音频本身，找到一些关于“为什么它听起来如此”的答案。&lt;/p&gt;
&lt;h2&gt;声明&lt;/h2&gt;
&lt;p&gt;我们会使用一些来自 Apple Music 和 Mora（自购）的音乐作为案例分析，不针对任何音乐人和曲目。选曲可能不会非常全面，带有个人偏好，这些音乐类型包括但不限于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Anime OST&lt;/li&gt;
&lt;li&gt;J-Pop&lt;/li&gt;
&lt;li&gt;VOCALOID&lt;/li&gt;
&lt;li&gt;EDM&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以及其它没有列出或难以分辨的音乐类型。&lt;/p&gt;
&lt;p&gt;使用的来自 Apple Music 的音乐均为 ALAC 编码的最高规格音频，来自 Mora 的音乐均为可以购买的、最高规格的音频，下文不标具体规格。&lt;/p&gt;
&lt;p&gt;如果你在 Nalanyinyun&apos;s Library 阅读此文章，点击图片即可放大，较长的图片均为 SVG.&lt;/p&gt;
&lt;p&gt;我不是音乐人、乐评人，也不是音频工程相关从业者，不针对任何音乐人和任何音乐发表任何艺术方面的评价，观点仅供参考。本文不关心音乐本身如何设计，也不关心回放相关的问题（由源文件分析而得数据），涉及的听感仅为我的主观感受。受限于现实条件，无法获得母带，敬请谅解; 受制于现实条件，无法提供用于分析的音频源文件。&lt;/p&gt;
&lt;p&gt;涉及主观听感的部分欢迎讨论; 设计音频相关信息的部分，欢迎指正; 设计音乐大类的部分，欢迎纠正。除此之外的内容，恕不回复。&lt;/p&gt;
&lt;p&gt;我们使用 &lt;code&gt;ffmpeg&lt;/code&gt; 依照 EBU R128 得到数据，具体的指令如下：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ffmpeg -i input.flac -af ebur128=peak=true -f null -
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;响度战争的遗产：动态范围与压缩器&lt;/h2&gt;
&lt;h3&gt;响度战争从未结束&lt;/h3&gt;
&lt;p&gt;很多文章谈论响度战争都是从一个回望过去的角度，但从我自己的听感体验来说，响度战争其实从未结束。&lt;/p&gt;
&lt;p&gt;我自己曲库里的一些音乐，从听感上来说，它并不会因为响度高而显得‘亮’，反而呈现出一种异常的拥挤与浑浊。
，这是因为动态范围被压缩导致的瞬态模糊。当整首歌的能量长期维持在接近 0dBFS 的水平时，乐器之间的空隙消失了。架子鼓的敲击不再具有清晰的颗粒感，而是变成了一堵持续的声墙；人声被伴奏牢牢地‘按’在中间，难以突显。&lt;/p&gt;
&lt;p&gt;来看一个例子：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Atmosphere - Heart&apos;s Cry, Lilja Katsuragi (Mora)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/audio/atmosphere.png&quot; alt=&quot;atmosphere&quot; /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Integrated loudness&lt;/td&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;-12.6 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-23.2 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loudness range&lt;/td&gt;
&lt;td&gt;LRA&lt;/td&gt;
&lt;td&gt;14.0 LU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-33.2 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA low&lt;/td&gt;
&lt;td&gt;-23.8 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA high&lt;/td&gt;
&lt;td&gt;-9.7 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;可以看见这首曲子的动态表现相当优秀，一个是没有压缩问题，另一个是 LRA 来到了 14 LU，这是一个非常有呼吸感的响度范围，可以说比很多流行音乐更优秀，同时均值控制在 -12.6 LUFS，这是一个很健康的响度。&lt;/p&gt;
&lt;p&gt;再看一个例子：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;快晴 - Orangestar、IA（mora）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/audio/goodweather.png&quot; alt=&quot;goodweather&quot; /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Integrated loudness&lt;/td&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;-5.8 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-15.9 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loudness range&lt;/td&gt;
&lt;td&gt;LRA&lt;/td&gt;
&lt;td&gt;1.7 LU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-25.9 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA low&lt;/td&gt;
&lt;td&gt;-6.9 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA high&lt;/td&gt;
&lt;td&gt;-5.2 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;不知道各位看见这张图和下面的表格之后有什么感受。&lt;/p&gt;
&lt;p&gt;从波形可以观察到，整段音频几乎长期处于接近满幅状态，动态峰值与平均能量之间的差距极小，说明母带处理过程中使用了较强的限制器以提高整体响度。。&lt;/p&gt;
&lt;p&gt;LRA 只有 1.7 LU，意味着整首歌基本没有响度上的变化，作为参考，LRA 在这个水平的通常是脱口秀。响度均值来到了 -5.8 LUFS，这是一个会被流媒体响度均衡严重压缩的水平。&lt;/p&gt;
&lt;p&gt;从听感上来说，它其实就会发闷，包括这首歌的中高频区域非常拥挤，几乎掩盖了 IA 的声音，难以分辨会让它听起来很累耳朵，不过那不是这节讨论的问题。&lt;/p&gt;
&lt;p&gt;这也是现代音乐常见的一个问题，响度归一化某种意义上“揭穿”了响度战争：当所有歌曲最终都会被拉回接近相同响度时，那些依赖高平均响度制造冲击感的母带，往往会率先暴露出动态贫乏的问题。&lt;/p&gt;
&lt;h3&gt;回放增益和响度均衡带来了什么？&lt;/h3&gt;
&lt;p&gt;响度均衡（响度归一化）与回放增益在我看来，算得上是应对响度战争的一种产物。据我了解，Apple Music 的目标响度是 - 16 LUFS。，Spotify 为 -14 LUFS，它们的处理发生在设备端播放时，并不涉及源文件。&lt;/p&gt;
&lt;p&gt;我们来看一个例子，我会呈现它的原始波形图和响度信息，以及经过响度均衡（目标 -16 LUFS）处理之后的相关信息：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;月は綺麗だ - iMeiden，花鋏キョウ（Apple Music）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;处理之前&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/audio/goodmoon.png&quot; alt=&quot;goodmoon&quot; /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Integrated loudness&lt;/td&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;-5.9 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-16.4 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loudness range&lt;/td&gt;
&lt;td&gt;LRA&lt;/td&gt;
&lt;td&gt;5.4 LU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-26.4 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA low&lt;/td&gt;
&lt;td&gt;-9.9 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA high&lt;/td&gt;
&lt;td&gt;-4.5 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;处理之后&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/audio/goodmoonProcessed.svg&quot; alt=&quot;goodmoonprocessed&quot; /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Integrated loudness&lt;/td&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;-16.0 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-26.1 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loudness range&lt;/td&gt;
&lt;td&gt;LRA&lt;/td&gt;
&lt;td&gt;6.3 LU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-36.1 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA low&lt;/td&gt;
&lt;td&gt;-20.6 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA high&lt;/td&gt;
&lt;td&gt;-14.3 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;值得注意的是，响度均衡之后，这首歌的 LRA 反而变大了。尽管 6.3 LU 不算一个特别优秀的水平，但也可以说明经过响度均衡之后，它的动态范围表现比一般的流行音乐更好。&lt;/p&gt;
&lt;p&gt;放大图片可以发现，它在波密集的部分也出现了比较明显的限制器痕迹以及不太明显的砖墙，这是录音文件的缺陷，而这部分丢失的信息已经无法还原了。体现在原曲上，就是架子鼓镲片系统的镲比较刺耳，因为波峰部分丢失了。同时鼓组的频响也不完整，有削波的痕迹。&lt;/p&gt;
&lt;p&gt;来看另一个比较极端的，钉鞋摇滚的例子：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SUNFADED - 長谷川白紙、篠泽广（Mora）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;/audio/sunfaded.svg&quot; alt=&quot;sunfaded&quot; /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Integrated loudness&lt;/td&gt;
&lt;td&gt;I&lt;/td&gt;
&lt;td&gt;-14.1 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-24.1 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Loudness range&lt;/td&gt;
&lt;td&gt;LRA&lt;/td&gt;
&lt;td&gt;2.0 LU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Threshold&lt;/td&gt;
&lt;td&gt;-34.2 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA low&lt;/td&gt;
&lt;td&gt;-14.9 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;LRA high&lt;/td&gt;
&lt;td&gt;-12.9 LUFS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这首歌的 LRA 仅有 2.0 LU，这与上文所述的快晴属于同一登记。但别忘了它的类别，噪声墙一样吉他声本就是钉鞋摇滚的特征，可以说是这首歌本身就是这么设计的，这种低动态并不一定意味着制作问题，而可能是风格本身对噪声密度与持续能量的刻意追求。&lt;/p&gt;
&lt;p&gt;同时它的响度均值为 -14.1 LUFS，这是一个比较健康的水平，与 Spotify 的目标响度接近。&lt;/p&gt;
&lt;p&gt;响度均衡的作用其实并非”降低音量“或者损伤音质，在我看来它很有一种”潮水退去，谁在裸泳“的味道。&lt;/p&gt;
&lt;p&gt;它很大程度上消除了响度大和第一耳优势的强关联，撞限制器严重和动态范围却显得歌曲在”声音变小后“反而会发闷，也不如源文件那么响（而非亮），暴露出来母带阶段就存在的制作问题。很可惜的是，这些已经被限制器削去的细节，是我们无法挽回的。&lt;/p&gt;
&lt;p&gt;所以把上一小节的话拿出来重新说一遍，就是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;响度归一化在某种意义上“揭穿”了响度战争：当所有音乐被拉回相近响度后，依赖平均响度获得优势的母带结构会更容易暴露其动态与频谱上的单一化问题。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;频率响应、压缩与信息丢失&lt;/h2&gt;
</content:encoded></item><item><title>来自九年前的远古音频兵器 - Xperia XZ Premium</title><link>https://nalanyinyun.work/posts/xzp/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/xzp/</guid><description>从 Android 音频链路中一睹当年顶级旗舰的音频风采</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;Android 设备的音频质量，一直是一个被人们津津乐道的话题。从早年的低质量 AudioFlinger 强制重采样和低精度音频衰减，到现如今的专用 AAudio 高性能输出。但因为 SoC 制造商和 OEM 仍然对 HAL 有较大的自定义能力，不同设备上的音频质量区别仍旧非常巨大。比如联发科的某些设备会将 audioeffect 集成进 vendor 挂载在 AudioFlinger 上而无法关闭，高通设备的 Direct HD 可以在受支持的设备上绕过 effect chain 输出原始音频。&lt;/p&gt;
&lt;p&gt;换句话说，Android 早已具备高质量音频输出的能力，但真正愿意保留声音原貌的厂商，却越来越少了。现在更流行的做法，则是先将所有音频统一送入 mixer 与 DSP 处理链路，再进行输出，在这里进行处理之后再输出。所谓的处理，大多是一些所谓的杜比音效，响度均衡，系统 EQ 甚至 OEM 音效。初衷确实是为了提升用户体验，但为此强行放弃了高保真音频，真的值得吗？&lt;/p&gt;
&lt;p&gt;正巧在几个月前，我购入了一台银色镜面的 Sony Xperia XZ Premium。也正是从那时开始，我重新开始思考 Android 的声音到底应该是什么样子。&lt;/p&gt;
&lt;h2&gt;一睹机皇的风采：硬件配置&lt;/h2&gt;
&lt;p&gt;XZP 搭载了高通 msm8998 SoC，也就是高通骁龙 835。它的硬件基础或许算不上优秀，它没有专用的 DAC，而是使用了高通 Aqstic™ WCD9335 作为 DAC。&lt;/p&gt;
&lt;p&gt;这颗 DAC 本身支持的最高音频规格来到了 32bit/384 KHz (PCM) 。支持 DSD64/128、FLAC、ALAC、LPCM 等常见的无损格式。&lt;/p&gt;
&lt;p&gt;如果你对硬件感兴趣，这是一些来自其它网站的数据：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;测试项目&lt;/th&gt;
&lt;th&gt;44.1kHz&lt;/th&gt;
&lt;th&gt;48kHz&lt;/th&gt;
&lt;th&gt;96kHz&lt;/th&gt;
&lt;th&gt;Z3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;噪声水平，dB (A)&lt;/td&gt;
&lt;td&gt;-96.0&lt;/td&gt;
&lt;td&gt;-96.7&lt;/td&gt;
&lt;td&gt;-100.5&lt;/td&gt;
&lt;td&gt;-86.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;动态范围，dB (A)&lt;/td&gt;
&lt;td&gt;95.8&lt;/td&gt;
&lt;td&gt;96.6&lt;/td&gt;
&lt;td&gt;105.1&lt;/td&gt;
&lt;td&gt;86.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;总谐波失真，%&lt;/td&gt;
&lt;td&gt;0.0016&lt;/td&gt;
&lt;td&gt;0.0069&lt;/td&gt;
&lt;td&gt;0.0067&lt;/td&gt;
&lt;td&gt;0.012&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;互调失真，%&lt;/td&gt;
&lt;td&gt;0.0055&lt;/td&gt;
&lt;td&gt;0.0050&lt;/td&gt;
&lt;td&gt;0.0023&lt;/td&gt;
&lt;td&gt;0.019&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;立体声分离度，dB&lt;/td&gt;
&lt;td&gt;-90.0&lt;/td&gt;
&lt;td&gt;-90.3&lt;/td&gt;
&lt;td&gt;-88.5&lt;/td&gt;
&lt;td&gt;-86.4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;上述数据以及更详细的硬件测试，见 &lt;a href=&quot;https://soomal.cc/posts/10100007321/&quot;&gt;Soomal&lt;/a&gt;，我并不是太懂这方面，所以不说太多了，本文重点也不在此。&lt;/p&gt;
&lt;h2&gt;DIRECT 和 MIXER：把原始音频送进 HAL&lt;/h2&gt;
&lt;p&gt;这里测试了三 (四) 种不同的播放器，分别是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple Music（集成解码器）&lt;/li&gt;
&lt;li&gt;Sony Music（MediaFramework）&lt;/li&gt;
&lt;li&gt;Poweramp（集成 FFmpeg）&lt;/li&gt;
&lt;li&gt;Sony Music Center（Exclusive）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;经过对比，发现输出类型大概可以分为四类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MIXER&lt;/li&gt;
&lt;li&gt;DIRECT，经过了索尼的 effectchain&lt;/li&gt;
&lt;li&gt;DIRECT，高通 DIRECT HD，跳过了 effect chain&lt;/li&gt;
&lt;li&gt;OFFLOAD，非 PCM 且支持的格式会被直接送进 DSP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是来自 &lt;code&gt;audio_output_policy.conf&lt;/code&gt; 的原始信息：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;outputs {
  default {
    flags AUDIO_OUTPUT_FLAG_PRIMARY
    formats AUDIO_FORMAT_PCM_16_BIT
    sampling_rates 48000
    bit_width 16
    app_type 69937
  }
  proaudio {
    flags AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_RAW
    formats AUDIO_FORMAT_PCM_16_BIT
    sampling_rates 48000
    bit_width 16
    app_type 69943
  }
  deep_buffer {
    flags AUDIO_OUTPUT_FLAG_DEEP_BUFFER
    formats AUDIO_FORMAT_PCM_16_BIT
    sampling_rates 48000
    bit_width 16
    app_type 69936
  }
  direct_pcm_16 {
    flags AUDIO_OUTPUT_FLAG_DIRECT
    formats AUDIO_FORMAT_PCM_16_BIT|AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_8_24_BIT|AUDIO_FORMAT_PCM_32_BIT
    sampling_rates 44100|48000|88200|96000|176400|192000
    bit_width 16
    app_type 69936
  }
  direct_pcm_24 {
    flags AUDIO_OUTPUT_FLAG_DIRECT
    formats AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_8_24_BIT|AUDIO_FORMAT_PCM_32_BIT
    sampling_rates 44100|48000|88200|96000|176400|192000|352800|384000
    bit_width 24
    app_type 69940
  }
  direct_pcm_32 {
    flags AUDIO_OUTPUT_FLAG_DIRECT
    formats AUDIO_FORMAT_PCM_32_BIT
    sampling_rates 44100|48000|88200|96000|176400|192000|352800|384000
    bit_width 32
    app_type 69942
  }
  compress_passthrough {
    flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING|AUDIO_OUTPUT_FLAG_COMPRESS_PASSTHROUGH
    formats AUDIO_FORMAT_AC3|AUDIO_FORMAT_E_AC3|AUDIO_FORMAT_E_AC3_JOC|AUDIO_FORMAT_DTS|AUDIO_FORMAT_DTS_HD|AUDIO_FORMAT_DSD
    sampling_rates 32000|44100|48000|88200|96000|176400|192000|352800
    bit_width 16
    app_type 69941
  }
  compress_offload_16 {
    flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
    formats AUDIO_FORMAT_MP3|AUDIO_FORMAT_PCM_16_BIT_OFFLOAD|AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_AAC_LC|AUDIO_FORMAT_AAC_HE_V1|AUDIO_FORMAT_AAC_HE_V2|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_AAC_ADTS_LC|AUDIO_FORMAT_AAC_ADTS_HE_V1|AUDIO_FORMAT_AAC_ADTS_HE_V2
    sampling_rates 44100|48000|88200|96000|176400|192000
    bit_width 16
    app_type 69936
  }
  compress_offload_24 {
    flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
    formats AUDIO_FORMAT_PCM_24_BIT_OFFLOAD|AUDIO_FORMAT_FLAC|AUDIO_FORMAT_ALAC|AUDIO_FORMAT_APE|AUDIO_FORMAT_VORBIS|AUDIO_FORMAT_WMA|AUDIO_FORMAT_WMA_PRO
    sampling_rates 44100|48000|88200|96000|176400|192000
    bit_width 24
    app_type 69940
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;MIXER：普通应用的输出方式&lt;/h2&gt;
&lt;p&gt;对于一般的应用输出音频，无论音频规格有多高，输出线程通常都是 MIXER（type 0），来看一个例子：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;output thread 0xf3603f40, name AudioOut_D, tid 1218, type 0 (MIXER):
  I/O handle: 13
  Standby: no
  Sample rate: 48000 Hz
  HAL frame count: 192
  HAL format: 0x1 (AUDIO_FORMAT_PCM_16_BIT)
  HAL buffer size: 768 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x5 (AUDIO_FORMAT_PCM_FLOAT)
  Processing frame size: 8 bytes
  Pending config events: none
  Output device: 0x2 (AUDIO_DEVICE_OUT_SPEAKER)
  Input device: 0 (AUDIO_DEVICE_NONE)
  Audio source: 0 (default)
  Normal frame count: 960
  Last write occurred (msecs): 14
  Total writes: 40169
  Delayed writes: 0
  Blocked in write: no
  Suspend count: 0
  Sink buffer : 0xf38c0000
  Mixer buffer: 0xf38b6000
  Effect buffer: 0xf38be000
  Fast track availMask=0xf8
  Standby delay ns=3000000000
  AudioStreamOut: 0xf48ac6b8 flags 0x6 (AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST)
  Frames written: 38562240
  Suspended frames: 0
  PipeSink frames written: 38562240
  Hal stream dump:
  Thread throttle time (msecs): 0
  AudioMixer tracks: 1 
  Master mono: off
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在该设备的 MIXER 输出线程中，所有进入该混音路径的音频都最终会被转换为 48 kHz / PCM 16-bit 输出格式，此类行为和输出设备类型无关。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;1 Effect Chains
    1 effects for session 6953
	In buffer    Out buffer                 Active tracks:
	0xf717e000   0xf7182000 -&amp;gt; 0xf35e7000   0
	Effect ID 971:
		Session Status State Engine:
		06953   000    003   0xf489a1d0
		Descriptor:
		- UUID: af8da7e0-2ca1-11e3-b71d-0002a5d5c51b
		- TYPE: ec7178ec-e5e1-4432-a3f4-4657e6795210
		- apiVersion: F38B4040
		- flags: 00400240 (conn. mode: insert, insert pref: any, volume mgmt: implements control, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
		- name: Sonysweffect
		- implementor: SONY
		- data: float
		- Input configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf717e000 01920   48000    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- Output configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf7182000 01920   48000    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- HAL buffers:
			In(0xf717e000) InConversion(nullptr) Out(0xf7182000 -&amp;gt; 0xf35e7000) OutConversion(nullptr)
		1 Clients:
			 Pid Priority Ctrl Locked client server
			17347        0  yes    yes      0      0
SonySWEffect
	EffectsSt: DN VPT CPSP CAPLUS ALC 
	WrapSt: ACTIVE 
	SupOnDev: DN CA CPSP XLOUD ALC 
	VPT mode: 0
	In Fmt: 0x5
	Out Fmt: 0x5
	In SR: 48000 Hz
	Out SR: 48000 Hz
	Cur Dev: 0x2
	Cur LeftVol: 4096
	Cur RightVol: 4096
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;AudioFlinger 在 mixer 阶段统一完成多路音频的混合与处理，并在写入 HAL 之前进行格式转换。因此对于 MIXER 路径的输出而言，最终进入硬件层的音频格式固定为 48 kHz / 16-bit PCM。无论原始音频文件质量如何，都会被处理之后送入 HAL. 通过 AAudio 输出的音频也会进入这个路径。&lt;/p&gt;
&lt;p&gt;在 effect chain 部分，可以观察到 Sony 的 audio effect 已经被挂载到当前 session，但 Active tracks 显示为 0，说明该 effect 当前并未绑定到任何正在播放的音频流。&lt;/p&gt;
&lt;p&gt;这也意味着包括 DSEE、ClearAudio+ 等处理效果，在非白名单应用下并不会被激活。（推测）&lt;/p&gt;
&lt;p&gt;实测的听感也符合上述结论和推测。&lt;/p&gt;
&lt;h2&gt;DIRECT with effect chain：DIRECT 也有音效处理&lt;/h2&gt;
&lt;p&gt;索尼自己的索尼音乐会走这个奇怪的路径。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Output thread 0xef375000, name AudioOut_4F5, tid 24237, type 1 (DIRECT):
  I/O handle: 1269
  Standby: no
  Sample rate: 96000 Hz
  HAL frame count: 7680
  HAL format: 0x6 (AUDIO_FORMAT_PCM_24_BIT_PACKED)
  HAL buffer size: 46080 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x6 (AUDIO_FORMAT_PCM_24_BIT_PACKED)
  Processing frame size: 6 bytes
  Pending config events: none
  Output device: 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
  Input device: 0 (AUDIO_DEVICE_NONE)
  Audio source: 0 (default)
  Normal frame count: 7680
  Last write occurred (msecs): 72
  Total writes: 55
  Delayed writes: 0
  Blocked in write: yes
  Suspend count: 0
  Sink buffer : 0xefdd3000
  Mixer buffer: 0xefdb4000
  Effect buffer: 0xefc62000
  Fast track availMask=0xfe
  Standby delay ns=1000000000
  AudioStreamOut: 0xefd836b8 flags 0x1 (AUDIO_OUTPUT_FLAG_DIRECT)
  Frames written: 422400
  Suspended frames: 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以观察到 AUDIO_OUTPUT_FLAG_DIRECT FLAG. DIRECT 路径下，音频不再进入 mixer 进行统一重采样与位深转换，而是直接按输出 profile 以高分辨率 PCM 写入 HAL。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Dsee 0xf186fa00:
 DsxParam:
   -Sample rate: 44100 -Codec: -1 -Average bitrate: -1
 Mode: disable
  Sample rate: 44100
  Format: 0x1 (pcm16)
  Fragment size: 14208

HAL_Volume
  Volume_l: 1.00000000
  Volume_r: 1.00000000
  Stream volumes in dB: 0:-17, 1:-26, 2:-26, 3:-26, 4:-26, 5:-26, 6:-inf, 7:-26, 8:-18, 9:-96, 10:0, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 1 are active
    T Name Active Client Session S  Flags   Format Chn mask  SRate ST  L dB  R dB  VS dB   Server FrmCnt  FrmRdy F Underruns  Flushed Main Buf  Aux Buf
         0    yes  23947    7249 A  0x000 00000001 00000003  44100  3     0     0     0  0002C3A0  22932   19380 A         0        0 EF31C000 00000000
  1 Effect Chains
    1 effects for session 7249
	In buffer               Out buffer                 Active tracks:
	0xef31c000 -&amp;gt; 0xf70f4000   0xf70f4000 -&amp;gt; 0xef31c000   1
	Effect ID 1075:
		Session Status State Engine:
		07249   000    003   0xf3d858a0
		Descriptor:
		- UUID: af8da7e0-2ca1-11e3-b71d-0002a5d5c51b
		- TYPE: ec7178ec-e5e1-4432-a3f4-4657e6795210
		- apiVersion: F3DCD940
		- flags: 00400240 (conn. mode: insert, insert pref: any, volume mgmt: implements control, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
		- name: Sonysweffect
		- implementor: SONY
		- data: float
		- Input configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf70f4000 03552   44100    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- Output configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf70f4000 03552   44100    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- HAL buffers:
			In(0xef31c000 -&amp;gt; 0xf70f4000) InConversion(nullptr) Out(0xf70f4000 -&amp;gt; 0xef31c000) OutConversion(nullptr)
		1 Clients:
			 Pid Priority Ctrl Locked client server
			17347        0  yes    yes      0      0
Effect_params
  Effect_enabled: 1
  Effect_volume: 420
SONY_Effects
  ClearAudio plus status: 1
  ca_plus_index: 0
  VPT mode: 0
  Dynamic_normalizer: 1
  S-Force: 0
  Clear Phase for Speaker: 4
  ca_band_level: 0 0 0 0 0 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在索尼音乐的 DIRECT 输出下，effect chain 生效了。可以观察到 VPT 和 ClearAudio 都在工作，DSEE 只有在特定条件下才工作（可以正常工作，但是我没开）。在这个实例中，送入 AudioFlinger 的就是 PCM 流。&lt;/p&gt;
&lt;p&gt;未观察到其它应用播放音频会经过此路径，实测的听感也符合上述结论和推测。&lt;/p&gt;
&lt;h2&gt;DIRECT with DIRECT HD：绕过绝大多数 effect chain&lt;/h2&gt;
&lt;p&gt;在 Poweramp 的 HIRES 输出模式上观察到了 DIRECT，而且这个 DIRECT 有点特殊，我们一点一点看。&lt;/p&gt;
&lt;h3&gt;Poweramp 探测到的音频输出信息&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;reading /vendor/etc/audio_output_policy.conf
has direct_pcm_24, sampling_rates=44100|48000|88200|96000|176400|192000|352800|384000
AUDIO_OUTPUT_FLAG_DIRECT direct_pcm_24
has direct_pcm_24 formats=AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_8_24_BIT|AUDIO_FORMAT_PCM_32_BIT
FLAG_VARIANT_DIRECT_HD via direct_pcm_24
FLAG_NEEDS_DEEP_BUFFER android_sdk=28
USB can handle Hi-Res - sdk=28
&amp;gt;&amp;gt;&amp;gt;OK flags=0x854616600000000
FLAG_VARIANT_DIRECT_HD
FLAG_SUPPORTS_PCM_8_24
FLAG_SUPPORTS_PCM_24
FLAG_SUPPORTS_PCM_32
FLAG_SUPPORTS_UNITY_GAIN_STREAM
FLAG_SUPPORTS_USB
FLAG_NEEDS_EXTRA_SLEEPS
FLAG_SUPPORTS_LDAC
FLAG_NEEDS_DEEP_BUFFER
FLAG_ALLOW_DVC_EFFECT
FLAG_BT_DVC_EFFECT
INTERNAL_OUTPUT_FLAG_SR_384K
INTERNAL_OUTPUT_FLAG_SR_352K
INTERNAL_OUTPUT_FLAG_SR_192K
INTERNAL_OUTPUT_FLAG_SR_176K
INTERNAL_OUTPUT_FLAG_SR_96K
INTERNAL_OUTPUT_FLAG_SR_88K
INTERNAL_OUTPUT_FLAG_SR_48K
INTERNAL_OUTPUT_FLAG_SR_44K
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Poweramp 探测到了非常多支持的音频规格，这些信息是从&lt;code&gt; /vendor/etc/audio_output_policy.conf&lt;/code&gt; 中获取的，说明设备本身也支持这些规格。&lt;/p&gt;
&lt;h3&gt;AudioFlinger 和 effect chain&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;Output thread 0xf3074000, name AudioOut_5CD, tid 27468, type 1 (DIRECT):
  I/O handle: 1485
  Standby: no
  Sample rate: 48000 Hz
  HAL frame count: 3840
  HAL format: 0x3 (AUDIO_FORMAT_PCM_32_BIT)
  HAL buffer size: 30720 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x3 (AUDIO_FORMAT_PCM_32_BIT)
  Processing frame size: 8 bytes
  Pending config events: none
  Output device: 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
  Input device: 0 (AUDIO_DEVICE_NONE)
  Audio source: 0 (default)
  Normal frame count: 3840
  Last write occurred (msecs): 40
  Total writes: 210
  Delayed writes: 0
  Blocked in write: yes
  Suspend count: 0
  Sink buffer : 0xef324000
  Mixer buffer: 0xf2b03000
  Effect buffer: 0xefdd3000
  Fast track availMask=0xfe
  Standby delay ns=1000000000
  AudioStreamOut: 0xf48ddee8 flags 0x1 (AUDIO_OUTPUT_FLAG_DIRECT)
  Frames written: 806400
  Suspended frames: 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以观察到 AUDIO_OUTPUT_FLAG_DIRECT，经过此路径的音频不会被重采样和进行位深转换，因为 Poweramp 已经完成了这些操作（如果符合条件），送入 AudioFlinger 的就是 PCM 流。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Dsee 0x0:
 Mode: disable
  Sample rate: 48000
  Format: 0x3 (pcm32)
  Fragment size: 23040

HAL_Volume
  Volume_l: 1.00000000
  Volume_r: 1.00000000
  Stream volumes in dB: 0:-17, 1:-24, 2:-6, 3:-26, 4:-14, 5:-6, 6:-inf, 7:-6, 8:-18, 9:-96, 10:0, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 1 are active
    T Name Active Client Session S  Flags   Format Chn mask  SRate ST  L dB  R dB  VS dB   Server FrmCnt  FrmRdy F Underruns  Flushed Main Buf  Aux Buf
         0    yes  27110    7337 A  0x000 00000003 00000003  48000  8     0     0     0  000C5D00   7684    3844 A         0      288 EFDD3000 00000000
  1 Effect Chains
    1 effects for session 7337
	In buffer               Out buffer                 Active tracks:
	0xefdd3000 -&amp;gt; 0xf7112000   0xf7112000 -&amp;gt; 0xefdd3000   1
	Effect ID 1099:
		Session Status State Engine:
		07337   000    003   0xf489ab30
		Descriptor:
		- UUID: 119341a0-8469-11df-81f9-0002a5d5c51b
		- TYPE: 09e8ede0-ddde-11db-b4f6-0002a5d5c51b
		- apiVersion: F38B5B40
		- flags: 00000050 (conn. mode: insert, insert pref: last, volume mgmt: implements control, input mode: not set, output mode: not set)
		- name: Volume
		- implementor: NXP Software Ltd.
		- data: float
		- Input configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf7112000 03840   48000    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- Output configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf7112000 03840   48000    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- HAL buffers:
			In(0xefdd3000 -&amp;gt; 0xf7112000) InConversion(nullptr) Out(0xf7112000 -&amp;gt; 0xefdd3000) OutConversion(nullptr)
		1 Clients:
			 Pid Priority Ctrl Locked client server
			27110     1337  yes    yes      0      0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;DSEE 挂载到了 effect chain 上，但被禁用了。可以看见 HAL 音量是 1.00000000，可能是因为 Poweramp 传递了 ALWAYS_UNITY_GAIN，它禁用了 HAL 的音频衰减，通过自己的 DVC 控制。&lt;/p&gt;
&lt;p&gt;值得注意的是 effect chain 中出现了一个 Volume (NXP Software Ltd.). 我在网上并没有查到相关的信息，这个效果器的输出和输出却都是 48000，标识着音频可能进行了重采样，但不太可能，原因下述：&lt;/p&gt;
&lt;p&gt;HAL 的音量是 1.00000000，说明 HAL 并没有调整音量，这个效果器可能是用来通知播放器 DVC 音量变化而非直接自行处理的音频，同时在其它播放器输出中并没有发现这个效果器，而测试的播放器中除了 Poweramp 都没有 DVC 功能。&lt;/p&gt;
&lt;p&gt;作为对比，在关闭 DVC 后，发现了如下变化;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Dsee 0x0:
 Mode: disable
  Sample rate: 48000
  Format: 0x6 (pcm24)
  Fragment size: 23040

HAL_Volume
  Volume_l: 0.05128648
  Volume_r: 0.05128648
  Stream volumes in dB: 0:-17, 1:-26, 2:-26, 3:-26, 4:-26, 5:-26, 6:-inf, 7:-26, 8:-18, 9:-96, 10:0, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 1 are active
    T Name Active Client Session S  Flags   Format Chn mask  SRate ST  L dB  R dB  VS dB   Server FrmCnt  FrmRdy F Underruns  Flushed Main Buf  Aux Buf
         0    yes  27110    7385 A  0x000 00000006 00000003  48000  3     0     0     0  00027600   7684    7684 A         0        0 F3657000 00000000
  0 Effect Chains
  Local log:
   05-24 18:00:56.490 CFG_EVENT_CREATE_AUDIO_PATCH: old device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE) new device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
   05-24 18:00:56.493 AT::add       (0xf48f1080)      0     no  27110    7385 A  0x000 00000006 00000003  48000  3     0     0     0  00000000   7684       0 f         0        0 F3657000 00000000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;注意到 HAL 进行了音量衰减，而 Volume 效果器消失了，如果它是用来调整音量的，为什么反而不存在了？同时观察到了系统音量变化并没有影响 HAL 音量为 1，而 DVC 关闭时会变化。Volume 效果器并没有实际处理音频，所以也没有重采样这一说。&lt;/p&gt;
&lt;p&gt;在实测中听感的变化也验证了上述推测。&lt;/p&gt;
&lt;h2&gt;OFFLOAD：针对非 PCM 流的直通&lt;/h2&gt;
&lt;p&gt;在索尼音乐的实测中，还发现了一个不是很常见的输出模式：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Output thread 0xf3064000, name AudioOut_67D, tid 31664, type 4 (OFFLOAD):
  I/O handle: 1661
  Standby: no
  Sample rate: 44100 Hz
  HAL frame count: 32768
  HAL format: 0x1000000 (AUDIO_FORMAT_MP3)
  HAL buffer size: 32768 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x1000000 (AUDIO_FORMAT_MP3)
  Processing frame size: 1 bytes
  Pending config events: none
  Output device: 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
  Input device: 0 (AUDIO_DEVICE_NONE)
  Audio source: 0 (default)
  Normal frame count: 32768
  Last write occurred (msecs): 166
  Total writes: 13
  Delayed writes: 0
  Blocked in write: no
  Suspend count: 0
  Sink buffer : 0xf2b03000
  Mixer buffer: 0xefa83000
  Effect buffer: 0xef903000
  Fast track availMask=0xfe
  Standby delay ns=1000000000
  AudioStreamOut: 0xf48dde70 flags 0x31 (AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING)
  Frames written: 262144
  Suspended frames: 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;观察到模式是 OFFLOAD（type 4），HAL 识别到了是 AUDIO_FORMAT_MP3，并携带了  &lt;code&gt;AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING&lt;/code&gt; 这些 FLAGS。这些 FLAG 大致的意思就是 DIRECT 输出，不进行压缩，以非阻塞的方式输出。&lt;/p&gt;
&lt;p&gt;在此音频路径中 MP3 被直接 HAL 送进了 DSP 进行解码，CPU 没有参与音频处理。它也绕过了 MIXER 的那些重采样和位深转换，在播放不同规格的 MP3 文件时观察到了 HAL 规格变化。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Dsee 0xf13e5980:
 DsxParam:
   -Sample rate: 44100 -Codec: -1 -Average bitrate: -1
 Mode: disable
  Sample rate: 44100
  Format: 0x1 (pcm16)
  Fragment size: 14208

HAL_Volume
  Volume_l: 1.00000000
  Volume_r: 1.00000000
  Stream volumes in dB: 0:-17, 1:-30, 2:-30, 3:-30, 4:-30, 5:-30, 6:-inf, 7:-30, 8:-18, 9:-96, 10:-3.7, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 1 are active
    T Name Active Client Session S  Flags   Format Chn mask  SRate ST  L dB  R dB  VS dB   Server FrmCnt  FrmRdy F Underruns  Flushed Main Buf  Aux Buf
         0    yes  31374    7737 A  0x000 00000001 00000003  44100  3     0     0     0  00006F00  22932   12276 A         0        0 EFC28000 00000000
  1 Effect Chains
    1 effects for session 7737
	In buffer               Out buffer                 Active tracks:
	0xefc28000 -&amp;gt; 0xf70bc000   0xf70bc000 -&amp;gt; 0xefc28000   1
	Effect ID 1195:
		Session Status State Engine:
		07737   000    003   0xf489ae00
		Descriptor:
		- UUID: af8da7e0-2ca1-11e3-b71d-0002a5d5c51b
		- TYPE: ec7178ec-e5e1-4432-a3f4-4657e6795210
		- apiVersion: F12AC400
		- flags: 00400240 (conn. mode: insert, insert pref: any, volume mgmt: implements control, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
		- name: Sonysweffect
		- implementor: SONY
		- data: float
		- Input configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf70bc000 03552   44100    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- Output configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf70bc000 03552   44100    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- HAL buffers:
			In(0xefc28000 -&amp;gt; 0xf70bc000) InConversion(nullptr) Out(0xf70bc000 -&amp;gt; 0xefc28000) OutConversion(nullptr)
		1 Clients:
			 Pid Priority Ctrl Locked client server
			17347        0  yes    yes      0      0
Effect_params
  Effect_enabled: 1
  Effect_volume: 259
SONY_Effects
  ClearAudio plus status: 1
  ca_plus_index: 0
  VPT mode: 0
  Dynamic_normalizer: 1
  S-Force: 0
  Clear Phase for Speaker: 4
  ca_band_level: 0 0 0 0 0 0
  Local log:
   05-24 19:23:24.969 CFG_EVENT_CREATE_AUDIO_PATCH: old device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE) new device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
   05-24 19:23:24.971 AT::add       (0xf48ef280)      0     no  31374    7737 A  0x000 00000001 00000003  44100  3     0     0     0  00000000  22932       0 f         0        0 EFC28000 00000000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个路径的 effect chain 上挂的都是索尼效果器。可以观察到 ClearAudio, VPT 之类的功能都在正常工作。&lt;/p&gt;
&lt;p&gt;没有压缩编码的上下文（如 MP3/AAC 的 metadata），DSEE 可以正常工作（我没开）。&lt;/p&gt;
&lt;p&gt;值得注意的是，HAL 音量同样是 1.00000000，但是 effect chain 中没有发现 NXP 的 Volume 效果器，这是因为 &lt;code&gt;  Dynamic_normalizer: 1&lt;/code&gt;，也就是动态均衡器开启了，可能是它替代了 NXP Volume.&lt;/p&gt;
&lt;p&gt;作为对比，我关闭了动态均衡器：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;HAL_Volume
  Volume_l: 0.03162301
  Volume_r: 0.03162301
  Stream volumes in dB: 0:-17, 1:-30, 2:-30, 3:-30, 4:-30, 5:-30, 6:-inf, 7:-30, 8:-18, 9:-96, 10:-3.7, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 1 are active
    T Name Active Client Session S  Flags   Format Chn mask  SRate ST  L dB  R dB  VS dB   Server FrmCnt  FrmRdy F Underruns  Flushed Main Buf  Aux Buf
         0    yes  31374    7817 A  0x000 00000001 00000003  44100  3     0     0     0  00633D20  22932   12276 A         0        0 EFC6B000 00000000
  1 Effect Chains
    1 effects for session 7817
	In buffer               Out buffer                 Active tracks:
	0xefc6b000 -&amp;gt; 0xf70bc000   0xf70bc000 -&amp;gt; 0xefc6b000   1
	Effect ID 1219:
		Session Status State Engine:
		07817   000    000   0xf489b100
		Descriptor:
		- UUID: af8da7e0-2ca1-11e3-b71d-0002a5d5c51b
		- TYPE: ec7178ec-e5e1-4432-a3f4-4657e6795210
		- apiVersion: F48EBE40
		- flags: 00400240 (conn. mode: insert, insert pref: any, volume mgmt: implements control, device indication: requires updates, input mode: not set, output mode: not set, offloadable)
		- name: Sonysweffect
		- implementor: SONY
		- data: float
		- Input configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf70bc000 03552   44100    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- Output configuration:
			Buffer     Frames  Smp rate Channels Format
			0xf70bc000 03552   44100    00000003      5 (AUDIO_FORMAT_PCM_FLOAT)
		- HAL buffers:
			In(0xefc6b000 -&amp;gt; 0xf70bc000) InConversion(nullptr) Out(0xf70bc000 -&amp;gt; 0xefc6b000) OutConversion(nullptr)
		1 Clients:
			 Pid Priority Ctrl Locked client server
			17347        0  yes    yes      0      0
Effect_params
  Effect_enabled: 0
  Effect_volume: 259
  Local log:
   05-24 19:40:49.662 CFG_EVENT_CREATE_AUDIO_PATCH: old device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE) new device 0x8 (AUDIO_DEVICE_OUT_WIRED_HEADPHONE)
   05-24 19:40:49.664 AT::add       (0xf128a280)      0     no  31374    7817 A  0x000 00000001 00000003  44100  3     0     0     0  00000000  22932       0 f         0        0 EFC6B000 00000000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;观察到 HAL 音量不再是 1，表明 HAL 进行了音量衰减，也说明了索尼音乐没有 DVC 功能。&lt;/p&gt;
&lt;p&gt;在实测中，除了 DSEE 的开关之外没有发现其它听感上的区别。&lt;/p&gt;
&lt;h2&gt;放弃了高保真音频，真的值得吗？&lt;/h2&gt;
&lt;p&gt;在剖析了上述四种输出模式之后，我们回到最开始提出的一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;为此强行放弃了高保真音频，真的值得吗？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这个问题站在不同人角度看答案是不同的。站在厂商的角度看是没有问题的，因为 DIRECT 不是 Android 默认就提供的，它需要厂商对 HAL 进行定制，而且会破坏杜比音效之类的后处理的兼容性，所以全都走 MIXER 并统一规格，是一个在工程上无可置疑的选择。&lt;/p&gt;
&lt;p&gt;但在我看来，所谓的后处理效果根本就不是必要的。一盘好的母带，已经经过了混音师的调整，他的目的不是”更好听”，而是“更标准”。&lt;/p&gt;
&lt;p&gt;这就像很多电视对画面的后处理一样，看上去确实更艳丽更生动，但是看久了不刺眼吗？色彩和白点标准吗？还原了导演的真实意图吗？为什么电视这么大的屏幕，在制作现场做一个参考性的大屏幕监看都不配？&lt;/p&gt;
&lt;p&gt;换句话说，我们使用的这些回放设备，到底有没有尊重创作者？有没有努力地还原创作者想传递给我们的心意？在现在大多数消费级电子产品上，我可以说：没有。&lt;/p&gt;
&lt;p&gt;在消费级电视上，我们看见了 filmmaker 模式，看见了厂商的一点诚意。但是在手机上，我没有看见任何现在厂商的诚意。&lt;/p&gt;
&lt;p&gt;Xperia 基本已经退出了消费级电子市场，但这部来自 2017 年的上古兵器，却让我对 Xperia 有了新的认识，也让我对“到底是什么是高保真”有了新的认识。&lt;/p&gt;
&lt;p&gt;也许，不作处理的处理，才是最好的处理吧。&lt;/p&gt;
</content:encoded></item><item><title>积雨云与渐行渐进的雨</title><link>https://nalanyinyun.work/posts/%E7%A7%AF%E9%9B%A8%E4%BA%91%E4%B8%8E%E6%B8%90%E8%A1%8C%E6%B8%90%E8%BF%9B%E7%9A%84%E9%9B%A8/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E7%A7%AF%E9%9B%A8%E4%BA%91%E4%B8%8E%E6%B8%90%E8%A1%8C%E6%B8%90%E8%BF%9B%E7%9A%84%E9%9B%A8/</guid><description>Pixiv 应征作品（https://www.pixiv.net/novel/show.php?id=27974079），在此独立发表。</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我撑着一把还算大的透明伞，在雨中行走着。&lt;/p&gt;
&lt;p&gt;其实这伞也不是那么大，毕竟要是遮住了她，雨就会淋到我的肩膀上，尤其是走到树下，掉落在树叶上的雨重新汇聚成厚重的水滴，砸在肩上的感觉很明显，也失去了夏日那样轻盈的感觉。&lt;/p&gt;
&lt;p&gt;我数不清我们用了多少夏天在那些光雨下游走，我们经常挑选那些雨天出门，没有什么特别的理由，也不是什么所谓的——“喜欢那样的氛围”的套话。&lt;/p&gt;
&lt;p&gt;那些雨，有时是在车站旁，来往的人被光切成几段，我们站在伞下，看着落在伞面的雨凝聚成股，又沿着伞骨流下。&lt;/p&gt;
&lt;p&gt;有时在商业街中，招牌的光被雨拉长，颜色混在一起，似乎随着我们和人群一起在空中流动。她偶尔会停下来，似乎是去看那些橱窗，但很少真的走进去。&lt;/p&gt;
&lt;p&gt;还有一次在海边，那次的雨下得很重，撑伞几乎没有了用途。雨打湿了我和她的肩膀，只有伞柄周围，我们紧靠在一起的地方还是干燥的。远处的云压得很低，但更远处就能看见亮光，透过伞面看见的扁平的云底和花椰菜状的云，似乎随时会落下来。&lt;/p&gt;
&lt;p&gt;我偶尔会发现，我们的视线会透过透明的伞面，在高处云所在的地方交汇。她伸出手指着我们一起见过了无数次的云，说那是积雨云。&lt;/p&gt;
&lt;p&gt;积雨云，这真的是个好名字。它积攒着核心的水汽，携带着剧烈的上升气流，在某个经过的地方抛下全部的雨，伴随着紫色的电光在空中闪烁。轰鸣与风和雨，似乎都来自天空中遥远的地方，遥远到无法分辨来时的方向，一如夏日的晴天那样浅而均匀。&lt;/p&gt;
&lt;p&gt;我经常呆呆地站在雨中，看着雨滴落在伞上和地面上破碎的模样。她拉着我的手要往前走，但也没有使上多大的力气，我轻轻地把她拉回到身边，感受着风带来的充满胸怀的凉意，以及我身边的，永远温暖的一个小小的热源。&lt;/p&gt;
&lt;p&gt;在以前，我有这样的感觉往往是在小时候，妈妈接我放学回家的时候。地上有水洼，有落在地面上的天空，被夏日的蓝光照得褪色的世界，此刻就像被抹上画油的油画，充当背景的世界迅速成为了主角。妈妈牵着我的手，一晃一晃走在回家路上，我们用手提着鞋子，用脚去感受雨水的清凉和地面的触感。真的很开心，但不是因为玩水，是什么呢？我也不清楚。&lt;/p&gt;
&lt;p&gt;那样的感觉是什么呢？如果我问她，她大概会说“就是和你在一起呀。”可是我不想听那样的话。和妈妈在一起的幸福，和朋友在一起的幸福，和你在一起的幸福，究竟算是什么呢？幸福的秘密，又是什么呢？&lt;/p&gt;
&lt;p&gt;我也不清楚。&lt;/p&gt;
&lt;p&gt;我喜欢放慢脚步，让她走在我的前面，然后从背后抱住她，胳膊搭在她的肩上。我并不用力，她也并不躲闪。我看见了那种近乎棕色的、阳光透过她的头发后的那种颜色。“还要在那里看多久呢？”大概我要看到腿发麻，才会继续往前走吧。&lt;/p&gt;
&lt;p&gt;在不下雨的日子，我们也偶尔会出去。不过就像那些不在一起的往常的日子那样，只有一点模糊的印象。&lt;/p&gt;
&lt;p&gt;那些纵横着连接着彼此的路旁，有着粗糙而高的树，有着细碎而摇动的光斑，有着树叶互相拍打的窸窣，有着回家路上日出一般的日落，有着无处不在明亮到褪色一切的光。&lt;/p&gt;
&lt;p&gt;在那些雨和云的间隙与忽明忽暗的阳光中，我仍旧仰望着天空，等待着垂直发展那么显著的积雨云，等待着它连接天空的远处和我们小小的期望。我仍旧带着那把透明的伞，它不为了遮蔽我们的影子，毕竟它遮不住光，但我仍旧带着，等待着渐行渐近的雨，等待着下一个和每一个有雨，有你也有我的夏天，等待着无边无际的天空中，无数朵云中会被我们看见的那一朵。&lt;/p&gt;
&lt;p&gt;所谓的幸福的秘密，大概也就是保有秘密本身吧。经历过的一些都凝结成水晶一样的内核，在炽烈的光下几乎很难看清，透过它的光线也被无形的折射。不知道这样的话，也未必是一种不愿意承认，或者说不出口的话......&lt;/p&gt;
&lt;p&gt;只是我要沿着那条熟悉而走过无数次的路，带着那把见证过无数阳光的透明的伞，前往她所在的地方，有着雨或没有雨的地方。&lt;/p&gt;
&lt;p&gt;看见云影在地上摇动，我就知道是时候该动身了，我要去接她了。&lt;/p&gt;
</content:encoded></item><item><title>太阳照常升起，但这次不会了</title><link>https://nalanyinyun.work/posts/%E5%A4%AA%E9%98%B3%E7%85%A7%E5%B8%B8%E5%8D%87%E8%B5%B7-%E4%BD%86%E8%BF%99%E6%AC%A1%E4%B8%8D%E4%BC%9A%E4%BA%86/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E5%A4%AA%E9%98%B3%E7%85%A7%E5%B8%B8%E5%8D%87%E8%B5%B7-%E4%BD%86%E8%BF%99%E6%AC%A1%E4%B8%8D%E4%BC%9A%E4%BA%86/</guid><description>在太阳熄灭之后，在明天和意义全部消解之后，世界会变成什么样子呢？</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;太阳今天落下之后，就不会再升起来了。&lt;/p&gt;
&lt;p&gt;这是国际天文学协会发布的通知，是在昨天早间新闻中播出的，我妈给我发信息，问我要不要回家，我说不了，反正日落之后还有的是时间。她让我多喝点热水，少开窗户，免得着凉了，我说好。她也许不知道我已经三天没出门了。&lt;/p&gt;
&lt;p&gt;街对面那个卖早餐的大叔，把摊子摆在了街中央，他穿着婚礼礼服，叫喊着要把最后一锅热豆腐脑卖完。那摊子周围挤得水泄不通，我从来不知道会有那么多的人吃早餐。&lt;/p&gt;
&lt;p&gt;公司昨天就通告了，从今天开始休假，至于什么时候复工还没说。我从早上睁眼开始就在床上躺着，紧闭着窗帘，就像在阳光还照耀的那些日子一样。但那毕竟不是遮光帘，我知道太阳在哪个位置，从它自地平线升起开始，我就无法转移我那无可放置的注意力。&lt;/p&gt;
&lt;p&gt;透过织物的光从蓝色化为白色，这一上午街道上都十分喧嚣。我听见人们的欢笑和嬉闹，就算不去体会也能感受到那种热闹到诡异的氛围。没有人在乎太阳明天还会不会升起，也许他们在意的是太阳升起带来的那些痛苦的事吧。&lt;/p&gt;
&lt;p&gt;我再也坐不住了，虽然不知道能做什么。我从床上爬起，想要出门去做些什么，于是我换上了工作时一直穿的西装，背上那只一直没有机会演奏的红木电吉他，换上鞋，推开门走了。&lt;/p&gt;
&lt;p&gt;太阳稍稍从天空中央斜下，尚且看不见夕阳的金光的光。我朝着远处的海边走去，往日里都是打车去的，很远，但如今也不怎么着急了，权当是欣赏最后的日落吧，我慢慢地走着。&lt;/p&gt;
&lt;p&gt;我看见一群很奇怪的人在街道中央走着，他们身上挂满了各种反光甚至亮眼的物价儿——勺子、镜子、不锈钢盆、瓷砖和金属锅盖之类的。还有人把金色的保温毯披在身上，也有用铝箔把自己包上了。队伍最前面的那个人在喊什么：&lt;/p&gt;
&lt;p&gt;“向太阳致敬！”&lt;/p&gt;
&lt;p&gt;我看见沿途的不少人都把手机闪光灯打开，加入了队伍，那些光——太阳光和人造光，晃的我眼睛生疼，我望向另一端，那队伍还很长很长，看不见末端。&lt;/p&gt;
&lt;p&gt;于是我继续向前走着，听着身边时常传来的呐喊和欢笑。&lt;/p&gt;
&lt;p&gt;我从楼下走到了不远处的喷泉广场，有一个和我一样穿着西装的男人站在喷泉之上的假山上，他周围围了一圈人，大家都在抬头看着他。&lt;/p&gt;
&lt;p&gt;因为太阳在他身后，不怎么能看清他的模样，只能看见一个不断移动着的剪影。他的左手紧攥着，似乎握住了什么；他的右手高举着，随即我听见了他的呐喊：&lt;/p&gt;
&lt;p&gt;“如果掷到 6，我现在就去结婚；如果掷到 1 到 3，我就把身份证烧掉；如果是 4 到 5，我就去亲吻路过的第一人！”&lt;/p&gt;
&lt;p&gt;他的双手全部举起，围观的人们也为之欢呼。他张开了左手，给人们展示着那颗大的金属骰子。在大家都看见了之后，他用力把骰子抛上天空，在空中骰子遮蔽了太阳，像是一个黑子。&lt;/p&gt;
&lt;p&gt;不过他没接住，有一点水溅到我的脸上，骰子径直掉入了喷泉下面的池子中。人们拥挤着，争相去看那点数是多少，但池子不算浅，并没有看清。&lt;/p&gt;
&lt;p&gt;那个抛出骰子的人仍旧站在假山上，似乎陷入了沉思。当大家的注意力都转移回他身上的时候，他说：&lt;/p&gt;
&lt;p&gt;“好，那我先下水吧！”&lt;/p&gt;
&lt;p&gt;他也从假山上跳入水中，广场的人们都挤了过来，我挣扎着才勉强脱离人群。我不知道那点数到底是几，但听着背后传来的尖叫来看，应该是 4 到 5。&lt;/p&gt;
&lt;p&gt;走出了喷泉广场，是一条两侧生长着杨树的路，那条路通向一个小小的公园，我闲暇的时候经常会来这里，茂密的植物阻断了我的视线，常常能让我放松下来。&lt;/p&gt;
&lt;p&gt;公园里还是一如既往的宁静，大抵是因为太阳不再升起，在宁静中夹杂着一点缥缈的悲痛。&lt;/p&gt;
&lt;p&gt;婴儿车依靠在某处的长椅上，一对看起来十分年轻的夫妻似乎围绕着什么，那是一个小小的婴儿。年轻的父亲用手指着倾斜的太阳。&lt;/p&gt;
&lt;p&gt;“那是太阳，带给我们生命的太阳。”&lt;/p&gt;
&lt;p&gt;我听见一声微弱的叹息。&lt;/p&gt;
&lt;p&gt;“他能记住最后一次看见的太阳吗？我不想他的生活中没有光，哪怕是回忆中的也好。”&lt;/p&gt;
&lt;p&gt;“也许我们都不该想的那么远。”&lt;/p&gt;
&lt;p&gt;震耳欲聋的沉默。&lt;/p&gt;
&lt;p&gt;我从他们的背后路过，我不想去想象，也不想去看他们说出这句话时的神情。那孩子也许再也不会害怕日落，因为他从未见过太阳升起。&lt;/p&gt;
&lt;p&gt;我放缓了脚步，轻轻的走着，我要穿过公园，去更远的地方。&lt;/p&gt;
&lt;p&gt;一路上人很多，往日寂静的午后不再安静，却比以往更加寂静了。我听见一些模糊的感叹，几句不知道为何愤怒的咒骂，还有几声不知为何而笑的笑。&lt;/p&gt;
&lt;p&gt;情侣们坐在长椅上，面对着太阳相拥着；老师带学生们走出了学校，感受着阳光的照耀；一些身着正装的人，颠颠疯疯的在街上或跑或走。不过更多的是在街上散步的——就像往常那样，感受着阳光照耀的美好。&lt;/p&gt;
&lt;p&gt;金色的光逐渐泛黄，太阳仍旧下落着，以一种难以觉察的速度。潮湿的风扑面而来，这是到了水边的征兆。&lt;/p&gt;
&lt;p&gt;我放慢了脚步，注视着路面。&lt;/p&gt;
&lt;p&gt;如果太阳不再升起，我不想去看它最后落下的模样。今天的落日也只是落日，只是因为它是最后一次才变得珍贵，才让人们如此重视。如果我去仰望那遥远的地平线，我也会珍惜这样的落日。但无论哪个落日，我都认真地凝望过，所以我不去看它，只是让它在我的心中落下。&lt;/p&gt;
&lt;p&gt;一阵阵笑声把我从思绪中拉回现实，不知不觉间已经走了这么远，脚下踩的已经是温热的沙子了。投下的光线变得愈发亮黄了，不过距离日落尚且还有一段时间。&lt;/p&gt;
&lt;p&gt;我寻找着笑声的来源，那是一个小小的地下酒吧，但表演者站在外面的台子上，观众用促着表演者。我凑近去看，门口贴着的海报说这是地下酒吧的脱口秀表演，每天都有。&lt;/p&gt;
&lt;p&gt;“如果地狱冷怎么办？”&lt;/p&gt;
&lt;p&gt;“如果地狱是冷的，我妈一定会给我打电话让我穿秋裤！”&lt;/p&gt;
&lt;p&gt;一阵笑声传来。&lt;/p&gt;
&lt;p&gt;我转过头去，发现台上站着几个人，他们都拿着麦克风。&lt;/p&gt;
&lt;p&gt;脱口秀还能多人表演吗？&lt;/p&gt;
&lt;p&gt;“朋友们，太阳真不升了，他打算灯泡换成暖色的，这样就可以骗自己还活在中午十二点。”&lt;/p&gt;
&lt;p&gt;一个人指着另一个人说，又传来一阵笑声。那个被指的人拍了指他那个人一下：&lt;/p&gt;
&lt;p&gt;“他今天上午去便利店买了三瓶防晒霜！那收银员说：‘先生，您这是要熬过去？’”&lt;/p&gt;
&lt;p&gt;三个人在嬉笑打闹中，慢慢走下台去，紧接着又上来两个人。&lt;/p&gt;
&lt;p&gt;“你有没有什么事儿想在有光的时候干？”&lt;/p&gt;
&lt;p&gt;“当然有啊，我都做过了。”&lt;/p&gt;
&lt;p&gt;他面向观众。&lt;/p&gt;
&lt;p&gt;“今天早上我终于打开了那个美颜相机。”&lt;/p&gt;
&lt;p&gt;“要发自拍了？”&lt;/p&gt;
&lt;p&gt;“我发现了那个事实，我长得确实很一般！”&lt;/p&gt;
&lt;p&gt;又一阵笑声传来。在我离开之前，我打算最后看一个人表演，要不然就耽误我的行程了。&lt;/p&gt;
&lt;p&gt;一个人走了上来。&lt;/p&gt;
&lt;p&gt;“小时候我妈总说，太阳每天都会升起，所以不管多难，都有明天。&lt;/p&gt;
&lt;p&gt;我后来才知道，她说这句话的时候自己也在哭。&lt;/p&gt;
&lt;p&gt;那天的太阳照样升起来了，但我再也没见过她笑。”&lt;/p&gt;
&lt;p&gt;观众疑惑的看着他。&lt;/p&gt;
&lt;p&gt;“所以我长大后发了个愿——我要让她开心。现在想想，这个愿望也挺好的——它和太阳一样，每天都升起，但我从来够不到。”&lt;/p&gt;
&lt;p&gt;我不记得我是怎么笑出来的，但我笑了。不知道是他说的好，还是我真的觉得好笑。&lt;/p&gt;
&lt;p&gt;只是那一瞬间，我想给妈妈发条信息，告诉她“谢谢你”。&lt;/p&gt;
&lt;p&gt;虽然我知道，太阳不会再升起了。&lt;/p&gt;
&lt;p&gt;我迅速收回了笑，因为我知道，再也不会有人听到这个笑话了。&lt;/p&gt;
&lt;p&gt;我转过身去，从人群中离开，继续向着海边前进。我听见刚才说笑话的那个人在哭，在喊些什么，不过太远了，已经听不清了。&lt;/p&gt;
&lt;p&gt;太阳已经接近地平线了，我走到海边的时候，音乐会已经快要结束了。最后一个乐队表演的是一首英伦民谣——「Here Comes the Sun」。&lt;/p&gt;
&lt;p&gt;确实感觉很夏天，我顺手从摊子上拿了一瓶气泡水，慢慢走近台下的人群，沉浸在这种诡异的夏日氛围中。&lt;/p&gt;
&lt;p&gt;不过很快，表演结束了，台上的灯光熄灭，乐队也收拾好乐器，离场了。人们还围绕着舞台，似乎不想让这场狂欢结束。&lt;/p&gt;
&lt;p&gt;我握紧了拳头。&lt;/p&gt;
&lt;p&gt;我从人群中离开，绕到舞台后面，我拉住了刚才在台上敲架子鼓那个人，跟他说了点什么。我对对正要整理设备的工作人员说：&lt;/p&gt;
&lt;p&gt;“等等再走。”&lt;/p&gt;
&lt;p&gt;“怎么了？”&lt;/p&gt;
&lt;p&gt;“你不会猜到的。”&lt;/p&gt;
&lt;p&gt;他朝着我笑了一下，迅速接通了舞台电源。&lt;/p&gt;
&lt;p&gt;我把琴套从后台扔出去，紧接着我听见了人们的欢呼。&lt;/p&gt;
&lt;p&gt;我背上吉他，慢慢走上了舞台——我把我的吉他和音响连接起来，踩了一下效果器踏板，轻轻扫弦，看来一切都配合的很完美。&lt;/p&gt;
&lt;p&gt;我能感受到观众的目光落在我身上，但他们绝对猜不到我要干什么。&lt;/p&gt;
&lt;p&gt;我穿着西装，像个推销保险的死人。&lt;/p&gt;
&lt;p&gt;有人笑了，可能以为我走错了场子。&lt;/p&gt;
&lt;p&gt;然后，第一声鼓点像火药炸裂，震得舞台都抖了一下。&lt;/p&gt;
&lt;p&gt;《March of the Pigs》开场——短促、密集、毫无铺垫地炸响。&lt;/p&gt;
&lt;p&gt;我站着，一动不动。直到那一声尖利的吉他啸叫划破空气，&lt;/p&gt;
&lt;p&gt;我猛地一扯领带，扔到观众席上。&lt;/p&gt;
&lt;p&gt;西装外套也脱了，用力摔在地上。&lt;/p&gt;
&lt;p&gt;“I wanna break it up / I wanna smash it up / I wanna fuck it up…”&lt;/p&gt;
&lt;p&gt;我跪在地板上拍打舞台，像是在砸一个棺材盖。&lt;/p&gt;
&lt;p&gt;台下开始沸腾，有人站了起来，有人开始尖叫。&lt;/p&gt;
&lt;p&gt;灯光忽明忽暗，像爆炸间隙的闪光弹。&lt;/p&gt;
&lt;p&gt;我的头发散乱，声音嘶哑，喉咙像被撕开一样，但我还在喊。&lt;/p&gt;
&lt;p&gt;我知道这不是一场演出。&lt;/p&gt;
&lt;p&gt;是一次宣判，对太阳的宣判——当然是死刑。&lt;/p&gt;
&lt;p&gt;“and doesn&apos;t it make you feel better?”&lt;/p&gt;
&lt;p&gt;最后一声鼓点结束，我双手垂下，满头是汗。&lt;/p&gt;
&lt;p&gt;灯光熄灭，一片寂静。&lt;/p&gt;
&lt;p&gt;我紧闭着眼睛。&lt;/p&gt;
&lt;p&gt;舞台上的灯光熄灭，天上的灯光也熄灭了。&lt;/p&gt;
</content:encoded></item><item><title>永夏晴海</title><link>https://nalanyinyun.work/posts/%E6%B0%B8%E5%A4%8F%E6%99%B4%E6%B5%B7/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E6%B0%B8%E5%A4%8F%E6%99%B4%E6%B5%B7/</guid><description>永不结束的夏日和永远晴朗的海，大概只是存在于未曾经历的回忆中了吧...</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;在那些烟花和火光都消失后，在那些轻盈的风和雨都流淌过后，我踏上了一辆通往不知何处的火车。&lt;br /&gt;
至少在下车之前，我是不会知道我要去的地方是哪里了。&lt;br /&gt;
阳光透过车窗在地上留下的光斑间歇着闪烁，透过叶隙后留下的影子不断的摇动。视线追随着流动的青绿指向窗外，它被自地面升起的热气颤抖着弯折向天空。&lt;br /&gt;
毕竟还是夏日的天空，它有一种独特的浅蓝色的光，显得天空十分浅，并不像秋日或者冬日那样深邃。也漂浮着大块的积云，也有一些显现出清晰轮廓，中心发灰的积雨云。被它笼罩的地面上，大概会有一场猛烈的风和雨吧。&lt;br /&gt;
我用胳膊支撑着头，靠在窗子旁的墙壁上。车轮轧过伸缩缝的声响间歇着传来，我也能感受到那种轻微的震动。夏日的高温融化了车厢，四处弥漫着一种说不上来的味道，身后的座椅在炙烤下融化，几乎黏在了我的后背上。&lt;br /&gt;
我不再去看那些重复的风景了，就算是云，一直仰着头也太累。&lt;br /&gt;
在半梦半醒中颠簸过了一路之后，四周突然黑了下来。因为是白天，车厢里没有灯，什么也看不见。不过好在很快就亮起来了，大概是到站之前经过的最后一个隧道。&lt;br /&gt;
于是我拎起了手边的包，里面没什么东西，很容易的就能甩到后背上。我让肩带跨过肩膀，一只手在前面拉着它，这样倒是很省力气吧。&lt;br /&gt;
出了车站之后就是一片小小的广场，石板铺成的，漫射着四处而来的光而显得十分刺眼。零星能看见有几个人在其中穿越，看起来也有送别的人，和那时的我一样，只是没有人送而已，那时大概也没有阳光吧。&lt;br /&gt;
走上那条熟悉的路，要去哪里大概也明确了。所谓的不知何处，也只是因为不愿意承认而说的假话罢了。&lt;br /&gt;
四周布满着叶子反射下绿色的光，风吹得树干互相拍打，叶子划破了空气，有着窸窣的脆响。&lt;br /&gt;
大概还是和印象里一样，只是这次我没有自行车，也听不见蝉鸣。&lt;br /&gt;
毕竟已经是这种时节了，曾经跋扈的蝉，大概也产下卵之后在不为人知的地方死去吧。&lt;br /&gt;
可是我呢？我也不知道，我甚至不知道他们还在不在那里，看见我时会是什么表情？我不知道。&lt;br /&gt;
只是，我还是希望他们不在的吧。我不愿意在记起那些东西了，虽然连回想的时候都无从谈起。无论是那顶草帽，还是那白色的、模糊的剪影......&lt;br /&gt;
现在能做的，也只是慢慢地，向着这条延伸的路的尽头走去。在眼睛适应了外面的光之后，我就不再遮着了。车站是在一个较高的地方，从这里能看见那小半个镇子的模样，以及远处的，明亮而蔚蓝的海，黄白色的沙滩。&lt;br /&gt;
我确实恍惚了，我看见阳光照射进海里被溶解，被海波揉碎，熠熠出碎金一般的光；我听见海浪裹挟着前海的沙，把它们推上岸边。我们在海边嬉戏着，有的人抓着鞋奔跑，有的人提着裙子向海中走去。我坐在尚且温热的沙上，旁边是一团白色的东西......&lt;br /&gt;
大概是个人吧，算了，我记不起来了。&lt;br /&gt;
我漫不经心地踢开路上的树枝，大概是被某些风雨折下来的，还保持着水润的模样。&lt;br /&gt;
沿着这条路一直走就是了，可那近乎于一种跋涉，似乎道路在不断延伸。在不知哪一步迈出后，我突然发现到了。&lt;br /&gt;
准确的说，路还没有变，但地势已经变得平坦，围绕着路开始出现建筑了。是那些印象里平矮的木质房子，都很熟悉，只是没有看见人在里面。也许是工作的时间？我不知道，我没有表。&lt;br /&gt;
就算是夏末也是十分热的，我摸索着走进一家同样低矮的便利店......应该不是便利店，总之就是卖东西的地方，买了一瓶矿泉水。&lt;br /&gt;
我用手擦去瓶子表面的水雾，在那种阳光的照射下，我几乎记不住半瓶水是怎么消失的。&lt;br /&gt;
把那瓶水塞进包里之后，我仍旧沿着因为高温而扭曲的街道向前走着。其实我也不知道走到哪里了，这里的模样和我记忆中的，大概完全是两种东西。只是找路都很难，更不要提找到什么地方了。我只记得我的旧家在沿海的路上，但是从车站下来以后，在这里我已经看不见海了，四周只有看起来都一样的建筑和分割它们的路。&lt;br /&gt;
在无数次摸索后，我似乎走到了一个更中心的地方，这里开始出现了人，而且能嗅到来自海的，微弱的咸腥味。只是照比来时的地方更热了，没有了风。也只能随便选一个方向，继续埋着头走。&lt;br /&gt;
在那些艰难的跋涉后，我终于找到了海。和我在车站上看见的海并无二致，我原本期望海滩上会有很多人，但其实没有人。也可能是因为这个时间太热了，没人愿意出来。&lt;br /&gt;
我脱掉鞋子，用手拿着。追随着海滩上不存在的痕迹，一步一步的踏着沙子向前走去，既然找到了海，再找到旧时的家，大概是不难的。&lt;br /&gt;
这个时节的海水，确实不算凉。就算光着脚行走，或者让小腿浸泡在海水中，也几乎感觉不到寒意，只是一种凉爽，而且在海水干了时候，很快就会变成另一种温热。&lt;br /&gt;
我没能从门进去，锁锈的很死，只好从阳台爬了进去，所幸窗户没有锈死，用力还能推开。&lt;br /&gt;
我嗅到了一种浓烈的，灰尘的味道。不过这也正常，毕竟这里已经几年没人光顾了——也许还有，但他们进不去了，不过更大的可能是不愿意再来吧。&lt;br /&gt;
暂且也不去想那些了。我打开自己屋子的窗户，算是散散灰尘的味道。把被子什么的东西都拿去外面拍一拍，灰尘的味道就不会那么明显了。找些水来拖一拖地，那些脚印也淡了很多。&lt;br /&gt;
不过就算除去了灰尘，我也总有一种并不属于这里的感觉。看起来就像没什么东西在对的地方一样，但也没有人再进来这里了。我还是不属于这里，归根结底的说。&lt;br /&gt;
于是我从窗户爬了出去，搬了一只椅子坐在后院里。四周的花大概因为没人养护，已经被杂草挤占了吧。不过我也看不太清，因为太阳落去了。&lt;br /&gt;
其实住在海边，这种时候的感觉很奇怪。虽然算不上热，也没有风，但总是隐隐有一种冷的感觉，在外面没办法回到家的时候，这种感觉就更明显了。潮湿而咸腥的空气贴在我的身上，有一种说不上来的沉重感。抬起头看着天空，让地面脱离视野，这种感觉才会好一点。&lt;br /&gt;
不过，一阵欢笑声很快把我拉回了地面。我能很明显的听出这笑声不来自一个人，而是一群年轻人，也许年龄和我相仿吧。&lt;br /&gt;
这个时间了，她们大概是从什么一起去的地方回来了，应该是在回家的路上。&lt;br /&gt;
出于一种本能性，甚至莫名奇妙的恐惧，我躲在了墙后面，不发出一点声响。但我发现院子的大门没有关，而我来的时候它是关着的。&lt;br /&gt;
可是我什么也做不了，只是坐在草地上靠着墙，听着那些欢笑声渐行渐远，直到回响模糊到基本消失了，才慢慢地关上了大门。&lt;br /&gt;
好在她们已经走远了，只能看见黑色的一小团在路的那一头晃动着。&lt;br /&gt;
哪些人到底是谁什么的，已经不重要了。我没有力气再去关心，只是把自己拖回房间，在床上姑且算是干净的一角躺着，慢慢闭上了眼。&lt;br /&gt;
听说没有梦才是睡得好，可我也说不出来这睡的到底好不好，虽然没有梦，就算也有，我大概也不记得了。&lt;br /&gt;
仍旧把自己从僵硬的床上拖起来，穿了衣服，再顺着窗子爬出去。&lt;br /&gt;
大概也是无所事事的一天，去以前的地方转一转似乎也不错，除去我的那些担心之外，这里的绝大部分人应该都不认识我，或者说认不出我了。这倒也是件好事，但如果我认出他们了呢？大概会很难受吧，至于为什么难受，我也不知道。&lt;br /&gt;
海边的早晨很凉爽，虽然海风还是黏黏的，但风灌袖筒把衣服撑起来，也就没什么黏的感觉了。这条路上没什么车，因为太早了，和我原来的那边不一样，这里的人并不着急去做什么，从我走之前到现在，大概都是如此。&lt;br /&gt;
远方的云也是夏日独有的那种状态，有的云从海面上呈现柱状，指向更上面的天空；有的云有着花椰菜状清晰的棱角，中央发着一些灰，大概是积雨云；更多的是边缘破碎或模糊的，清晰或溶解在天空中的积云，跨度并不大，也比别的云更高，填充着那些缝隙。&lt;br /&gt;
淡蓝色的光投射在地面上，有一种说不清的，迷离而恍惚的感觉。也许这时候有着自行车铃的响声，会更让我恍惚在一种奇异的、扭曲而模糊的回忆中。&lt;br /&gt;
我几乎凭借的直觉开始在小镇里走了起来，虽然说这几年里变化很大，不过只是徒有其表而已，那些路其实并没有变，不过不能再按照印象中的那些建筑物来定位了。&lt;br /&gt;
我准备先去学校看看，这个时间大概还没有开门，所以不必担心见到别人。但是没走过几个路口，我就碰见人了。&lt;br /&gt;
我目视着前方，假装没有看见人。在城市里，这种方法是很管用的，但是在这里是没用的，我还是被叫住了。&lt;br /&gt;
“你回来了？”&lt;br /&gt;
他说这句话听起来很自然，就像他认识我一样。但是他是谁？我没有皱眉头，但也只能硬着头皮接下去。&lt;br /&gt;
“好像是。”&lt;br /&gt;
“什么叫好像？你不是就在这吗，是不是不认识我了？”&lt;br /&gt;
“不认识了”这种话，应该是他说的吗？看起来他确实认出了我，但我完全没有印象，也拼凑不出一点线索。&lt;br /&gt;
“你是......”&lt;br /&gt;
“那也正常，那时候你也不怎么认识我”&lt;br /&gt;
他打断了我的话，不过没有想让我尴尬的意思。&lt;br /&gt;
“因为你那时候不是总和她在一块吗，你们经常一块去海边，是不？”&lt;br /&gt;
“也许.....是吧。”&lt;br /&gt;
她是谁？我只能回想起一个白色的剪影和一些莫名奇妙的情绪，似乎我确实总是在海边看见那个身影。不过照他说的，我不应该很认识她吗？&lt;br /&gt;
“她还在不在这边来着，我挺久没见到过了，自从你走了之后。”&lt;br /&gt;
“......对不起。”&lt;br /&gt;
我只能挤出一句抱歉了，但是为什么要道歉呢？这些理由大概也随着我忘记的那些东西一同远去了吧。提到她，我心中有种难以言表的感觉，不过她到底是谁？我又完全没有眉目。&lt;br /&gt;
他又接着说了点什么，很像是寒暄，熟人之间的。不过我没有听清，也没有力气去听他到底在说什么了。只是记得不断点头，我回过神的时候，他已经走了。&lt;br /&gt;
所以我继续向着学校走去。&lt;br /&gt;
绕过几个无人的路口之后，就到了大门这里。不过我对这里是很陌生的，我来这里上学的时间，满打满算可能也没有半年。操场看起来很大，楼呢？看起来也很普通，我也不知道学校能看起来有什么不普通的样子。&lt;br /&gt;
也不知道这条不算长的路我走了多久，太阳已经从地平线下升起来了，不过只是悬挂在海平面上，还有一多半的身躯并不能看见。清晨的蓝色也消失了，取而代之的是与落日一般昏黄而黑暗的天空，以及金黄色的耀眼的光。&lt;br /&gt;
我很不习惯这种景象，一个是因为离开这里之后就没见过，一个是因为......太刺眼了？我说不准，但总是感觉那种颜色并不属于我，也与我无关。&lt;br /&gt;
即便是这么说，我也迈不开步子，站在那里被迫看了好久。等待我能走路的时候，已经晚了。&lt;br /&gt;
我顺着原来的路返回，但一路上我遇见的穿制服的学生越来越多，我越是往回走，被包围的感觉就越明显。虽然没有多到阻塞街道，但我还是有一种逆流而上，走不动了的感觉。&lt;br /&gt;
于是我钻进了旁边的小店，权当是一种避难了。不过这也是个便利店，正好我还没吃什么东西，虽然还不饿，但依照惯例买些东西吃，还是不错的。&lt;br /&gt;
我坐在离窗子远的，靠里面的一个座位上。试图从包里找出些什么，但我发现好像手机没有带，钱包也没有带。那我到底是怎么到这里的？我也不知道，也记不清了。&lt;br /&gt;
我把包里翻出来的那些东西都塞回去，把椅子推回去准备走了。&lt;br /&gt;
“自己一个人来？”&lt;br /&gt;
我从背后听见了一种......熟悉的声音？但我又可以很确定我不认识这个人。不过听这个语气，大概也是像刚才那个一样吧，是认识我的人。&lt;br /&gt;
“差不多吧。”&lt;br /&gt;
我回过头去，看见一个稍微比我矮点的人。和我不是同龄，看起来比我大不少，大概是比我更早的那些人吧。&lt;br /&gt;
“我记得挺久都没看见你了，你干啥去了？那个小姑娘呢，经常跟你一块儿的？”&lt;br /&gt;
“我不太清楚了。”&lt;br /&gt;
“我这上了年纪的人，记不住以前的事儿咯。”&lt;br /&gt;
记不住就记不住，我想也没必要特意说出来。不过那些事情，大概我也是不记得的。&lt;br /&gt;
那个人从货架上拿了一个饭团，塞到我手里了。&lt;br /&gt;
“还没吃饭吧？有什么事忙都要先吃饭啊。”&lt;br /&gt;
伴随着这句话而来的，是一种充满关怀的笑容。我很不习惯这种温度，毕竟对我来说，被一个人关心是多么久远的事情了。我把饭团也一并放进包里，出了便利店之后就沿着宅子之间的小路往回走。&lt;br /&gt;
在那些小路上还是会碰见不少人，但我没有地方躲，只能硬着头皮走，害怕着再从哪里跳出来一个认识我的人。也许对于大多数认识我的人来说，我那不辞而别是一种彻头彻底背叛，虽然那些我不知道的事情归因也许不再我。但我，大概是一个很好的垃圾桶吧，我知道的。&lt;br /&gt;
在人流过后，那些小路上又没有人了。于是我继续在路与路之间穿梭着，回到镇子边缘的那条路上，那才是我熟知的地方。&lt;br /&gt;
可是我又在那些宅子之间迷路了，我用力的捶了一把路牌，但除了巨大的声响和手上的疼痛之外，什么也没有。&lt;br /&gt;
为什么总是一事无成呢？&lt;br /&gt;
我生气了，但也没有怎么样。只是随便找着方向，低着头乱走一通，有没有回到原点什么的，已经没有力气去关心了。&lt;br /&gt;
不知道为什么，我不自觉地闭上了眼，伴随有一种诡异的失重感，我睁开眼时已经坐在了地上。&lt;br /&gt;
一只手伸到了我的面前，我抬起头去，看见了另一个人。我怕他还是认得我的人，所以只是用手支着地自己站起来，扭过头去不去看他。&lt;br /&gt;
可是我还是在余光中看见了，那是两个人，看起来也比我大，不是同龄人。但是不知道为什么，看起来总有一种莫名奇妙的即视感，难道是......&lt;br /&gt;
“啊，你是...”&lt;br /&gt;
听见这三个字时，我竟然不是很意外。&lt;br /&gt;
我立刻甩开了那只手，低着头跑开了，直到我再也看不见那两个人，再也看不见每一个人。我拼命的向着一个方向跑去，从哪里我终于回到了镇子的边缘，我唯一熟知的地方。&lt;br /&gt;
可是在这路上也有骑自行车的人，于是我迈向沙滩，贴着路基慢慢行走，以便不再看见任何人。&lt;br /&gt;
粗糙的表面划破了我的手，每一步都陷在沙子里面。毕竟不是了早晨，那种我许久不见了的，炽烈的阳光又照在我身上。这里没有隐蔽处，只是感受着皮肤上的灼热感，以及阵阵而来的，稍微凉爽一些的海风。&lt;br /&gt;
不知道了过了多久，可能是很久，可能也只有几分钟，我才意识到，周围已经没有声音了。比声音消失更早的，大概是我的脚步，我再也走不动了，只能背靠着路基，一点一点的滑落在地上，坐在那里，什么也做不了。&lt;br /&gt;
我脱下鞋，把那些沙子都倒出来，再拍一拍衣服，上面大概已经全都是灰尘了。&lt;br /&gt;
毕竟太阳刚刚升起来，那种我不熟知的，炽烈的阳光只是照着我，并没有温暖这些沙子，连表面都没有，下层更是如此。那种寒冷和潮湿的感觉从我接触地面的每一个传来。也好吧，这样的感受，至少比我已经接受不了的那种热度要好。太热了，我已经没有力气了。&lt;br /&gt;
我用头靠着路基，看着海面上的天空。和我印象中的似乎不太一样，此刻的天空，好像格外的晴朗。我说不出来那种感觉，不是完全没有云，只是在高层有一点冰晶状的卷云，那种蓝色依旧是很浅。可是这种天气，和以往的夏日，又有什么不一样呢？我不知道，也不想去想了，大概会牵扯到一些模糊的回忆，模糊到我都不知道从何回忆。但只要不去想，就总会是好的。&lt;br /&gt;
为了打消那些停不下来的念头，我扶着地面站了起来，把鞋子扔远，提着衣角，慢慢向着海中走去。&lt;br /&gt;
海水没过了我的小腿，确实有一种凉的感觉。海水偶尔会溅到更高地方，再被风吹干，就更感受到一种清凉了，就算站了很久，也没有海滩上那种冰冷的感觉。&lt;br /&gt;
海平面的尽头似乎是一条清晰的黑线，在远处和天空融合在一起。虽说走远了看，海面只是反射着零碎的光，但置身其中时，我似乎看见了......紫色的光？也许是颜色太单调而产生了错觉，我也不太清楚。&lt;br /&gt;
但是我在更远的地方，看见了一个影子一样的东西。那似乎也是直立着的，不过只是一个再小不过的点，我也分不清那是个人影，还是什么本来就在海里的东西。&lt;br /&gt;
那到底是什么呢？我走进了一点，但还是看不清，又走进了一点，看起来还是距离那里很远，就这样，我一直走着，试图接近那个点，无论到底是什么。&lt;br /&gt;
我突然听到一种声音，听起来很像是人声，似乎从天空远处传来，我甚至分不清那是哪里传来的。&lt;br /&gt;
如果是人声的话，大概是在身后吧。于是我转身过去，但似乎被什么东西推了一下，没有站稳。&lt;br /&gt;
呛了一口水之后，我重新抬起头来，在岸边的那侧，我又看见了一个影子。&lt;br /&gt;
但我发现我已经走得太远了，海水几乎到达了腰部，如果再往里走的话，我大概也没有机会回头了吧。&lt;br /&gt;
于是我向着另一个影子走去，但这次很快就能看清了，那确实是个人，不过逆着光，我也看不太清楚，依旧只是一个黑色的剪影，似乎还向我招着手。在我重新回到海滩上之后，我就能听清她在喊什么了。&lt;br /&gt;
“别再往海里走了，很危险！这里的海早上会涨潮的！”&lt;br /&gt;
海会涨潮吗？好像会吧，我记不得了。&lt;br /&gt;
“谢谢。”&lt;br /&gt;
“谢谢什么？”&lt;br /&gt;
“谢谢你提醒我。”&lt;br /&gt;
也许是这样的对话很尴尬吧，她似乎不再说话了，我也看不清她的表情，什么都看不清。但我看见那影子似乎移动了一下，也许是她在看着我吧，虽然看不清，但还是有那种视线的感觉。&lt;br /&gt;
她走了。&lt;br /&gt;
看着那轮廓，我想大概是裙子吧，也许她也是那里的学生，可是为什么这个时间了还出现在这里呢？我不知道......不，这次也许我大概知道了。&lt;br /&gt;
在另一阵跋涉后，我终于回到了那间屋子。&lt;br /&gt;
我锁上房间的门，关好窗户，再锁上大门。依旧把包从肩上绕过去，一只手在前面拉着。&lt;br /&gt;
我把那个饭团放在院子里的桌子上，再把那半瓶水放在旁边。在简单的休整过后，我就沿着来时的路离开，走向车站了。&lt;br /&gt;
站前的广场上还是很热，也没有几个人，和那时候一样，也没有人送我。不过我记得了，那次的阳光，大概也如这次一样剧烈吧。&lt;br /&gt;
不过又能怎么样呢？记得不记得也好，知道不知道也罢。&lt;br /&gt;
只是站在月台边缘，看着延伸向远处的铁轨。回家的火车要前往哪里呢？大概在下车之前，我还是不知道的吧。&lt;/p&gt;
</content:encoded></item><item><title>Wiki.js - 全世界最好的 WIki 引擎，有多好？</title><link>https://nalanyinyun.work/posts/wikijs/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/wikijs/</guid><description>通过 GCP 和 Cloudflare 部署 Wiki.js, 以及我自己的一些体验</description><pubDate>Sun, 29 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;为什么是 Wiki.js？&lt;/h2&gt;
&lt;p&gt;市面上的 Wiki 引擎实在算不上少，但能入眼的并不多。MediaWiki 对于小项目来说“杀鸡用牛刀”，Dokuwiki 实在是太难看，TiddlyWiki？它更像是一种笔记整理软件，而非真正的 Wiki 引擎，而且他们的官网我就没能打开过。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The most powerful and&lt;/strong&gt;
&lt;strong&gt;extensible open source Wiki software&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我觉得很少有软件会上来就这么说，但这就是 Wiki.js 的 slogan. 既然它敢这么说，那肯定有它自己的理由。除去它自己的宣传，吸引我的还有几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;支持 Markdown 和 WYSIWYG 编辑器&lt;/li&gt;
&lt;li&gt;开箱即用，包括用户管理，内置搜索，Web Analytics 等等&lt;/li&gt;
&lt;li&gt;基于 Node.js，实际测试上性能不错&lt;/li&gt;
&lt;li&gt;可以自动从 Git 集成抓取内容生成页面&lt;/li&gt;
&lt;li&gt;UI 好看&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;至于最吸引我的，还是 UI 好看这点，虽然我也没觉得有多好看，但至少比 MediaWiki 云云好多了。&lt;/p&gt;
&lt;p&gt;但 Wiki.js 也不是十全十美，它们因为社区问题搁置 3.0 版本很久了，不过现在的 2.0 也不是不能用。&lt;/p&gt;
&lt;h2&gt;部署：Docker Compose&lt;/h2&gt;
&lt;p&gt;下面只提供 Docker Compose 的部署方式，如果你用 Ubuntu LTS，可以参考 &lt;a href=&quot;https://docs.requarks.io/install/ubuntu&quot;&gt;Ubuntu LTS&lt;/a&gt; 专门的教程。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;version: &quot;3.8&quot;

services:
  db:
    image: postgres:16-alpine          
    environment:
      POSTGRES_DB: wiki
      POSTGRES_USER: wikijs
      POSTGRES_PASSWORD: wikijsrocks    # 改密码，改密码，改密码，重要的事情说三遍
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
    logging:
      driver: none

  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    ports:                  
        - 80:3000
volumes:
  db-data:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是 Wiki.js 官方提供的 Docker Compose 配置，基本上是开箱即用的。你只需要把它放在一个目录下，运行 &lt;code&gt;docker compose up -d&lt;/code&gt; 就可以了。&lt;/p&gt;
&lt;p&gt;如果你需要修改这些环境变量，参考&lt;a href=&quot;https://docs.requarks.io/install/docker&quot;&gt;官方文档&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;暴露服务&lt;/h2&gt;
&lt;h3&gt;Nginx&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;server {
    listen 80;
    listen [::]:80;
    server_name  wiki.example.com; 

    return 301 https://$host$request_uri;
}


server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name  wiki.example.com;


    ssl_certificate      /etc/nginx/ssl/wikijs.pem; # 申请证书
    ssl_certificate_key  /etc/nginx/ssl/wikijs.key; # 申请证书


    ssl_session_cache    shared:SSL:10m;
    ssl_session_timeout  10m;

    location / {
        proxy_pass http://127.0.0.1:3000; 
        

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;


        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection &quot;upgrade&quot;;

        client_max_body_size 50m;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;不过说实话，如果你的服务器不在国内，我不是很推荐直接用 Nginx 反向代理。我自己使用的是下面的方案。&lt;/p&gt;
&lt;h3&gt;Cloudflare Tunnel&lt;/h3&gt;
&lt;p&gt;通过 Cloudflare Zero Trust 的 Tunnel, 可以直接将本地的服务通过 Cloudflare 网络暴露到公网。Cloudflare 会自动终结 SSL, https 这些事情都不需要操心，而且可以利用 Cloudflare 边缘网络的各种功能。&lt;/p&gt;
&lt;p&gt;从本质上来说，Cloudflare Tunnel 是内网穿透服务，所以不需要给服务器分配公网 IP,  也不需要配置任何的入站规则。这也是个安全性上，小小的默认优势。&lt;/p&gt;
&lt;p&gt;我用的是 GCP, 可以直接用 IAP 隧道连接到 VM, 如果你的提供商没有类似的功能，用 Tunnel 来管理 SSH 也是个更安全的选择。&lt;/p&gt;
&lt;p&gt;当然，如果你不信任 Cloudflare 或者需要 Nginx 精细控制，这可能不是个好办法。&lt;/p&gt;
&lt;p&gt;修改上面的 Docker Compose, 改成大概这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;version: &quot;3.8&quot;

services:
  db:
    image: postgres:16-alpine        
    environment:
      POSTGRES_DB: wiki
      POSTGRES_USER: wikijs
      POSTGRES_PASSWORD: wikijsrocks    # 改密码，改密码，改密码，重要的事情说三遍
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data
    logging:
      driver: none

  wiki:
    image: ghcr.io/requarks/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: wikijsrocks
      DB_NAME: wiki
    restart: unless-stopped
    # ports:               # 取消端口映射，Cloudflare Tunnel 会直接连接到容器内部的 3000 端口
    #   - &quot;80:3000&quot;

  cloudflared:
    image: cloudflare/cloudflared:latest
    restart: unless-stopped
    command: tunnel --no-autoupdate run --token YOUR_TUNNEL_TOKEN_HERE
    depends_on:
      - wiki

volumes:
  db-data:
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;使用体验&lt;/h2&gt;
&lt;p&gt;Wiki.js 给我的第一印象就是性能很不错，我只选了一个 e2-medium 实例，就能流畅的使用 Wiki.js 的各种功能，我不太清楚用户规模扩大之后它的表现怎么样，毕竟我也没有测试的机会。&lt;/p&gt;
&lt;p&gt;它基本拥有所有你需要的功能，我不想具体罗列，你可以去官网看，或者直接上手体验一下。作为一个参考，我觉的少数派上 &lt;a href=&quot;https://sspai.com/post/78945&quot;&gt;这篇文章&lt;/a&gt; 写的很全。&lt;/p&gt;
&lt;p&gt;它的 UI 也还不错，虽然不算特别好看，有一点 Material Design 的感觉，但是这个图标是真难看。&lt;/p&gt;
&lt;p&gt;我倒是没有找到它们的 Demo, 如果你想大概看看 Wiki.js 到底长啥样，可以去 &lt;a href=&quot;https://wiki.nalanyinyun.work&quot;&gt;我的 WIki&lt;/a&gt; 看看。&lt;/p&gt;
</content:encoded></item><item><title>粉雪</title><link>https://nalanyinyun.work/posts/%E7%B2%89%E9%9B%AA/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E7%B2%89%E9%9B%AA/</guid><description>我已不记得那是冬日的第几场雪......</description><pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我已不记得那是冬日的第几场雪&lt;/p&gt;
&lt;p&gt;当洁白的雪从灰霾的天空落下&lt;/p&gt;
&lt;p&gt;当远方的风再次吹起&lt;/p&gt;
&lt;p&gt;当归于地面的雪再次飞起&lt;/p&gt;
&lt;p&gt;我看见了一个热闹的冬天&lt;/p&gt;
&lt;p&gt;我看见落在树上的雪融化着流淌&lt;/p&gt;
&lt;p&gt;我看见白色的雪上木色的水痕&lt;/p&gt;
&lt;p&gt;我听见四处滴滴答答的脆响&lt;/p&gt;
&lt;p&gt;我看见一个寂静又喧嚣的冬日&lt;/p&gt;
&lt;p&gt;太阳和月亮乃至天空都消失的日子&lt;/p&gt;
&lt;p&gt;所见的也只是一地的雪&lt;/p&gt;
&lt;p&gt;在那些冰晶吸收着热量蒸发之后&lt;/p&gt;
&lt;p&gt;哪里还能找到尚存的光热？&lt;/p&gt;
&lt;p&gt;枯黄的叶子早已不见了踪迹&lt;/p&gt;
&lt;p&gt;方形的石板上不见了灰尘&lt;/p&gt;
&lt;p&gt;黑色的马路褪去了颜色&lt;/p&gt;
&lt;p&gt;只有无数的灯徒劳地照着&lt;/p&gt;
&lt;p&gt;蒸汽却依旧在窗沿自顾自的凝结&lt;/p&gt;
&lt;p&gt;就连冬日永恒的主角也无法长存&lt;/p&gt;
&lt;p&gt;雪在北方坚硬的寒风呼啸中粉碎&lt;/p&gt;
&lt;p&gt;又在雪铲和铁斗的蹂躏下融和&lt;/p&gt;
&lt;p&gt;那些可以踩过可以握住的粉雪消失了&lt;/p&gt;
&lt;p&gt;取而代之的大小不一肮脏而坚硬的雪块&lt;/p&gt;
&lt;p&gt;掩盖着世界一切污浊的雪不见了&lt;/p&gt;
&lt;p&gt;我厌恶着的一切又暴露在消失的日光下&lt;/p&gt;
&lt;p&gt;我不想见到那些冷漠的路&lt;/p&gt;
&lt;p&gt;不想见到那些刺眼的光&lt;/p&gt;
&lt;p&gt;我怀念着缩小了无数倍静谧的街道&lt;/p&gt;
&lt;p&gt;怀念着空无一人的世界&lt;/p&gt;
&lt;p&gt;怀念着雪在手中融化时的清晰的痛&lt;/p&gt;
&lt;p&gt;怀念着在世界中仍旧存在的错觉&lt;/p&gt;
&lt;p&gt;可是那一切都不再存在了&lt;/p&gt;
&lt;p&gt;那些不被容许的慵懒随着雪一同被翻去了&lt;/p&gt;
&lt;p&gt;于是我躲回了遮蔽着一切的屋檐下&lt;/p&gt;
&lt;p&gt;再也看不见冬日种种的景象&lt;/p&gt;
&lt;p&gt;我向着和雪一样洁白的墙壁祈祷着&lt;/p&gt;
&lt;p&gt;祈祷着天空再给我一个无边无际的雪天&lt;/p&gt;
</content:encoded></item><item><title>乡村教师</title><link>https://nalanyinyun.work/posts/%E4%B9%A1%E6%9D%91%E6%95%99%E5%B8%88/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E4%B9%A1%E6%9D%91%E6%95%99%E5%B8%88/</guid><description>夕阳下河滩上的恍惚，无处安放的存在和格格不入的清醒，大概，我是不属于这里的吧</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;其实我从没想过，时间可以走得这么慢。慢到一下午只听见风吹过树叶，鸡叫几声，然后又静下来。&lt;/p&gt;
&lt;p&gt;在城市的时候，我天不亮就要挤地铁，出门时天是黑的，回家时天早就黑透了。日子堆在一起，没有边界，我甚至忘记太阳是什么颜色。&lt;/p&gt;
&lt;p&gt;我是不愿意来的。在我的印象里，乡村就是条件艰苦、生活单调，人们跟着太阳起床，又跟着太阳睡下，白天除了务农没什么别的事。和城市不同，城市的灯永远亮着，这里的人只听太阳和天气的安排。
我是来支教的。&lt;/p&gt;
&lt;p&gt;在来之前，我已经做好了接受艰苦生活的准备，却从未想过，所谓的艰苦是另一种样子。&lt;/p&gt;
&lt;p&gt;我独自行走在宽大的河滩上，太阳已经接近了地平线。看见了昏黄而慵懒的光，它要从地平线下延伸，让整片天空都染上它的颜色。&lt;/p&gt;
&lt;p&gt;阳光晒过的沙子十分松软，依稀能感受到阳光的质量和温度。河水在这里流速放缓，甚至分裂成几条蜿蜒的光流，从金色沙子中缝隙穿过，粼粼着同样的金光。&lt;/p&gt;
&lt;p&gt;我能听见自己的呼吸和心跳，还有水轻轻拍打的声音。脚步落下时，沙土会发出窸窣的声响。我早就站在这里等候着，等候着我从未见过却十分熟悉的热闹景象。&lt;/p&gt;
&lt;p&gt;几声悠远的牛鸣从远方的天空中传来，我沿着河滩对岸留下的蹄印找去，发现它指向了声音来时的方向。&lt;/p&gt;
&lt;p&gt;各种其他的声音也夹杂进来了——金属农具咯噔咯噔地相互碰撞，一些不知名的工具在地上拖行；农人们在田地上忙碌了一天，他们相互交谈和偶尔传来的爽朗的笑声。&lt;/p&gt;
&lt;p&gt;在我的身后也有着各种各样的声响，有些人提着盆来河边洗衣，一边走，一边交谈、嬉笑。小孩子飞快地在野径上奔跑，也许是迎接大人，啪嗒啪嗒的飞快跑着。&lt;/p&gt;
&lt;p&gt;我还什么都没有看见，但很快，我就要看见璀璨到夺取了落日中太阳的光辉的景象，至少暂时地，太阳不是河滩上的主角了。我什么都不用做，也不用担心什么，只需要等待。&lt;/p&gt;
&lt;p&gt;他们来了。&lt;/p&gt;
&lt;p&gt;水牛慢慢地走向河滩，全身都在扭，有的水牛背上是鞍，有的干脆就是一条麻袋。少年们悠哉的坐在牛背上，排成排，后面赶着前面的。有些人手里拿着什么食物嚼着，有些人捧着自制的笛子找音，有人躺在牛背上看着书。我认识他们，那是我的学生，他们下午很早就放学了，大概就是去放牛吧。&lt;/p&gt;
&lt;p&gt;也看见了那些务农的人，扛着各种各样我不认识的农具大步往回走；身后的人们也在往这里赶，先到的人找了条干净的水流蹲下洗衣服，后到的人只能在人堆里挤出来一个地方；更小的没法干活的孩子们奔向他们的父亲——或者母亲，都晒的黝黑，皮肤在太阳的照射下发亮。他们的皮肤不像我的——我伸出胳膊看了看，虽然也反光，但明显更细腻，而且泛着光，不是很亮。&lt;/p&gt;
&lt;p&gt;金色的水雾笼罩在空中，沉重的空气贴在皮肤上。光线一根一根的折断，变得昏黄再变得灰暗，这是河滩上最热闹的时候，几乎村镇里所有的人都会聚集在这里，或者说，路过这里。&lt;/p&gt;
&lt;p&gt;作为一个从小就生活在城市里的人，这种场面对我的震撼非常大，原来世界还可以这么热闹，一块平整的河滩上可以如此的温暖，漫布着温情和金色的光。虽然我每天都会到这里看，但每次带给我的震撼都是一样的，无论怎样，那个片刻确实是美丽的，用我的眼光看。&lt;/p&gt;
&lt;p&gt;“老师好！”&lt;/p&gt;
&lt;p&gt;我听见熟悉的声音，喊的很大声，把我从一如既往的恍惚中拉回。放牛的队列里打头那个孩子认出我了，他正在朝我挥手，跟在他后面的孩子也是。大家很快就注意到我了，有些大人看了看之后都在往我这里凑。其实我很想离开，我不喜欢说话，而且和这里的人说话——我当然不是看不起他们，只是交流可能会比较困难。&lt;/p&gt;
&lt;p&gt;所幸问的都是些小事，什么乖不乖，作业有没有好好写，有没有好好吃饭。只是有个中年的男人问我，似乎带着不满或者傲慢的语气？虽然不知道哪里来的自信，他问我：&lt;/p&gt;
&lt;p&gt;“老师，读书有用吗？孩子能找到好工作吗？”&lt;/p&gt;
&lt;p&gt;“学习不是读书，它不用来找工作，也不用来‘有用’，现在学的一切都没有用，有用的是开阔的眼界和严谨的思考能力，就算是种地，也会有自己的价值。”&lt;/p&gt;
&lt;p&gt;他沉默了，但我没有，我不愿意听见这样的话，所以我继续说：&lt;/p&gt;
&lt;p&gt;“你知道植物茎干发黄的时候该怎么办吗？”&lt;/p&gt;
&lt;p&gt;“施肥。”&lt;/p&gt;
&lt;p&gt;“什么肥？”&lt;/p&gt;
&lt;p&gt;“化肥。”&lt;/p&gt;
&lt;p&gt;“氮肥，有的时候可能是土壤条件不好或者有病害，要施一点生物菌肥。”&lt;/p&gt;
&lt;p&gt;他又沉默了，沉默了一会之后，自己离开了。其实我也不懂什么农业，但这些生物知识我还是记得一点的，都怪他，河滩上的人都已经散去了。不过没关系，明天这个时候还会有的。&lt;/p&gt;
&lt;p&gt;我踏上来时那条宽敞的土路，大概也是被踏平的。太阳已经落去，光线也所剩无几，接着一点点极暗的光，我向着村镇的中心走去。&lt;/p&gt;
&lt;p&gt;那里有政府的食堂，以及工作人员的宿舍，我也算是个外派的人，所以吃住都和他们在一起，只是我的身份特殊些，待遇也要好一点。&lt;/p&gt;
&lt;p&gt;一路上耸立的烟囱都冒着有些刺鼻的烟，那些烟雾盖住了天空，夜晚在太阳尚未完全落下的时候开始了。夜幕的主角重新归于了天空，但它还没有登场。&lt;/p&gt;
&lt;p&gt;这里从黄昏开始到第二天黎明都很安静，在路上隔着窗子可以听见人们饭桌上的交谈，像是什么收成不太好，也有人打骂着，对象大概是孩子？因为没有写作业的事情吧，我自认为我留作业还不算多的，也不太清楚。
我走上平坦的石头铺成的广场，走进那栋不算高但宽大的建筑，那是政府食堂，忙碌了一天的工作人员们也在吃饭，而且闲谈着。什么条件不好，观念落后，工作开展不顺利的，也有些人和我一样是外调来的，只是不和我一样教书。&lt;/p&gt;
&lt;p&gt;我拿了一个餐盘，用不锈钢的大勺装了些肉菜，有些的蔬菜看起来也很新鲜，我也盛了点。虽然卖相看起来不太好，但味道还是不错的，这里文员多，吃的比较清淡，挺好的。我闻见的那些烟囱里冒出来的东西大多是重油重盐、浓烟赤酱的东西，体力劳动者吃这样的东西还算合适，换做我的话早就吐了吧。&lt;/p&gt;
&lt;p&gt;我挑了一个离窗户远的地方自己坐着，听说也有几个年轻人调来这里工作，但是我没找到他们在哪，大概已经吃完了在哪里散步吧。&lt;/p&gt;
&lt;p&gt;那个河滩确实很热闹，很漂亮，但和我也没什么关系。我不参加劳动，也不操心收成怎么样，更不用过问晚饭做没做和衣服洗没洗，孩子作业写的怎么样之类的。这是我这种局外人的奢侈，对于他们来说，只是一段普通的回家路。我只要在村子里走走，就会有人和我打招呼。我看见过田野上绿色的作物翻滚，农人的汗水是真实的，我的感受确实轻飘的。他们不会觉得翻滚的稻田——还是小麦？我分不清楚，有什么美丽的地方，落日多么让人恍惚。&lt;/p&gt;
&lt;p&gt;不过，就算那是片面的，也是真实的。我不会否定它的美丽，但不得不承认，村镇人的苦难与我无关，我只是局外人，换句话说，一个过客而已。&lt;/p&gt;
&lt;p&gt;一个人端着餐盘坐在了我对面。&lt;/p&gt;
&lt;p&gt;“感觉怎么样？”&lt;/p&gt;
&lt;p&gt;我抬头打量了他一下，他是这里的书记，我记得，是他来接我的，好像我的食宿之类的也是他负责安排。但是他打断了我的思绪，我最不喜欢有人打扰我，尤其是我想东西的时候。&lt;/p&gt;
&lt;p&gt;“比我预想的好很多。”&lt;/p&gt;
&lt;p&gt;“他们都说和想象中的差远了。”&lt;/p&gt;
&lt;p&gt;“他们的预期太高了，都是看惯了田园牧歌的那种人，局外人的看见的东西都是美的，但置身其中就不一定了。”&lt;/p&gt;
&lt;p&gt;“适应的不错，工作进展呢？”&lt;/p&gt;
&lt;p&gt;“比较顺利吧，孩子们虽然基础不好，但灵性不错，教起来不算难。”&lt;/p&gt;
&lt;p&gt;他拍了拍我的肩膀。&lt;/p&gt;
&lt;p&gt;“有什么困难尽管和我说，我会帮你解决的。”&lt;/p&gt;
&lt;p&gt;“谢谢。”&lt;/p&gt;
&lt;p&gt;再之后只是一些无聊的工作内容和计划，在我吃完准备离开的时候，他突然说：&lt;/p&gt;
&lt;p&gt;“还有几个年轻人也是调过来的，你没事的时候去跟他们走走吧。”&lt;/p&gt;
&lt;p&gt;我疑惑的看着他，这话是什么意思？&lt;/p&gt;
&lt;p&gt;“没事儿，我就是看你老是自己一个人走，也不太爱说话。我是本地人，不太懂城里是怎么样的，但是在这里这样是很难的，哪怕是客气客气，也会好很多。”&lt;/p&gt;
&lt;p&gt;原来是在担心我，好吧。&lt;/p&gt;
&lt;p&gt;我点点头，把餐盘放回去，回宿舍了。&lt;/p&gt;
&lt;p&gt;虽然不大，但也是单人间，一张桌子，一张床，不太干净的窗户。其实和我住的公寓没什么区别，这里可能还更安静，只是窗外没有各种颜色的光，没有夜晚也不停歇的车与人的声音，让我感到十分陌生，以至于异样到难以入眠。&lt;/p&gt;
&lt;p&gt;而且这里的信号覆盖也不好，更不用提什么无线网络。我身上带着手机和电脑，但都派不上用场，随身携带着它们弄得我像是另一个世界的人穿越来的。不过还可以写信，邮局这里是有的，而且还有稳定的供电，使我确信了还是现代社会，还算不错吧。我关了灯，盯着满天的星，在不知不觉中睡着了。&lt;/p&gt;
&lt;p&gt;据说做梦是因为睡的不深，反正我是过了个无梦的夜晚。&lt;/p&gt;
&lt;p&gt;睁眼之后的事，无非是洗漱，穿上衣服，顺着另一条土路往学校走。我没拿书，虽然不是第一次去，但我也不知道有什么可以教的。我能做的无非是教一些通识，而且小孩还很小，学的东西太简单，也轮不到我上场。&lt;/p&gt;
&lt;p&gt;那些加减乘除的东西用不到我，我是教的科学，和我印象中的科学不一样，在这里这是门大杂烩，我什么都教，只要学生感兴趣。比如小麦低温春化之后才能正常繁育的原理、路面积雪结冰要撒盐的原理、雨雪的形成原理、辨识不同类型的云，以及一些我见过的东西——车辆、地铁、电梯之类的，反正孩子们都没见过，都很感兴趣，没有投影仪，也只能靠我一张嘴讲，不过孩子们挺高兴，下课了还围着我问。&lt;/p&gt;
&lt;p&gt;我的作业也很少，比如主题作文、科学创想、数学原理在现实中的应用、社会实践与调查、生物探究报告这些。也许是因为我不管课堂的纪律，也不留什么很多的作业，也不说教学生，当然也可能因为我是个城里来的外人，我跟本地的老师很难搭上话。不过我的办公室和他们不在一起，倒也无所谓，反正我知道，我带的学生成绩比他们教的好多了，学习不是功利主义驱动的，这是教育理念的问题。&lt;/p&gt;
&lt;p&gt;上课调皮捣蛋的，我就放去操场玩，睡觉的，我就让他睡，作业写不写？无所谓，我才不管。我不是非要让每一个孩子都好，我在那些想出去看看的孩子心理埋下未来，但我也并不期许他们能真的走出去。
我从来不找学生家长，也不去学生家里看情况，这不是我该做的事。于是早早的放了学，我又会回到河滩上，等待着日复一日的热闹时刻。&lt;/p&gt;
&lt;p&gt;我确实没有当地的老师了解当地的情况，我了解又能怎样呢？就算我真的能改变什么，时间也太短了，那些人需要我，我迟早会被调回城市的。&lt;/p&gt;
&lt;p&gt;太阳也落去了，我慢慢的离开河滩，但是向着另一个方向走去——我去看看那些田野。&lt;/p&gt;
&lt;p&gt;夜色从地平线上铺展开来，满天的星像是落在黑布上的灰尘，但其实还天空带着一点极深邃蓝色，像是某种名贵的宝石。&lt;/p&gt;
&lt;p&gt;这是个无月但有风的夜，也是不用说也知道的好天气。&lt;/p&gt;
&lt;p&gt;四周没有粉碎风的高楼，没什么遮蔽的东西，风直直的划过那些小麦或者是水稻的尖端，再扑向我，很冷。&lt;/p&gt;
&lt;p&gt;我看着那宽阔到令人恍惚的田野，想起了我梦中奔跑的瞬间，但是我不能奔跑，那是农人的劳作。&lt;/p&gt;
&lt;p&gt;我将一切都留在身后，一丝一毫都不带走。&lt;/p&gt;
&lt;p&gt;于是我空着手离开，一切又归于沉寂。&lt;/p&gt;
</content:encoded></item><item><title>利用 Resend 和 Workers 零成本实现电子邮件订阅</title><link>https://nalanyinyun.work/posts/newsletter/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/newsletter/</guid><description>利用 Resend，Workers，GitHub Action 和 Tally 搭建一个全自动的邮件订阅系统</description><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;起因&lt;/h2&gt;
&lt;p&gt;虽然没什么人看，但我突发奇想想要给博客加上一个电子邮件订阅系统。&lt;/p&gt;
&lt;p&gt;最开始的想法是利用网站已有的 RSS 进行转换，因为我不怎么了解 Resend，最开始就想要找一个全自动的托管平台。&lt;/p&gt;
&lt;p&gt;但问题就是，类似于 Mailer 这样的服务免费额度确实很大，但我们想要的最核心的功能 &lt;code&gt;RSS to Email&lt;/code&gt; 却是收费的，那要这么大的免费额度干什么呢？&lt;/p&gt;
&lt;p&gt;正好了解过 Resend，干脆就自己手搓一个吧。&lt;/p&gt;
&lt;h2&gt;构思设计&lt;/h2&gt;
&lt;p&gt;Resend 功能虽然强大，但它只有发件和管理订阅者的功能，并不是一种我们想要的托管平台。想以 Resend 为核心构建系统，还缺少以下组件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个表单，用于收集订阅用户的邮箱&lt;/li&gt;
&lt;li&gt;转换 RSS 到电子邮件的实现&lt;/li&gt;
&lt;li&gt;调用 Resend API 发送邮件的服务&lt;/li&gt;
&lt;li&gt;负责添加订阅用户的服务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因为我的博客本身是完全静态的，我不想在博客内部引入任何无服务器函数。为了系统的可扩展性和可维护性考虑，每个服务之间和每个服务与博客之间应该没有任何关联。最终，我的方案如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tally 作为 Web 表单，通过 Webhook 发送信息&lt;/li&gt;
&lt;li&gt;写一个 Python 脚本处理 RSS 转换和邮件发送&lt;/li&gt;
&lt;li&gt;Cloudflare Workers 充当 Webhook endpoint，调用 API 向 Resend 添加订阅者&lt;/li&gt;
&lt;li&gt;事件驱动的 GitHub Action 运行 Python 脚本&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;系统实现&lt;/h2&gt;
&lt;h3&gt;Resend&lt;/h3&gt;
&lt;p&gt;这里利用了 Resend 的 &lt;a href=&quot;https://resend.com/docs/api-reference/broadcasts/create-broadcast&quot;&gt;Broadcasts&lt;/a&gt; 功能。&lt;/p&gt;
&lt;p&gt;在注册 Resend 并添加域名后，记得添加一个 API Key，这个需要保留好，后面会用到。&lt;/p&gt;
&lt;p&gt;同时管理订阅者也是利用了 Resend Audience 功能里的 Segment 功能实现的，下文会提到。&lt;/p&gt;
&lt;p&gt;通过 Broadcasts API 的 Create Broadcasts 进行邮件的创建和批量发送。它的 Python API 大概长这样：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import resend

resend.api_key = &quot;re_xxxxxxxxx&quot;

// Create a draft broadcast
params: resend.Broadcasts.CreateParams = {
  &quot;segment_id&quot;: &quot;78261eea-8f8b-4381-83c6-79fa7120f1cf&quot;,
  &quot;from&quot;: &quot;Acme &amp;lt;onboarding@resend.dev&amp;gt;&quot;,
  &quot;subject&quot;: &quot;Hello, world!&quot;,
  &quot;html&quot;: &quot;Hi {{{FIRST_NAME|there}}}, you can unsubscribe here: {{{RESEND_UNSUBSCRIBE_URL}}}&quot;,
}
resend.Broadcasts.create(params)

// Create and send immediately
params: resend.Broadcasts.CreateParams = {
  &quot;segment_id&quot;: &quot;78261eea-8f8b-4381-83c6-79fa7120f1cf&quot;,
  &quot;from&quot;: &quot;Acme &amp;lt;onboarding@resend.dev&amp;gt;&quot;,
  &quot;subject&quot;: &quot;Hello, world!&quot;,
  &quot;html&quot;: &quot;Hi {{{FIRST_NAME|there}}}, you can unsubscribe here: {{{RESEND_UNSUBSCRIBE_URL}}}&quot;,
  &quot;send&quot;: true,
}
resend.Broadcasts.create(params)

// Create and schedule
params: resend.Broadcasts.CreateParams = {
  &quot;segment_id&quot;: &quot;78261eea-8f8b-4381-83c6-79fa7120f1cf&quot;,
  &quot;from&quot;: &quot;Acme &amp;lt;onboarding@resend.dev&amp;gt;&quot;,
  &quot;subject&quot;: &quot;Hello, world!&quot;,
  &quot;html&quot;: &quot;Hi {{{FIRST_NAME|there}}}, you can unsubscribe here: {{{RESEND_UNSUBSCRIBE_URL}}}&quot;,
  &quot;send&quot;: true,
  &quot;scheduled_at&quot;: &quot;in 1 hour&quot;,
}
resend.Broadcasts.create(params)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其实没这么复杂，关键的字段并不多。我的实现会在下文的 Python 脚本给出以供参考。&lt;/p&gt;
&lt;h3&gt;Python 脚本&lt;/h3&gt;
&lt;p&gt;Python 脚本需要做的事情大概有三件：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;提取 RSS 的第一个 Item&lt;/li&gt;
&lt;li&gt;编写电子邮件内容&lt;/li&gt;
&lt;li&gt;通过 Resend Broadcasts API 发送&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;import html
import requests
import xml.etree.ElementTree as ET
import resend
import os


def getRss(url):
    headers = {
        &quot;User-Agent&quot;: &quot;Nalanyinyun RSS and email service/1.0, +https://nalanyinyun.work&quot;
    }
    response = requests.get(url, headers=headers, timeout=15)
    response.raise_for_status()
    return response.text

def generateEmailContent(rss):
    root = ET.fromstring(rss)
    items = root.findall(&quot;./channel/item&quot;)
    if not items:
        return &quot;No posts found in RSS feed.&quot;

    first = items[0]
    title = first.findtext(&quot;title&quot;, default=&quot;Untitled&quot;)
    description = first.findtext(&quot;description&quot;, default=&quot;No description.&quot;)
    pubDate = first.findtext(&quot;pubDate&quot;, default=&quot;Unknown date&quot;)
    formatted_str = (
        f&quot;&amp;lt;pre style=&apos;white-space: pre-wrap; font-family: sans-serif; font-size: 14px;&apos;&amp;gt;&quot;
        f&quot;Nalanyinyun&apos;s Library 已更新，以下是摘要：\n\n&quot;
        f&quot;Title: {title}\n&quot;
        f&quot;Date: {pubDate}\n&quot;
        f&quot;{&apos;-&apos;*20}\n&quot;
        f&quot;Description: {description}\n\n&quot;
        f&quot;退订见：&amp;lt;a href=\&quot;{{{{{{ resend_unsubscribe_url }}}}}}\&quot;&amp;gt;点击此处退订&amp;lt;/a&amp;gt;&quot;
        f&quot;&amp;lt;/pre&amp;gt;&quot;
    )
    return formatted_str


def publishLatest(apiKey, segmentID, fromID, subject, content):
    resend.api_key = apiKey
    resend.Broadcasts.create({
        &quot;segment_id&quot;: segmentID,
        &quot;from&quot;: fromID,
        &quot;subject&quot;: subject,
        &quot;html&quot;: content,
        &quot;headers&quot;: {
            &quot;List-Unsubscribe&quot;: &quot;&amp;lt;{{{{ resend_unsubscribe_url }}}}&amp;gt;&quot;,
            &quot;List-Unsubscribe-Post&quot;: &quot;List-Unsubscribe=One-Click&quot;
        },
        &quot;send&quot;: True
    })


url = &quot;https://nalanyinyun.work/rss.xml&quot; 
content = generateEmailContent(getRss(url))

publishLatest(
    apiKey = os.getenv(&quot;RESEND_API_KEY&quot;),
    segmentID=&quot;76654bf7-fd97-45e9-81a6-e38cda6391fc&quot;,
    fromID=&quot;Nalanyinyun &amp;lt;nalanyinyun@nalanyinyun.work&amp;gt;&quot;,
    subject=&quot;Nalanyinyun&apos;s Library Content Delivered&quot;,
    content=content
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在使用时，替换 &lt;code&gt;url&lt;/code&gt; 和 &lt;code&gt;apiKey&lt;/code&gt;、&lt;code&gt;segmentID&lt;/code&gt; 之类的变量就可以了。小心别把机密信息硬编码进去了。&lt;/p&gt;
&lt;p&gt;值得注意的是，Resend 已经替我们处理好了所有的退订逻辑，但请在的正文和 Headers 里标识出来，不然很可能第一次发邮件就被拒信了。&lt;/p&gt;
&lt;h3&gt;Tally&lt;/h3&gt;
&lt;p&gt;Tally 的 Web 表单是开箱即用的，&lt;a href=&quot;https://tally.so/r/D41zvq&quot;&gt;我的表单&lt;/a&gt;只有这么一个输入框。在编辑之后点击 Integrities，添加一个 Webhook endpoint 就可以了。&lt;/p&gt;
&lt;p&gt;Webhook endpoint 的实现下文会提到。&lt;/p&gt;
&lt;p&gt;Tally 的自定义域名需要付费计划，不过我觉得这个是不是自己的域名应该无关紧要。记得在设置里开启禁止重复填写。&lt;/p&gt;
&lt;h3&gt;Cloudflare Workers&lt;/h3&gt;
&lt;p&gt;Resend &lt;a href=&quot;https://resend.com/docs/dashboard/segments/introduction&quot;&gt;Audience&lt;/a&gt;。这个只需要创建好 Segment 并记住 ID 就可以了。&lt;/p&gt;
&lt;p&gt;Cloudflare Workers 主要负责解析 Webhook 传入的数据，因为我实在是不懂 JavaScript，所以找 Gemini 生成一个勉强能用的后端。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;export default {
  async fetch(request, env, ctx) {
    if (request.method !== &quot;POST&quot;) {
      return new Response(&quot;Method Not Allowed&quot;, { status: 405 });
    }

    try {
      const body = await request.json();
      const emailField = body.data.fields.find(f =&amp;gt; f.type === &quot;INPUT_EMAIL&quot;);
      const userEmail = emailField ? emailField.value : null;

      if (!userEmail) {
        return new Response(&quot;No email found in webhook data&quot;, { status: 400 });
      }

      const segmentId = env.RESEND_SEGMENT_ID; 
      const url = `https://api.resend.com/segments/${segmentId}/contacts`;

      const resendResponse = await fetch(url, {
        method: &quot;POST&quot;,
        headers: {
          &quot;Content-Type&quot;: &quot;application/json&quot;,
          &quot;Authorization&quot;: `Bearer ${env.RESEND_API_KEY}`,
        },
        body: JSON.stringify({
          email: userEmail,
        }),
      });

      const result = await resendResponse.json();

      if (resendResponse.ok) {
        console.log(`Success: Added ${userEmail} to segment`);
        return new Response(&quot;Subscribed to segment successfully!&quot;, { status: 200 });
      } else {
        console.error(&quot;Resend API Error:&quot;, result);
        return new Response(JSON.stringify(result), { status: resendResponse.status });
      }

    } catch (err) {
      return new Response(&quot;Internal Server Error: &quot; + err.message, { status: 500 });
    }
  },
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用时需要添加机密 &lt;code&gt;RESEND_API_KEY&lt;/code&gt; 和&lt;code&gt;RESEND_SEGMENT_ID&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果你的 Tally Webhook 传入和我的不一样，可能需要稍微改一改解析的逻辑，调用 API 那部分应该是没有问题的。&lt;/p&gt;
&lt;h3&gt;GitHub Action&lt;/h3&gt;
&lt;p&gt;这部分就很简单了，只要监听相关文件变化再执行 Python 脚本就可以了，大概长这样。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: RSS to Email on File Change

on:
  push:
    branches:
      - main
    paths:
      - src/content/posts/**
  workflow_dispatch:

jobs:
  email_notification:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: &apos;3.10&apos;

      - name: Install Dependencies
        run: pip install requests resend

      - name: Run Script
        env:
          RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
        run: python blogutils/emailutils.py
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用时需要添加机密 &lt;code&gt;RESEND_API_KEY&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;一起用&lt;/h3&gt;
&lt;p&gt;把这些东西黏在一起之后，只需要把 Tally 表单链接贴在需要的地方就可以了。&lt;/p&gt;
&lt;h2&gt;一些碎碎念&lt;/h2&gt;
&lt;p&gt;很多教程在手搓的时候会推荐你直接写一个 Serverless 函数放在博客里面去处理表单逻辑，这个方式我觉得不是很优雅。一个是因为它破坏了我网站完全静态的属性，一个是手搓 HTML 这件事本身就没什么必要。&lt;/p&gt;
&lt;p&gt;本站的所有源码以及上述的文件都可以在仓库中获取，如果你觉得对你有帮助，谢谢 star 啦。&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;naranyinyun/NalanyinyunsLibrary&quot;}&lt;/p&gt;
</content:encoded></item><item><title>太阳仍旧升起</title><link>https://nalanyinyun.work/posts/%E5%A4%AA%E9%98%B3%E4%BB%8D%E6%97%A7%E5%8D%87%E8%B5%B7/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E5%A4%AA%E9%98%B3%E4%BB%8D%E6%97%A7%E5%8D%87%E8%B5%B7/</guid><description>可是，太阳照常升起...</description><pubDate>Sat, 07 Mar 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;冬日的天空毕竟是澄澈的。&lt;/p&gt;
&lt;p&gt;天空仍旧是太阳尚未升起时的深蓝。光是看着就觉得寒冷而遥远，无论如何都无法触及。&lt;/p&gt;
&lt;p&gt;公路不断向远方延伸，延伸到那无边的黑暗中，目光也随之而流动。它被水泥制成坚硬的地基和支柱撑起，不再贴合地面。随意的向四周望去，能看见的只有远处或近处高楼的航障灯，远处公路上稀疏的车的灯光，和被不知从何而来的高大建筑分割而不再完整的地平线。&lt;/p&gt;
&lt;p&gt;也许太阳都被冬日的寒冷所困，也许太阳都害怕因它升起而来的苦痛与忧愁，无论是对自己、自然、和沐浴或不沐浴在它照耀之下的众生。&lt;/p&gt;
&lt;p&gt;我不知道太阳何时升起，也不在乎太阳何时升起。它总是那样升起，至少在我所生活的时代中。既定的事实，再去担忧、思考又有何意义？即便我讨厌那日出带来的一切，又如何？&lt;/p&gt;
&lt;p&gt;也不会怎么样，太阳不会因为我的厌恶和痛苦而不再升起，就像这世界上存在过的任何事物一样。我时常发觉这世界无法改变人的一丝一毫，哪怕是意志；一个人也丝毫无力去改变这世界，哪怕是自己。毕竟，我还在为了日出而悲伤着。&lt;/p&gt;
&lt;p&gt;思绪重新回到了我的身体中，才发觉太阳的光已经射出了地平线。也许它仍旧害怕着，只是不知为何必须要升起。&lt;/p&gt;
&lt;p&gt;高楼投下的影子破碎，连同那些水泥建筑杂糅在一起，本就十分弱的光下，也分不清是谁的影子。水汽在高耸的冷却塔口凝结，云雾般的水似乎被固定在了空中，偶尔有风吹过，才能看出那水与背后的云的差别。棕色被太阳白色的光线稀释，漫不经心的洒落在地平线上，那是城市化的橙黄。如果不是这刺骨的寒风，日出与日落，似乎也没什么区别。都是一样的朦胧，一样的模糊。尽管这条公路高了些，仍旧望不见太阳的身影。能看见的，只有柔弱而模糊的光。能感受到的，也只是一如既往的无望。&lt;/p&gt;
&lt;p&gt;太阳仍旧自顾自的升起，我却不愿意再看它一眼。它仍旧美，却不再独特；它仍旧独特，却不再为我所有；它仍旧为我所有，只是它的光不再投向我一人。&lt;/p&gt;
&lt;p&gt;光照耀着我，照耀着我的脸颊，照耀着无数条公路和无数片绿地，照耀着无数的生灵和无数的无灵。它仍旧照耀着我的心，温暖着我的心。它用新生的光芒，延伸了本就存在的荒芜与黑暗，并使它们带上一种奇怪的温暖。于是在这种黑暗而光明，寒冷而温暖的的境地中，苟且的栖居着。&lt;/p&gt;
&lt;p&gt;不再愿意走出那从未存在的庇护所一步，却也无可奈何。我仍旧前进着，我仍旧静止着；世界仍旧静止着，世界仍旧前进着。&lt;/p&gt;
&lt;p&gt;无论是怎样的世界，都不再重要了。我总会死去，停止思考，忘记一切。面对既定的事实，我还有什么需要担忧的呢？&lt;/p&gt;
&lt;p&gt;什么也没有吧，也许我仍旧活着。或者，我的灵魂早已归于天空，只是身体仍旧被束缚在地面。&lt;/p&gt;
&lt;p&gt;确实没有什么需要担忧的了，生活也一样。从我开始思考之前到现在，一直都这样的。生活总要继续，虽然说不清缘由，但也没有别的路可选。只是，那还是我的生活吗？我还在为了我自己而活着那？我不知道，我仍旧害怕着日出，仍旧担忧着。&lt;/p&gt;
&lt;p&gt;也许一切从来都是这样，无论我的有无。也许我从来没有关心过，那就一直这样下去好了。&lt;/p&gt;
&lt;p&gt;毕竟，无论如何，太阳都会照常升起。它已走出了地平线，而我也要继续我那一成不变的生活了。&lt;/p&gt;
</content:encoded></item><item><title>夕阳下，麦田上，奔跑的人</title><link>https://nalanyinyun.work/posts/%E5%A4%95%E9%98%B3%E4%B8%8B-%E9%BA%A6%E7%94%B0%E4%B8%8A-%E5%A5%94%E8%B7%91%E7%9A%84%E4%BA%BA/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E5%A4%95%E9%98%B3%E4%B8%8B-%E9%BA%A6%E7%94%B0%E4%B8%8A-%E5%A5%94%E8%B7%91%E7%9A%84%E4%BA%BA/</guid><description>夕阳又一次落在了麦田上，影子拉的很长。偶尔有风吹过，麦田会轻轻摇荡。在那样的黄昏里，我看见了一个奔跑的人...</description><pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;夕阳又一次落在了麦田上，影子拉的很长。偶尔有风吹过，麦田会轻轻摇荡。&lt;/p&gt;
&lt;p&gt;我一直觉得，黄昏的世界是另一个世界。它和白昼不同，不再明亮。也不像黑夜那样消沉，而是悬在两者中间，像某种难以分辨的身影。很多情绪都在黄昏涌上心头——那些零散的画面，难以言喻的念头，和一些无从解释的人。&lt;/p&gt;
&lt;p&gt;风很大，一个黄昏般的身影闯入了我的视野。起初是一个小点，在远方晃动，逐渐放大，才看清那是个人影。&lt;/p&gt;
&lt;p&gt;他奔跑着，越来越近，几乎要撞入我的世界。风卷起了尘埃，我眯起眼，模糊的视线怎也无法追上他。睁开眼时，他已经跑远了，只留下了个奔跑的剪影，很快融入在地平线里，消失了。&lt;/p&gt;
&lt;p&gt;我不知道他是谁，那天的太阳太低了，他的特征都看不清。不过，这么孤独的地方，总会遇到几个那样的人的。&lt;/p&gt;
&lt;p&gt;说起来，这里的人很少，大片的田野很多。夏天很热，秋天很干，所以这里基本只种小麦。麦田铺展开去，像一张重复到令人恍惚的画布。按理说，千篇一律的风景没什么可记住的，我却觉得那天的麦子特别黄，夕阳特别红。后来去了好几次麦田，也没找到那种感觉。&lt;/p&gt;
&lt;p&gt;管他呢，我的生活都够糟糕了。这里没有我认识的人，风景也陌生得像异国他乡。我不确定自己是来寻找什么，还是单纯想离开什么
也好，忘掉一切吧，都不重要了。&lt;/p&gt;
&lt;p&gt;太阳落下后，天黑得很快，马上就看不清回去的路了。踩了几次空，我才摸黑回到木屋。屋子很小，小到只要关上门，就能包裹住所有声音，让人有种安全的错觉。&lt;/p&gt;
&lt;p&gt;鞋随手甩在门口，扯下裙子，脱掉上衣，最后连头发也解开了，发卡随手丢在桌上。明天就散着头发好了，扎起来太麻烦。&lt;/p&gt;
&lt;p&gt;我爬上床，拉开被子。窗外的星星很亮，亮得刺眼。用脚把窗帘勾上，却差点把它拽下来。不知道为什么，这里的秋天这么热，太阳已经落下去了，还是这么热。
很想再这样躺着度过一天，翻一翻那些掉页儿的老书，都是上一届主人留下的。&lt;/p&gt;
&lt;p&gt;这屋子不贵，但也不是小钱，我说能不能便宜点，他直接送我了，还跟我说什么“逃避不是办法”，我说我不知道来这干嘛，反正也是个怪人。&lt;/p&gt;
&lt;p&gt;想是这么想，但毕竟还没死，饭总是要吃的。门口有辆破自行车，也是上一届主人的，铁架上全是泥，骑起来嘎吱嘎吱响。先骑着它去镇子上买点吃的吧，怎么也不能在这饿死。&lt;/p&gt;
&lt;p&gt;小镇很远，泥路也烂的不行，算是知道为什么车上这么多泥了。&lt;/p&gt;
&lt;p&gt;我把一大堆面包什么的东西扒拉进购物袋，抱着比半个我还大的袋子去结账
。
“陌生的面孔，第一次来吗？”&lt;/p&gt;
&lt;p&gt;“应该是”&lt;/p&gt;
&lt;p&gt;他没说什么，好像对话被我弄得尴尬了。&lt;/p&gt;
&lt;p&gt;“这儿的夜晚挺安静”我说&lt;/p&gt;
&lt;p&gt;“安静到无聊，比看放了一万遍的电影还没意思。除了偶尔有人跑来跑去”&lt;/p&gt;
&lt;p&gt;“跑来跑去？”&lt;/p&gt;
&lt;p&gt;“没见过那个人？他常常这么干，跑过一大片麦田，没人知道他是谁，也没人知道他要去哪”&lt;/p&gt;
&lt;p&gt;“没见过，也奇怪，我就住在麦田边上”&lt;/p&gt;
&lt;p&gt;“麦田边上？”&lt;/p&gt;
&lt;p&gt;老板把一箱啤酒放在我的购物袋里，他看我带不会去，就拿了个框，带轮子那种，放在自行车后座上。&lt;/p&gt;
&lt;p&gt;“送我的？”我问&lt;/p&gt;
&lt;p&gt;“送你的，年轻人，别喝太多！这儿的路太野，摔在哪儿可没人知道”&lt;/p&gt;
&lt;p&gt;老板人还挺好。我慢悠悠的骑着车回去，碰上泥地，我就脱了鞋把车推过去。时间？谁管，我来的第一天就把手表扔了。&lt;/p&gt;
&lt;p&gt;随便吃了点，渴了就喝点酒。眼睛一闭一睁，又到了黄昏。太阳落下的时候总是特别热，我就抱着两罐酒，到田埂上吹吹风。&lt;/p&gt;
&lt;p&gt;太阳从金黄变得火红，又从火红变得金黄，最后熄灭了，什么也没剩下。离小麦收割还有挺久，麦芒上还带了点绿。那个奔跑的身影没出现，有点失望，但我本来也没期待，也许他去别的麦田奔跑了，就在这里路过而已。万一他会跑回来呢？谁也说不准，我把剩的啤酒放在这，回去睡觉了。&lt;/p&gt;
&lt;p&gt;第二天凌晨，不知道为什么我醒的很早，回去收拾那些啤酒瓶子，留的那罐啤酒被打开，而且被喝光了，别的瓶里剩下那几口还在那。也许是那个奔跑的人干的吧。&lt;/p&gt;
&lt;p&gt;起来的太早了，都不知道要干嘛。我沿着泥路找到了公路。它的来路和去路都被凌晨蓝色的迷雾遮蔽，像是一条笔直的河流，偶尔有车路过，没人知道它们从哪来，要到哪去，就像没人知道我一样。我沿着公路走，走了好远。这块平原确实很大，走了这么远都没找到起伏，走累了，坐在路边休息休息，就开始往回走了。也没干什么，一天就这么过去了。慢下来的日子真好，不用忙于生计，不用四处奔波，不用操心别人。&lt;/p&gt;
&lt;p&gt;一想到这里，我的头就疼，所以我坐在路边，眺望着黄色的远方。&lt;/p&gt;
&lt;p&gt;那个身影又出现了，在傍晚的太阳下，如此闷热的时候。这次我的眼睛睁开了，他张开双臂奔跑着，耳边还传来阵阵的笑声。奇怪的是，我看不见麦子被压倒的痕迹。他似乎中途慢了下来，看了一眼我这边，又回过头去加速奔跑了。&lt;/p&gt;
&lt;p&gt;他的手里攥着什么？几张纸，一本书？没等我看清，他又留下一个剪影，朝着日落的方向跑开了。&lt;/p&gt;
&lt;p&gt;又是他？&lt;/p&gt;
&lt;p&gt;这次他从日落的方向跑了回来，又向着日出的方向奔去了。他在追逐什么？或者说，在逃避身后的什么？到底是什么能让他不顾一切的在麦田上奔跑？跑的那么快的，肯定是年轻人，他没有自己的生活吗？&lt;/p&gt;
&lt;p&gt;他不会停下，也不会回答我的问题。现在要做的事是在完全黑下来之前回去，想太多、太远，也没什么意义。&lt;/p&gt;
&lt;p&gt;也许，他也不知道为了什么，才在麦田上奔跑吧。&lt;/p&gt;
&lt;p&gt;算了，又是无聊的一天，好好享受现在的时光吧，谁也不知道明天会怎样。&lt;/p&gt;
&lt;p&gt;日出是怎样的呢？说起来，我在地面上生活了这么久，从来没有抬起头去仰望天空。连习以为常的太阳，也从未看清过它升起和落下的模样。&lt;/p&gt;
&lt;p&gt;那就这样，在外面走到天亮吧，看看太阳的模样。&lt;/p&gt;
&lt;p&gt;我坐在昨天留下啤酒的田埂，从屋子里把磁带机抱出来，放在旁边，随便插了盘磁带进去。&lt;/p&gt;
&lt;p&gt;朦胧而模糊的吉他声从扬声器传出，很明显是民谣吉他，听起来有点俏皮，像是被风从远方送来的那样悠扬。接着是粗糙的男声，带着点乡村口音。歌词很直白，也没什么修辞之类的，说实话，挺土的，不过也挺好，就这样直接能唱出心里的想法。&lt;/p&gt;
&lt;p&gt;就是听多了有点腻，调式太像了，这儿也没什么山，都是大平原，唱的东西也无从想象。我抱着酒，罐子扔的到处是。&lt;/p&gt;
&lt;p&gt;有点冷，我蜷缩着腿，坐在地上睡着了。可惜睡的太久，睁眼只看见太阳挂在头上，至于它从哪儿出来的，就无从得知了。&lt;/p&gt;
&lt;p&gt;我看见前面的麦丛有一条被压倒的痕迹，很像有人走过。应该是那个奔跑的人吧，他遇到了什么？让他的脚步不再轻盈。&lt;/p&gt;
&lt;p&gt;不过，和我也没什么关系吧。和我最大的关系，只是我看见了他在夕阳下奔跑而已。或许明年还会吃到麦田里的麦子，那也是很久之后的事了，明年？我连明天是怎样都不知道。&lt;/p&gt;
&lt;p&gt;起身，简单收拾一下，不要破坏环境。听说镇上有个酒馆，正好酒喝完了，去看看吧。&lt;/p&gt;
&lt;p&gt;坐上那辆嘎吱嘎吱响的自行车，走着一如既往的烂路，我观望着天空，慢慢骑着车。&lt;/p&gt;
&lt;p&gt;我时常会想，为什么我不能像鸟儿那样，在天空中翱翔呢？我看不见湛蓝的天，也看不见苍白的云，无处不在的薄雾遮挡着一切。如果我拥有那样一双翅膀，无论怎样的风雨，都无法阻止我的飞翔吧。那样无拘无束的生活，不被重力束缚的生活，也不错。但那样流浪的生活，为了生活的生活，早已厌倦了。&lt;/p&gt;
&lt;p&gt;在无法觉察的时光中，我已经到了酒馆。把自行车停好，推开门进去。不出所料的是几个无所事事的男人，喝着看起来就没品位的酒，不知道闲扯些什么。我找了一个离他们远的地方，一个角落，坐下了。&lt;/p&gt;
&lt;p&gt;很快，老板上了几杯啤酒，还说什么看我是生面孔，送了我一杯酒，看起来挺奇怪，是啤酒的颜色，但又带点别的什么色。老板特别自豪的说这是自家酿的，让我尝尝。很有大麦的味道，但是没什么酒味，喝完有点头疼。也是，自家酿的，乱七八糟的醇一大堆，我怕把眼睛喝瞎，就推脱拿个瓶子装走了。&lt;/p&gt;
&lt;p&gt;“你看见那个在地里疯跑的人了吗？”&lt;/p&gt;
&lt;p&gt;“看见了，隔三差五的就能看见他疯跑，还总是在下午，额，快晚上的时候”&lt;/p&gt;
&lt;p&gt;那叫黄昏，真没什么文化。我想&lt;/p&gt;
&lt;p&gt;“你是说他是谁？”&lt;/p&gt;
&lt;p&gt;“天知道，是哪个州的逃犯吧”&lt;/p&gt;
&lt;p&gt;“万一是个疯子呢？”&lt;/p&gt;
&lt;p&gt;“听说是别的什么地方，城里吧，跑过来的，不知道受什么刺激了”&lt;/p&gt;
&lt;p&gt;“这样儿的人好像又来一个，就住在麦田边儿上吧，不知道他俩认不认识”&lt;/p&gt;
&lt;p&gt;“听说是个大美人？”&lt;/p&gt;
&lt;p&gt;“去你的，你又动什么心思。”&lt;/p&gt;
&lt;p&gt;我听见一声很响亮的拍打肩膀的声音。&lt;/p&gt;
&lt;p&gt;他们嬉笑的声越来越大，酒馆里也越来越热。知道他们开始谈论我了，我就不再听他们的对话了，谁愿意知道自己在别人眼中是什么模样呢？这里的窗户不对着太阳，灯也很老旧，发出那种看起来就很慵懒的昏黄的光，我就把杯子都推开，趴在桌子睡着了。&lt;/p&gt;
&lt;p&gt;突然感觉到有人拍我的肩膀，从过去的噩梦中惊醒，给老板吓了一跳。他说快天黑了，这儿要关门了。我把钱给他，推着自行车走了。&lt;/p&gt;
&lt;p&gt;太阳低挂在算不上蓝的天空中，西方的地平线上有一点深棕色的光，还算明亮，但也很明显的能感觉到它要落下了。过了午后，镇子上很安静，公路上一辆车也没有。什么声音都听不见，只有我的脚步声和偶尔飞过的鸟的鸣叫，它们很快要迁徙了吧。&lt;/p&gt;
&lt;p&gt;正是这种时候，这种无所事事的时候，才会让人倍感寂寞。无聊的往事，难以描摹的背影，难以忘怀的情感，模糊的记忆。没有黑夜的庇护，没有黄昏的期待，落入时间的缝隙，被无穷的回忆折磨，无法跳脱。&lt;/p&gt;
&lt;p&gt;在公路旁停下，脱下鞋，赤脚走到麦田里。松软的泥土，阳光的余温，我想把自己深埋在土里，但我没有工具，只好打消这个念头。&lt;/p&gt;
&lt;p&gt;我转头，看见即将落下的，火红的太阳。金色的光照亮了天亮，薄些的云都被它点亮。我望着渐经渐远的太阳，心中竟有种追逐它的冲动，我想看看落日的模样，看看太阳落下的地方。我想奔跑，向着太阳奔跑，但我已经跑不动了，再也跑不动了。&lt;/p&gt;
&lt;p&gt;我听见麦子被压倒的声音。&lt;/p&gt;
&lt;p&gt;他出现了，从黑暗远方，冲出一片凝重的黑暗。他飞快的奔跑着，从我的面前掠过，追逐着落日。再也按捺不住冲动，我也奔跑起来，我大喊“等等！”他也没有慢下来，我想试试能不能追上他，但肺中嘶嘶的喘气声否定了我的猜想。我停了下来，望着那个背影越跑越远，才意识到，我甚至从未靠近过他。&lt;/p&gt;
&lt;p&gt;只好灰溜溜的走回去了，像曾经一样。我从来没有胜利过，也没有失败过，我讨厌没有把握的事。&lt;/p&gt;
&lt;p&gt;是的，因为不愿意面对结束，我避免了一切开始。我不知道这么做正确与否，但我一直都是这么过来的。也许在不知不觉中，我走了太远，忘记了从哪里来，到哪里去。最后，连我自己是谁，都忘记了。&lt;/p&gt;
&lt;p&gt;那天晚上，我做了一个梦，一个迷蒙、破裂、炽热的梦。梦见我在田埂上等待日出，这次没有睡着。猩红的身影从东方缓缓升起，整片天空都被它点燃，充斥着它那猩红的光。云不再怡然自得，它们在太阳的炙烤下沸腾，翻滚。火光从地平线开始蔓延，我从未见过如此壮丽的日出。&lt;/p&gt;
&lt;p&gt;浓烟从远方升起，镇上的人们四处逃窜。那不是太阳升起的光，是真正的火光。火势迅速蔓延，遮蔽了我望向远方的视野。脸上暖暖的，等待日出所积蓄的寒冷迅速消解。&lt;/p&gt;
&lt;p&gt;那个熟悉的身影从一片黑暗中飞出，紧接着是麦田被压倒的声响。他又开始了奔跑，他向着太阳升起的地方跑去，向着火光连天的地方跑去。&lt;/p&gt;
&lt;p&gt;我仍旧看不清他的面容，但他的背影没有消失。从飞奔着的身影，到被热气裹挟着而摇曳的背影，最后是一个晃动的小点，直到被浓烟遮蔽。&lt;/p&gt;
&lt;p&gt;他离开了，再也不会来了。&lt;/p&gt;
&lt;p&gt;我抱着那样的想法，在真实的落日下等待着他。他真的没有来，而且接下来的几周，甚至几个月，都没有他的踪迹。&lt;/p&gt;
&lt;p&gt;我仍旧无所事事着，喝酒、在麦田里乱跑、听那些很老的磁带，或者干脆什么也不干，睡一整天的觉。但我不喜欢那样做，每次醒来都是黄昏，或者夜晚，总有种难以言表的感觉。&lt;/p&gt;
&lt;p&gt;是时候了，也该离开了。过去的一切都真正的过去了，虽然我没有忘记，但已经学着不去在乎了。选择相信时间很难，但最后又不得不相信它。&lt;/p&gt;
&lt;p&gt;正好，孤独的木屋又迎来了新的主人，是个年轻人，看起来跟我差不多大。我问他怎么了，他说没什么。没什么的人可不会来这儿逃避，但他不愿意说，也就算了。我把破自行车，磁带，喝剩的酒都留给他。他也问我这屋子要多少钱，我问他你打算出多少，他说你说多少我出多少。&lt;/p&gt;
&lt;p&gt;“五万？”&lt;/p&gt;
&lt;p&gt;“你说准了？”&lt;/p&gt;
&lt;p&gt;“说准了。”&lt;/p&gt;
&lt;p&gt;“给你。”&lt;/p&gt;
&lt;p&gt;他真的给我了，那也不错，赚一笔还是很好的，毕竟我也不是什么好人。&lt;/p&gt;
&lt;p&gt;离开前的那个黄昏，我又在田埂上等着，他没有出现。正当我转身准备离开时，耳边传来了熟悉的声响。&lt;/p&gt;
&lt;p&gt;不过这次没有奔跑的声音，很快也停息了。他背对着夕阳，面向着我，挥着手大喊：&lt;/p&gt;
&lt;p&gt;“你要走了吗？”&lt;/p&gt;
&lt;p&gt;“是啊，也许再也不会回来了。”我回答说&lt;/p&gt;
&lt;p&gt;“真为你高兴，你会开始全新的生活吧。”&lt;/p&gt;
&lt;p&gt;“不太会，我要走的更远了，也许回家，也许继续流浪。”&lt;/p&gt;
&lt;p&gt;“不管怎么样，都是新的开始。”&lt;/p&gt;
&lt;p&gt;“别说的像很懂我一样。那你呢？继续跑下去吗？”&lt;/p&gt;
&lt;p&gt;“你知道风在哪停下来吗？”&lt;/p&gt;
&lt;p&gt;没等我说话，他又开始奔跑，很快就消失在地平线后了。风停息的地方？听着像个小孩会说的话，不过像小孩那样也不错吧，只是我再也回不去了。&lt;/p&gt;
&lt;p&gt;“你认识他？”新来的人说&lt;/p&gt;
&lt;p&gt;“不认识。”&lt;/p&gt;
&lt;p&gt;“他是谁？”&lt;/p&gt;
&lt;p&gt;“附近的神灵，你没听过什么日本神话吗？是个什么麦田仙灵，你得拿啤酒去祭祀，往田埂一扔就行。”我打趣，胡诌着说。&lt;/p&gt;
&lt;p&gt;他半信半疑的点点头，又回去收拾东西了。我用那些钱卖了辆很旧的汽车，把我的东西都装好，放在车上。&lt;/p&gt;
&lt;p&gt;又是这条公路，我又要沿着它驶向哪呢？&lt;/p&gt;
&lt;p&gt;我不知道，但我要追逐另一个自己了。公路旅行也好，公路流浪也罢，怎样都好。&lt;/p&gt;
&lt;p&gt;但我想为了我自己，真正的再活一次。&lt;/p&gt;
&lt;p&gt;我踩下油门，告别了身后的一切。&lt;/p&gt;
&lt;p&gt;也许，在他的眼里，我也像他一样，在沉闷的空气中奔跑起来，身影在黑暗中消失了吧。&lt;/p&gt;
</content:encoded></item><item><title>于凋亡季节中的我们</title><link>https://nalanyinyun.work/posts/%E4%BA%8E%E5%87%8B%E4%BA%A1%E5%AD%A3%E8%8A%82%E4%B8%AD%E7%9A%84%E6%88%91%E4%BB%AC/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E4%BA%8E%E5%87%8B%E4%BA%A1%E5%AD%A3%E8%8A%82%E4%B8%AD%E7%9A%84%E6%88%91%E4%BB%AC/</guid><description> 火车从一个地方驶向另一个地方，又从另一个地方驶向另一个地方。但它总会回到同一个地方，但能回到原处的，也许只有车了。</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;往日拥挤的车站，即便没了那么多人，也仍旧十分闷热，仅仅是在其中走走，就有种难以呼吸的感觉。&lt;/p&gt;
&lt;p&gt;夏末毕竟也算是夏天，午后仍旧有这这样炽烈的光；凝滞的天空笼罩着陆地，其上的云不见一点翻腾。凝滞的空气和凝滞的时光一起，用一片死寂吞没了我的知觉，剥去了我曾经有过的感受，即使是在生机尚未凋零的时日，也是如此。&lt;/p&gt;
&lt;p&gt;我从车站的月台，穿过陌生的候车室，在窒息的闷热中跋涉而来。我回过来神，才发现自己也只是走了一点点路而已。不知道为什么，离开月台之后总感觉时间过的这么慢，自己一个人走路是这么煎熬，静下来的我是如此无聊。明明在不久之前，我还总觉得时间过得太快，以至于我还没做好分开的准备，离别的时日就飞驰而来。&lt;/p&gt;
&lt;p&gt;我停下脚步，仔细聆听着一种难以名状的振动，那大概刚刚在我面前驶离的列车吧，我知道那辆列车驶向的地方，但无论是哪里，都太过遥远，以至于我再也去不了任何地方了。&lt;/p&gt;
&lt;p&gt;那也只是一种虚妄，我听见那种振动化为轰鸣，才发觉是远空经过的飞机。列车与飞机自然可以在同一条线路上往返，但有些路人走过，也许就再也不会回来了。&lt;/p&gt;
&lt;p&gt;身后不知何处传来的笑声，事到如今听起来也十分刺耳。&lt;/p&gt;
&lt;p&gt;车站前的广场也没什么人，布满灰尘且坚硬的石板被阳光晒的滚烫，我的鞋底似乎也被融化，踩起来十分温热而柔软了。&lt;/p&gt;
&lt;p&gt;不知道是不是我的错觉，在我的印象中，车站前似乎从未热闹过，这镇子很小，也没什么商贩。对于大部分人来说，这样平淡、不变的日子会不断重复着，这里的人们不期望有什么变化，也不抱有什么生活之外的想法。&lt;/p&gt;
&lt;p&gt;我也不希望我的生活中有任何变数，我已经失去了太多东西，现在连我最珍贵的人也离开了。曾经欢笑的时光仍旧真切，只是无法再回忆，度过的那些时光，又何从怀念呢？&lt;/p&gt;
&lt;p&gt;手中攥着的纸条被汗水浸湿，那是送上火车时递给我的，我不敢看，我不想它击碎我最后的那些念想。我不想听什么安慰的话，也不要看谁人的未来，我活在当下，就只能看见当下而已。
“离别是为了更好的重逢，相信这句话吧。”&lt;/p&gt;
&lt;p&gt;重逢？我都不知道我的信该寄到哪里，哪怕现在还可以发些短信，但去往别的地方后，换了联系方式也无可厚非吧。就算能够回来找我，我也没有自信能等到那一天。&lt;/p&gt;
&lt;p&gt;无非是一些安慰的话，也算是我唯一的期望了，为什么要如此较真呢？虚无缥缈的也罢，至少支撑着我度过这个所剩无几的夏天。我不愿意听谎话，不过也只能暂且欺骗着自己了吧。&lt;/p&gt;
&lt;p&gt;我拖着沉重的脚步，离开了那些石板铺成的广场，直到我再也看不见车站，再也不会想起车站。&lt;/p&gt;
&lt;p&gt;公路两侧尽是茂密的丛林，经历过一个夏日的雨热，生长的比以往任何时候都要繁茂。几颗杨树已经老的叶脉都撑不起叶子了，宽大的叶片随风摇曳，白色和绿色的两面交替反射着刺眼的阳光。&lt;/p&gt;
&lt;p&gt;只能听见蝉鸣，却看不见蝉，大概是因为那些互相遮掩的叶片，蝉才如此跋扈，有人经过还大声的名叫着。不过想想也是，夏天快要过去，蝉的时日还有多少呢？至少要在一切结束前鸣叫，而不是绝望地等待死亡。
我撑起那柄白色的伞，以前还总觉得容易脏，所以没有这么撑过，只是用来遮阳的话，应该问题不大。我从来没有觉得这柄伞如此巨大，我甚至看不见自己的影子。&lt;/p&gt;
&lt;p&gt;终于回到生活了如此之久的地方了，一切都那么熟悉，看起来却总是少些什么。我去那家去惯了的便利店，拿了两瓶汽水，去柜台结账。&lt;/p&gt;
&lt;p&gt;我没太听清他说什么，似乎是送了我两瓶汽水，还安慰我说什么来着，也没记住，我只是点点头，仍旧撑着伞离开了。&lt;/p&gt;
&lt;p&gt;所有人都知道我刚刚经历了什么，只有我不知道。家附近基本所有的店铺我都常去，所有的老板也大多认识我，所有人都在关心我，都在安慰我，但我除了点点头之外，似乎也没什么可做的了。&lt;/p&gt;
&lt;p&gt;泪水也不必抹去，只要仰着头就好了，已经留下的泪水很快就会蒸发，不知道会不会留下泪痕，反正我也看不见，也没人能替我看见。&lt;/p&gt;
&lt;p&gt;远远的看见了那个曾经一直往我身边凑的人，不知道他想从我这得到些什么。这次也是很快的凑过来了，看起来似乎比以前还得意一点，有什么可笑的呢？我应该十分火大，但也没什么力气火大了，我只是低着头，仍旧向前走着，没有理会他，他一会儿就离开了。&lt;/p&gt;
&lt;p&gt;依稀记得某个慵懒的黄昏，我们在镇子那头的沙滩上漫步，海浪接连着拍打，将深处的沙子推向远处。昏黄的太阳在远海的地平线上燃烧，散发出炽烈却并不刺眼的红光，直到落入水面下，只留下暗红的一点余晖。&lt;/p&gt;
&lt;p&gt;晒过的沙依旧有着阳光的温度，我捧起的那把沙就是如此。它从我的指缝溜下，直到一阵海风扬起落去的沙，模糊了我的视野。那时也仰着头，依稀能看见太阳落下的地方云的模样，以及遍布天空的繁星。&lt;/p&gt;
&lt;p&gt;我用他的望远镜望着星空，其实换上倍率最高的目镜，看见大多数星也只是一个亮点，白色的、蓝色的、红色的。&lt;/p&gt;
&lt;p&gt;我已经忘记了他如何拯救的我，也忘记了我曾经为之沉默的事物。我从一片空白中走来，心中终于有了第一丝色彩。&lt;/p&gt;
&lt;p&gt;我也忘记了他是如何安慰的我，也忘记了我是如何脱去那些想法，也忘记了他没什么没有对我那可笑的话发笑。&lt;/p&gt;
&lt;p&gt;我仍旧踏过石砖铺成的路，那些熟悉的商铺从我两侧流过。除了漫无目的的游荡，我也不知道能做什么了，也算是一种自我放逐吧。&lt;/p&gt;
&lt;p&gt;夏末的太阳落下的很早，虽然还尚未落去，已经能瞥见一抹橙黄的光，就像它刚刚升起时的那样。散射在地面上的云影斑驳，风雨摘下的叶片被炙烤的失去所有水分。&lt;/p&gt;
&lt;p&gt;我干脆注视着地面，追随着心中的方向前进着，直到我回过神来，才发现自己又走到了海边。&lt;/p&gt;
&lt;p&gt;沙滩上插着一些烟花的木棍，那是前些天我们放的。&lt;/p&gt;
&lt;p&gt;依稀能感受到阳光的温热，我将鞋子提在手里，一手拉起我的长裙。越向外走，沙就越松软，越难以前行，但我仍旧走着。&lt;/p&gt;
&lt;p&gt;我收起那柄白色的伞，将它叠放整齐，背在身上。我不会再为了遮阳或避雨而撑起它了，从今往后，它只为遮蔽我一人的影子而存在。&lt;/p&gt;
&lt;p&gt;太阳又一次在地平线上徘徊，有着波光粼粼的金色散落在海面。它庄严的沉下地平线，只留下昏黄而发黑的光，我的手伸向虚无，什么都没抓住。&lt;/p&gt;
&lt;p&gt;海水没过我的小腿，凉意从脚底一路涌上来，像要把我整个人拖入其中。&lt;/p&gt;
&lt;p&gt;那张被汗水浸透的纸条还攥在手里，我迟疑了一下，终究还是将它抛向了水面。纸条立刻被海浪吞没，就像什么也没有留下过。&lt;/p&gt;
&lt;p&gt;我抬起头，太阳正缓慢地沉向地平线，余晖铺满海面。炽烈的光被一点点吞没，直到最后化为一线暗红。&lt;/p&gt;
&lt;p&gt;风吹乱了我的头发，海浪拍打着我的小腿，我伸出手，却什么也没抓住。&lt;/p&gt;
&lt;p&gt;我望着远处的海平线，突然觉得什么都没发生过。&lt;/p&gt;
&lt;p&gt;一种感觉从我心中冒出&lt;/p&gt;
&lt;p&gt;——夏天就要结束了&lt;/p&gt;
</content:encoded></item><item><title>等不来的雨</title><link>https://nalanyinyun.work/posts/%E7%AD%89%E4%B8%8D%E6%9D%A5%E7%9A%84%E9%9B%A8/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E7%AD%89%E4%B8%8D%E6%9D%A5%E7%9A%84%E9%9B%A8/</guid><description>永远晴朗的夏日，时时炽热的阳光。风裹挟着云流过，铃铛与汽笛响彻。在那样的夏日里，我等待着一场不会下的雨...</description><pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我记得在很多小说或者电影里，经历什么大事之后或者在主人公悲伤的时候，雨都会出现。可是，我的那场雨什么时候才能下呢？&lt;/p&gt;
&lt;p&gt;多雨的夏季竟能有这样无云的好天气，有这样刺眼的阳光。走在路上，只能撑着伞或者躲在建筑物的隐蔽下，那样炽热的阳光，不会有人承受的了的。&lt;/p&gt;
&lt;p&gt;所以我走进一家陌生的便利店，在冰柜了挑了一瓶陌生的饮料，给陌生的老板付了款。&lt;/p&gt;
&lt;p&gt;其实我的肠胃不太好，喝了冷饮就会肚子疼，只是也没有必要在意那些了。在喝光了饮料之后，就撑上伞离开了。&lt;/p&gt;
&lt;p&gt;温热的空气从地面颤抖着升起，我的鞋子在高温中扭曲、融化，它黏在地上，让我每一步都走的困难。可是我不能停下啊，只能抬高了脚，慢慢的走着。&lt;/p&gt;
&lt;p&gt;在不知多久的跋涉后，我终于到达了目的地——她的家。&lt;/p&gt;
&lt;p&gt;从包里摸出钥匙，插进锁孔，轻轻的旋转。在金属碰撞的声音响起后，光从门缝射入了漆黑的走廊。&lt;/p&gt;
&lt;p&gt;她的鞋整齐的摆在玄关，鞋带还是乱的，像她随手一甩的样子，不过看起来很干净，她刷过了。不过少了一双鞋，她经常穿着，和我一起出去的那双。&lt;/p&gt;
&lt;p&gt;空气中仍然有熟悉的柑橘香气，和一点微妙的灰尘的味道。客厅的茶几上摆着一个马克杯，那是我送给她的，和我的那个是一套。里面装着半杯水，看起来已经静置很久了，平静的没有一点波动。沙发上盖着她的毯子，边角上还有她咬过的线头。糖果随意的摆在盘子里，她喜欢吃甜食。&lt;/p&gt;
&lt;p&gt;其实我不愿意看见那些放在原位的东西，可是她拉开了窗帘，让一切都显得那么清晰而明亮。&lt;/p&gt;
&lt;p&gt;我脱下鞋子，走进屋子。&lt;/p&gt;
&lt;p&gt;我突然听见一阵嗡嗡的震动，不过我很快就意识到，那是冰箱工作时的声音。冰箱里还有什么呢？一会儿去看看吧。&lt;/p&gt;
&lt;p&gt;我推开了她房间的门，还是很整洁。床单和被子似乎都是新洗的，很干净，叠的很整齐，床上还有一点下陷，看起来像个压痕。&lt;/p&gt;
&lt;p&gt;她的桌子摆在窗边，上面只有一只白色的钢笔。不过除此之外就没有别的东西了，她喜欢把自己的东西藏在各个角落。不过，藏在被子底下吗？没有的，在翻找之后还要叠好。在柜子里面？也没有。难道在床下面？床下面有一双拖鞋，这应该不是什么要藏起来的东西吧。&lt;/p&gt;
&lt;p&gt;我大概也知道藏在哪，于是我把阳台的花盆拿起来，果然压在下面。嗯......看起来像是封信，不过我不想看，就先放在包里了。&lt;/p&gt;
&lt;p&gt;其实也没什么可以带走的，因为她已经带走很多了，除了我之外。也没有什么可抱怨的，因为我累了，我太傻了，非要挑在这么个午后出门。&lt;/p&gt;
&lt;p&gt;我摸索着爬上她的床，拉上了被子。嗅着枕头上她那熟悉的味道，就像枕边还有个人一样。可是我摸到的被子是冰冷的，就算被太阳照了那么久也一样。可是那柔软的触感......我不想再动了，也不再对抗朦胧的双眼，任由它们闭上了。&lt;/p&gt;
&lt;p&gt;醒来之后，时间也没有过去多久。阳光照比来时已经弱了很多，而且变了色，是看上去就感觉十分慵懒的昏黄。&lt;/p&gt;
&lt;p&gt;我把她的被子叠好，重新把床单压的平整。再偷偷地去她的冰箱里吃掉了她的小蛋糕，我想她一定会生气吧。不过也可能不会，毕竟是我吃掉的。&lt;/p&gt;
&lt;p&gt;我喝了一小口马克杯里的水，已经变了味。我把那些水倒掉，刷了刷杯子，再倒上一杯新的，是热水。她的身体不好，也许喝一点热的会更好吧。大概是这样。&lt;/p&gt;
&lt;p&gt;再穿上我的鞋子，打开门出去了。&lt;/p&gt;
&lt;p&gt;西方的整片天空都染上了黑红，白日里不见的云也可以看见一个黑色的影子，周围镶嵌着亮光。太阳颤抖着从地平线落下，只剩下它微弱的余晖和色泽的深蓝。不过我面向的方向，已经没有光了。
于是我在路灯的光下，一个个光亮的岛屿上穿梭着，看着我的影子前后摆动，看见它从一个变成两个，又变回一个。可是它依旧跟随着我，没有消失。&lt;/p&gt;
&lt;p&gt;在城市里也听不见蝉之类的叫声，只有不断路过的车的轰鸣。很难找到一个安静的地方，不过我也并不觉得有多么吵。这也是个夜生活开始的时候，与那么多和我年龄相仿人擦肩而过，却向着相反的，回家的方向走去，这种感觉一定很奇怪吧。&lt;/p&gt;
&lt;p&gt;到家之后，我脱下鞋，脱了衣服，随便洗漱一下，就回到床上，拉上窗帘了。&lt;/p&gt;
&lt;p&gt;我打开手机，看了看相册，也算是捡回了一点东西，不过也没想起来什么。&lt;/p&gt;
&lt;p&gt;其实我有很多东西都可以回忆，但是已经无从谈起了。那些没有索引的记忆就埋藏在无数的碎片里，我一个也找不到，也什么都拼凑不起来。只是记得有很多想说的话都没有说，想做的事情也没有做。
难道我也只是一个自私的人，自私的拉着她去做那么多我想要的事情吗？我想，还是她更自私吧，我讨厌她。&lt;/p&gt;
&lt;p&gt;用力的朝着枕头砸了下去，但是我的力气也不大。除了甩了一下胳膊之外，好像什么也没有变化。&lt;/p&gt;
&lt;p&gt;到底是从什么时候开始的呢？这种无力的感觉。连哭都没有力气了，只是睁着眼睛流泪，用手抹掉了，也无济于事。白色的光弥漫了视野，在那些流动的黑影中，凝视着自以为的前方。
在朦胧中，我似乎听见了淅淅沥沥的，小雨的声音。它究竟是现实的，还是我做的梦呢？&lt;/p&gt;
&lt;p&gt;也好，雨停了之后，就试着忘掉一切吧。我都不在乎了，真的。葬礼也不去了，也不见家属了，怎么样都好吧，唉。&lt;/p&gt;
</content:encoded></item><item><title>Archlinux 安装指南</title><link>https://nalanyinyun.work/posts/guide-for-archlinux/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/guide-for-archlinux/</guid><pubDate>Wed, 18 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章会介绍如何安装 Archlinux，以及一些常用的配置方法。&lt;/p&gt;
&lt;p&gt;它只针对 UEFI 64 位系统。&lt;/p&gt;
&lt;p&gt;本文中提供的，与其他教程有出入的内容，都源自我的个人经验。如果你不喜欢 &lt;code&gt;systemd&lt;/code&gt;，那咱们可能不太合拍了。&lt;/p&gt;
&lt;h2&gt;准备工作&lt;/h2&gt;
&lt;h3&gt;制作启动盘&lt;/h3&gt;
&lt;p&gt;从 Archlinux 官网下载&lt;em&gt;最新的&lt;/em&gt; &lt;a href=&quot;https://archlinux.org/download/&quot;&gt;Archlinux ISO&lt;/a&gt; 镜像文件，核对校验和。&lt;/p&gt;
&lt;p&gt;如果下载速度缓慢，可以从位于境内的镜像站下载，比如 &lt;a href=&quot;https://mirrors.aliyun.com/archlinux/iso/&quot;&gt;阿里云镜像站&lt;/a&gt;。从 Magnet 链接下载也是个好选择。&lt;/p&gt;
&lt;p&gt;推荐使用 &lt;a href=&quot;https://www.ventoy.net/&quot;&gt;Ventoy&lt;/a&gt; 制作启动盘，如果使用 &lt;code&gt;Ventoy&lt;/code&gt;，请选择 &lt;code&gt;UEFI&lt;/code&gt; 模式。在使用启动盘时，选择 &lt;code&gt;grub&lt;/code&gt; 模式启动。&lt;/p&gt;
&lt;h3&gt;UEFI 设置&lt;/h3&gt;
&lt;p&gt;重启进入 UEFI 固件设置，关闭安全启动和 CSM。如果你需要配置安全启动，也在这里暂时关闭，archlinux ISO 没有签名。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
Windows 按住 &lt;code&gt;Shift&lt;/code&gt; 键点击重启进入高级启动模式，可以直接进入 UEFI 固件设置，在一些启用了快速启动的设备上非常有用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果需要，可以调整启动顺序，将 USB 设备设置为第一启动项。&lt;/p&gt;
&lt;h2&gt;安装 Archlinux&lt;/h2&gt;
&lt;p&gt;进入 Archlinux ISO.&lt;/p&gt;
&lt;h3&gt;连接网络&lt;/h3&gt;
&lt;p&gt;在大多数使用有线连接的电脑上，网络开箱即用。在一些使用无线连接的电脑上，可以使用 &lt;code&gt;iwctl&lt;/code&gt; 连接无线网络。&lt;/p&gt;
&lt;p&gt;首先确认系统识别到了网络接口：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ip link
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确认网卡没有被 &lt;code&gt;rfkill&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rfkill list
rfkill unblock all # 如果被阻止，解除阻止，可以指定设备，不用 all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;进入 &lt;code&gt;iwctl&lt;/code&gt; 交互式命令行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;iwctl
device list # 列出无线设备
station [device name] scan
station [device name] get-networks
station [device name] connect [SSID]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;系统时间&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;timedatectl set-ntp true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;检查 &lt;code&gt;timedatectl&lt;/code&gt; 的输出，确保系统时间正确。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
在 Windows 上以管理员身份执行 &lt;code&gt;reg add &quot;HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation&quot; /v RealTimeIsUniversal /d 1 /t REG_DWORD /f&lt;/code&gt; 可以让 Windows 使用 UTC 时间。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;分区和格式化&lt;/h2&gt;
&lt;p&gt;由于不同设备的硬盘使用情况不同，这里不做具体介绍。不过，大致的分区方案如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EFI 系统分区（ESP）推荐大小 1GB，我推荐 4GB。格式化为 FAT32&lt;/li&gt;
&lt;li&gt;根分区 &lt;code&gt;/&lt;/code&gt;  至少 20GB, 推荐 60GB, 格式化为 btrfs&lt;/li&gt;
&lt;li&gt;SWAP 是可选的，通常至少有 4GB，不过你也可以用 swapfile 替代，它更灵活，在安装系统后配置。格式化为 swap&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的 EFI 由 Windows 创建，512MB 的大小通常不够，请扩大到至少 1GB。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
双系统用户&lt;em&gt;不要格式化 EFI&lt;/em&gt;，这会使你的其他系统无法引导&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果你需要创建 btrfs 子卷，可以参考下面的命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount -t btrfs -o compress=zstd /dev/sdxn /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;别忘了卸载分区：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;umount /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!IMPORTANT]
&lt;code&gt;timemshift&lt;/code&gt; 以及很多 &lt;code&gt;btrfs&lt;/code&gt; 快照工具都需要这种子卷布局，如果你计划使用这类工具，不要创建 &lt;code&gt;@.snapshots&lt;/code&gt; .&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;安装基础系统&lt;/h2&gt;
&lt;h3&gt;挂载分区&lt;/h3&gt;
&lt;p&gt;挂载分区：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mount -t btrfs -o subvol=/@,compress=zstd /dev/sdxn /mnt # 根分区
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sdxn /mnt/home # home 分区
mount /dev/sdxn /mnt/boot # EFI 分区
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;按顺序挂载，如果提示没有挂载点，创建它：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p [mount point]
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装基础包&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;pacstrap&lt;/code&gt; 安装基础包：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacstrap /mnt base linux linux-firmware btrfs-progs nano
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你想用其它内核，可以现在就替换。&lt;code&gt;linux-firmware&lt;/code&gt; 已经被拆分，你可以定制安装。通常来说 &lt;code&gt;linux-firmware-whence&lt;/code&gt; 是必须的，其它诸如 &lt;code&gt;linux-firmware-amdgpu&lt;/code&gt; 可以根据需要安装。&lt;/p&gt;
&lt;h3&gt;生成 fstab&lt;/h3&gt;
&lt;p&gt;生成 &lt;code&gt;fstab&lt;/code&gt; 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;genfstab -U /mnt &amp;gt;&amp;gt; /mnt/etc/fstab
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;切换根目录&lt;/h3&gt;
&lt;p&gt;切换到新安装的系统：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;arch-chroot -S /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
&lt;code&gt;-S&lt;/code&gt; Run in systemd mode. This will spawn a transient systemd service via systemd-run(1) and delegates namespace/chroot management to the service manager. （翻译： &lt;code&gt;-S&lt;/code&gt; 选项会以 systemd 模式运行 &lt;code&gt;arch-chroot&lt;/code&gt;，这会通过 &lt;code&gt;systemd-run(1)&lt;/code&gt; 启动一个临时的 systemd 服务，并将命名空间/chroot 管理委托给服务管理器。）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;设置时区&lt;/h3&gt;
&lt;p&gt;设置时区：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;本地化设置&lt;/h3&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/locale.gen&lt;/code&gt;，取消需要的语言的注释，你通常需要它们两个：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;生成语言环境：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;locale-gen
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建 &lt;code&gt;/etc/locale.conf&lt;/code&gt; 文件，添加以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;LANG=en_US.UTF-8
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
不要在这里设置中文 locale，除非你想让 tty 变成乱码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;设置密码和添加用户&lt;/h3&gt;
&lt;p&gt;设置 root 密码：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;passwd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;添加新用户：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;useradd -m -G wheel -s /bin/bash username
passwd username
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!NOTE]
出于一些个人经验，我不推荐创建 &lt;code&gt;homectl&lt;/code&gt; 用户。从错误中恢复 &lt;code&gt;homectl&lt;/code&gt; 用户非常困难，&lt;code&gt;systemd&lt;/code&gt; 也承认它有缺陷。 &lt;code&gt;homectl&lt;/code&gt; 用户没有默认的 UID 和 GID。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;安装引导加载程序&lt;/h3&gt;
&lt;p&gt;在本小节下的两个小节中，只需要选择一个方法就可以了。&lt;/p&gt;
&lt;h4&gt;传统的：initramfs + vmlinuz&lt;/h4&gt;
&lt;p&gt;大多数教程会推荐你用 &lt;code&gt;grub&lt;/code&gt;，但我更推荐 &lt;code&gt;systemd-boot&lt;/code&gt;。没有什么原因，但是 &lt;code&gt;systemd&lt;/code&gt; 已经提供了，为什么不用呢？&lt;/p&gt;
&lt;p&gt;安装 &lt;code&gt;systemd-boot&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bootctl install
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
如果你没有使用 &lt;code&gt;arch-chroot&lt;/code&gt; 的 &lt;code&gt;-S&lt;/code&gt; 选项，&lt;code&gt;bootctl&lt;/code&gt; &lt;em&gt;非常有可能&lt;/em&gt;错误地识别 UEFI 状态，这会导致它不修改你的 UEFI 启动项。当然，用 &lt;code&gt;efibootmgr&lt;/code&gt; 可以手动修复。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;创建引导项：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /boot/loader/entries/arch.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在文件中添加以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;title   Arch Linux
linux   /vmlinuz-linux
initrd  /initramfs-linux.img
options root=PARTUUID=[UUID] rw
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;UUID 通常可以使用 &lt;code&gt;blkid&lt;/code&gt; 获取。&lt;/p&gt;
&lt;h4&gt;使用 UKI&lt;/h4&gt;
&lt;p&gt;安装 &lt;code&gt;systemd-ukify&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pacman -S systemd-ukify
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/mkinitcpio.d/linux.preset&lt;/code&gt;，取消注释这几行，并将&lt;code&gt;/efi&lt;/code&gt;改为&lt;code&gt;/boot&lt;/code&gt;，我用 &lt;code&gt;linux-zen&lt;/code&gt;，修改之后大概是这样的：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# mkinitcpio preset file for the &apos;linux-zen&apos; package

#ALL_config=&quot;/etc/mkinitcpio.conf&quot;
ALL_kver=&quot;/boot/vmlinuz-linux-zen&quot;
#ALL_kerneldest=&quot;/boot/vmlinuz-linux-zen&quot;

PRESETS=(&apos;default&apos;)
#PRESETS=(&apos;default&apos; &apos;fallback&apos;)

#default_config=&quot;/etc/mkinitcpio.conf&quot;
#default_image=&quot;/boot/initramfs-linux-zen.img&quot;
default_uki=&quot;/boot/EFI/Linux/arch-linux-zen.efi&quot;
default_options=&quot;--splash /usr/share/systemd/bootctl/splash-arch.bmp&quot;

#fallback_config=&quot;/etc/mkinitcpio.conf&quot;
#fallback_image=&quot;/boot/initramfs-linux-zen-fallback.img&quot;
fallback_uki=&quot;/boot/EFI/Linux/arch-linux-zen-fallback.efi&quot;
fallback_options=&quot;-S autodetect&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建那些目录：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkdir -p /boot/EFI/Linux
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用 &lt;code&gt;mkinitcpio&lt;/code&gt; 重新生成：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;mkinitcpio -P
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装 &lt;code&gt;systemd-boot&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;bootctl install
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
如果你没有使用 &lt;code&gt;arch-chroot&lt;/code&gt; 的 &lt;code&gt;-S&lt;/code&gt; 选项，&lt;code&gt;bootctl&lt;/code&gt; &lt;em&gt;非常有可能&lt;/em&gt;错误地识别 UEFI 状态，这会导致它不修改你的 UEFI 启动项。当然，用 &lt;code&gt;efibootmgr&lt;/code&gt; 可以手动修复。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;不需要添加 &lt;code&gt;systemd-boot&lt;/code&gt; 入口，它会自动识别标准路径下的 UKI 和 Windows 引导项（如果你是双系统）。&lt;/p&gt;
&lt;h2&gt;完成安装&lt;/h2&gt;
&lt;p&gt;退出 &lt;code&gt;chroot&lt;/code&gt; 环境：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;exit
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;卸载分区：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;umount -R /mnt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;重启系统：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;reboot
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;移除安装介质。&lt;/p&gt;
&lt;h2&gt;一些后续配置&lt;/h2&gt;
&lt;h3&gt;网络配置&lt;/h3&gt;
&lt;p&gt;我通常用 &lt;code&gt;systemd-networkd&lt;/code&gt; 和 &lt;code&gt;systemd-resolved&lt;/code&gt; 来配置网络。只需要启用这两个服务就可以了：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;systemctl enable systemd-networkd
systemctl enable systemd-resolved
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;创建网络配置文件 &lt;code&gt;/etc/systemd/network/20-wired.network&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[Match]
Name=[DEVICE NAME]
[Network]
DHCP=yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;链接 &lt;code&gt;resolv.conf&lt;/code&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;安装 sudo&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;pacman -S sudo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/sudoers&lt;/code&gt; 文件，取消注释 &lt;code&gt;wheel&lt;/code&gt; 用户组的权限：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;nano /etc/sudoers
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;找到并取消注释以下行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;%wheel ALL=(ALL:ALL) ALL
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你没装 &lt;code&gt;sudo&lt;/code&gt;, 也可以用 &lt;code&gt;systemd&lt;/code&gt; 的 &lt;code&gt;run0&lt;/code&gt;，在体验上没有太大区别。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;run0&lt;/code&gt; 开箱即用。&lt;/p&gt;
&lt;h3&gt;DE/WM&lt;/h3&gt;
&lt;p&gt;大多数教程会推荐 KDE Plasma, 不过我更喜欢 Hyprland.&lt;/p&gt;
&lt;p&gt;当然我是照搬别人的 dotfiles, 如果你也想用，可以看看 &lt;a href=&quot;https://ii.clsty.link/&quot;&gt;End4&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;主机名&lt;/h3&gt;
&lt;p&gt;谁不喜欢 &lt;code&gt;systemd&lt;/code&gt; 呢？我们用 &lt;code&gt;hostnamectl&lt;/code&gt; 设置主机名：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;hostnamectl set-hostname myarchlinux
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>为 CR6608 刷入 Openwrt</title><link>https://nalanyinyun.work/posts/guide-for-cr6608/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/guide-for-cr6608/</guid><description>本文将介绍如何为 CR6608 刷入 Openwrt，以及一些常见的问题和解决方法。</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;为 CR6608 刷入 Openwrt&lt;/h1&gt;
&lt;h3&gt;准备&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Openwrt 固件&lt;/li&gt;
&lt;li&gt;一台 CR6608&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;获取 SSH&lt;/h3&gt;
&lt;p&gt;使用 &lt;a href=&quot;https://github.com/openwrt-xiaomi/xmir-patcher&quot;&gt;xmir_patcher&lt;/a&gt; 开启 ssh 即可。&lt;/p&gt;
&lt;p&gt;使用方法也非常简单，用网线将电脑连接到 CR6608，打开 &lt;code&gt;run.bat&lt;/code&gt; 按照提示修改路由器配置就可以等着了，大概需要 3-5 分钟，完成后会提示你路由器的 IP 地址和 SSH 密码。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
网上比较老的教程会要求用已经刷入 Openwrt 的路由器开启 SSH，但现在的 xmir_patcher 已经不需要了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;刷入 pb-boot&lt;/h3&gt;
&lt;p&gt;通过 SSH 连接 CR6608&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ssh root@[CR6608 IP]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;密码即为路由器管理密码&lt;/p&gt;
&lt;p&gt;下载 &lt;a href=&quot;https://gsg2rtttmkjb.sg.larksuite.com/file/Xd3DbJDgeoAgQHxktbclfaRdgnz?from=from_copylink&quot;&gt;pb-boot&lt;/a&gt; 的链接&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;scp -O [pb-boot path] root@[CR6608 IP]:/tmp
ssh root@[CR6608 IP]
mtd write /tmp/pb-boot.img Bootloader
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;刷入 Openwrt&lt;/h3&gt;
&lt;p&gt;如果一切正常，断开路由器电源，然后按住 &lt;code&gt;reset&lt;/code&gt; 并插入电源，直到路由器面板灯呈呼吸灯状&lt;/p&gt;
&lt;p&gt;可能需要在 Windows 设置中切换 IP 为静态，将网关设置为 192.168.1.1, 并为自己的电脑分配一个 192.168.1.x 的 IP 地址&lt;/p&gt;
&lt;p&gt;打开 192.168.1.1 , 选择恢复固件，你可以刷入 &lt;code&gt;Kernel&lt;/code&gt; 进行安装，也可以直接安装 &lt;code&gt;Factory&lt;/code&gt; 固件&lt;/p&gt;
&lt;p&gt;如果你刷入 &lt;code&gt;Kernel&lt;/code&gt; 镜像，进入后选择&lt;code&gt;系统&lt;/code&gt;&amp;gt;&lt;code&gt;备份与升级&lt;/code&gt;&amp;gt;&lt;code&gt;刷写新的固件&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;如果你看见了 Openwrt 关于设备不匹配或者版本不兼容的警告，在你确认固件无误的情况下，可以选择强制刷入，在一些旧版的固件刷入 snapshot 版本时可能会遇到这个问题&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
你可能会在主线 Openwrt 稳定版上遇到 ssh 连接的问题，可以切换到 snapshot 或者换成 Immortalwrt&lt;/p&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>最终电车</title><link>https://nalanyinyun.work/posts/%E6%9C%80%E7%BB%88%E7%94%B5%E8%BD%A6/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E6%9C%80%E7%BB%88%E7%94%B5%E8%BD%A6/</guid><description>在夏日祭典结束后，乘上最后一班电车，离开那热闹非凡的场所，窗外的灯光渐渐稀疏，在忘记一切前，回到寂静的夜晚。</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我追随着拥挤的人群走入车站，在人稀少的地方踏上了电车。车厢轻轻晃动，铁轨摩擦的声音在黄昏中被拉得很长。窗外的路灯像细微的阳光，从模糊的视线中流过。&lt;/p&gt;
&lt;p&gt;我手中攥着小小的车票，额头上的汗在涌入窗子的风中蒸发，带走了我从那里带来的，夏日的热气。&lt;/p&gt;
&lt;p&gt;我终于冷静下来，发觉四周无人。我似乎弄丢了什么，但我的手机、钱包之类的都在，车票仍旧在手中，什么都没有丢。我回头望着离开的方向，透过窗子却只能看见闪烁的灯光和逐渐稀疏的人群。&lt;/p&gt;
&lt;p&gt;在那闪耀到能够照亮整座城市和我们面庞的光熄灭后，在见过满是笑声和热闹的街道后，我又怎么能回到无人问津的夜？我都知道，可是人们喧嚣的声音、商贩的叫卖、朋友们的欢笑、手牵手时的温暖，一切都历历在目，真实到无法忘记，更无法否认。但那些我曾经拥有过的东西，已经在我和他们微笑着分手时失去了。&lt;/p&gt;
&lt;p&gt;可是电车并不在乎我，只是默默的把我带出参与的氛围中，让我陷入一种一如既往的灰暗中。但我已经见过了阳光，又如何重新回归灰暗？在那样一场盛大的祭典后，我又怎么能重新回归于宁静的生活？&lt;/p&gt;
&lt;p&gt;可我依旧忘不掉他们拉着我的手离开家时，见到的阳光那样的刺眼；我依旧忘不掉那件我最爱的白色的长裙；我依旧忘不掉他们在我的脸上涂抹那些化妆品；我依旧忘不掉烟花绽放时夜空的绚烂。可我不想去，因为我知道一定会有这样分别的时候，我一定记得那些热闹与喧嚣，一定会感受到沉默与失落。&lt;/p&gt;
&lt;p&gt;来自窗外的灯光几乎消失了，车上为数不多的人也几乎走光了，因为电车离开了那座城市，我刚刚到来的城市。&lt;/p&gt;
&lt;p&gt;开阔的河面映射着昏黄的天空，太阳颤抖着落向地平线，它黑黄的光再也无法照亮世界，我伸出双手，甚至看不清它们的位置。&lt;/p&gt;
&lt;p&gt;几乎看不清水面的波纹，天空的倒影也随着天空一同暗淡。在落日的方向，无非是一些黑色的云，一些曾经在我上方流过的云。&lt;/p&gt;
&lt;p&gt;车轮轧过伸缩缝的声音间歇着传来，太阳落去后的风吹的我全身发冷，即便裹紧衣物也无济于事，因为发热的东西已经消失了。&lt;/p&gt;
&lt;p&gt;钥匙上新挂着一些我没有见过的小物件，说起来，我的发卡也是在他们为我挑选的，说是什么很适合我......&lt;/p&gt;
&lt;p&gt;我又想起那些欢乐的事情，却止不住的在对比中感受到寂寞。我什么时候又变成了孤身一人呢？我翻阅着他们在手机上拍的照片，大家关于祭典的讨论依旧热烈地继续着，而且时不时的谈到我，但我为什么还是感觉，少了些什么呢？&lt;/p&gt;
&lt;p&gt;视线模糊的那一刻，我才发现泪水已经充盈了眼眶。我从来不是一个爱哭的人，但现在我也分不清，究竟是为何而流泪了。&lt;/p&gt;
&lt;p&gt;那些泪水从脸颊滑落，滴到亮着的屏幕上，滴到我白色的裙子上，滴到新买的挂饰上，滴到我不断试图抹去眼泪的双手上。&lt;/p&gt;
&lt;p&gt;窗外的灯光重新亮起，但没有那么繁密。无非是一些稀疏的路灯的亮光，这里的祭典也是热闹的，但没有那么热闹，也许以后所有的祭典，都不会再有那么热闹了。&lt;/p&gt;
&lt;p&gt;我收拾好自己的东西，在播报声响起后浑身无力的走出车厢。车站的灯依旧亮着，但这是最后一班车了，因为这里的夜晚很纯粹，只是一味的黑暗，没有活动，电车也不会在这里停靠。&lt;/p&gt;
&lt;p&gt;蝉鸣依旧，夹杂着风吹过柳叶互相拍打的窸窣，我重新嗅见泥土的芬芳，野花的香气。但我身上的，他们带来的香水气味更浓厚......&lt;/p&gt;
&lt;p&gt;凉鞋走过硬质路面的声音很清脆，清脆到在这样的夜晚让人恍惚。我推开房门，回到我熟悉的遮蔽下，换上我熟悉的衣服，关上几乎不打开的灯。&lt;/p&gt;
&lt;p&gt;我用被子裹紧自己，半掩着头，试图潜入梦乡，去追寻一些我遗落的，以及已经经历的东西。&lt;/p&gt;
</content:encoded></item><item><title>终场演出</title><link>https://nalanyinyun.work/posts/%E7%BB%88%E5%9C%BA%E6%BC%94%E5%87%BA/</link><guid isPermaLink="true">https://nalanyinyun.work/posts/%E7%BB%88%E5%9C%BA%E6%BC%94%E5%87%BA/</guid><description>一粒攥了很久的糖，泛红的左脚踝，以及便利店里冒着热气的便当。在聚光灯照不到的后台，进行着一场名为‘生活’的普通演出。</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;后台的空气总是带着前一场演出的余温，混合着粉底的香气和汗水的咸腥。即便是站在幕后，也能感受到台前传来的聚光灯的炽热，以及台下无数视线的灼热。&lt;/p&gt;
&lt;p&gt;我站在监视器前，靠着墙角，尽量地找一个不影响工作人员的地方。&lt;/p&gt;
&lt;p&gt;很多双手在她面前忙碌着，我看见那些我不认识的化妆品拍在她的脸上，铅笔一样的东西在她的眉毛上画着，闪闪发光的东西夹在她的头发上。&lt;/p&gt;
&lt;p&gt;“要到你们了，快点准备。”&lt;/p&gt;
&lt;p&gt;对讲机突然传来声响。&lt;/p&gt;
&lt;p&gt;“马上。”&lt;/p&gt;
&lt;p&gt;短暂的回答后，我望向她那边，却和她的目光对上了。&lt;/p&gt;
&lt;p&gt;虽然从早上开始她看起来就很镇定，但我能感受到紧张——她不想让我担心，我知道。她沁着汗，害怕妆花了用纸擦着；她的脚踝前天扭伤了，现在依旧泛着红；我告诉她了不要自搜，但她还是做了，一夜哭红了眼。我怎么会不担心呢？&lt;/p&gt;
&lt;p&gt;她那边准备好了，我准备和她最后交代一下。不过我刚走到她面前，她踮起脚却摸了摸我的头。&lt;/p&gt;
&lt;p&gt;“别紧张了，都交给我吧。”她说。&lt;/p&gt;
&lt;p&gt;“那不是我要说的话吗？”&lt;/p&gt;
&lt;p&gt;“诶呀先别管那么多了，相信我就行了。”&lt;/p&gt;
&lt;p&gt;“好吧。”&lt;/p&gt;
&lt;p&gt;“对你的偶像也太冷漠了吧！”&lt;/p&gt;
&lt;p&gt;我从兜里摸出一块攥了好久的糖，递给了她。&lt;/p&gt;
&lt;p&gt;“去吧，我相信你。”&lt;/p&gt;
&lt;p&gt;她伸出手掌，要和我击掌吗？我用力的拍了下去，她揉揉手，朝我笑了笑，她喊着：&lt;/p&gt;
&lt;p&gt;“今天的庆功宴不许喝酒！”&lt;/p&gt;
&lt;p&gt;就跑向幕布了。&lt;/p&gt;
&lt;p&gt;我死死地盯着监视器。她装的那么冷静啊，但她的声音还是颤抖着，她害怕着吧，我知道的。&lt;/p&gt;
&lt;p&gt;音乐轰鸣而起，我带上监听耳机，仔细地听着。有一点走调，节奏是对了，对于现场演出来说，没什么大不了的。偶像这种边唱边跳的工作看着就很累啊，尤其是她跳舞的时候，泛红的左脚腕，吓的我心都要飞出去了，索性没没什么大碍。&lt;/p&gt;
&lt;p&gt;我不再看了，准备室里安静的令人窒息。原来没有她在一旁吵吵闹闹，世界可以这么安静。&lt;/p&gt;
&lt;p&gt;我推开门，走上楼梯，看见了一个可以爬上去的地方。穿上一直搭在肩上的外套，我手脚并用地爬了上去，不出所料，是屋顶。&lt;/p&gt;
&lt;p&gt;夜晚的城市我见的很多，但高处的还没怎么见过。无数的小点和灯光在昏黑的夜幕中移动和闪烁，切碎天空的那些高楼上的航障灯呼吸着。写字楼里的人是不是还忙着呢？那些年轻人在哪里嬉笑着打闹着呢？&lt;/p&gt;
&lt;p&gt;我只能听见隐隐地她的歌声，看见不时从下方传来的闪光。如果她知道我没有看着演出，一定会生气吧。&lt;/p&gt;
&lt;p&gt;我在口袋里摸索着，什么也没有。我不抽烟，这样的时候就没什么事可干。可偏偏是这种无所事事时候，会想起很多有用或没用的东西。&lt;/p&gt;
&lt;p&gt;她在无数次这种时候偷偷给我发过信息，因为太累了，太迷茫了。我勉强安慰着，但我也迷茫，也不知道何去何从。都说偶像很幸苦，但制作人不也很幸苦吗？但我并不是想讨什么可怜。她此刻闪闪发光着，用歌声感染着观众，她向全世界展现的是最被需要的一面，可她脆弱的那一面却没人买单，我从来不后悔接下过她，可她也是活生生的人啊。&lt;/p&gt;
&lt;p&gt;粉丝们不买单活生生的人，这是无需多言的行业秘密。但我该同情粉丝吗？我心里倒是没什么数。只是稍微有点庆幸，因为无论怎么说都走到了今天这一步。&lt;/p&gt;
&lt;p&gt;是不是该哭了？毕竟氛围这么到位，但我已经不是小孩了，也不是什么刚来的新人，哪怕有泪水也得咽回去，不能被她看见。要不然的话......不是很丢人吗？&lt;/p&gt;
&lt;p&gt;站着吹了一会儿凉风，我就顺着上来的梯子滑下去了。因为是黑天看不太清，还把手划破了，好在准备室里有消毒和包扎的工具，自己简单处理一下之后似乎也不怎么疼了。&lt;/p&gt;
&lt;p&gt;我坐在监视器前的椅子上，靠着墙，静静的看着她的演出。她依旧很闪耀，只是额头上多了很多汗，脚步也变得僵硬，她累了。好在演出快要结束了，我扫了一眼曲单，只剩下最后一首了。&lt;/p&gt;
&lt;p&gt;我做了一个梦，我梦见她面向着全世界的观众，梦见她在那么多人面前自如的歌唱着，她的歌声传遍了每一个需要她的角落。我梦见我有着大笔大笔的钱，不需要跟着某个公司干了，不用再让她接那些烦人的广告和采访了。&lt;/p&gt;
&lt;p&gt;不过那只是一场梦。准备室又吵闹了起来，我揉了揉眼睛，发现已经有别人开始准备了，黑压压的一片人又开始装扮那个我不认识的人了。&lt;/p&gt;
&lt;p&gt;也许我坐在这里很碍事吧，于是我走侧门，从舞台下面进入了观众席。但我看见人们都在往后走，灯光也逐渐变得暗淡。我跟着人群走着，慢慢地走着，被那些脚绊倒了，被那些人推搡着。我挤到了一个靠后，比较高的位置抓住了栏杆，才没有被人流继续裹挟着向外走。&lt;/p&gt;
&lt;p&gt;在站稳了身体后，我向台上望去。她站在早已落下的幕布前，因为我周围的灯比舞台上的要亮，所以我几乎看不太清她的细节。在我眼中的，也是一个暗淡下来的剪影，她的头发乱了，四周有很多毛刺一样的东西；我想她的脸上一定有很多汗，裙摆呢？大概也没有上台时那样蓬松，漂亮吧。&lt;/p&gt;
&lt;p&gt;也许她看见我了，也许没有，因为我看见她的头没动，也感受到一股熟悉的目光。我跟随着最后离场的观众一起，离开了场馆。我听了听等车的观众们的谈论，似乎对这次演出的评价还不错。&lt;/p&gt;
&lt;p&gt;那就好吧。&lt;/p&gt;
&lt;p&gt;我回到后台，看着她换下那套演出服，洗掉脸上的妆。再之后收拾收拾东西，就该为下一个人让出场馆了。我拎着两个大包，装的都是些演出用具。大城市的夜晚还是很不一样，虽然是夜场演出，出来之后街道上还是那么热闹。红绿色的灯光从四周流过，各色的招牌在面前闪烁。也算不上熙熙攘攘，但确实有很多年轻人。&lt;/p&gt;
&lt;p&gt;把那些东西放在公司之后，离末班车还有一段时间，于是她换好了便服。那是件比较宽大的衣服，这样走在外面才不会被认出来。借着夜色的掩盖，我们要去开庆功宴了。&lt;/p&gt;
&lt;p&gt;所谓的庆功宴，也只是在便利店而已。悄悄地溜进那家常去的便利店，买上两份吃的，再买点饮料，基本上就可以了。我本来想买啤酒，但是想起来她说的话，就放回货架上了。&lt;/p&gt;
&lt;p&gt;“什么时候能包场开庆功宴呢...”&lt;/p&gt;
&lt;p&gt;她用手指在桌子上画着圈，漫不经心的说。&lt;/p&gt;
&lt;p&gt;“也许不久以后？”&lt;/p&gt;
&lt;p&gt;“但你不觉得在便利店太敷衍了吗？”&lt;/p&gt;
&lt;p&gt;“也是没办法的办法。”&lt;/p&gt;
&lt;p&gt;我从微波炉里取出热好的食物，端过来放在桌子上。她似乎不怎么高兴，一直用手捻着叉子。我突然有个想法。&lt;/p&gt;
&lt;p&gt;“如果你想吃好点的话......”&lt;/p&gt;
&lt;p&gt;她停下了手上的动作。&lt;/p&gt;
&lt;p&gt;“的话？”&lt;/p&gt;
&lt;p&gt;“我可以明天做好带到办公室去。”&lt;/p&gt;
&lt;p&gt;她盯着我，然后笑出了声。&lt;/p&gt;
&lt;p&gt;“好啊好啊。”&lt;/p&gt;
&lt;p&gt;“真会做，不骗你。”&lt;/p&gt;
&lt;p&gt;“我知道。”&lt;/p&gt;
&lt;p&gt;吃完之后，我送她上了末班车，至于我自己，就要走回家了。&lt;/p&gt;
&lt;p&gt;我爬着楼梯回到了公寓，再看见窗外的灯红酒绿，听见的欢声笑语，似乎和我都没有什么关系。&lt;/p&gt;
&lt;p&gt;从冰箱里取出食材，洗净。做一些清淡的吧，比较适合在外面吃的，也不能太简陋。&lt;/p&gt;
&lt;p&gt;在油烟弥漫的玻璃后，我似乎看见演出的场馆仍旧闪烁着那样的光，也许我还能听见传来的歌声和欢呼？&lt;/p&gt;
&lt;p&gt;也许，在那样闪烁的舞台后，也有一个个四处奔波的普通人吧，和我一样。&lt;/p&gt;
</content:encoded></item></channel></rss>