Stack Overflow 正在消亡:关于其替代者的 5 个误区
Stack Overflow 每月新问题已不足 1000 个。我们逐一检验关于其衰落的五个误区,以及大语言模型对开发者知识体系意味着什么。

Stack Overflow 现在每月的新问题不到 1,000 个,比它 2008 年上线的第二个月还少。如果你在过去十五年里任何时候学过编程,这个数字都应该让你愣住。这个曾经是互联网上开发者知识层核心的网站已经停滞不前,最省事的说法是 ChatGPT 把它搞死了。但这种说法不对,至少很不完整,而诊断错了很要紧,因为我们现在其实都在不自觉地设计接下来会出现的东西。
这几年我一直在做机器学习系统,也亲眼看着自己的提问习惯从“搜索、读三个答案、自己综合”变成了“把报错粘进聊天窗口”。所以咱们认真来一次:下面五个关于 Stack Overflow 衰落的说法,我会拿实际情况逐一检验。
误区 1:是大语言模型杀死了 Stack Overflow
这是主流叙事,但只说对了一半。ChatGPT 在 2022 年底上线,明显加速了衰落,问题数量的曲线在那个节点附近急转直下。但如果看更长的趋势,Stack Overflow 的月度提问数其实在好几年前就已见顶,而且早在有人把堆栈跟踪粘进聊天机器人之前,就已经从高点跌掉了大约一半。网站大约从 2014 年起基本持平,2017 年前后开始下滑,中间 2020 年疫情期间有过一次短暂反弹。
实际情况更像是一个慢性病患者,被另一种东西打出了致命一击。那个慢性病是它自己造成的:版主文化把重点放在了标准答案上,却牺牲了提问的人。你问的问题如果跟现有问题有 80% 重合,就会被以重复为由关闭,哪怕那剩下的 20% 恰恰是你要问的全部重点。版主还会把你的措辞改写成千篇一律的官方风格。新用户很快就明白,提问本身就是一条过关斩将的险路。与此同时,那些过去每天能带来几千条新帖子的简单问题,到 2015 年就已经被问完、答完了。
所以大语言模型出现时,它并不需要在 Stack Overflow 最好的状态下击败它,只需要击败在这里提问的体验:没有踩踩,没有重复标记,也不用等三天才有一条路人甩过来的评论,让你去看文档。模型即时作答,礼貌周到,还能结合你自己的代码来回答。这根本不是一场公平的较量,从来都不是。结论:大语言模型是行刑者,但社区的种种动态替它装好了子弹。
误区 2:内容依然有价值,所以网站能活下去
有一种令人安心的想法认为,Stack Overflow 那堆积如山的内容(数以千万计的已回答问题)保证了它的生存。其实不然,原因任何最近搜过它的人都清楚:答案被冻结在了过去的某个时间点。一个 2013 年回答的热门 JavaScript 框架问题,如今排在最前面的答案不只是过时,还可能在误导人,而网站的结构又让修正变得很难。你没法重新提一个标准问题来获得现代答案,因为它会被当作老问题的重复而关闭。即便四年后出现了一个更好的回答、赞数是它的三倍,被采纳的答案仍然钉在最顶上。
一个无法刷新的知识库算不上资产,只是一笔带着良好 SEO 的负债。这里的讽刺就浓了:这批内容剩下的主要变现价值,就是把它授权给 AI 公司当训练数据。Stack Overflow 确实这么干了,结果引发了贡献者的强烈反弹。这些写下内容的人当初签下的约定是:免费贡献答案,换取开放数据,而卖掉数据打破了这份隐性契约。一些高声望用户甚至删除或篡改自己的回答以示抗议。当你最有价值的用户都在破坏你的资产时,你手里就没有可持续的生意,只剩下清盘变现。
我预计这个域名还会挂上好几年,光是老链接带来的流量就有价值,但作为一个持续产出新知识的系统,它已经结束了。结论:误区不成立。内容会腐烂,而结构又阻止了腐烂被修复。
误区 3:大语言模型已经完全取代了知识功能
我在这里要表明立场,因为这个误区恰好是反方向的。它是 AI 乐观派的版本,同样是错的。Stack Overflow 做了大语言模型从根本上做不到的一件事:它产生新知识。当一个全新的库发布了一套令人困惑的 API、又完全没有文档时,有人会撞上墙、发一个问题,而一位已经搞明白的人会写下互联网上第一份公开的解释。那个回答随后就成了训练数据、搜索结果,以及之后所有人的“代理文档”。
大语言模型在这个循环的“回忆与综合”那一半上非常出色,而“生成”那一半则是结构性地做不到。你问模型一个冷门问题,比如某个两周前发布的框架版本和某个特定 Postgres 扩展之间的微妙交互,它会流畅、自信地给你一个编造的答案,因为没有人在任何地方写过这件事。我在快速迭代的机器学习工具上经常碰到这种情况。模型不知道自己不知道什么,更不知道这东西是上周二才发布的。
这才是真正该让人担心的部分。我们搭建了一个答案入口,它在只要有人、在某处,仍在用模型能消化的文本生成底层知识的前提下,表现得相当出色。Stack Overflow 恰恰是最大的知识生产者之一。杀掉生产者、留下综合者,你得到的是一个会慢慢饿死的知识系统:每一代模型都在一个更陈旧、更多被模型内容污染的网络上训练。如果你读过我们那篇为什么 AI 基准测试漏掉了大部分真实工作,这里的问题就是同一个缺口在生态层面的体现:可衡量、答案流畅的那部分工作已经被接管,而艰难、不起眼的生成部分正在被撤资。
我们没有取代知识系统。我们只是替换了界面,却忘了界面从来都不是难的部分。
结论:不成立,而且这是清单里最危险的一个误区。
误区 4:一个管理得更好的克隆站本可以活下来
很多事后复盘都盯着 Stack Overflow 的文化,比如爱重复标记的版主、被改写的问题、对新人的冷漠,然后得出结论:一个更友好的问答站本可以兴旺起来。我不买账。文化加速了衰落,但结构性问题会把一个温暖、友好的克隆站一样拖垮:志愿者专业知识的经济学已经崩塌了。

