某款Idea AI插件的实现初探
更新日期:
最近AI编程是挺火的,也确实能解决一些简单编程与代码生成。 于是乎今天有空就研究了下idea下流行的AI插件, 查看下反编译后的代码,了解下启动流程。
通过插件客户端,只能了解到客户端与服务端之间的通信,一点皮毛;而最有价值的部分,在于服务端AI大模型实现代码补全、代码自动生成,是没有办法了解到的。借助现在的AI能力,加上好的提示词,要实现IDE的AI插件, 会比之前容易很多了。
插件入口文件
idea的插件包在安装目录下的plugins目录下,插件的入口文件是plugin.xml,这个文件是插件的配置文件,里面定义了插件的ID、名称、版本、描述、作者、图标、依赖等等。
每个插件位于plugins下的一个子目录下,插件子目录下又有lib目录,然后是jar包,主jar包下的包含plugin.xml文件。所以第一步是找到包含plugin.xml的jar文件,再通过plugin.xml文件,找到插件的入口类。学习的这个插件的入口类是Cosy。
目前对编写idea插件不太了解,之后有机会再研究。
插件启动流程
- 启动时从服务器更新插件,下载客户端的二进制文件并解压。主目录位于用户主目录下
.<doge>目录,客户端是使用golang开发。 - 启动客户端程序,使用LSP协议,通过websocket协议通信。启动后,会在主目录下生成
.info文件,包含ws端口与进程pid - chat聊天窗口输入数据后,调用ws socket client发送数据,在收到返回消息后通过调用processor处理Action事件,更新界面。