念头。遇见不同想法 NIANTOU.NET

在别人的文字里,遇见自己的念头。

独立书写 · 自由阅读

Frost's Blog

按发表时间排列
40 篇

变与不变

这次回老家,我要回老房子拿点东西。这是幢快30年的楼房,我从小学三年级开始后的整个学生时代都是在这里度过的。我家住在六楼,没有电梯,所以自从我妈患病后就换了个住处,这里已有三四年没有人住了。 打开门前还是有点忐忑的,谁也不知道一间很久没人住的屋子会住进去什么东西。没想到进门后,除了一种不通风的闷腐气外并没有什么了不得的气味。地板挺干净,沙发都覆上了遮尘布,正厅电视机的上方是一幅约莫1.2米宽的《八骏图》十字绣,往后看,沙发上方更是一幅巨幅的《金陵十二钗》十字绣,粗估有三米多宽。这些都是在十字绣还流行的年代由我妈不知

楞次定律

我不是一个喜欢走出舒适区的人。 相反,每当即将有变化发生,我总是会感到不安,即便这个变化是朝着好的方向。比如长假前夕、长途旅游前夕,这意味着我要从日复一日同样的生活节奏中脱离出来,去适应另一种节奏。同样的,一旦适应了另一种节奏,我又不情愿从里面跳脱出来。我的人生好像一个巨大的 楞次定律 。我觉得滚筒中的小白鼠也挺幸福的,不用想别的,一件事干熟了,也不费什么力。什么拥抱变化,开拓进取,36 岁了,只想躺平。 但总有一些变化,你无法避免。比如换工作,说来奇怪,我这样一个安分人,已经是第五份工作了。每次换工作,似乎都有充

我们为什么要重写 bub?

引子 bub 最开始是 PsiACE 做的一个小型 Python Agent 项目,用来实践自己的 Agent 想法。2026 年 1 月的最后十天里,OpenClaw 经过两次改名风波迎来了暴发,所有人都在讨论,都在使用。而我[^1]不满足于当个纯粹的使用者,我想要拆解开看看它是怎么做的,虽然基于 LLM 的了解我能勾勒出大致的轮廓,但真要了解它,还得深入代码中去。那时已经到了二月,OpenClaw 的代码库已经非常庞大了,每天合入的 PR 不计其数,全身上下充满了 vibe 的气氛(双关)。于是了解到了 Nan

创造一只龙虾,需要些什么?

import Tweet from "@components/Tweet.astro"; import LinkCard from "@components/LinkCard.astro"; 稍微地介绍一下背景知识,标题中的龙虾指的是这段时间大火的 OpenClaw 项目,它最早的名字叫 ClawdBot。它一是个能与你在聊天软件中交流,从而帮你完成各种任务的通用型 AI 智能体。 最火的那段时间我并没有用它,一周过去了,我在想如何复刻它,我研究了另一个最小化复现的项目 Nanobot ,我觉得我脑中大概有了蓝图。

读《昂贵的和平》后感

吉辰先生的 这本书 是我从读书博主 ruc 猫那里知道的,后者强力推荐并选作了 2025 年度最佳。 这本书主要是关于《马关条约》签订的始末,这种历史重现的方式与 2024 年的《康熙的红票》很像,但远没有后者易读。文中到处夹杂行内史料引用和整段的原文文言引用,读起来是有些吃力的。但在非史料部分,比如书中的末章和后记,作者都展现了他深厚的文字功力,用一种小刀剌肉的方式复述这段沉重的历史,还是令我非常震撼。 我本能是很抗拒这段屈辱的历史,但转眼又是一个农历马年(此书的初版即完成于 2014 年,农历甲午年),我认为还

2025 的号与外

标题什么意思? 2025 年过去了,我也看了很多别人的年终总结,看的时候就感觉阵阵焦虑,究其原因,是因为在看大佬长篇大段的成就展示时自惭形秽了。也有几篇 我喜欢的 ,恰好是没怎么写成就的。往年的我也不能免俗,写了不少完成了某某某事情,去了某某地方。今年不如改改,为了避免焦虑,更多聚焦在 How 与 Why,而不是 What 上,标题的谐音梗就是来源于此。 有什么成就? 不写 What 是不是因为没什么成就可写了?被发现了。今年下半年由于老婆驻场上海工作,我基本上挑起了带娃的责任,好处是和女儿培养了很好的关系,坏处是

友好的 Python:从其他语言移植

