老冯又接盘新开源项目了
老冯又接盘了。
这话说出来,我自己都想笑。去年接了 MinIO 的盘,做成了 Silo,一年下来,它基本成了 MinIO 所有 fork 里最成功的那一个。后来又顺手接了几个:做了一个 Vagrant 的替代品 barn,fork 了 Docsy 改成文档主题 Oink。这些东西我自己天天在用,用得很顺手,外面也陆陆续续有了一些用户。
接一次盘是意外,接两次是巧合,接到第三第四次,老冯真成接盘侠了。
这一次接的,是 PostgreSQL 生态里大名鼎鼎的向量检索扩展——VectorChord,也就是 vchord。
四千星明珠蒙尘
vchord 出自国内的 TensorChord 团队。熟悉 PG 向量生态的朋友肯定听过它的前身 pgvecto.rs,看名字就知道,这是当年用 Rust 重写并挑战 pgvector 的一次硬核尝试。
这次连同 vchord 一块接过来的,还有同一个组织下的两个配套扩展:一个是 vchord_bm25,承接自早期的 pg_bestmatch,是用 Rust 在 PG 里原生实现 BM25 全文检索的又一次探索;另一个则是与它搭档的分词器扩展 pg_tokenizer。
把这几个仓库算到一块,GitHub 上已经攒下了 4,500 多颗 Star。在相对慢热、硬核的数据库扩展领域,这毫无疑问是一份相当亮眼的成绩单。如果把视线聚焦到中国团队、华人开发者维护的 PostgreSQL 开源项目上,TensorChord 更是格外醒目:在中国 PG 生态开源影响力榜上,pgvecto.rs 和 VectorChord 两个仓库分列第三、第四,仅次于老冯的 Pigsty 和阿里云的 PolarDB。

在向量检索这条赛道上,vchord 和它的前身名气不小,真实生产环境里用的人也多。其中最知名的下游用户,大概要数自托管的照片视频库 Immich。


如果你不想折腾一套笨重的 NAS 操作系统,自己搭一个 Immich,可能就是目前管理私人照片的最佳方式,Pigsty 的应用模板里也很早就收录了它。Immich 里最核心的相似图片检索、语义模糊搜索,底层全靠向量索引支撑,而他们官方选定的正是 vchord。在我看来,从技术上,这是一个相当明智的选型。
二、为什么要接
不幸的是,最近 TensorChord 团队出现了一些变动,这几个扩展也随之陷入了无人维护的状态——算下来,已经有快十个月没更新了。

这事儿放在过去,也许不算什么大问题。一个足够成熟的底层扩展,放着不动,照样能稳稳当当地跑上好几年。但放在 AI 四处挖洞的当下,九到十个月的沉寂,足够让一个好项目彻底烂掉。
之前那篇《当云被打成筛子》里聊过这一波“AI 渡劫”的狂潮。当大模型可以不知疲倦地批量翻代码、找破绽,攻击者手里的放大镜一夜之间换成了显微镜。在这样的浪潮里,缺乏维护的基础软件很快就会腐化成千疮百孔的后门。没人修的代码不叫“稳定”,叫“敞着门”。
所以,当原作者找到老冯,问我有没有兴趣接手维护的时候,我没犹豫太久。与此同时,下游的 Immich 社区也明确表示,愿意一起参与反馈、维护和贡献。扩展有价值,真实用户在,核心场景在,下游还有人搭把手——这事儿确实可以搞,对吧?
说句实在话,看着一个由中国团队打磨出来、在全世界都有大量真实用户的好项目,就这么冷清地在角落里一点点生锈,我心里挺不忍的。
当然,要是放在一年以前问我,老冯大概不会接这个活。按过去的经验,维护一个底层开源项目是很耗心力的事,一旦接过来,就是一份看不见尽头的责任。但站在今天这个时间点,情况不一样了:我已经接过一次盘,完整趟过了一遍路,手里再多接一个、两个、三个,边际负担其实差不了太多。
何况对我这种日常 Token 过剩、有时候甚至拿着锤子满世界找钉子的人来说,眼下有一颗值得敲的钉子主动送上门来,我是很乐意接招的。
三、怎么接
念头很容易定,真要落地,却没法直接“拿来”。
原来的仓库属于公司资产。公司一旦发生变动,仓库的归属和交接就会牵扯太多:Maintainer 权限加不了,组织成员转不动,仓库迁移(Transfer)更是做不了。哪怕原仓库已经攒下了几千颗星,也没法原样保留。老冯不纠结这些,干脆利落地另起炉灶,开出全新的 Fork。
新分支不再沿用过去 VectorChord 那套品牌名,而是朴素地直接用扩展本身的名字命名:vchord、vchord_bm25、pg_tokenizer,统统放在 pgsty 组织下面。至于更早一代的 pgvecto.rs 和 pg_bestmatch,出于“数字收藏”与照顾存量老用户的考虑,Pigsty 软件源里依然提供打好的 RPM 和 DEB 包,但源码层面不再继续跟进,精力全集中在这三个还在活跃使用的扩展上。
紧接着,我把原来的技术博客和文档也完整 fork 出来,搭起了新的文档站 vchord.pgsty.com,重新梳洗成清爽的新样式。


