AI for Code 产品收集
部分收集业界开放的代码编程助手相关的产品信息,并进行一些差异性分析。
ps: 今天早上起来看到 OpenAI o1 在codeforces上的分数直接冲到了89,代码生成这个任务也要快被变革了。 –2024.09.13
代码助手概述
目前业界公开发布的代码助手产品很多,基本都覆盖到了常用的代码生成、补全,代码解释,代码重构改写,单元测试生成以及研发技术问答等功能,并且产品后台都是一个系统性工程,比如多模型协作部署,prompt工程,RAG等。 目前业界的代码助手关注指标包括:用户渗透率,代码生成比率,代码采纳率等。不同阶段看重的指标略有差异,通常来说代码采纳率是用户体验的关键指标,但是也不能片面的追求采纳率。
那么,如果我们自己要做一个代码助手,我们该更关注哪些特性呢? 我们先从业界的一些代表性产品分析开始。优先关注一下最近热火的 Cursor。
Cursor
Cursor 主打 AI-first Code editor, 是一个全新开发的 IDE 形态。最近试用了一些时间,整体上体验很棒,支持较为复杂功能的代码生成 (我现在就用它写 Blog :) )。它支持四种交互模式:
- Cursor Composer 模式,自动生成代码
- Chat 对话模式,跟现在常用的大模型对话结果类似,在一个对话窗口中进行,但是可以对生成的代码点 accept,直接插入到编辑窗口,并且在插入前是使用git diff 的模式显示,感觉这点对程序员很友好
- Tab,Edit模式,可以tab自动补全;或者选定部分代码,然后问大模型,问怎么改写等
Zen AI
Zen AI, The editor for what’s next是 Github Atom 原班团队打造的新一代编辑器,最近宣布跟 Anthropic 合作。 主打高性能多人编辑功能。
Codeium
Codeium,主打 The modern coding, 是一款创业产品,支持70+ 语言,40+ 编辑器,主打 GitHub Copilot 平替。最近宣布拿到1.5亿美元的C轮融资。
Supermaven
主打快,长文本保持了高推理效率,说是改进过的类transformer结构。
Magic.dev
Magic.dev 主打 Autonomous 模式,主张完全替换工程师,持续自动化、迭代软件的生成。 号称支持 100M 的超长上下文窗口。
Devin
Devin 是 Cognition AI 开发的 端到端软件开发智能体,主打"自主编码"。它能理解复杂的自然语言指令,可以联网,支持 workspace 执行调测,自动迭代式地生成完整功能代码。
Github Copilot
微软基于OpenAI的GPT模型,提供实时代码建议和自动完成。支持多种编程语言和IDE,能理解上下文生成相关代码。与GitHub深度集成,可利用海量开源代码知识。应该是目前商业化top成功的一款产品。
其他代码助手
另外,基本上国内外大厂都在做自己的代码助手,来提升开发效率。我们简单罗列一下他们的特点。
Google Gemini Code Assist 基于Gemini模型,提供代码补全、生成和重构功能。支持多种编程语言,能理解项目结构和上下文。特点是与Google Cloud和其他开发工具集成,提供端到端的AI辅助开发体验。
百度 文心快码 Comate 基于文心大模型,多种参数量大小的模型在后台服务,支持较为完整的RAG等服务。支持主流IDE和编程语言,能理解中文需求,支持插件化使用。
阿里 通义灵码 基于通义大模型,同样也是多模型的一个系统工程,支持检索增强,还支持Agent的思路。
腾讯 AI代码助手 基于腾讯自研大模型,支持问答,提供代码补全、诊断和重构优化等功能。
科大讯飞 iFlyCode 基于讯飞星火大模型,提供代码生成、纠错、单元测试和问答等功能。支持多种编程语言。
字节 豆包 MarsCode 定位开箱即用的云端研发环境,构建了airpod 工作区的概念。具备数据,调度,协作等低层能力。整体上感觉像是推荐系统的思路在做代码开发
华为云 CodeArts Snap 基于盘古大模型,主打智能生成、智能问答两大核心功能,支持多种编程应用场景。
商汤 小浣熊 基于商汤自研大模型,支持多种编程语言,覆盖常见代码场景。
京东 JoyCoder 覆盖需求、设计、编码、测试和上线多个环境,同样使用了多模型协作。
Deepseek 代码助手 deepseek 代码助手还不能算一个独立的产品,它基于deepseek coder代码大语言模型,公开一个web界面,用户可以进行代码相关的研发问答。
另外,还有一些产品在 SWE-bench 获得了不错的分数,比如 Genie, Gru, Honeycomb 等,我们暂不展开。
展望未来
- 支持长上下文,保持长文本推理效率,类似supermaven这类产品
- 交互式的 Code Agent,主动式参与编程过程,与编码者合作实现复杂功能的迭代
- Replit Code repair Agent,作为一个虚拟的协作者
- Sketch then generate,注释/草图/想法 然后代码生成
在使用代码助手过程中的一些插曲
- 在ide编辑过程中,有时续写候选内容很长,前面有部分可用,但是后面很多没用,能否只截取前面topk的内容,如何方便选择用户需要的内容
- 在使用某些助手的 ide 编辑续写功能时,会出现很多重复的续写内容,如,代码续写,代码解释,。。。代码解释,代码续写这种体验不好的情况,不知道是否触发RAG,然后幻觉了。
在想一个问题:使用代码助手产品的相关同学,如果ta不是程序员,ta为什么需要看到代码?没有代码不是更好吗?用户应该只关注他自己原来的问题或者解决问题的步骤即可。
乔布斯在介绍iPad易用性的时候,曾经说:「即使是从未接触过计算机的两岁小孩也能在几分钟内学会iPad操作。他们可以用手指轻松地滑动、点击图标,看视频或玩游戏。」