在 AI 辅助开发的浪潮中,Skills 作为一个能够显著增强 Agent 能力的手段,正受到越来越多开发者的关注。虽然市面上已经有很多通用的 Skills,但目前还比较少看到专门针对 Java 开发场景的实用 Skills。
今天,我们总结了 2 类 Java 开发 Skills ,分享如何在 Qoder Jetbrains 插件内利用它们优化 Java 开发体验。
虽然 SKILL.md 越来越受到开发人员的推荐,但是目前的 Jar 包并没有包含对应的 Skill 支持。对一些开源且知名的开发包,大模型支持的还较好;但对于内部 Jar 包或较新的开发包,大模型的支持就比较偏弱,导致代码生成不够准确。
如果能在 Jar 包中放置 SKILL.md 并被 AI 识别,就能在一定层面上解决开发包不能被很好支持的问题。
目前业界已经有对应的初始规范:
https://github.com/skillsjars/skillsjars/blob/main/SPEC.md
也就是在 jar 包中添加 /META-INF/skills/orgId/repoId/skill-name/SKILL.md 或者 /META-INF/skills/skill-name/SKILL.md ,这里 orgId 和 repoId 不是必须的,这样 AI IDE 就会自动扫描对应的 skill 文件。
目前企业开发中,IntelliJ IDEA 的使用占比还是非常高的,而且在企业内部也有很多的二方包,这就要求 jar 包能包括 skill,方便内部开发人员使用这些开发包。
借助 Qoder Jetbrains 插件中的 Jar Skill 和 @openFiles,可以让内部项目共享变得更加容易。Skill 可以提供更好更全的知识点和最佳实践,@openFiles 则可以让代码引用更加方便。
在 Qoder 中,如果选中的目录为 resources 目录或其子目录,插件会基于该结构创建对应的 Jar Skill,方便开发者快速为私有包补充知识。
目前典型的做法是通过 skillsjars-maven-plugin 提取 Jar 文件中的 Skill 到指定目录下(如 .qoder/skills):
执行命令:mvn skillsjars:extract -Ddir=.qoder/skills 即可。
如以下命令就从项目的依赖中提取了两个 Skill,然后提供给 Qoder 使用。
从上图我们可以看到,从 jar 包中提取出的 SKILL.md 都保存到 .qoder/skills 目录下,这样 Qoder 就可以识别出这些 Skill,然后再接下来的会话中会动态激活并使用,当然你也可以使用 /skill:xxxx 这样的斜杠指令主动激活。
功能说明:说明该开发包的功能、使用场景。
集成指南:尤其是如何与 Spring Boot 整合。
配置参数:涉及的配置项及含义。
服务接口:参考 Java Module 规范,重点描述核心 Interface(在 Java 中扮演重要角色)。
样例与 FAQ:给出典型样例、联系方式或 Issue 链接。
以下是一个 Java 开发包的样例,dotenvx-java 是一个新的开发包,主要用于配置项加密的,通过 Skill Jar 方式 ,将 SKILL.md 打包进入 jar 包,然后使用方就可以通过 Skill 就完成了对应的集成。
以 DuckDB 为例:
用 Skill 解决大模型新技术知识滞后的问题
DuckDB 是一个嵌入式的列式分析型数据库管理系统,其特性丰富、性能强劲、生态丰富,越来越受到开发人员所喜欢。但是 DuckDB 发展的比较快,一些新的特性并没有被大语言模型添加到训练数据中,尤其是 DuckDB extension。
我们可以在 Qoder JetBrains 插件中结合 Skills为DuckDB 提供更好的上下文,也就是 Skills 擅长的 Best Practices 领域,来提升 DuckDB 的使用体验。
首先我们在 Qoder JetBrains 创建一个数据库连接,如下:
接下来,通过 右键 -New-Qoder files -Skill 的方式,创建一个 duckdb 的Skill:
接下来我们继续写 Skill 的 md,样例如下:
在 SKILL.md 文件中,我们主要说明了各个 extension 对应的文件和描述。
考虑到 DuckDB 涉及的内容和 extension 比较多,以及上下文窗口的大小限制,这里我们需要对内容进行分解,形成不同的知识点,这样也方便 AI 根据用户的提问,查找对应的知识点。
接下来,我们只需要在对话窗口输入 /skills:duckdb 就可以关联对应的 Skill,然后就可以基于 Skill 获取我们需要的答案。
在数据库场景,当然少不了在 Query Console 中直接引用 Skill,你只要点击查询工具栏的 Qoder 图标,然后弹出的输入框中输入 / 然后就可以换出对应的 Skills,当然你可以在提示词中体现引用 DuckDB Skill,这样生成的 SQL 就非常精确。
借助 Skill,我们可以将一些工具的最新知识、最佳实践等以 Skill 方式组织起来,然后方便 AI 进行引用。
以同样的方式,如 Bun 的 MySQL 的支持还没有被大语言模型支持,这个时候你就可以以 Skill 的方式,将 Bun 的 MySQL 添加到 bun 的 Skill中,当遇到操作 MySQL 的场景,就可以被自动识别并添加到上下文中,可以确保生成的代码准确性。
通过 Skill,我们可以将工具的最新知识、内部框架的最佳实践以结构化的方式组织起来,方便 AI 引用。
借助 Qoder 的这些能力,Agent 不再只是一个通用的助手,而是变成了一个真正懂你业务、懂你技术栈的 Java 领域专家。