我们总说 Pythonic,我自己也会说某段代码不够 Pythonic,但什么是 Pythonic 呢?不讲清楚,我会被人说老登。为了避免如此,我决定再写写。 要说一段代码是 Pythonic 还是 Rustic、Go-istic、Java-ish 最直观的方法就是把它们放一起来对比,这个场景就是代码移植。其实,代码在特定语言里怎么写,是由语言特性决定的,但肯定有些部分,什么语言都能这么用,那么这些移植代码最终会变成什么样子,就更多是由写代码的人(也不一定是人)决定的了。下面我就从其他语言找些例子,看看如果把它们用

珍重

我曾经做过一个梦,很奇怪的是,这个梦过了近二十年我还依稀有印象。那是在 2006 年春节后的一天午睡,我梦见我睁开眼发现日历已经是 2006 年 8 月了。我一下惊醒,感叹时间怎么过得这样快,崭新的 2006 年已经要过去了。 直到 2006 年的暑假真的到来了,那时我即将进入高三,却没有什么学业负担,每天都在巷子口等陈何,一起去网吧打魔兽 2v2。陈何是我同学兼同桌,他名字是四个字,我们只称他前两个字,他家住在离我家 100 米处的地方。这情景我现在还时常想起时常怀念,感叹那时我怎么可以这么无忧无虑。他数学很好,

被嫌弃的松子的一生

题目是一部 2006 年的日本电影。主人公松子从小缺乏家人的爱,长期被忽视,因此形成了极度渴望被关注、被需要的性格。进入社会后,她为了获得爱而不断付出、不断迎合,结果却屡次被男人、家庭、工作、社会抛弃。为了别人而活的她,始终无法为自己活。 最近父母回老家参加表弟的婚礼,给我带回了一个松子的故事。我表弟小我两岁,从小就很纨绔和刁蛮,甚至从来不跟长辈说话,即便是在春节期间,用给 100 块的方式交易,也无济于事。成年以后似乎结识了一些朋友,倒是不再沉默寡言,但却变得满嘴社会嗑,生殖器不离口。做过一些工作,但大部分时间都

PyCome

标题 Typo 致敬某粗鄙的大佬。 0x00 第二次来上海参加 PyCon China,也是我的第七个 PyCon,这次更多是 PyCon for friends。 最激动的是要第一次见到 yihong,当我得知他和我差不多时间到浦东,我就决定等他,哪怕他说下飞机要先拉屎。 结果这小子没同步消息,理解错误,屎没拉也不说一声,把我晾在那,好在等待市域铁发车让我堵到了他。他上来就给了一个拥抱,还把他刚看完的《多情剑客无情剑》送了我,然而是(下),(上)(中)都没有,离谱。 0x01 路上商量下午的节目,yihong 先

河南行拾遗

这不是一篇正经的游记,事无巨细地记录行程、餐饮、住宿并非我所擅长,很容易写成流水账。我不希望文章变成那样,所以只是写下我想与大家分享的东西,记录下河南在我心中的印象。 五一假期我和老婆去了河南,尽管预料到人会很多,但在国家实行统一长假的框架内,还是只能如此。就算我是数字游民,但老婆不是啊,所幸女儿没有和我们一同前往,事后回想这次如果带上了她,想必会艰难加倍。 4/29 我看过一本书叫 《中国八大古都》 ,可能大家只对七大古都熟悉,而这本书里提到的第八大古都,就是河南郑州,因为这里发掘了商早期的都城遗址,有郑州商城遗

再也别问 Singleton 了好吗?

