细说AI编程发展史-auto-coder 创建的 commit 时代
之前我说AI辅助编程的发展历程大概是是这样的:tab -> tab tab -> chat -> write -> commit -> pr我简单画了个图:最早 github copilot 的核心是自动补全,也就是以前IDE自动补全的 大模型版本(其实补全模型的规模都不大,一般都在 33B 左右)。我们认为这个AI编程的 tab 时代。用户有不懂的地方,还是要打开w
之前我说AI辅助编程的发展历程大概是是这样的:
tab -> tab tab -> chat -> write -> commit -> pr
我简单画了个图:
最早 github copilot 的核心是自动补全,也就是以前IDE自动补全的 大模型版本(其实补全模型的规模都不大,一般都在 33B 左右)。我们认为这个AI编程的 tab 时代。
用户有不懂的地方,还是要打开web网页,这就麻烦了,所以 github copilot 又把 chat 聊天框加进去了,并且适当添加了互动(比如可以在编辑代码的时候随时唤醒聊天框)。 这个时代我们称为 Chat 时代。
但是用户每次都要复制黏贴 Chat 聊天框里的代码,繁琐而稀碎。要是AI编程工具能直接修改代码就好。这个时候 Cursor 出来了,它提供了两个能力:
1. tab 的加强版 tab tab
2. chat 的加强版 apply chat
tab 正常是你在做输入的时候,给自动补全。 tab tab 则是你有任何变更后,接下来,他会猜测下一步你可能要改哪些地方,你持续按 tab 他会自动跳转到他觉得会修改的地方,然后直接修改那个地方(不是简单补全了)。这就叫 tab tab。 说实话,这个功能是我当前在cursor里唯一喜欢用的功能。
前面我们谈到 Chat 时代,聊天框的代码需要自己复制黏贴到编辑器里,本质还是自己在修改代码。所以 cursor 的第二个能力 Apply, 也就是你可以把聊天框中的每个代码块通过点击 Apply 直接合并到你的代码仓库里。通常而言,apply 一般只能对当前打开的文件有效,无法做到跨文件 apply。这就是 Tab + Tab/ Apply Chat 时代。
但实际编程,显然是一个需求需要修改多个文件的,然后可能修改多个文件十几个位置的代码。Tab + Tab /Apply Chat 时代显然还不够高效。
于是 Cursor 推出了 Composer, WindSurf 推出了 Cascade。 咱别管各家花哨的名字。本质就是这个时期,大家进入了 Write 模式。所谓Write 模式就是,你写一个需求,工具们会自动查找多个文件,然后直接对多个文件做修改。修改完成后,如果你觉得不错,点击 Accept All 就相当于这一次修改完成了。此外,WindSurf 实现 Write 的路径和 Composer 不一样, WindSurf 的实现方式Agentic 的模式,也就是模拟人看代码,改代码,执行命令等。Composer 则是收集上下文,然后让大模型输出可以合并的代码,然后做合并。但是这些模式依然停留在改代码上。我们希望更进一步,那就是,我说一个需求,你给我直接提交一个 commit,然后我review,如果觉得不错,我就继续说下一个需求,如果觉得不满意,revert 这个commit 重新来或者在这个commit 上我继续调整,通过下一个commit 来完善上一个commit。
这就是 commit 时代,auto-coder.chat 开启的一个新时代。第一次AI工具根据你需求自动提交commit,程序员纯粹作为需求发起者和reviewer。
最后就是那个月薪3500(500美金)的devin,他提升到了PR 级别,可以实现更粗粒度,更自动化的一个阶段。他会自主完成一个比commit 更粗粒度的需求,并且在遇到需要确认的地方找你确认,其他的都是自主完成。当然,这个目前里实际生产依然有一段路要走。
我们认为当前 commit 级别,是最契合当前大模型能力的(claude sonnet 3.5 为基准)。
在commit 时代,我们除了上面提到的东西以外,我们对 commit 也进行了创新。比如,你看到auto-coder.chat 历史提交记录是这样的:
对,这些commit 信息你是不是完全无法人工看,就是一串混乱的字符。通常一个 commit包含了:
1. 人工/AI 填写的commit 信息
2. 变化的文件以及diff
3. 一些辅助的信息,诸如提交者,提交时间
我们认为这些信息是远远不够的。所以,auto-coder.chat 将 commit 信息变成了一个指针,指向一个YAML文件:
一个 YAML 文件包含了哪些信息呢?
1. 当前AI软件的配置
2. 这次commit 背后的需求
3. 为了完成这次需求,需要的上下文,包括文档,代码等
这意味着,这个Yaml文件就像一个代码界的docker容器,打包了所有的环境,需求,代码,配置等等。任何一个AI,只要能力足够,就可以复现这次需求。
有了这套commit 体系,你可以很方便的看一个项目是如何迭代出来的:
你可以随时按需求来进行回滚,而不是某个功能。
此外,如果你手动修改了代码,系统依然会自动给你生成对饮的yaml 文件,这样,未来这个AI还可以重新进行修改。
通过auto-coder.chat 创新性的commit 设计,我们第一次真正意义上实现了:
1. 整个代码的迭代开发沉淀成一个一个具有完整信息的可阅读的yaml文件
2. 整个项目可以从0 重新生成代码。
比如当模型得到增强,我觉得以前的项目质量不够,那完全可以重新apply每个yaml文件最后得到一个全新的项目。因为模型变强,他写的代码会更好,性能也会更好。
auto-coder.chat 是当前除了 devin 以外,唯一一个接近生产的最高效率AI编程工具。我们期待 AI辅助编程与程序员一同前行。
更多推荐
所有评论(0)