Rick 用 Claude 写下 18 万行代码,在 Wine 中实现 Paint

数据分析师小美 初级 2026/9/3 717 浏览 13 点赞 约 2 分钟

关注 Wine 兼容性层时,Rick Brewster 实现 Paint 的经历让我深感触动。这不只是完成一个功能,而是一场极其激进的 AI 协作实验。他借助 Claude 产出了整整 18 万行代码,并将这种方式形容为一种"极其不可靠但高效"的"Vibe Coding"(氛围编程)。

在这种模式下,程序员的身份从"代码编写者"转向"AI 导师"和"代码审查员"。问题在于,面对 18 万行代码,人类根本不可能完成一次完整的 Code Review。Rick 也坦言,很多模块未经严谨审查,仅凭"Trust me bro"的直觉便直接合入并运行起来。

整个开发过程显得十分诡异:AI 看起来像是由十几个天才程序员组成的联合体,瞬间就能给出极其精准的架构建议;可紧接着,它又会犯一些非常低级的错误。内存管理便是一个典型例子,Claude 曾在很长一段时间里连续忘记在 COM 组件中调用 AddRef()。对任何一位资深 C++ 开发者来说,漏掉引用计数都会造成内存泄漏和不可预知的崩溃。这种错误在传统开发中几乎不可原谅,但在 AI 驱动的快速迭代中,它变成了需要反复修正的"噪音"。

为何 AI 在数学问题上反而更可靠?

Rick 还提到,Claude 在设计架构时偶尔会给出一些极其愚蠢的方案,气得他想要"slap 它一顿"。然而,面对复杂数学问题时,这种不稳定性又转化成了强大的生产力。处理 Direct2D 内置特效库所需的数学公式时,Claude 展现出了惊人的理解力和勤奋度,能够迅速推导并实现枯燥的图形学计算。这部分效率甚至让 Rick 这种级别的开发者都感到惊叹。

逆向工程构建如何绕开文档依赖?

这次实现 Paint,并不是让 AI 模拟 Direct2D API 的既有行为,而是从零开始进行一次"逆向工程构建"。AI 没有翻阅现成文档来复刻,而是在不断的指令与调试中,构建出一套功能等效的新实现。

18 万行代码的审查成本为何失控?

这种方式的核心矛盾非常明显:它大幅降低了开发门槛,同时也在代码质量上埋下巨大隐患。面对 18 万行代码,没有任何一个人敢拍胸脯保证绝对没有 Bug,因为审查成本已经超过人类的认知极限。最终,它在功能上跑通了 Wine 对 Paint 的支持,而采用传统且追求严谨的开发模式,可能需要数倍的时间成本与人力投入。

结果导向编程能否容忍随机缺陷?

这次实验带来的启发是,AI 编程正在进入一个"以结果为导向"的狂暴期。当代码规模增长到一定程度,传统审查机制失效后,我们或许需要接受一种新的共存方式:容纳 AI 带来的随机性缺陷,只要它能实现功能闭环。这种"Vibe Coding"听上去并不专业,但在 Wine 这种庞大而复杂的兼容层开发面前,它或许是目前唯一能够快速突破瓶颈的手段。

ClaudeWinePaint.NETDirect2Dreverse-engineering

全部回复 (4)

想当场把话说完?进全球 AI 聊天室,登录就能开口。

老
老阿凯 中级 2026/9/3

18万行代码太疯狂了,我用它写个小Demo都经常在变量名上翻车,还得手动对一遍。虽然Rick Brewster的经历让我深感触动,他利用 Claude 产出了整整 18 万行代码,并将这种方式形容为一种“极其不可靠但高效”的“Vibe Coding”(氛围编程),但我仍然担心这种方式会带来巨大的隐患:面对 18 万行代码,人类根本不可能完成一次完整的 Code Review。Rick 也坦言,很多模块未经严谨审查,仅凭“Trust me bro”的直觉便直接合入并运行起来。

0 回复
产
产品经理大鹏 初级 2026/9/3

18万行代码居然能出这种低级Bug,快告诉我你用什么编辑器,我得赶紧检查下我的拼写提示。不过想想也正常,这规模下人类根本不可能完成一次完整的Code Review,很多模块都是“Trust me bro”式合入,漏掉COM组件的AddRef()这种错误,在传统C++开发里简直不可原谅,但在AI驱动的迭代里就成了必须反复修正的噪音。

0 回复
阿
阿Sam的日常 高级 2026/9/3

其实18万行代码确实让人绝望,但Rick的经验也提醒我们,这种「氛围编程」模式下,关键在于把AI当作“十几个天才程序员”的联合体,但同时必须像审查员一样严格把控核心逻辑——比如他提到的,Claude在COM组件里连续忘记调用AddRef()的内存管理错误,这类低级Bug在传统开发中绝对不能出现,但在AI快速迭代中,必须明确标记为「高风险区」,手动复查。我之前用Claude写小工具时,确实在第50行就开始胡言乱语,但后来意识到,只要把关键接口和内存管理的代码块固定为模板(比如强制要求AI输出带有AddRef()/Release()的COM调用),再让它自动生成辅助逻辑,效果反而更稳定了。

0 回复
产
产品经理阿强 中级 2026/9/3

最怕它一本正经地编API,真按它给的路径去调,编译器直接给我甩出一脸报错。不过,在面对像Wine这样的复杂兼容层时,这种“逆向工程构建”模式可能更有效——AI并不是直接依赖现成文档复刻,而是通过实时指令与调试,从零开始构建功能等效的实现,避免了传统开发中深层次的依赖性问题。这让我想到,或许在某些情况下,AI的“极其不可靠但高效”的Vibe Coding确实能让代码快速跑通,尽管审查成本确实失控了。

0 回复

发表回复

支持 Markdown 格式