掘金 人工智能 3小时前
摸鱼神器:AI打造的博客IDEA插件
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文分享了从零开始开发IntelliJ IDEA插件——博客助手插件(orange-assistant)的实战经验,该插件旨在提升博客浏览体验和用户粘性。作者详细介绍了插件的功能,包括结构化预览、文章阅读器和AI对话功能。文章深入探讨了开发过程中遇到的技术挑战,如文章列表和详情的实现、气泡UI渲染、LLM搭建等。此外,还详细阐述了Gradle打包与发布流程的演进,以及如何通过GitHub Actions实现自动化构建与发布。最后,作者总结了开发经验,并分享了AI在插件开发中的应用,展示了AI如何成为开发过程中的强大助手,并提供了项目源码和插件地址。

✨ 插件核心功能:博客助手插件主要解决结构化预览和文章阅读两大需求,通过调用博客服务端接口展示文章列表,并结合JBCefBrowser组件在IDEA中直接浏览文章,模拟真实的博客阅读体验。

🛠 功能开发挑战:在开发过程中,作者遇到了诸多技术挑战,包括文章列表的异步加载与Swing组件的整合、文章详情页在IDEA中的展示、气泡UI的渲染以及LLM的搭建。作者分享了解决这些问题的具体方法,例如使用CefLoadHandlerAdapter调整文章页样式,以及利用Flexmark将AI返回的Markdown结果转换为HTML。

⚙ Gradle打包与发布流程:作者详细介绍了从最初的build直接JAR打包,到使用shadow插件打包,最终采用Gradle官方distribution插件的演进过程。通过配置distribution插件,实现了对打包结构和ZIP命名的精确控制,并成功发布到GitHub Release。

🚀 自动化构建与发布:为了实现自动化构建与部署,作者配置了两套GitHub Actions工作流,一套用于Snapshot发布,另一套用于正式Release。文章详细阐述了两种工作流的触发时机、核心逻辑和常见问题,确保了插件的持续集成和发布。

为了增加博客浏览量并提高用户粘性,方便我的读者们在工作之中摸鱼看文章。因此,我开发了一个 IntelliJ IDEA 插件 —— 博客助手插件(orange-assistant),它不仅支持博客内容的结构化查看,还集成了AI气聊天样式等功能辅助预览。

这篇文章将完整记录我从 0 到 1 开发该插件、构建自动化打包流程、发布到 GitHub 的实战经验,包括中间遇到的种种坑,以及解决的思路。


✨ 插件功能概览

博客助手插件主要解决两个痛点:

    结构化预览:通过调用博客服务端接口,异步获取并展示文章列表,结合 JList 列表组件进行快速导航。文章阅读器:基于 JBCefBrowser 组件加载文章详情,直接在 IDEA 中浏览网页,模拟真实博客阅读体验。**AI对话 **:支持将特定格式的评论转换为“气泡式对话”样式,模仿朋友圈动态的展示方式,适合博主发布图文内容或教程合集。

配图示意:

模块功能点截图
博客文章文章列表
|____文章搜索
|____文章查看
AI对话展示
|____快捷功能

最终我设计的插件功能组件图如下:


🛠 功能开发中的挑战

1. 文章列表和详情

不同于简单的本地文件分析,博客列表是通过 HTTP API 获取后进行展示的,遇到了下列问题:

2. 气泡 UI 渲染

3. LLM 搭建

既然是AI对话,那能少的了搭LLM呢,免费的flowise搞一个:

这个工作量主要就是调试prompt了,可以参考我写的这篇文章:引导AI,探索无限可能:深入了解prompt, flowise我之前也讲过,可以下载插件后直接搜索关键字看相应文章


⚙ Gradle 打包与发布流程演进

最开始的打包方式遇到多个问题,逐步演进如下:

❌ 起初使用 build 直接 JAR 打包

第一次尝试构建后,得到的 plugin.jar 文件在本地测试时无法被 IDE 正确识别或安装。

⚠ 使用 shadow 插件打包 fat jar

引入 com.github.johnrengelman.shadow 将所有依赖合并打包,但实际测试发现:

✅ 最终改用 Gradle 官方 distribution 插件

通过配置 distribution 插件,明确打包路径和 zip 名称:

distributions {    main {        distributionBaseName.set("orange-tech-${project.version}")        contents {            from("build/libs") {                include("*.jar")            }            from("src/main/resources") // 如有额外资源        }    }}

优点:


🚀 自动化构建与发布(GitHub Actions)

为了实现一套完整的自动构建与部署流程,我们配置了两套工作流:

🧪 Snapshot 发布(feature 分支)

触发时机:

on:  push:    branches:      - 'feature-**'

核心逻辑:

常见问题:

📦 正式发布(Release)

触发时机:

on:  release:    types: [published]

上传 ZIP 文件:

- name: Upload ZIP asset  uses: actions/upload-release-asset@v1  with:    upload_url: ${{ github.event.release.upload_url }}    asset_path: build/distributions/orange-tech-${{ env.VERSION }}.zip    asset_name: orange-tech-${{ env.VERSION }}.zip    asset_content_type: application/zip  env:    VERSION: 1.0.4    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

注意:


💡 AI 助力开发:从助手到加速器

整个插件开发过程,我也充分借助了 AI (chat gpt、 豆包)的能力,成为提升效率、排雷避坑的重要方式。

chat gpt豆包

AI 不再只是一个搜索引擎替代者,而是插件开发旅程中的“对话式编程伙伴”。它帮助我从“能做”更快走向“做得优雅”,未来我也将继续探索 AI 与本地开发工具的结合方式。


🔚 总结与建议

插件开发是对 Java Swing、Gradle 构建、GitHub Actions 自动化的综合实践。在这个博客助手插件项目中,我收获了以下几点:

本项目完整源码与构建流程详见:

如有任何问题或建议,欢迎评论或 Issue,我会持续优化插件功能,并考虑未来提供便签等能力,关注我,一起变得更强!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

IntelliJ IDEA插件 博客助手 Gradle GitHub Actions
相关文章