用AI編程?我這么干已經(jīng)有兩年了
最近,我偶然发现了“vibe coding”这个词,感觉很震撼。原来,我过去两年里构建应用的方式——用尽量少的手写代码和尽量多的神经网络自动化——现在有个时髦的名称。在这篇文章里,我将分享我和AI协同编程的工具,以及我对这一领域未来的一些看法。
所以,现在的氛围是怎样的?有些人还在目瞪口呆地看着,有些人则试探性地尝试,还有一部分人在激烈地抨击,我只是心想,“真的吗?”从我第一次看到现代神经网络运作开始,我就一直在使用它们——不是用来制作和发布一堆AI生成的梗图,而是用于实际工作。而现在,特斯拉的某个人竟然把这称为“气氛编码”。
大概两年前,和所有人一样,我对为项目编写同样的陈词滥调感到厌烦,在文件间拖拽代码片段,以及每周都在谷歌上找同样的东西。2022年8月,最初的GitHub Copilot开放了公开测试。当时有人感慨“哇,未来来了”,但我试了一下,觉得“嗯,就是高级的自动完成功能”。那时它在这方面表现一般,尤其是对于超出“写一个函数”这类任务时。直到现在,VS Code里的Copilot仍然是最差的用AI编程的工具。
他们开始怀疑起什么
然后,到了那年十一月,ChatGPT 3.5 出来了。那时候我才真正被震撼到了。这不仅仅是个代码生成器——它是个能真正对话的计算机。
我当时匆匆写了个便条:
对我来说,ChatGPT通过了反向图灵测试。
在原来的图灵测试中,机器必须让你相信它是人类。而对于ChatGPT,它的回答本身及其结构,让你觉得你不只是在和一台机器对话——虽然你知道那只是一个神经网络。
我一直不断突破请求限制,填补了我在计算机科学方面的知识空白,这些空白是因为逃课而遗留的。像我这样的内向者,害怕在Stack Overflow或其他地方问被认为愚蠢的问题,终于找到了一个完美的学习途径——就像采访一个从不厌烦解释的教授一样。我当时写的代码都很烂,但我依旧不断地尝试。
有一天,我厌倦了复制粘贴文件内容到聊天框来提供上下文。因此,在同一个ChatGPT的帮助下,我快速搭建了一个简单的控制台工具,可以将整个项目“打包成”一个文本文件。把文件丢进聊天框——搞定,AI瞬间就能看到所有的项目结构和文件。这算是第一步。
然后,随着ChatGPT 4的发布,我意识到:有了合适的工具,用AI编程可以真正变得顺畅。Python及其生态系统,Django作为核心框架,用Tailwind进行UI布局,而不是像BEM那样繁琐——这一切都完美契合了这个概念。就这样,我开始了:尽量少的手动工作,尽量多的“嘿,AI,给我搞个机器人”。
我最早的一个全AI写的项目叫WebInsights。它主要是基于OpenAI的API来分析JS代码、robots.txt和站点地图。我还尝试把它作为SaaS发布,并在ProductHunt上进行推广,虽然引起了一些关注,但最终还是停掉了。结果呢,流量少得可怜,没有收入,只有DigitalOcean的服务器费用在不断上升。但是这段经历对我来说是无价的。从那时起,我开始全职做自由职业,用Django编写解析器、机器人和其他工具,还用Docker进行容器化。这两年里我自己大概只写了10%的代码,其余的都是交给AI来写了。
原型设计和snap2txt — 我的编码基础技术过去两年里,我建立了一套自己的核心工具包,包含 Prototype 和 snap2txt,这两个工具是我开始任何项目必不可少的。
原型:快速上手,零烦恼
Prototype 是我在 Docker 容器中快速启动 Django 项目的快速入门工具包。为什么选择 Docker 而不是 venv?因为 Docker 提供了完整的环境隔离,并确保无论是在我的机器上还是在 Railway.app、DigitalOcean 或其他任何地方的服务器上都能运行。内部有 Dockerfile、配置了基本设置的 docker-compose 文件、一个 OpenAI API 辅助工具,以及一个 shell 脚本,只需一个命令就能启动所有内容。克隆仓库,命名你的项目,然后运行 ./setup.sh
,几秒钟后,你就能在本地机器上得到一个运行中的 Django 容器。
snap2txt:即时项目快照
我一年半前做了一个这个工具,几乎每天都会用到它。它的功能简单:它会把项目里的所有相关文件合并在一个文本文件里,并通过类似.gitignore
的忽略列表跳过无用的东西,比如node_modules
或.git
。还有个白名单选项,如果你只想处理特定文件。然后你只需要告诉AI你要它做什么,剩下的就交给AI。
它是怎么用的?假设你有一个 Django 项目。运行命令 snap2txt --il
,会生成一个 project_contents.txt
文件,将生成的文件导入到 Cursor Composer 或任何 AI 聊天工具中——神经网络会立刻理解整个项目结构。写一个提示,发一两个请求——搞定。没有 snap2txt
,我可能还得手动拖拽代码片段,像在原始丛林里一样。
为什么它很有用。
这些工具节省了大量的时间。Prototype 可以轻松解决环境搭建的问题,snap2txt 能够简化上下文传递的过程。再加上我的最爱 Cursor(你连文件都不用创建),或其他聊天模型,比如 Claude、DeepSeek 或 ChatGPT,你可以在一小时内搞定一个通常需要一两周才能完成的工作原型。你可以快速搭建一个 Telegram 机器人或数据解析器,或者仅用三分钟搭建一个 自托管的 Telegra.ph 的 Markdown 版本。
未来已来:面对AI编码,我们该怎么办?这么长时间以来,我一直在想:这一切要走向哪里?两年前,我根本没想到会有90%的代码不需要我来写。现在这已经成为事实。如果 Zuckerberg 的话可信——承诺到2025年,Facebook 的中层编码工作将由AI助手接手——我们才刚开始。
AI 写的代码 — 新的烂代码吗?
认真人士™已经开始抱怨,说这种代码风格无非是积累技术债务的一种花言巧语。他们说得也不全错。AI生成的代码有时看起来就像是“能用就行,别问它是怎么工作的”。你拿到一段代码,盯着它看,会想“XSS漏洞藏在哪里呢?”或者它在你的机器上运行得好好的,在服务器上却崩溃了,因为AI忘了设置Debug = True
。如果任其发展,这将是一个定时的炸弹。
但我觉得这只是暂时的。系统会越来越聪明。再过一两年,我们可能完全不需要深入细节了。AI会编写、测试和部署,而自动监控会负责监控;程序员就会变成操作员。你只需要坐下来,盯着屏幕看,偶尔敲打一下AI的手腕,如果情况失控,就按下“那个红按钮”。
哪些技能会长盛不衰?
如果我们不需要写代码了,接下来呢?我认为未来属于那些能够提出正确问题的人。不是“我该如何编写这个函数”,而是“我真正想构建的是什么”。任务分解、小块化并能解释给AI理解——这才是关键。还需要一些基础知识,以便区分优质代码和垃圾代码。但氛围编程并不是放弃编程,而是从繁琐的编程转移到思考创意。
关于需求,有个小插叙。最近程序员人数增加了,软件需求并未下降,反而增长了。当一个普通的程序员搭配AI能产出十倍的软件时,会发生什么呢?我们反而需要更多软件。虽然不能完全肯定,但这就是我感觉的趋势,如果这么说的话。
是好还是坏?
说实话,我真的不知道。没有人知道。但对我来说,这两年和AI一起度过的时光就像是一次知识的飞跃。我作为程序员的成长超过了之前八年的总和。这一切都不需要论坛或那些尴尬的问答网站。对于内向的人来说,这简直是完美的解决方案。对于整个行业而言?也许我们正迈向一个由那些能与AI“共鸣”的人主导的世界,而不是由程序员编写代码。而这并不是什么遥远的未来——我们已经接近了而已。
共同學(xué)習(xí),寫下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章