大家好,我卡颂。
Devin
,全球第一款号称AI程序员的应用,号称可以完成从写代码、改bug,一直到部署上线运维的软件开发全流程。
这是个宏大的愿景,如果实现了,毫无疑问对程序员岗位将造成极大冲击。
那么,他的现状如何?现状背后反映了什么?程序员又该如何看待AI程序员带来的竞争?
本文让我们聊聊这些话题。
欢迎加入人类高质量前端交流群,带飞
简单介绍下Devin
Devin
的界面采用左右布局,包括两部分:
- 左:
Devin
与用户交流的界面 - 右:一个集成常用开发工具的沙箱,包括
Shell
、IDE
、浏览器和Devin
自身拆解目标形成的执行计划
沙箱里的工具完全受控于Devin
,理论来说,程序员用这些工具能办到的事他都能办到。
Devin的现状
根据谷歌指数,Devin
的热度出现过两次高峰,分别是:
- 24年3月,应用发布
- 24年4月,事件营销产生了极大讨论度
但是热度并没有转化为关注度,后续热度持续走低。
从其油管官方账号的视频播放能看出,3月的首发视频获得了100w+播放,而7月的介绍视频只有3k播放。
是什么原因呢?
虽然凭借全球第一个AI程序员的噱头,Devin
一经发布就获得极大关注。
但是,应用并没有对公众开放,而是采用报名等试用名额的机制。
等到4月,少部分试用视频流出。
大家发现,这些视频中体现的编码能力并不比市面上常见的编码应用(比如v0)更厉害。
其中流传最广的是官方发布的视频案例 —— 用Devin在外包网站上接单,并成功交付。
这个视频太火了,以至于被发单的甲方看到,并专门做了个视频Devin didn't solve my computer vision project澄清Devin
实际上并没有解决他发单的问题。
这不就尴尬了嘛~
截止目前(24年11月),Devin
已发布近8个月,仍未对外开放。
再考虑到他日渐走低的声量,这是否意味着这款应用失败了?其实并不一定。
接下来,我将聊聊AI程序员应用背后的逻辑。
AI程序员背后的逻辑
对于大互联网公司来说,程序员薪酬是一笔极大的开销,甚至可能占到总开支的15%~25%。
所以,对程序员工作环节中任何部分的提效都是符合公司利益的。
应用侧程序员的工作主要围绕上线一款应用展开,让我们将其按“工作环节”拆解:
其中很多环节都需要程序员介入。
我们选择其中的开发环节继续拆解,得到如下结果:
再继续对前端开发环节拆解,得到如下结果:
如果我们对图中所有环节进行递归拆解,会获得一个金字塔结构的树状图,图中每个节点就是一个工作环节。
AI程序员应用就是对金字塔中与程序员工作相关的环节进行提效。
那究竟该对哪些环节进行提效呢?
LLM发展的三个约束
Devin
的目标可以说是AI程序员应用的终极形态 —— 他希望完全取代程序员,完成金字塔模型中“与程序员相关的所有工作环节”。
但正如开篇提到的,当前他还无法胜任这个工作。
究其原因,就像汽车依赖引擎,任何AI应用
的底层都依赖LLM
(大模型)。
而LLM
的能力受到三个约束:
- 理解能力
- 上下文长度
- 私域知识储备
这三种能力互相制约,举个例子:
Claude-3.5-sonnet-200k
上下文长度号称200k。也就是说,极限工况下,他能一次性理解“包含大概1.6w行代码的项目”。
但实测发现:
- 越接近上下文上限,理解能力衰减越快
- 代码逻辑越复杂,理解能力衰减越快
经过我的测试,他能胜任“代码量9k行以内的常规项目”。
Devin
面对的也是一样的问题:他在工作过程中会不断积累私域知识,并在需要时随时检阅这些知识。
比如:开发环节
开发UI组件
需要知道设计环节
定下的设计规范。
所以,Devin
的执行会经历如下过程:
- 随着程序的执行,私域知识储备增加
- 在做一些“需要了解很多私域知识才能做的决策”时,上下文被私域知识占用更多
token
- 越接近上下文上限,理解能力衰减越快,越无法做出正确的决策
- 为了弥补错误决策(比如“修bug”),又进入新一轮1~4的循环
最后的结果就是:用Devin
实现一些小Demo没问题,实现复杂应用时,他对应用整体理解会逐渐变差。
所以,Devin
这么久仍未对外开放,可能是在等待底层LLM
能力的提升。
等更大上下文、更强推理能力的LLM
问世后,没准儿Devin
就能脱胎换骨。
后记
为什么V0
、bolt.new、Github Spark、Cursor Composer
等AI程序员应用都将目标聚焦在AI生成小应用上?
因为在当前,AI生成小应用是一个同时满足下面两个条件的赛道:
- 在当前
LLM
能力三重约束(理解能力
、上下文长度
、私域知识储备
)范围内 - 是金字塔模型中投入产出比很高的环节 —— 程序员会在“开发早期应用”上花很多时间
当我们面对AI的冲击时,不要被宣传噱头吓倒。
用LLM三重约束
评估下,就能知道这些应用是否能达到宣传的效果。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。