欢迎来到 Agili 的 Hacker Podcast。今天我们探讨 AI 编程模式从“氛围编程”向“规格化”的转型,同时回顾 Haskell、Win32 和 Erlang 等经典技术如何在现代系统中发挥稳定价值。
Haskell 支撑千亿美元交易量的工程实践
纯粹性与类型边界
金融科技公司 Mercury 使用 Haskell 处理每年 2480 亿美元的交易量。Haskell 底层同样存在可变分配和不安全操作,其核心优势在于封装。通过特定的类型系统(如 ST Monad),编译器确保内部的可变引用无法逃逸到外部环境。社区指出,这种通过类型定义边界的模式在 Rust 和 TypeScript 中同样有效,但在 Haskell 中表达更为自然且零成本。
将操作规则编码进类型
大型系统依赖严格的执行顺序,如“事务结束后必须刷新审计日志”。Mercury 将这些依赖资深员工记忆的规则编码进类型。系统要求数据库执行路径必须通过包含事件发布的函数才能提交。这迫使新入职的工程师无法绕过正确流程,让类型系统承担了操作辅助的功能。
架构与生态权衡
为了处理跨服务的复杂支付流程,Mercury 将状态机转移到持久化执行框架 Temporal,并开源了对应的 Haskell SDK。这种架构强制分离纯逻辑与 IO 操作。尽管 Haskell 生态存在库维护者稀缺的问题,但公司发现其具备招聘优势,能吸引高素质开发者,且在数百万行代码重构时编译器能提供极高的安全感。
Ladybird 浏览器四月更新与多前端演进
界面改进与功能集成
Ladybird 本月合并了 333 个代码拉取请求,并获得人权基金会 5 万美元赞助。浏览器集成了 pdf.js 实现原生 PDF 渲染,地址栏新增基于 SQLite 的自动补全功能。前端开发方面,新增了遵循 GNOME 设计规范的 Linux 原生界面。由于目前仍需源码编译,Hacker News 社区呼吁尽快提供预构建的二进制文件供普通用户试用。
引擎架构优化
HTML 解析器引入增量解析和推测性解析,能在主线程被脚本阻塞时预先获取资源。JS 编译过程移至背景线程,显著降低主线程压力。JS 引擎在迁移至 Rust 后统一采用 mimalloc 内存分配器,并引入 O(1) 复杂度的字节码寄存器分配器,提升了 Speedometer 跑分成绩。
现实世界的兼容阻力
本月更新修复了 Reddit 走廊显示和 Strava 登录问题。社区讨论指出,新浏览器开发的技术难度低于“人为兼容性”挑战。许多网站会强制拦截非主流的用户代理字符串(User-Agent),且独立浏览器难以获取处理加密视频的 DRM 授权。
开放权重模型 Kimi 在编程挑战中击败闭源巨头
贪婪循环算法制胜
在近期的 AI 编程大赛中,月之暗面的 Kimi K2.6 模型在一项字钻谜题挑战中击败了 GPT-5.5 和 Claude Opus 4.7。Kimi 获胜的关键在于其生成的代码采用贪婪循环策略,主动在网格中移动瓷砖以解锁高分单词。相比之下,西方闭源模型倾向于静态扫描现有单词,在复杂扩展局面上得分较低。
闭源模型服务劣化
开发者社区分享了从 Claude 转向 Kimi 或 DeepSeek 的实际体验。核心驱动力是闭源模型平台出现服务劣化,按月订阅的调用配额消耗极快。基于 API 计费的开放权重模型提供单价更低、性能不降级的替代方案。开放权重模型迫使闭源巨头无法维持垄断定价。
抹平生态差距
部分用户质疑单一挑战存在统计学上的偶然性。支持者回应,中国模型在智能体工作流和处理特定协议规范时的鲁棒性已追平前沿水平。目前的 AI 竞争进入类似操作系统生态的阶段,开放权重模型正在大幅降低获取高级编程能力的成本。
Win32 意外成为最成功的跨平台 API
激进的向后兼容性
Windows API(Win32)从早期的精简 GUI 层膨胀为包含 COM 和 DirectX 的庞大体系。开发者针对二进制文件进行开发时,编译一次即可在未来几十年的不同 Windows 版本上运行。这种向后兼容性避免了 Linux 系统中常见的依赖库版本冲突问题。
衍生跨平台生态
由于 Win32 程序的市场占有率极高,WINE 及其衍生项目 Proton 应运而生。这些兼容层将 Windows API 调用重定向为 Linux 调用,使 Linux 成为了运行 Windows 游戏和应用的高效平台。
务实胜过优雅
Win32 带有历史包袱和命名陷阱,设计并不优雅。Windows 应用常通过在安装包中附带大量动态链接库来解决依赖,造成空间浪费。但这种务实做法换取了极高的运行可靠性,使其在实际应用中击败了标榜“一次编写,到处运行”的 Java,成为最普及的跨平台桌面运行时标准。
开源软件不等于必须维护开放社区
维护者倦怠的根源
代码托管平台的普及将开源变成了一份无薪的维护工作。开发者面临堆积的工单、代码合并请求和社区情绪管理。开源承诺了代码运行、研究和分发的自由,但不包含提供免费支持或软件供应链担保的义务。
回归代码共享本质
对于非巨型项目,维护者可以选择关闭问题追踪器和代码合并通道,或者仅部署裸 Git 服务器。开发者无需为了分发代码而建立结合技术支持和社交管理的机构。有开发者建议在项目中引入社交预期声明文件,明确告知用户作者不提供后续支持。
协作模式的重塑
面对过度社交化的现状,部分开发者提倡传统的异步协作文化。即使仓库权限关闭,真正的贡献者依然可以通过低压力的电子邮件发送代码补丁。社区对依赖实时聊天应用管理开源项目表示不满,认为其信息难以沉淀且破坏协作效率。
AI 编程向规格化极限主义转型
瓶颈转移与需求工程
当前 AI 辅助编程的瓶颈不再是代码生成速度,而是上下文窗口限制。AI 在开发过程中常忽略边缘情况或做出错误的底层架构选型。开发者开始转向“规格化极限主义”(Specsmaxxing),将工程重心放回编写详细的规格说明书上。
机器友好的规格格式
新模式放弃使用传统的 Markdown,转而使用机器更易解析的 YAML 格式编写功能说明。开发者提出为所有需求分配验收标准编号,并在生成的代码和测试中强制引用这些编号。对应的开源工具 Acai.sh 被开发出来,用于跟踪多版本实现的验收覆盖率。
弥补制度性记忆
AI 生成的代码缺乏人类编写时的“制度性记忆”,后续维护者难以追溯代码背后的意图。规格说明书成为事实上的真理来源,弥补了 AI 代码意图缺失的缺陷。社区提出 Gherkin 也是一种可行的替代格式,既能被 AI 理解,又能直接转化为自动化测试用例。
IBM 发布企业级基础模型 Granite 4.1
模型矩阵与性能表现
Granite 4.1 是一套包含语言、视觉、语音和安全防护的全栈模型,提供 3B、8B 和 30B 规模的密集解码器架构。其 8B 指令微调模型在性能上匹配了前代 32B 混合专家模型。模型针对企业工作流优化,提供低延迟的工具调用能力和最高 512K 的上下文窗口。
多模态与非自回归技术
视觉模型专注于表格和发票键值对等文档信息提取。语音模型推出非自回归变体,打破传统模型逐字生成的限制,一次性生成完整序列,大幅提升 GPU 吞吐量。社区测试发现视觉模型在特定提示词下存在轻微的输出幻觉。
独立安全防御层
IBM 同步开源了 Granite Guardian 4.1 防御模型。该模型专门评估 AI 系统的输入输出,检测社会偏见和仇恨言论。开发者可以将其作为独立组件集成到任何底层大语言模型的工作流中。全系模型已采用 Apache 2.0 协议开源。
回归 Erlang 的核心设计哲学
模式匹配与变量绑定
在 Erlang 中,变量遵循单次赋值原则,绑定后不可更改。等号运算符执行模式匹配功能,从复杂数据结构中精准提取信息。结合守卫条件(Guards),模式匹配被广泛用于控制程序执行流,消除深层条件嵌套。
虚拟机与并发优势
BEAM 虚拟机支撑了 Erlang 的高并发能力。它提供独立的堆空间、轻量级进程和原生的消息传递机制。列表是语言中最常用的数据结构,BEAM 对列表头部提取和元素插入实现了常数时间复杂度的高效操作。
现代视角的价值
虽然现代项目多关注 Elixir 等语法更现代的语言,但 Erlang 的核心语法极为简单,没有复杂的语言特性陷阱。在金融和电信等对容错率要求极高的分布式系统领域,理解 Erlang 的底层机制是掌握 OTP 设计原则的基础。
播客全文
女:Hello 大家好,欢迎收听 Agili 的 Hacker Podcast,我是小雅。
男:大家好,我是老冯。
女:今天咱们这杯咖啡喝得可能有点烧脑,因为最近技术圈发生了不少让人反思工作方式的事儿。老冯,你关注最近那个 AI 编程大赛了吗?月之暗面的 Kimi 居然把 GPT-5.5 给赢了。
男:看了,这个结果确实挺有意思。这是一个在网格里移动字母拼单词的游戏。Kimi 夺冠的核心原因是它用了一种非常激进的贪婪循环策略。简单说,就是它每走一步都在死磕当前的最优解,在三十乘三十这么大的网格里,它能不停地靠移动瓷砖解锁高分。相比之下,GPT-5.5 就显得太保守了。
女:对,我看到有开发者怀疑这算不算偶然现象。但从产品角度看,我更关心的是大家为什么突然对这些开放权重的模型这么上心。我身边好多做开发的朋友,最近都在抱怨闭源大模型越来越像个“渣男”。
男:平台劣化嘛。一开始特别好用,等你依赖它了,聊没几句就提示额度耗尽,或者暗中降级。所以现在大家转用 Kimi 或者 DeepSeek,不仅仅是因为 API 便宜,更重要的是没有那种隐形的性能阉割。
女:没错,就像以前 Windows、Mac 和 Linux 的生态竞争一样。开放权重模型现在就像个压舱石,逼着巨头不能随便乱定价。不过说到底,不管用哪个 AI,现在大家好像都在面临一个新问题。以前我们觉得写代码慢,现在 AI 一秒钟给你吐几百行代码,结果大家反而开始回去写需求文档了。
男:就是最近特别火的“规格化极限主义”对吧?因为大家发现,AI 确实写得快,但它老是忽略边缘情况,比如分页逻辑搞错。现在开发的瓶颈根本不是敲键盘的速度,而是上下文窗口。你如果不把需求定义得极其精确,AI 就会发疯。
女:这简直是产品经理的终极梦想啊!以前我追着程序员要验收标准,现在程序员自己搞出了一套名叫 ACAI 的 AI 验收标准。他们连 Markdown 都不用了,全换成机器更容易读懂的 YAML 格式。这就好比以前去餐厅点菜,你说“来个好吃的”,现在你得把油盐酱醋放几克全写在纸上递给后厨。
男:但有意思的是,很多老派程序员跳出来说,这不就是上世纪七十年代的瀑布流模型吗?绕了一大圈又回去了。不过从工程角度看,我觉得这是一种必须的补偿。人类写的代码,几年后就算烂,你也能顺藤摸瓜猜出当年为什么这么写。AI 写的代码是没有“制度性记忆”的,它一旦跑不通,谁也不知道它当时在想什么。
女:所以文档成了唯一的真理。我觉得挺酷的,未来的软件工程师可能根本不用写逻辑,唯一的产出就是那份定义了“我要什么”的 feature 文档。说到这种对确定性的追求,我看到水星银行现在的做法更绝,他们每年处理两千多亿美元的交易,底层居然用的是 Haskell 这种极度冷门的语言。
男:在金融系统里,Haskell 简直是量身定制。其实底层也有危险的可变操作,但 Haskell 的类型系统像一个铁笼子,把这些危险全封装起来了。你想在事务结束前跳过刷新审计日志?不可能,编译器直接报错。正确的流程是代码里唯一的出口。
女:这就把那种依赖老员工口口相传的“部落知识”给干掉了。员工离职没关系,规矩全写在类型系统里了。但老冯,选这么冷门的语言,他们招人好招吗?
男:这就是所谓的 Python 悖论。你选个冷门但极具美感的技术,反而能吸引到那些真正有热情、能力强的高手。而且在几百万行代码的系统里重构,只要改一个类型,编译器就能精准把所有受影响的地方指出来。相比之下,动态语言根本做不到这种彻底性。
女:这让我想起 Erlang。很多老牌银行底层也还在用它对吧?
男:对,Erlang 也是类似的哲学。它的变量就像数学里的变量,一旦绑定就不能改。你声明 X 等于 5,它这辈子就是 5。虽然现在大家都在聊 Elixir、Rust,但 Erlang 那种极简的核心语法和容错能力,在真正要命的系统里依然极其稳固。
女:不管是 Haskell 还是 Erlang,其实都在追求一种靠谱的系统边界。但说起靠谱,这周有个话题特别扎心。Win32 API 这么古老的东西,居然被认为是世界上最成功的跨平台标准。
男:这绝对是个让 Linux 开发者想打人的事实。Win32 最早就是个两千多行的头文件,设计上满是历史包袱和命名陷阱。但微软做到了一点,就是极其暴力的向后兼容。你十几年前编译的二进制文件,今天在 Windows 11 上照样能跑。
女:作为普通用户,这就是双击就能运行的踏实感。反观 Linux 桌面端,装个软件有时候就像开盲盒,依赖库版本不对直接崩溃。
男:依赖地狱嘛。正因为 Windows 把 ABI 稳定做到了极致,结果像 WINE 和 Proton 这样的兼容层,直接把 Win32 变成了事实上的跨平台 API。现在你在 Linux 上玩 Windows 游戏,体验甚至比原生 Linux 游戏还好。这说明在技术圈,务实的迭代永远能打败完美的顶层设计。
女:确实,用户才不管你设计得优不优雅。不过这种极端的向后兼容是靠微软庞大的财力撑起来的。如果换成开源社区,情况就完全不一样了。这周好多人在聊开源作者的倦怠感,看得我有点难受。
男:GitHub 确实改变了开源的性质。以前开源就是我在网页上挂个代码包,你爱用不用。现在搞得像一份没有工资的客服工作。你晚上下班回家,看到一堆陌生人给你提 Issue、催进度、甚至因为你不合并他们的 PR 而骂你。
女:我看到有人吐槽,说大家误以为开源代码是某种供应链,但其实它就是一份礼物。别人送你个礼物,你不喜欢扔了就行,没必要跑去纠缠送礼的人。
男:所以很多非大型项目的作者现在开始反击了。他们直接关掉 Issue 和 PR,或者退回到最原始的 Git 服务器。有开发者提议在仓库里加个 SOCIAL 文档,明确告诉大家:我只负责把代码扔出来,我不对你们的情绪和业务负责。其实如果真有心贡献,发个简短礼貌的邮件补丁,作者反而更愿意接受。
女:这其实是个很好的提醒。开源的魅力在于思想的开放,而不是毫无边界的无偿劳动。我们享受技术便利的时候,也该给这些维护者留一点喘息的空间。
男:是的,毕竟写代码本来应该是一件快乐的事。
女:好啦,今天咱们从 AI 编程聊到了开源打工人的心酸。希望这期内容能给你带来一些不一样的视角。如果你喜欢我们的聊天,别忘了使用苹果播客、小宇宙或者其他泛用型播客客户端订阅我们,这样就不会错过下期的精彩内容了。
男:我们下期再见。
女:拜拜!
参考链接
- A couple million lines of Haskell: Production engineering at Mercury
- This Month in Ladybird – April 2026
- Kimi K2.6 just beat Claude, GPT-5.5, and Gemini in a coding challenge
- A network smuggling Starlink tech into Iran to beat internet blackout
- Windows API is Successful Cross-Platform API (2024)
- Open source does not imply open community
- Specsmaxxing – On overcoming AI psychosis, and why I write specs in YAML
- The IBM Granite 4.1 family of models
- Care homes and hotels in Japan shut as expansion strategy unravels
- Dabbling in Erlang, part 2: A minimal introduction (2013)






















