炒冷饭还是真实力? 代码老油条的豆包 MarsCode 体验报告

1,795 阅读7分钟

本文正在参加豆包MarsCode测评官征文活动

一. 前言

去年 AI 火爆的时期 ,就已经体验过了很多代码领域的 AI 助手 ,包括阿里的通义灵码 , 贵的要死的 GitHub Copilot ,以及讯飞的 iFlyCode。

Copilot 应该是最好用的 ,但是贵啊。 剩下两个整体来说实力相当 ,体验感上通义灵码强一点

整体来说都只有辅助的感觉 ,效果都没有达到预期。 所以最后还是老老实实自己写。

前几天发现掘金自己开始推 MarsCode ,这个应该是字节跳动推出的一款产品,我的第一想法是 :

  • 这市场都打破头了 ,并且热度都过了。 现在进场是蹭错了热点 ,还是说真的打磨出了一款好产品?

二. 体验一下

官网 豆包 MarsCode - 编程助手 上面能找到详细的安装教程 ,我个人主业 Java , 所以以 Java 作为优先体验的语言。

官方提供的能力 :

和常见的 AI 代码助手一样 ,提供的主要是以下几项功能 :

  • 代码补全 : 补全 / 修改 / 重构代码 / 错误修复
    • 通用难点 : 这个包括 IDEA 本身都带有类似的功能,这一块 很难做的出彩
  • 代码解释 : 解释某一段代码的含义
    • 通用难点 : 难的在于能基于上下文进行解析,如果只是当前的代码,其实没啥作用
  • 生成注释 : 可有可无的功能
    • 通用难点 : 简单的不需要生成 ,复杂的很难生成对的
  • 单测生成 : 生成单元测试
    • 通用难点 : 对于有覆盖率要求的兄弟简直大喜,但是单测都是有业务理解在里面的
  • AI问答 : 实时解决提出的问题
    • 通用难点 : 最实用 ,基本功 ,做的不好就是扣分项

  • 防喷盾 :仅仅只是从使用者的角度去体验最常见的需求, 可千万别说 : 哔哔什么 ,你行你上 。如果说了 ,那就是你对。

2.1 AI 问答强不强

我第一个关注的是 AI 问答 , 都说码农搬砖 ,CV 工程师。 但实际上对于大多数能力正常的老程序员来说 ,CURD 从来都不占工作量 ,代码生成工具能解决 80% 的功能

真正花的时间在 思考业务 + google一下 上面 ,如果能解决查询问题的耗时 ,那么就节省了一半的时间。

👉 概念性基础问题 : Java 里面线程安全的集合有哪些?

image.png

  • GPT 结果较为丰富 ,提供了一些代码 ,如果是 4.0 可能会更优秀
  • 通义灵码内容要多很多 ,在细节和回答的体量上都会多一些
  • MarsCode 相对东西要少一些,当然 ,基础问题这些就足够使用了

在这个环节中 ,我倾向于 通义灵码 提供更多的细节用于业务的选择。但操作上 MarsCode 更快返回结果也是一种优点。

👉 功能性的问题 :Flink 包含哪些部分和环节 ?

image.png

  • GPT 东西多是多 ,但是不符合程序员的需求 , 而且多数侧重点集中在了部分上 ,相当于解读了一半
  • MarsCode 整体回答和风格都达到了预期 ,有组成 ,有流程。 很 nice.
  • 通义灵码 回答也达到了预期 ,东西都有,但是阅读风格和扩展上会稍微差点。

功能性比概念更期望得到一些使用上的技巧,这些 MarsCode 在结论和展示上都符合预期。 通义灵码 在我个人看来返回的内容有点凌乱,但是也符合我个人的需求了。

👉 深度问题 :Flink 在营销上有什么好的使用场景 ?

这种问题主要是用来摸鱼的 , 代码写累了 ,想学点课外的东西 ,直接刷博客又太明显 ,AI 助手是一个好的学习途径。

