【多图预警】使用Trae快速生成JNI工具类

329 阅读5分钟

我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source…

前言

最近在研究Tomcat吞吐量的计算,有一个功能需要实现:实时打印当前线程所使用的CPU核心。这个功能说难不难,就是需要通过JNI调用C++代码来获取当前线程使用的CPU核心信息。

刚好字节也出了一个对标Cursor的编辑器-Trae,恰巧我的Cursor试用也到期了🤣,而且Trae在测试期间免费使用并且也有着类似Cursor的Composer功能-Builder模式,试一下功能究竟如何。

安装并配置插件

登录时需要科学上网才能使用,这一点就比较麻烦了。看看后续字节能不能改成使用国内的大模型吧。

主界面长这样,跟VS Code一样,但是是整体页面的风格以及安装时就能选择中文这一点给他点个👍。在初始界面的右边,就是Trae和VS Code区分开来的地方了:一个AI对话框。

Chat模式下可以选择Claude-3.5-Sonnet以及ChatGPT-4o的模型,但是在对标Cursor的Composer模式-Builder中目前只有Claude-3.5-Sonnet模型使用。

安装完成后,就去插件中心安装Java的开发插件。Trae的插件中心跟VS Code大差不差,还是那句话:不愧是大厂,UI就是好看!

开始使用

Builder模式

我的述求就是生成一个Maven项目,这个Maven项目的作用是:提供一个API,打印当前线程所使用的CPU核心。

使用这些AI的IDE就需要将自己的需求完完整整详细的提供给AI,不然的话初始生成的代码就不够完善,需要多次修改。

提供给Trae的文本:

一个Maven项目,groupId:io.github.azirzsk, artifactId:print-uses-cpu-core。提供一个API打印当前线程所使用的CPU核心,使用JNI并且需要兼容Windows和Linux系统。这个maven项目会被其他Maven项目所引用,所以需要考虑编译后的文件能否被引用。生成一个markdown文件,详细描述如何使用或者编译项目。

此时我们把我们想做的事情,也就是上面的这句话复制Trae中,看看生成的效果。


总共花费了大概两分钟的时间,为了能更快看到效果我把GIF设置了两倍速**。**

Trae总体生成下来还是不错的。但是个人感觉还是有一些问题的:

  • JNI的使用:缺少编译.so以及.dll库文件的命令。
  • 库文件的加载:生成的CpuCore.java没有对库文件是否存在进行校验。

对于这两问题再次丢给Trae进行优化:

也是用了大概两分钟,二倍速播放中

确实是针对这两个问题进行优化了,但是在我的想法中,应该是在原文件上进行修改的。而不是另起一个新的文件进行新增,而且提示使用mvn clean package进行编译也发生了报错。

回退操作

Trae有个比较好用的操作时,当AI给你提供错误的代码时,能快速的回滚这一次生成的代码。

回退成功后,回到我们的正题,这次不让Trae帮我们生成全自动的编译指令了。而是让它给我们在一个文件中生成编译.so以及.dll库文件的命令,我们手动执行看看。

这次生成的脚本看起来就对了,但是还是有一点问题,那就是生成的库文件放在了target目录下。这个目录下的文件并不能别其他项目所引用的,所以还是要改改代码。

这个时候就不使用Builder模型进行修改,因为只是简单的修改库文件生成的目录,试试Trae的Chat模式。

Chat模式

Chat模式与Builder模式不同的是,发生代码变更时,Chat会让用户选择是否采用本次生成的代码,而Builder则会替你自动修改代码

生成一个测试类试试看:

错误排查

当执行命令时,发生错误后,可以在命令行中选中错误的信息并加入到对话中,就可以快速的询问大模型。

内嵌聊天

对于新建的文件,首先就会提示AI的功能使用说明,并且在意图识别成功后,自动唤起侧边栏进行进一步的操作。

使用过程中的问题

  1. Chat模式下,应用AI生成的代码变更等待时间过久

讲道理,在我看来应用AI生成的代码只是新旧文件的对比,为啥还要这么久的应用时间呢?难道是让大模型来对比了嘛?

  1. 生成gitignore文件后,IDE无法展示文件内容(偶现)。

关闭再次启动就可以看见了。

  1. 文件内使用内嵌聊天后,自动唤起的侧边栏不能自动定位到Chat模式,会比较误导人。

和Cursor等IDE的区别

因为我的Cursor试用已经过期了,所以只能回想在脑海中的记忆了。

  1. 非常重要的一点,UI好看!
  2. 操作人性化,交互体验上好太多了。
  3. 有更多为程序员考虑的地方:
  • 回退到上一个聊天的代码空间
  • 更多的可以快速唤起AI的地方
  • 生成代码时阻塞生成等待命执行完成后继续生成

后记

在这篇文章发布的时候,看到一条新闻:

国内也有运营是最好,现在想用上的话只能科学上网,而且国外的模型调用上还不稳定。希望在国内可用之后,模型的响应能更快以及能开放更多的模型可选择。