--- title: 岁时录(十五) date: 2025-02-23 slug: weekly-15 featuredImage: https://img.viento.cc/cover/weekly-15-cover.webp categories: - 人间世 tags: - Rime - Memos - OpenPGP - 数据安全 series: 岁时录 summary: 第十五期……也是第一期 OωO description: 本文是作者周报《岁时录》的第十五期。作者首先说明了周报的更名事宜,随后详述了深夜乘廉价航班返校的经历。面对新学期高达40学分的学业压力,作者通过策略性退课将学分调整至25分左右,着重保留相对轻松的经济金融类课程。技术探索部分涉及输入法升级至白霜拼音方案、从全拼转向小鹤双拼的学习历程,以及重启Memos碎片化记录系统的尝试。在密码学实践方面,作者重构了GPG密钥体系,采用主密钥与功能子密钥分离的架构,并反思了过度工程化带来的时间损耗。针对苹果公司计划引入国内厂商合作的系统级AI功能,作者表达了强烈隐私忧虑,认为本地化加密与开源方案才是可信的技术承诺。全文贯穿对校园生活与技术偏好的双重记录,既呈现了理工科学子的课业重负,也展现了数字原住民在工具选择与隐私保护方面的执着态度。 wikilinks: true --- 各位老友,晚上好。这里是 Chlorine。随着小氯回到学校,开启新一轮的~~坐牢~~学习,园子的周报恢复更新~ ~~所以你放假和不更新周报之间有什么因果关系吗~~ 首先呢,小氯要宣布一个消息。从第十五期开始,园子的周报,过去的「浮生散记」/「Ephemeralis Weekly」正式更名为《岁时录》。至于新名字的来历……大抵是没什么来历的,只是一个代表时节更迭的词罢了。 当然,为表纪念,一至十四期依然保留原本的名字。 ~~本来这个消息要在年终总结发出的,但是年终总结被小氯鸽了(悲)~~ --- 您正在阅读园子的周报——《岁时录》的第十五篇,日期范围为 2025 年 2 月 14 日至 2025 年 2 月 23 日。这是园子的不完全定期刊物,会记录一些小氯和园子在这段时间的经历,以及或有或无的思考。这是从主世界的时间中引出的一条细小的支流,也是这个网络空间中的小岛的编年史。 祝食用愉快。 ## 夜に浮かぶ 本节标题来自我很喜欢的一首歌。 事情呢,是这样的:我们的学期注册终止于 2 月 16 日,17 日就要正式开始上课了,于是小氯打算在 13 ~ 15 号回学校,提前料理一些新学期的事情。在考查了半天之后,小氯发现从所在城市的机场出发到学校的机票异常廉价,价格甚至低于用时更长的高铁,于是欣然出手。 只不过这趟飞机有一个小缺陷——它是晚上出发的,到达时要半夜。嗯,也好,丰富一下人生体验。不过小氯不敢保证校门在这个时间段还开着,于是提前订了一家机场附近的民宿,打算睡一觉再回学校。 登机的过程呢,没什么太多好说的。小氯家乡的机场是个很小很小的地方,小到登机口的数量一只手就能数得过来,自然也不会遇到像深圳宝安那样的室内长途定向越野(误)。而且,小氯到得极早,提前了差不多一个小时。在等飞机时,小氯还遇到了一位在飞行员班的同学,很愉快地聊了一会儿。 所以……小氯正在七千二百米的空中,经济舱的阅读灯昏黄的光线下,一点点地敲出这些文字。 我的影子正以上百公里的时速掠过沉睡的华北平原,透过狭小的窗户,下方的灯火像是在乐高积木的大地上自我繁衍蔓延的发光菌群。 或许对于地面上的许多人而言,这是我一生离他们最近的一次。 后面的故事就乏善可陈了。这次飞机的飞行时间只有两到三小时,小氯还没敲几个字就降落了,甚至还比预想的提前了半个多小时。 然后呢……在只有大床的「精品大床房」里面睡一觉,然后打一辆顺风车,回到已经颇为熟悉的地方。 ——这里本来有一段长长的其他内容的,让小氯反反复复改了好多次。 我甚至试图用 DeepSeek 帮我改一下,但我还是放弃了。一方面是不喜欢直接把 AI 写的东西放到园子里(我一般用 AI 快速了解或者聚合一些信息),另一方面,以 DeepSeek 的水准,写出来的东西大抵会非常优美且富有感情,这和小氯的零零碎碎点点滴滴又有点入机的风格很不符。 所以,那段大概可以升华整个部分的文字被小氯删掉了。这里是它的墓碑。 ## 核善の课程 在上学期的《高等信息经济学与应用博弈论》(俗称选课)中,小氯为了保底,把所有能塞进去的课都塞了一遍。结果由于博弈策略设计得太过出色(大嘘),最后只掉了一门课。搞笑的是,这门候补的课——一门非常热门的课,在我没有做任何操作的情况下被自然递补上去了,而提前离开的同学们却没能拿到课程的名额。 > 《等等党大胜利》 然后再加上小氯为了调整策略加上的课,小氯的总学分在某个时刻达到了惊人的 40 分( ![wtf-your-courses|325](https://img.viento.cc/20250223-wtf-your-courses.avif "学姐の震惊") 根据我校培养方案的一贯抽象,这学期的课也都不是什么善茬,就一个数电就足够受的了(为什么小氯一个 End User 要学硬件啊喂),更何况还有网原概统大物人智导社分树蛙金科密码学公金心概中宏计量货银毛概习概(~~仙之人兮列如麻啊~~)以及小氯自己打的工。如果让小氯把这些所有的课都吃掉,那属实是……除非是某些变态就想看小氯酱坏掉(大误)。 所以小氯退掉了其中十多学分的课,剩下了二十五到二十七左右,同时提高了里面人文和经济方面专业课的比例。从小氯的经验来看,文科方面的课比 CS 和数学简单许多(~~DSA:孩子们没错是这样的~~),即使是文科专业课难度的巅峰——公金(公司金融),和 CS 牢九门(牢数,牢系,牢操,牢网,牢组,牢软,牢电,牢物,牢算)等一众旧日支配者相比还是太慈眉善目了。 ## 清理草稿 似乎大概也许好像……小氯[[孩子们,我回来了!(2)|说过]]假期要爆更来着?不过从结果上看,显然既没爆也没更,除了一篇水得离谱的开发日志和一篇莫名其妙的碎碎念之外什么都没更出来,就连年终总结兼园子一周年庆典都被鸽掉了(悲)。 不过说小氯什么都没干也不对,既然一个假期几乎什么都没学,那么证明小氯一定在摆烂方面大有成就(顶锅盖遁走)。现在的草稿箱里面已经躺了若干基本成型的稿子了,这一周水的几篇就是其中的一部分。 不过,写作这个东西时效性很强:如果你没有及时抓住灵感并且将其扩充到一个不会自然消散的长度,那么恭喜你,你大概率是要与它永别了。小氯在打开 Obsidian 想写点东西的时候,也经常看着自己的灵感速记本上面的东西直龇牙,完全想不到自己当时是怎么想到这些奇怪的文字组合的。 不过……客观上来说,这一周小氯确实更得不少对吧(乐)。或许这就是经常听人说的,只有在你忙碌时,闲暇才成为闲暇。 ## Hello,Rime Frost 其实这部分已经鸽了若干年了,是原本的第十五期周报的草稿的内容,一点也不周报(~~新闻的时效性——初中语文~~)。 小氯大概一年前切换到 Rime 输入法,具体来说是鼠须管(Squirrel)。当时用的预设方案是雾凇拼音(rime-ice)。 {{< github repo="iDvel/rime-ice" >}} 雾凇拼音无疑是非常出色且全面的配置方案,社区也对其给予了高度认可——雾凇拼音在 GitHub 上的 star 数已经超过一万,远远超出了 Rime 本体和中州韵、小狼毫、鼠须管三大输入法。 最近我发现了雾凇的一个变体:白霜(rime-frost)。其实也可以翻译为 rime-rime,毕竟 rime 本来就是霜的意思(笑)。 {{< github repo="gaboolic/rime-frost" >}} 在概述界面,作者 gaboolic 高调地宣称: > 白霜词库是目前rime方案下最好的开源词库,立志于打造不输于商业输入法的输入体验。 好!很有精神!(Doge) 实际体验一下之后感觉确实还不错,比雾凇拼音多了很多不常见但是对小氯有用的词汇,对于输入长词也比较友好。以及一些小功能,例如斜杠命令。 白霜拼音和雾凇拼音的兼容性相当高,而且由于小氯本身也没做什么太多的自定义,迁移起来也不麻烦。大致就是以下步骤: - 备份原本的配置文件夹 - 导入 rime-frost 的源代码 - 导入自定义词典、各种 `.custom.yaml` 和 `custom_phrase.txt` - 挂载自定义词典 - 将 `rime_ice.userdb` 重命名为 `rime_frost.userdb` - 重新部署 作者也是相当具有雄心壮志,TODO 里面有一大堆非常吸引人的计划,甚至包括「训练一个智能语言模型」。如果能做到本地化,同时做好足够的加密措施,那就是神器级别的功能了。小小地期待一下。 此外,小氯还顺便换了一个更新的玩具。具体内容……请看下一节。 ## 小鹤双拼 没错,真香定律还在发力(悲)。 小氯一直是个全拼党,键盘噼里啪啦敲得飞起,虽说之前对小鹤双拼也算略有耳闻,但是一直没有尝试。直到小氯下定决心把讯飞输入法撵出了 iPhone,全面启用 Hamster 后,那个古老的问题一直在困扰我——Rime 全拼在手机端的体验极差,强制 26 键和无纠错在 iPhone 15 Pro 小小的屏幕上简直就是噩梦。这种情况下,双拼的表现明显优于全拼,毕竟每次打字都只需要击打两次键盘。 此外,小氯的娘亲非常擅长五笔输入。每当小氯去问娘亲「用了这么久的五笔,会不会想着换成全拼」时,她总是摇头,表示五笔很好。「刚开始的时候需要背词根,但是后来就快了。」那么,小鹤音形的键位会比五笔的词根还难吗?我不这么认为。一个很简单的事实:五笔的词根有一百三十个上下,还有取大优先、兼顾直观、能连不拆等一堆复杂的规则,而不管是小鹤音形还是自然码还是别的什么方案,也就只有二十个左右的映射(当然,简单总是有代价的——双拼的上限肯定比全拼高,但还是比不上五笔)。 于是,在一个平平无奇的要赶早八的早上,睡眼惺忪的小氯打开了 Hamster,把首选输入方案切换为了小鹤双拼。 这自然不是什么容易的事。由于小氯并不喜欢在 MacBook 的键盘上贴什么键盘膜,因此能依靠的只有那个著名的「秋闱软月云舒翅」口诀和自己的记忆力。小氯的方法也很简单,就是一力降十会——把 MacBook 和 iOS 的默认输入法都改成双拼,逼着自己反复练习。感觉小氯学很多东西都用的是这种策略啊。 不过小鹤还算是好上手,小氯刚刚开始用双拼几个小时,打字卡顿的情况已经不太多了;大概二十天以后,打字速度就接近了原本的水平;现在差不多两个半月,再也不打算回全拼了。 ## 重启 Memos Memos 大家都很熟悉了,一个让人又爱又恨的家伙。爱是因为这个软件确实解决了许多老友随时记录闪念的痛点,恨是因为 Memos 的开发者实在是太抽象了,几乎把 Memos 当作了自己练手的项目,API 的 BREAKING CHANGE 说来就来,每次升级都有一大堆的 Bug,对社区的许多建设性意见也置之不理。所以就出现了一种奇异的情况:Memos 依然在卖力地更新,但是大量的用户都选择锁定在一个较旧且稳定的版本(~~牢软:在想我的事?~~)。[浪子老友](https://blog.memos.ee/archives/227.html?scroll=comment-255)推荐的是 `0.18.1` 和 `0.14.4`,[杜老师](https://dusays.com)推荐的是 `0.21.0`,[木木大佬](https://immmmm.com)则锁在 `0.18.2`。 小氯对这种开发模式并不赞同,又由于虚拟机在校内离谱的连接状况,小氯时常会连不上自己的 Memos。再加之记录需求不多,干脆把实例停了。反正数据就在虚拟机里面搁着,也丢不了。 不过呢,最近看到了 [Nelson 老友的有趣文章](https://blog.bosswnx.xyz/2025/joy-moments-0),小氯感觉这种记录生活中小确幸的方法似乎对于活下来颇有裨益。而 Memos 确实适合做这个。于是小氯把 Memos 重开了,用的是 `0.18.2`,可能偶尔会换到 `0.18.1`,反正这两个版本也没有破坏性更新。不过,校园网嘛,你懂的。MacBook 上小氯可以修改 host 文件直接用 Tailscale 的虚拟内网去连接,而 iPhone 只好凑合用了(悲)。 或许比较合适的方法是自己在校内建一个小主机,或者是买一台比较注重隐私的服务商的 VPS。一般来说 GDPR 辖区的情况能稍好一点,比如德国的 Hetzner 或者冰岛的 1984 Hosting。在 VPS 上做技术隐私比较费劲,除非全盘加密。 ### Alternative #### Flomo 很好很稳定的产品……闭源的,SaaS 的,谢谢。 #### Fediverse Fedi 本质是一个社交平台,虽然可以通过私有嘟文来保证不可见性,但是其毕竟不是做这个的。而且,把自己私密的想法放到一个「公开性质」的平台,会让我感觉很不安全(小氯真是个奇怪的人啊)。 #### Moments [清扬老友的推荐](https://blog.liushen.fun/posts/8338183a/)。看着酷似 VX Moments。不过这个东西更接近单机社交而不是碎片化笔记,那还不如 Fedi 呢。 #### Blinko 源码[在这里](https://github.com/blinko-space/blinko)。 很新的一个小东西,用得应该是 Next。相当好看,功能极多(甚至多到有点花哨了)。不过没有手机 App(虽然说可以 PWA,但是原生的毕竟更好),以及,小氯有 PostgreSQL 恐惧症 (/ω\) 不过,经过小氯的测试,Blinko(网站加 PostgreSQL)的资源占用也算不得特别高,和 Bluesky 的 PDS 差不多,一般的服务器应该完全可以承受。 #### my-flomo-server 源码[在这里](https://github.com/jerryshell/my-flomo-server)。没有看到预览效果,不过推测和 Flomo 接近。 ……话说大家到底为什么这么喜欢 PostgreSQL 啊?! ## GPG Key 的调整 准确来说,这东西应该叫 OpenPGP Key,或者是 OpenPGP Key Set。因为 OpenPGP 是一个协议,而 GPG 是其的一种(最流行的)实现。 小氯之前不太懂 GPG,创建了一大堆密钥。由于最近的《现代密码学》课程以及对 CypherPunk 的兴趣,小氯开始琢磨着把密钥归拢归拢,这也符合最佳实践。 归拢密钥不难,小氯很快把原本的 SC - E 密钥拆成了 C-S-A-E 结构。[^1]不过在处理 Git 密钥时,小氯遇到了点问题。 具体来说,小氯原本是使用一个单独的主密钥给 Git 提交签名的,但是这样疑似有点不太好,因为 GPG 的最佳实践其实是一个绝对隐私的主密钥 + 若干个日用子密钥。小氯的理解是:一个 OpenPGP Key Set,就是一个身份。如果你希望你做某件事的身份和原本是泾渭分明的,那么就加一个新的 Set。那么小氯现在的各个用途代表的身份需要分开吗?显然不需要。 从职责分离的角度看,最好的方案应该是在主密钥下单独创建一个新的签名子密钥。这样不是不行,但是分不清哪个是哪个还好说,GPG Agent 经常弄不清用哪个子密钥签名,手动指定也没用,这样交叉污染还不如只用一个子密钥呢。 小氯一直是个很内耗的人,这件事几乎内耗了我一天的大好时光。然后,在即将睡觉的时候,小氯实在是忍不了了。 再加一个密钥,其实收到的安全收益也就那么多,而且还要管理不同的密钥、配置不同的程序,累也累似了。而且,小氯并没有在什么高密级的单位,例如区块链金融机构、高级别的密码学研究中心或者是政府机关工作,也并不是记者或者活动家这类高风险的、需要匿名的职业。那么现在的结构,其实已经足够用了。如果后续能把主密钥移动到 YubiKey 之类的安全硬件,甚至已经足够用很久了。 所以就这样吧: ```txt 主密钥 C 签名子密钥(文件,邮件,git提交等各种签名) S 加密子密钥(邮件,文件等) E 身份验证子密钥(ssh 等) A ``` 问题解决。睡觉。起来,开开心心地去上课。 所以,诸位老友不要学小氯。有什么事,痛快做个决定,才能不耽误睡觉 (/ω\) ……哦,说到 GPG,小氯最近还做了点小事:把 GPG Suite 扬了。 老早就看这家伙不顺眼了,加了一大堆启动项,源码只给一个压缩包,更新那么慢,还带一个不紫柚的 GPG Mail。当然 GPG Suite 这么做没有任何问题,无可非议,但是这很不对小氯的胃口。 扬了之后也没什么大问题,就是右键快速操作和图形化界面不能用了而已。小氯在琢磨着写几个 Shortcuts 替代掉那些快速操作。 ## Apple Intelligence? 这是之前牢果宣布的一个计划,简单来说就是给设备接入系统级 AI。在小氯看来,系统级 AI 这个主意本身没问题。因为在小氯眼中,AI 和电力、计算机一样,都是一种革命性的基础设施。电力驱动的机械宣告了人类体能的落伍,计算机则接替了复杂的计算工作,AI 做的,只不过是把一些原本需要人类情感和创造力的活动接管了而已。虽说听上去比前两者严重亿点,但是倒也不必当作洪水猛兽,毕竟你不能说人们不爱走路了所以要禁止汽车。如果我们能做到在保护用户隐私的同时,把 AI 功能成功整合到系统的某些操作中,倒也不失为一个有用的助力。 ……不过做起来可没那么容易。 如果小氯没记错,在全球范围内接入的一般是 ChatGPT。不过众所周知,为了符合某些规定,牢果在国内的合作商都是比较具有本土色彩的。这次也不例外,就是牢度的文心大模型,也有说法是准备去找牢巴(阿里巴巴)合作的。 牢度……嗯。 在小氯看来,一个系统级 AI,纯本地化是其能被认为「安全」的必要不充分条件。当然,我并不是说联网就必然会有危险,但是将这柄达摩克利斯之剑交给光纤对面的公司本身就是对个人隐私最高级别的威胁,更何况是一家让小氯信任他们尊重用户隐私还不如信任指洛水为誓的公司。即使是从(应该是中美的)法律上承诺「绝不查看」,那也不行。小氯[[理想乡构筑手记(2):Hello,Céfiro|说过]],我从不信任道德承诺,我只信任技术承诺。荒坂可以操纵整个政府,但是他们破不开后量子加密算法。 ……反正牢果如果真的和牢度合作做 Apple Intelligence,还没有确切的证据能让我相信这个东西可以完全 Opt out 的话,那估计也是时候锁系统版本,或者换 [Asahi Linux](https://asahilinux.org) ,或者去买 Framework Laptop 了。当然会有许多相对于隐私性更加在乎便利性的客户(而且这应该是大多数),但是这显然不包括小氯,这只拿着 LuLu 过滤联网程序、为了用开源的 Rime 代替讯飞宁可从头学双拼、为了保护自己写的算不上私密的笔记愿意啃一千多页密码学 PPT 的元素娘。 **Hands off my data, you shameless techs!** [^1]: 这里的字母是指密钥的四个功能:认证(Certification)、签名(Signing)、加密(Encryption)和验证(Authentication)。SC - E 就是主密钥兼有签名和认证功能,同时有一个仅加密的子密钥;而 C-S-A-E 就是全分离架构,即主密钥只负责 C,S、A、E 全部由相应的子密钥负责。