最近一段时间,我一直在进行大量所谓的“vibe coding”(氛围编程)。数量之多,几乎到了有点失控的程度。虽然可能还没达到Andrej Karpathy在No Priors节目中开玩笑提到的“AI精神错乱”,但其实也差不了太远。在这个过程中,一个想法反复浮现在我脑海中:AI编程代理,可能正在让“自由软件”变得比过去任何时候都更加重要。这里我说的不是企业语境中那种温和、去意识形态化的“开源软件”,而是Stallman意义上的自由软件——即赋予用户运行、研究、修改以及重新分发软件的自由。
在过去很长一段时间里,即便有人知道“自由软件”和“开源软件”的区别,这种差异也更多停留在理论层面。SaaS的兴起让大多数人根本接触不到他们所依赖软件的源代码,代码运行在他人的服务器上,由供应商负责一切运维细节,于是用户关心的问题逐渐从“我是否拥有控制权”转变为“这个东西用起来是否方便”。然而,AI代理正在改变这一切。如果一个代理能够读取整个代码库、理解其结构,并代表用户进行修改,那么“访问源代码”就不再只是程序员的象征性权利,而成为越来越多人可以真正利用的能力。此时,“可以修改的软件”和“只能请求别人修改的软件”之间的差异,突然之间变得极其现实。
这种变化并不是抽象的。我最近亲自尝试让一个AI代理帮我定制一个SaaS应用,而这次经历让我迅速意识到问题的本质。为了理解这一点,有必要稍微回顾一下历史。1980年,Richard Stallman在MIT AI实验室工作时,遇到了一台经常卡纸的施乐打印机。他想修复问题,甚至只是添加一个简单的通知功能,但却因为厂商拒绝提供源代码而无能为力。这件看似微不足道的小事,对他产生了深远影响。他成长于一个代码共享是默认文化的时代,而现在他第一次意识到,如果软件被封闭,用户将失去对自己工具的根本控制权。正是这种认识促使他创立了自由软件基金会,并提出了著名的“四大自由”,强调软件应当赋予用户运行、研究、修改和传播的权利。
在1990年代,这种理念曾经引发巨大共鸣。Linux、Apache、MySQL、PHP等自由软件构建了互联网的基础设施,Red Hat证明了围绕自由软件也可以建立商业模式,Eric Raymond提出开放开发模式优于封闭开发,而微软甚至公开将Linux称为威胁。然而,这场看似激烈的理念之争,却在之后逐渐淡出人们的关注。原因并不是谁在理念上胜出,而是一个更现实的变化——SaaS的兴起。
与此同时,“开源”这一术语的出现,也在悄然改变讨论的方向。1998年,一群人提出用“open source”替代“free software”,以避免“free”被误解为“免费”。但这种重命名不仅仅是营销上的调整,更是一种哲学上的转变。开源保留了代码共享的实践,却剥离了关于用户权利的伦理主张。企业可以拥抱开源、参与社区,却无需真正改变与用户之间的权力关系。正如Stallman所说,开源是一种开发方法,而自由软件是一场社会运动。
真正让自由软件在现实中失去意义的,是SaaS模式本身。GPL等许可证要求在“分发软件”时必须开放源代码,但如果软件只是运行在服务器上,通过网络提供服务,那么这一义务就不会触发。这使得公司可以基于自由软件构建业务,却无需公开自己的修改版本。对于用户来说,这意味着即便软件是开源的,也无法真正行使修改的自由,因为他们根本不运行软件本身。与此同时,SaaS提供了巨大的便利:无需安装、自动更新、随时访问、无需维护基础设施。这种便利性让大多数人接受了用控制权交换效率的现实。
直到AI代理的出现,这种平衡开始动摇。我以自己使用的任务管理工具Sunsama为例。我很喜欢这个产品,但我希望实现一个简单的工作流:当我在Twitter看到一条想稍后处理的内容时,可以一键将其保存为任务,并自动生成合理标题和分类。然而,Sunsama的封闭性让我无法实现这一点。它没有完善的API,无法嵌入自定义AI逻辑,也无法自动分类。问题并不在于我不会编程,而在于我没有时间从零构建一个替代系统。我尝试借助AI代理实现这个功能,结果却陷入了一连串复杂的变通方案:依赖非官方API、存储真实账户密码、部署自定义服务、手动配置iOS快捷指令、处理不透明的错误信息等等。最终虽然实现了功能,但代价极其高昂。如果这个软件是自由且开源的,AI代理完全可以直接修改代码实现需求,整个过程可能只需要十分钟。
这正是关键所在。过去,自由软件的一大弱点在于,大多数用户并不具备阅读和修改代码的能力,因此“四大自由”在实践中只对少数技术人员有意义。但AI代理改变了这一前提。它们可以作为中介,代替用户行使这些技术自由。用户不需要理解代码结构,也不需要掌握复杂技术细节,只需描述需求,代理就可以完成修改。这使得软件自由从一种抽象权利,转变为一种现实能力。对于非技术用户来说,这意味着他们第一次可以真正“拥有”他们使用的软件。
越来越多的人开始意识到这一趋势。有人指出,AI代理使开源软件相对于闭源软件拥有结构性优势,因为代理可以直接读取和修改源代码;也有人认为,AI正在大幅降低定制和维护软件的成本,使内部工具开发变得更加可行;还有观点认为,将数据保存在本地,将极大增强AI能力,并推动去中心化趋势。甚至Vitalik Buterin也开始强调开放性的重要性,认为只有开放才能避免权力集中。
当然,这并不意味着我们应该简单地回到“自托管一切”的时代。自托管带来了安全更新、备份、运维等额外负担,而这些正是SaaS解决的问题。同时,AI代理也可能对开源生态造成新的压力,例如低质量自动生成贡献的泛滥,削弱维护者与用户之间的反馈机制。因此,问题的答案并不在于完全抛弃现有模式,而是寻找新的平衡点:既能提供自由软件的可定制性,又能保留SaaS的便利性。
可以预见,在未来一到两年内,人们评估软件的标准将发生变化。“我的AI代理能否完全定制这个软件?”将成为一个越来越常见的问题,就像今天我们会问“是否支持移动端”或“是否集成Slack”一样。如果软件无法满足这一点,它将逐渐失去竞争力。AI代理会尝试绕过限制,通过逆向工程、自动构建替代工具,甚至直接迁移用户数据来实现目标。这将使传统的“切换成本”迅速下降。
总体而言,自由软件的钟摆可能正在重新摆动。这并不是因为人们突然重新拥抱某种理念,而是因为现实需求发生了变化。当用户意识到,如果软件是开放的,他们的AI代理可以在几分钟内解决问题,而封闭系统却迫使他们花费数小时甚至更长时间进行复杂折腾时,他们对软件的选择标准也会随之改变。我仍然喜欢Sunsama,也并不想更换它,但这次经历让我清楚地看到,如果它是开源的,我的工作流问题本可以被轻松解决。而正是这种具体、可感知的差距,让“软件自由”重新变得重要。或许,在不久的将来,我们将不再需要在“自由”和“便利”之间做出艰难选择。