想想 2012 年专家们为什么愿意回答问题。声望分是真正的资历凭证,招聘者会看个人资料。回答问题也是深入掌握一项技术的途径。而且社区是看得见的:你会反复看到同样的名字,积累身份,有时还会通过聊天室和周边站点在现实中见到人。到了 2010 年代后期,这三条腿全都弱了。随着网站的文化光环褪去,那点资历价值也跟着淡了。通过回答来学习的动机还在,但值得回答的问题越来越少,剩下的队列大多是描述不清的新手帖子。而最投入的人要么悄悄离开,要么因为重新授权和数据交易而愤然出走,社区也就越来越稀薄。
然后大语言模型拿走了最后一个动机:既然提问的人能在别处即刻得到一个还不错的答案,我为什么还要花四十分钟写一个仔细的回答,换来一堆虚拟分数?而且,你的答案很可能最终还是会变成感觉上未经授权的训练数据。关于这件事的每一条评论区,都充斥着以前的高声望用户说类似的话:“我很喜欢回答问题,然后就……不再答了。”近期的一场讨论里,有人提到自己有 29,000 的声望分、645 个回答,却要想一想才记起这个网站还在。你没法用 A/B 测试把版主政策从这种状态里救出来。结论:基本不成立。友好的氛围本可以减缓失血,却止不住它。
误区 5:取代它的东西会长得像一个网站
隔几个月就有人宣布一个“AI 时代的 Stack Overflow”,而且形态总是一样的:一个带投票和徽章的公开问答站。我认为这是怀旧,不是分析。真正正在浮现的替代品是一个分层系统,而其中只有一层是公开的。
从我合作的团队来看,开发者的知识现在大致通过四个渠道流动:
- 大语言模型作为入口。 几乎所有问题的第一站,尤其是报错和 API 用法。快速、私密、没有社交成本。这一层已经赢了,而且不会再回去。
- 私有的团队记忆。 内部 Wiki、Slack 存档,以及越来越多指向你自己代码库和事后复盘的检索增强助手。真正有价值的新知识现在就存在这里,而它刻意不对外公开。
- 高信号的公开小圈子。 针对特定工具的 Discord 服务器、GitHub Discussions、问题追踪器。规模更小、氛围更温暖,而且范围收得足够紧,管理才能做得下去。我遇到关于新库的真正问题时,会去它的 Discord,而不是去某个通用问答站。
- 源材料。 文档、RFC,以及代码本身。阅读源码从最后的手段变成了第二站,部分原因是 AI 工具让探索陌生代码库的成本大幅降低。
值得注意的是缺了什么:一个公共的知识公地,让难题能为所有人被回答。每一层单独看都合乎理性,合在一起却在让知识贫瘠。私有团队记忆从来不会外泄。Discord 服务器从外部无法搜索,又对存档很不友好,这是我们在网络正在丢失自身记忆这一话题中写过的问题。而大语言模型这个入口消耗了公共文本,却没有产出任何东西。
结论:单体网站确实已经死了。真正悬而未决的问题是,分层的替代系统能否维持住一个公共层。
设计不会饿死的知识系统
如果你在做开发者工具、内部平台或社区基础设施,Stack Overflow 的复盘有一些具体的教训。我总结出四条设计原则,并且坦白说,第四条是我最没把握我们已经解决的那一条。
第一,把新鲜度当作功能,而不是审核问题。 Stack Overflow 把旧答案当作标准答案,把新的说法当作重复。反过来做:给答案加版本号,让问题在每次主要框架发布后都可以重新提出,并把时间语境写明。“截至 React 19”胜过一个永生的单一答案。处理得好的系统(比如带版本页面的官方文档,以及一些 Wiki)正是那些至今仍然被人信任的。
第二,把评估循环内置到工作流里。 Stack Overflow 的妙处在于投票:一个廉价、持久的答案质量信号。大语言模型的回答默认没有这样的循环,你得到的是流畅,而不是验证。以我的经验,解决办法不是让模型自己复查(那多半只会产生自信满满的附和),而是强制它接触现实。运行代码,检查版本。凡是超出样板代码范围的用途,我都把它的输出当作实习生提交的 PR:在测试之前都只是“看起来合理”。我们那篇AI 生成代码的理解性检查与测试对比深入讨论了两种方法各自能抓住哪些失败。那些从 AI 助手中真正获益的团队,是把测试和 linter 直接接进生成循环的团队,而不是那些只相信文字表述的团队。
第三,激励机制必须经得起免费替代品的考验。 积分和徽章在一个即时的私人答案出现的那一刻就失效了。那还有什么能促使人们公开地把东西写下来?在特定社区里的地位(范围小胜过全局)、直接的职业收益(署上自己名字的文档贡献、可以拿来做演讲的素材),以及在足够小的空间里形成的互惠,今天帮别人,下个月别人就会帮你。为这些设计,而不是为排行榜式的游戏化设计。
第四,也是最难的一条:让公开的生成层持续存活。 总得有人去写关于上周发布的东西的第一个回答,并且放在爬虫和未来模型能够触达的地方。现在这份负担正落在 GitHub issue、个人博客和厂商文档身上,分布不均,也缺乏协调。如果你是工具厂商,这其实是一个机会:一个维护良好的产品公开讨论论坛,现在已经是竞争优势,因为它决定了模型会怎么谈论你。而如果你希望团队那些来之不易的内部知识能够不断积累,而不是在人员离职时蒸发,那么一个基于你自己文档的内部助手,胜过指望大家记得去更新 Wiki。但前提是你同时也解决了写文档的激励问题。
我们究竟失去了什么
撇开怀旧不谈,Stack Overflow 的衰落是一个关于技术基础设施如何腐烂的案例:它并非死于单一打击,而是错位的激励机制积累了多年,直到一个替代品把腐烂暴露出来。这个网站优化的是产物,也就是标准答案,却忘了产物是由需要理由才会出现的人创造的。
我主张的务实立场是:短暂地哀悼,然后把它当作一份设计任务书。大语言模型入口在 Stack Overflow 所做的事情中,对其中约 90% 确实更好,我们应该直说,而不是假装悲伤。但剩下的 10%,也就是生成新的公共知识、对照现实验证它、让它保持新鲜,现在是每个人的问题,却又不是任何人的工作。那些能为这 10% 解决激励问题的团队和社区,将拥有下一个十年的开发者知识。而那些以为聊天机器人已经包办一切的人,会慢慢地、然后一下子发现:当没有人写下答案时,答案到底值什么。


