又到了年底,今年感觉有点值得讨论的东西,稍微把键盘动起来吧。

本人大概从 23 年底的时候就会在每年的计划里面加上一项,尝试用 AI 辅助来完成一个新的编程项目。时间点大概是在 Chatgpt4 出来的半年之后,那个时候的 LLM 就已经展露了些许投入实用的可能性,是时候考虑跟 LLM 工具们的相处之道了。

24 年初的时候最先进的 AI 辅助编程是怎样的其实我并不是很清楚,那个时候我才刚用古法编程在 team lead 的 review 和指引下完成了第一个前后端分离的微型项目,水平自然也只是 CRUD 仔跟前端萌新的程度。那个时候我的工作流里会用到 AI 的是用 AI 验证自己的思路可行性和应该引哪些库来做我的功能,然后就是自己看文档自己手接,然后接出问题了就 cp 代码去问 AI。

这个时候的 AI 应该?是没有足够的上下文能力来维护所谓的架构的,而那个小小项目也涉及不到太多的架构/可维护/可拓展性,自然使用方式基本上都是小功能散着问散着写。

时间来到 24 年底,我开了个安卓 kotlin 新坑,在速通了 kotlin 和 mvi 架构之后就逮着 claude 3.5 sonnet/haiku 猛猛薅,不过还是相当古法编程,依旧只用 web 端聊天让 AI 写小功能,主体还是自己接。

这个时候应该已经有 MCP 之类的工具可以将架构喂给 AI,让 AI 在理解整个项目架构的情况下帮忙干活,不过因为这个安卓项目的架构已经有蓝本,所以还是自己动手为主。这时让 AI 帮忙写 function 的通过率非常高,几乎可以说是 100%,在这个时间点开始对 AI 工具产生依赖是再正常不过的了。

几个月前我亲眼看着一个人用一天(不到?)的时间重构了一个成熟的商业项目的前端,事后的经验分享使我对 AI assistant 这件事有了更深的思考和认知,也促使我安装了 cursor 和开始使用 vscode 侧栏的 AI 功能。我用 23 年那个小小项目练手,让 AI 给后端加接口,给前端加功能,又用 cursor 直接 gen 了一个 api 转发 worker,加了一堆小东西,然后再把前端给接上,一切都是如此的顺畅。

后面这人更是用一周左右的时间就把前端对应的庞大的后端也从 php 给迭代成 go 了,据说后端总代码量大概有十万行以上,前后端正价 token 总花费大概在 1200-1500 刀左右,以商业软件来说,可以说是相当实惠了。

然后时间终于来到最近,来到 gemini3.0 跟 antigravity 发布的第一周。我只用 web build 和一个下午完成了微型项目前端的完整迭代,将所有工具链都更到最新版本,舍弃过气的主题框架换用 tailwind v4 且切换到 vite 环境。虽然说前端被乱杀已经不是最近的事了,但是自己亲眼看见还是挺震撼的。

结果第二天睡醒反重力就发布了,直接上手用来打磨细节。AI 在期间只因为缺少外部库的文档信息而 gen 过一两次小 bug,且在我补充文档后基本都能自己修复 bug。唯有一次需要我自己动手 debug,原因是 tailwind v4 库里一个很新很不引人注意的 breaking change 导致的功能没按 ai 的预料运作,鉴于 genimi3.0 的 cut off 是在 2025.01,在没进行联网搜索的时候可以理解。

但是前端再怎么说也只是前端,想要进一步了解它的实力,前端只能说是开胃菜。于是选定 go 作为实验新后端的语言,技术栈就基本确定下来了,再把旧后端整理文档交给 ai 构建原型,一边熟悉 go 一边搭建实验环境 debug,原型还是一天就出来了。

接下来的时间就是按需加功能,调整模型/逻辑,对接打磨新前端,前两周基本每天把反重力用到免费限额为止,后面一周开始缩水了直接开 pro 订阅。就这样,在确保新版前后端架构清晰可控、文档齐全、在我的理解的水平内架构足够科学的情况下,我的任务清单/灵感一度枯竭了,这还是在几乎零经验 golang 起步的情况下的效率,猫猫宇宙.gif

到了这里,虽然 TODO 并没有全部都打上勾,不过剩下都就是一些后台管理改善和非重点部分了,意味着项目可以正式从 make it exist 到正式上线然后逐渐 make it better 的公测 debug 和打磨阶段。而自己也算从亲眼看过渡到了亲手完成的阶段。

但是 Web 终究只是 Web,想要进一步了解它的实力,Web 同样也只能说是开胃菜(再放送)而且搞 Web 可是没什么出路的呢。Now what,人家直接搓了个边境出来www

嘛,总之欢迎来到 2025 年底,或者说 2026 年。欢迎来到每个人都有单兵搓项目的作战能力的时代。

暂时写到这里,最近都在搓键盘搓到冒火星,稍微歇歇。