做完这些铺垫,真正的硬活儿才刚开始。大半年没人管,老冯直接拉起 Astra / Argon / Fable 这样的顶级模型开足马力一扫——哗啦啦扫出来二三十个隐患,里面甚至藏着好几个 Crash、Segfault 级别的严重缺陷。
这就是前面说的“腐化”——不是危言耸听的修辞,而是实打实摆在眼前的 Bug 清单。每一个问题都得老老实实去复现、去修补、去验证,绝不是改个名字、拍拍屁股就能立刻发版的。

好在紧锣密鼓地啃到今天,vchord、vchord_bm25、pg_tokenizer 三个扩展的修复工作已经基本收尾,从 PG 14 到 PG 18 的软件包均已打好,后续也会持续跟进 PG 19 内核与 pgrx 框架的更新。
我们接手后的第一个正式版本,就在这两天发布。
四、开源的 free,是自由
聊完接盘的始末,老冯顺便谈几点背后的感想。
大家在潜意识里往往默认:开源就等于免费。很多开源前辈喊了几十年:Free Software 里的 Free,是 Freedom 的自由,不是免费啤酒的免费。但架不住人性使然,大多数人依然习惯把它理解成“白用”。一家能做出这么优秀内核扩展的团队,却很难靠它赚到钱,最后走到今天这一步,确实让人唏嘘。
在老冯看来,开源真正的意义,在于赋予你按需修改源代码、让软件贴合自身需求的自由,而不是强调别人可以白用你的劳动成果——虽然实际效果往往确实如此。作为开源作者,真正在乎的是让大家拥有掌控软件的自由,免费不过是个顺带的副产品。
这次接盘,恰恰就是这份自由最好的注脚。原来的维护团队离场了,但代码还在,许可证还在,任何有能力、有意愿的人都有权把摊子接过来继续干。要是换成一个闭源的商业产品,上游公司一变动,成千上万的下游用户除了干瞪眼,没有任何退路。
五、代码免费,但供应链有成本
不过,开源软件的源代码虽然免费,一条稳定、可靠的企业级软件制品供应链,却从来都有着实打实的成本。
代码不会死,但供应链会断。
举个最典型的例子。MinIO 是开源的,但这并不意味着它的交付供应链可以一直白用。当你的生产体系依赖着官方的 RPM/DEB 包与容器镜像,而 MinIO 直接选择把仓库一归档、官方 Docker 镜像一删,全世界所有用到 MinIO 镜像的 CI/CD 流水线瞬间就一起炸了。你说,那我锁死老镜像继续凑合用呗?这一年里新爆出来的漏洞,足够把你的应用打成筛子。这就是软件供应链断裂的风险。
vchord 也是一样。既然在生产环境里选择了它,你就需要一条有人持续负责的供应链。
老冯之前为 PostgreSQL 打造了一套扩展仓库,收录了将近 600 个扩展,覆盖 16 个主流 Linux 发行版,应该是目前全球 PG 生态里最全的一套。坦白讲,这个仓库原本是给付费企业客户做高可靠交付用的,背后背着严肃的商业承诺。


