近日,由智谱AI发起,腾讯云Cloud Studio和DoraHack共同联合举办、国内首个围绕「AI 代码生成」开展的黑客松赛事落下帷幕。在AI with Code 交互设计挑战赛道中,有一件参赛作品对CodeGeeX的VS Code插件上进行了大量优化,获得了赛事评委的一致肯定,在赛道中胜出。

 

这件参赛作品的作者MBear长期关注代码自动生成领域,并且一直动手做各种尝试和积累。当看到CodeGeeX插件开源后,他迅速研究了它背后的大模型,并用自己丰富的前端开发经验为VS Code插件贡献力量。

 

界面布局整合

作者选择了和VSCode中官方插件不同的界面布局,将代码翻译和代码解释的功能,都整合在侧边栏来统一体现。

“把代码翻译的交互做了重新的编写,和其他的功能做了统一的视觉和UI/UE设计,使整个界面看起来协调一致,让交互体验更加友好。也让惯用这种交互方式的用户,能够更轻松的找到所需的功能和操作。”作者MBear在参与作品评审时,介绍了这部分的设计理念。

 

功能扩展

第二个就是,在下面的Library菜单中,基于模型提供的强大的Template能力,探索了2个独立在翻译和解释之外的功能。

 

一个是为Typescript添加类型。TS在web领域越来越收欢迎,其强大的类型约束功不可没。为了更好的帮助用户从JS迁移到TS,提升工程质量,遂开发该功能。

另一个是为JavaScript添加debug,这也是在开发过程中绕不过去的场景。往往代码并不能一次执行成功,所以调试必不可少。使用该功能,可以极大地减少枯燥的添加log的过程,加速开发。

性能提升

作者在精读了CodeGeeX完全开源出来的源代码之后,发现了其中性能可以优化的地方。比如针对缓存的优化,在切换不同的文件或修改代码的时候,CodeGeeX会做一些前文的缓存。这里经过处理,把重复的缓存内容做了合并,防止在长时间编写时,内存冗余爆炸的现象发生。

 

对标竞品,寻找更多优化点

 

MBear在准备黑客松作品时,也研究了Github Copilot里的一些实现机制。例如,Copilot在基于当前代码构造给LLM的prompt时,除了使用当前文件中的上下文代码外,也会从最近活跃的文件或引用的模块中的代码中筛选有用的部分加入到prompt中,使得模型预测生成时可以使用更多相关信息。

 

作者在CodeGeeX插件上也完成了这个功能的开发,但是目前受限于目前CodeGeeX模型的token长度限制,这个功能还无法上线。后续作者将和官方团队一起合作完善这个功能,提升用户在代码生成中的体验。

 

此外,Mbear在研究过程还看到,Copilot在判断生成一行代码还是一块代码的时候使用了较为复杂逻辑。Copilot会把当前代码解析成AST(抽象语法书),然后根据现在光标的位置,来判断当前光标是否在一个函数体内。如果在函数体内而且现在函数体是空的话,它就会生成一整块的代码。当他判断如果函数体内已有代码的话,就会生成一行代码,逐行生成。这些交互细节会带来很好的用户体验。CodeGeeX团队也会和MBear一起完善CodeGeeX在这方面的逻辑。

 

因为黑客松活动期间,对作品的提交有一定的限制,因此作者还有很多想法没能在作品的体现。而在他和CodeGeeX团队沟通后,发现很多功能也是在团队近期的开发计划中的。黑客松活动结束后,CodeGeeX团队也将继续与MBear及更多社区开发者合作,不断优化产品,带来更好的AI辅助编程体验。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