这里就不比较 GPT 了 ,定位不一样 ,我是要摸鱼的 !!

image.png

  • 和现在市面上的差不多 ,这个没什么好比的 ,主要是看看下面这个 :

👉 实时问题 :2024年09月最近发生的大事件?

image.png

image.png

  • 虽然说跟着 AI 买股票是sx 行为 ,但是可以看出来 ,在对一些实时数据的处理上 ,MarsCode 并没有花过精力(非编程需要,不作为参考标准 , 不过试了一些其他的有具体日期的实时问题,效果也不理想
  • 用 MarsCode 只能摸摸技术鱼了

👉 异常场景的问题 :

  • 问题 : Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!

image.png

  • 在不考虑是否回答正确的情况下 ,通义灵码给出的结论是最多最好的 ,GPT 其次。 而 MarsCode 的结论就很敷衍 ,可以说是什么帮助都没有

👉 总结

  • 四个维度问题里面一项强 ,一项平 ,两项弱。 就 AI 问答领域 ,MarsCode 并没有达到顶尖水平。
  • 综合结论 ,MarsCode AI 问答属于弱项

2.2 代码补全补得怎么样?

那么在代码能力上 ,MarsCode 的表现如何呢?这里就不和其他的第三方比较了就单纯从使用上看是否达到了老油条的预期

👉 用法上没有太大的差异 ,都是展示可补全代码 ,通过 Tab 进行代码补全

image.png

👉 如果有类似的代码 ,也会自动抄过来

image.png

👉 对于新代码 ,也能达到预期

image.png

  • 例如这里我准备创建一个 RocketMQ 的 Sink ,如果我的注释和标题(很重要) 写的对 ,那么提示会往这方面走
    • 注意 ,如果注释和题目不对 ,就会发生提示偏移的情况 ,会按照其他类的代码频率进行提示

👉 推导还是存在不理想的场景

image.png

  • 这里确实知道我要加入 RocketMQ 的 Model , 但是名称推导的其实不太对

👉 受其他代码影响比较大

image.png

  • 如果之前写的是 MySQL , 后续想写一个 Rocket 渠道 ,其中有些提示会有偏移。有的时候会偏向 MySQL 的用法

👉 总结

image.png

我尝试每行就写一个开头 ,然后 Tab 全部补全后续的代码 ,可以看到生成的代码已经很接近我的期望了。

三. 其他的功能点

3.1 代码注释

image.png

  • 这个很 nice 了 ,不论是规则形式还是覆盖范围 ,都已经做的很好了

3.2 代码单元测试

image.png

  • 生成的单侧覆盖率肯定是够了
  • 场景有限 ,不分析业务逻辑 ,但是从结果上看没有死板的做 Mock

3.3 代码解释

代码解释考验能力的就是开源项目的解释 ,下面来看看效果 :

image.png

image.png

  • 非常好 ,在顶级难度的 Spring 源码解析上面 ,效果很好, Nice

总结

AI 问答

项目总结
基础代码问题回答的内容丰富度一般
功能性问题 (涉及原理和应用)回答的格式和结论都很好 ,达到了预期
深度问题 (用于摸鱼的非编码问题)结果中规中矩
实时问题无结果
特定异常问题反馈不好 ,敷衍

代码编写

项目总结
代码补全就个人而言 ,达到了预期,但是存在其他工具普遍性的一些问题,生成准确的同样受上下文影响
代码注释很好 ,超过预期 ,模板和详细度都很好
代码解释很好 ,超过预期 ,通过了 Spring 的考验
代码单元测试覆盖率能满足要求 ,其他的还没尝试

最终总结

个人而言 ,代码层面的功能已经满足了我日常的需求。** 对比之前使用过的工具 ,在某些功能上更突出**。

AI 问答的角度来说 ,没有达到预期,对比其他的产品还是稍差。

最后的最后 ❤️❤️❤️👇👇👇