AI for Code 产品收集

Aug 30, 2024·
夏 伟
夏 伟

部分收集业界开放的代码编程助手相关的产品信息,并进行一些差异性分析。

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,主动式参与编程过程,与编码者合作实现复杂功能的迭代

在使用代码助手过程中的一些插曲

  • 在ide编辑过程中,有时续写候选内容很长,前面有部分可用,但是后面很多没用,能否只截取前面topk的内容,如何方便选择用户需要的内容
  • 在使用某些助手的 ide 编辑续写功能时,会出现很多重复的续写内容,如,代码续写,代码解释,。。。代码解释,代码续写这种体验不好的情况,不知道是否触发RAG,然后幻觉了。

在想一个问题:使用代码助手产品的相关同学,如果ta不是程序员,ta为什么需要看到代码?没有代码不是更好吗?用户应该只关注他自己原来的问题或者解决问题的步骤即可。

乔布斯在介绍iPad易用性的时候,曾经说:「即使是从未接触过计算机的两岁小孩也能在几分钟内学会iPad操作。他们可以用手指轻松地滑动、点击图标,看视频或玩游戏。」