但我不介意把它敞开给所有开源用户使用。如今整个站点的月请求量已经在亿级,每月将近 2TB 流量,商业客户的下载流量其实很小,每天跑出来的海量带宽几乎全来自开源用户。
老实说,这事能一直做下去,首先要感谢“赛博菩萨” Cloudflare 愿意免费托管网站——每个月2TB的流量费一分钱不要,而为了让国内用户也能顺畅下载,国内的镜像 CDN 依然得真金白银地花钱,每个月雷打不动六七百块。这都是毛毛雨,比流量费贵得多的,是背后持续投入的人力、时间与注意力——跟人的精力比起来,那点带宽费微不足道。这,就是开源背后看不见的真实成本。
六、开源与商业化冲突吗?
既然不收钱还要搭进去真金白银和精力,那开源与商业化到底冲不冲突?
老冯一直认为,单从传统软件售卖的角度看,开源确实是“反商业模式”的。至少在软件这个行当里,如果你把核心知识产权都直接公开出去了,自然没法再靠售卖知识产权本身赚钱。但这并不意味着开源只能用爱发电——换个维度,依然有不少办法能跑通互利共赢的闭环。
比如,Cloudflare 凭什么免费给全世界托管无数网站?一方面,这确实有技术理想主义的慷慨;但另一方面,它本身就是一套极其精妙的商业模式:通过免费托管,把全球各路黑客的攻击火力都吸引到自己这里,就能在真实攻防中收集最鲜活的安全威胁情报,最终为付费企业客户提供更顶级的防御服务。**免费的那部分,是在为付费的那部分磨刀。**更好的安全防护,免费用户也依然能享受到,但企业级用户更加需要。
同理,老冯之所以不介意把 Pigsty 的核心价值主张之一——“PG 扩展仓库”——免费开放给所有用户甚至是同行搭便车,最根本的原因就在于:开源最大的工程价值,是众测。
基础软件用的人越多、跑的环境越杂,潜伏在角落里的问题就暴露得越早、反馈得越快,连带着企业版在内的整体交付质量也就越扎实。特别是在今天这个 AI 时代,写代码本身越来越便宜,真正的瓶颈与门槛正在迅速转移到“测试与验证”上。开源能让成千上万的用户,以作者根本意想不到的各种方式去使用和折腾你的软件——免费用户从来不是负担,而是遍布全球的测试团。 这是一种非常健康、体面且互利共赢的模式,对打磨基础软件的质量有着花钱都买不来的助益。
七、接盘也不是谁都能接
当然,商业逻辑理得再顺,维护开源底子里终究还得有一份情怀和热爱撑着。
我在之前《愿力驱动选题》中聊过:站在今天,维护开源项目的个人成本其实已经不高了。当然,这个“不高”是对舰队指挥官模式而言的。在这种模式下,以前事事要自己挽起袖子写代码,精力根本耗不起;现在日常工作变成了收集反馈、拍板关键决策和守住最终验收,同时维护 1 个项目和维护 10 个项目,体感上的差别其实并不大。
但话又说回来,接盘开源这件事,听起来很美好,却绝不是谁冲上去都能做成的。就拿 MinIO 来说,官方停摆后市面上冒出来的 fork 有十几个,OpenMaxIO 之类的都有,为什么最后真正跑出来、立住脚跟的是老冯的 Silo?仔细复盘下来,主要是手里的这四样东西刚好凑齐了:
- 利益相关(Skin in the game):我自己就是重度真实用户,有具体的落地场景,利益高度绑定。它要是炸了,我自己会难受。
- 专业判断力:这一项在当下的变化其实最大。以前“写得出代码”是最高的门槛;现在 AI Coding Agent 已经足够强悍,执行层面不太需要你亲力亲为,但在提需求、做取舍、拍板和验收的关口,依然极度依赖顶级专业判断。
- 现成的分发渠道:做出来的东西如果分发不出去、没人用,那就等于白做。因为老冯有自己的发行版 Pigsty,而且已经在分发 MinIO 和这些扩展了,所以做出来的东西能直接被用户使用上。
- 流量与叙事能力:任何事情想做成气候,最后都绕不开流量与信任。你得把来龙去脉讲透,把故事讲好,让大家理解这东西为什么有用、愿意来试一试。老冯当初写的那篇复活 MinIO 的长文直接冲上了 Hacker News 首页,那才是引爆 Silo 社区共识的关键一步。

只有这几块拼图凑在一起,接盘开源才有可能跑通;否则,大概率只是感动自己的白折腾。
而这也是老冯敢一个接一个往回捡项目的底气:繁重的代码修补有 AI 顶上,关键判断有十多年 PG 经验兜底,现成的扩展仓库直接打通分发,公众号和博客又是天然的叙事阵地。对我来说,整套体系早就转起来了,多接一个项目的边际成本极低,这事儿才真正做得成、做得久。
写在最后
拉长时间看,任何一个开源项目都可能迎来成为“孤儿”的那一天。公司会转型,团队会聚散,原作者也会奔赴人生的下一程——这在技术圈里本就是常态。
真正让人觉得惋惜的,是那些明明打磨得很好、外头还有成千上万人在用的好项目,仅仅因为断了维护,就在角落里一点点生锈,最后从大家手里的利器变成系统里的一颗暗雷。
而开源最迷人的地方,恰恰也就在于此:只要代码还在、许可证还在,熄掉的火种就总有人能重新接过去。 TensorChord 的朋友们用过去几年的心血,做出了真正经得起生产检验的好东西;现在老冯把它接过来,替大家把这条断掉的供应链重新续上——存量老用户可以安安心心地继续用下去,好不容易跑出来的项目也不至于半途夭折,怎么算都是一桩皆大欢喜的好事。
接手后的第一个正式版本就在这两天发布,欢迎各位新老朋友多多尝鲜、提 Issue、拍砖指教。
- 项目地址:github.com/pgsty/vchord
- 网站文档:vchord.pgsty.com