起笔的原因是群里的一段聊天: 不禁感叹 Singleton(单例模式)作为一个经典的设计模式,是如何被滥用的,特别是在 Python 这门语言中。它竟然成了一个八股式的面试题,就像「茴字有几种写法」一样,一直被问个没完。但我敢说,绝大多数人回答的时候,都是照本宣科,他们参考的网上的答案,也很少有能讲正确的。 先说结论 在 Python 中,你不需要 Singleton。 如果需要,就用模块级别的变量。 至于原因,让我们来看看几种流行的 Singleton 实现方式: 1. 装饰器 def singleton(cls

我的 2024

工作与技术 在 BentoML lead 了几个重要的 feature,包括 1.3 和 1.4 两个大版本,以及 Codespaces 和 Comfy-Pack。 11 月参与 PyCon China 2024,见了许多网友,参加了代码厨房的活动,很开心。做了关于 Pydantic 的演讲。 slides 视频 11 月参与了 NebulaGraph 深圳的线下活动,做了关于 BentoML 的分享。 5 月份有荣幸 与 Paul Romer 见面交流 ,并造就了 2024 年我最受关注的一篇文章。但于我来说会总

一个 monkeypatch 引起的循环引用问题

最近社区里有人提了一个PR ^1 ,解决了一个潜在的内存泄漏问题。我认为这个问题在很多场景都容易忽略,所以分享在这里。 上代码 import gc class Foo: def bar(self): print("bar") foo = Foo() print("Before", gc.get_count()) foo.bar = foo.bar print("setattr", gc.get_count()) del foo print("After", gc.get_count()) 运行发现 foo 对象无法

功不唐捐

我女儿第一天上幼儿园回来,我就拿着群里他们班级的合照,挨个问她每个小朋友都叫什么名字。一方面是想看看她集体融入得怎么样,另一方面是自己想留个底,争取每个小朋友的脸和名字都能对上。 她当然不能每个都叫出名字来,但配合群里其他家长聊天的信息,三天后我就基本能全叫出名字了。有回我正在问,丈母娘见了在旁说,「知道这个有什么用,你又不是老师。」面对这种言论,我只能一笑了之。 我觉得,总会有用的。在我看来,至少有下面几个用处: 首先,安全。以后万一有突发事件,我能对号到人。做个假设,有一天我女儿和她同学出游走丢了,我能凭借这些

表达的阈值

import Tweet from "@components/Tweet.astro"; 我一直在思考要在博客写些什么,我能写什么。刚好看到了 @laike9m 的这篇推文: <Tweet id="1847557409457524950" /> 有很多观点我是不敢在网上表达的,只能和女朋友说说。有的是因为太个人化,有的是违反了普遍的认知,以及第三种情况:解释清楚要花太多时间,而我的时间本就不多。于是每次都是想想,很快便打消了这个念头了。 确实,很多时候阻挠我表达的,是四个字「大可不必」。我要表达的观点会有人认同吗?

《21世纪》与主流文化

上周末 《从 21 世纪安全撤离》 (后简称《21》)在深圳点映,一直很期待导演李阳的作品,距离《李献计历险记》已过去十多年了,那时房祖名还在呢。于是一出来就买了票和老婆一起去看了。看完后我和朋友聊的感想是: 我最大感想是,感谢所有资方,感谢电影工业,感谢演职人员,信任李阳,帮他完成这个作品。 没错,李阳在所有中国导演中都是一个异类,只有他能拍出这种味道的东西。怪诞、热血、信息量爆炸、莫名其妙。可以预见,这将会是一种评论两极分化的片子,密集的视效和神奇的转折之下,是破碎的剧情和二维的人物。我个人是很喜欢的,我记得在

我「接见」了诺奖得主

:::note[版权声明] 本文谢绝一切转载,只能以链接形式分享。 ::: 如同这个 Drama 的标题所写的,在我 34 岁生日这几天发生了一件非常 Drama 的事情。到现在我依然感觉有些不真实,但事情就是,我「接见」了诺贝尔奖得主。 收到邀请 5 月 28 日这天我收到了一封邮件。我向来习惯及时阅读新的邮件,至少是邮件的标题,所以我的邮箱从不积压未读邮件。我每天早上都会收到很多 GitHub 的通知邮件,但这一封没有 [GitHub] 的前缀, 我留了意,但也没有立刻打开阅读。可能是这个「只读标题未读内容」的

友好的 Python:封装和复用

最近我写了一个 TTS(Text to Speach) 库 Tetos ,为的就是统一各种云 TTS 服务的调用接口,让用户可以用同一套代码,只需要变动参数就可以在不同的 TTS 间切换。 https://github.com/frostming/tetos 在实现过程中,我翻阅了很多云 TTS 服务的接口文档,发现它们接口的设计大相径庭,有的是 RESTful,有的是伪 RESTful,有的文档里甚至只让你用 SDK,没有 HTTP 接口说明。 本来嘛,我做的工作就是让用户可以不用做这些工作,但本篇文章还是想主要

我们生活在差异里

对不起余华老师,小小碰一下瓷 上周我去了上海,见了我研究生时代关系最好的同学,我们已经快九年没见了,他头发理得很短,略显发福,就称呼他为亮子吧。亮子还在一家芯片设计公司上班,从毕业后到现在一直没换过,已逾十年。这对于我来说有些不可思议,疫情以来,「降本增笑」对于我们来说已经是一个谈资,而他却一直在做着同样的事情,同样的工作,同样的生活,难能可贵。 亮子过着高度重复机械的工作生活,每天要到十点以后才下班,周末也得去。他说:「有时就连洗个澡,都会影响我的睡眠时间,往往回家倒头就睡。」我向来痛恨此事,他却说:「这和那种无

通过辨析去学习

辨析是一种学习技巧,我经常使用这种方式。找出一个概念中的两个类似的事物,然后比较它们的不同之处。人们设置类似事物并不是多余的,通过辨析可以找到它们背后的逻辑。 我上小学五年级的时候家里买了一本书,叫 《汉语联想词典》 , 这本书甚至连豆瓣词条都没有。它大概是一本通俗版的《说文解字》,里面按部首索引汉字,通过汉字的字源字形讲述它们的本义引申义。这让只接触过《新华字典》的我产生了浓厚的兴趣。阅读过程中,汉字的六种造字法从一些模糊的印象变得清晰起来。 我对里面的同源近义字尤其感兴趣,它虽名为「词典」,我却把它当成了书来阅

我的 2023

好几年没写年终总结,因为其实自己这一年,或者说每一年,达成的成就都不多,令人兴奋的更少,所以我可能没办法写出什么取得了长足的进步,憧憬来年更好的文字。 但另一方面,读我的这篇总结应该不会产生什么焦虑的情绪。 工作与技术 2023 年年初我也体验了一把「广进计划」 ^1 ,拿了补偿,也体会到了在一个和利益相关的团队中,各方如何产生分歧,最终导致决裂的整个过程。我也属于在漩涡中心,亲身经历了一次政治斗争。 这段故事我从没在公共平台说过,现在释然了,也不想再提,有些小丑终究是小丑。 休息了三个月之后我加了现在的公司 Be

两种风格的错误处理

错误处理是编程语言中很重要的组成部分。一般来说,发生错误时,要立即中止程序正常逻辑的执行,转而执行错误处理逻辑,这个过程称为错误处理。 我用过的编程语言中,比较熟悉的两种错误处理方式,一种是异常抛出,一种是错误返回。它们各有优缺点,也有各自胜任的场景。 先来看看它们各自是怎么处理错误的。 以 Python 为例,抛出异常的方式是: def foo(): # do something raise Exception("something wrong") 处理异常的方式是: try: foo() except Exce

思想漫步

一 最近《乐夏》开播,我没看,但我偶尔能刷到一些片段。不知有没别的人和我有同样的发现,大部分摇滚主唱和民谣歌手的咬字 都有一些共同的特点,就是以北京腔为底的夸张化的卷舌,特别是在 zhi,chi,shi 这三个音上有很特殊的听感,就像是在故意大舌头。 可以听彭磊、老狼甚至大张伟的演唱感受下我说的是什么。这种咬字方法和港台流行乐有非常大的区别。这是不是所谓的「京圈」。 有种感觉,就是「京圈」把持了这几类音乐的话语权,并隐然有排外的倾向。所以我希望有更多「九连真人」这类乐队的出现。 二 我回老家参加高中同学的婚礼,久违

关于写作与分享

确实有挺久没有更新这个网站了,而且今年到现在为止只 写 水了一篇博客。于是开始思考,是什么会趋使自己想要写一篇文章来分享呢?找到这个动机,或许能了解为啥自己不咋更新。 同时也更新一下以证明这网站没死。 考虑文章的内容和取材,其一是技术文。这需要良好的输入,通透的理解,以及对知识的整理归纳,才能形成一篇有头有尾深入浅出的文章。我也不能说没有学新东西,只是实在懒得组织思考文章架构了。 平时有些心得体会,在 Twitter(X) 上锐评一下,140 字也足够了。有人说刚入门时分享欲是最旺盛的,现在要发个什么东西都会在无形

Python 打包的新动态

今年以来,Python 打包社区依然很活跃,有对 PEP 582 的最新修改,也出现了一些新的提案, 本文将略作总结。 群众的呼声——统一的包管理器 在去年 9-10 月份的时候,PyPA 曾做了一次问卷调查,目的是了解用户对于 Python 打包现状的看法,以及对于未来的期望 ^1 。在收集上来的问卷中,有以下用户的回复: 回应 1: Unify the multiple tools. It’s good to have new ideas and new implementations, but it has