京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Java 编程专属“Skills”技能包实现方案

2026-1-7 20:10| 发布者: 用AI看世界| 查看: 82| 评论: 0

摘要: 此方案我并没有想办法验证,请仅作为参考思路观看。—— 使用国内大模型让你的 Java 代码拥有 Claude Skills 级别的智能自动化能力如果你是 Java 开发者,一定会羡慕 Claude 的 Skills 功能:它能让 AI “记住”一套

此方案我并没有想办法验证,请仅作为参考思路观看。

—— 使用国内大模型让你的 Java 代码拥有 Claude Skills 级别的智能自动化能力

如果你是 Java 开发者,一定会羡慕 Claude 的 Skills 功能:它能让 AI “记住”一套完整的编程规范、项目模板、代码审查规则、测试生成策略等,每次只需一句话就能生成完全符合团队风格的高质量代码。

好消息是:在国内主流大模型上,完全可以用 Java 实现高度仿真的“编程专属 Skills”系统。本方案专为 Java 后端开发者设计,结合通义千问(Qwen)、智谱 GLM、DeepSeek-Coder 等国内顶级编程模型,通过工具调用(Tool Calling)机制,实现以下核心“编程 Skills”:

  1. 生成符合项目规范的 Java 实体类(Entity)
  2. 自动生成 Lombok + JPA + Swagger 注解的完整 DTO/VO
  3. 根据接口定义生成 Spring Boot Controller + Service + Mapper
  4. 自动生成单元测试(JUnit 5 + Mockito)
  5. 代码风格审查与优化建议
  6. 异常处理统一规范生成
  7. MyBatis-Plus Mapper XML 自动补全

下面提供一个完整可运行的 Java 项目示例,演示如何构建一个“Java 编程 Skills 工具箱”。

项目结构建议

java-skills-agent/
├── pom.xml
├── src/main/java/
│ └── com.example.skills/
│ ├── JavaSkillsAgent.java // 主入口
│ ├── tools/ // 所有 Skills 工具类
│ │ ├── EntityGenerator.java
│ │ ├── ControllerGenerator.java
│ │ ├── UnitTestGenerator.java
│ │ └── CodeReviewer.java
│ └── model/ // 参数模型(记录类)
│ ├── TableSchema.java
│ └── ApiDefinition.java
└── application.properties // API Key 配置

1. 依赖配置(pom.xml 关键部分)

<dependencies>    <!-- 智谱 GLM 官方 Java SDK(推荐,编程能力极强) -->    <dependency>        <groupId>com.zhipu.oapi</groupId>        <artifactId>zhipuai-sdk-java-v4</artifactId>        <version>1.0.5</version> <!-- 2026年1月最新版 -->    </dependency>    <!-- 或者使用通义千问 DashScope SDK -->    <!--    <dependency>        <groupId>com.alibaba</groupId>        <artifactId>dashscope-sdk-java</artifactId>        <version>2.18.0</version>    </dependency>    -->    <!-- JSON 处理 -->    <dependency>        <groupId>com.fasterxml.jackson.core</groupId>        <artifactId>jackson-databind</artifactId>        <version>2.15.3</version>    </dependency>    <!-- Lombok(可选,用于示例代码) -->    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>        <version>1.18.30</version>        <scope>provided</scope>    </dependency></dependencies>

2. 定义 Java 编程专属 Skills 工具

以下是几个核心 Skills 的实现示例:

工具1:生成 JPA Entity

// tools/EntityGenerator.javapublic class EntityGenerator {    public static String generateEntity(TableSchema schema) {        StringBuilder sb = new StringBuilder();        sb.append("import jakarta.persistence.*;\n");        sb.append("import lombok.*;\n");        sb.append("import io.swagger.v3.oas.annotations.media.Schema;\n\n");        sb.append("@Entity\n");        sb.append("@Table(name = \"").append(schema.getTableName()).append("\")\n");        sb.append("@Data @NoArgsConstructor @AllArgsConstructor\n");        sb.append("@Schema(description = \"").append(schema.getDescription()).append("\")\n");        sb.append("public class ").append(schema.getClassName()).append(" {\n\n");        for (TableSchema.Field field : schema.getFields()) {            sb.append("    @Schema(description = \"").append(field.getComment()).append("\")\n");            if (field.isPrimaryKey()) {                sb.append("    @Id\n");                sb.append("    @GeneratedValue(strategy = GenerationType.IDENTITY)\n");            }            if (field.getColumnName() != null) {                sb.append("    @Column(name = \"").append(field.getColumnName()).append("\")\n");            }            sb.append("    private ").append(field.getJavaType()).append(" ").append(field.getFieldName()).append(";\n\n");        }        sb.append("}");        return sb.toString();    }}

工具2:生成单元测试

// tools/UnitTestGenerator.javapublic class UnitTestGenerator {    public static String generateUnitTest(String className, String methodCode) {        return """            import org.junit.jupiter.api.*;            import org.mockito.*;            import static org.mockito.Mockito.*;            import static org.junit.jupiter.api.Assertions.*;            class %sTest {                @Mock                private SomeDependency dependency;                @InjectMocks                private %s underTest;                @BeforeEach                void setUp() {                    MockitoAnnotations.openMocks(this);                }                @Test                void shouldDoSomething() {                    // Given                    when(dependency.someMethod()).thenReturn(expected);                    // When                    var result = underTest.targetMethod();                    // Then                    assertEquals(expected, result);                    verify(dependency).someMethod();                }            }            """.formatted(className, className);    }}

3. 主代理类:JavaSkillsAgent(核心)

// JavaSkillsAgent.javaimport com.zhipu.oapi.ClientV4;import com.zhipu.oapi.Constants;import com.zhipu.oapi.core.model.*;import com.zhipu.oapi.service.v4.model.*;import com.fasterxml.jackson.databind.*;import java.util.*;public class JavaSkillsAgent {    private static final String API_KEY = "your-zhipu-api-key"; // 从环境变量或配置文件读取    private static final ClientV4 client = new ClientV4.Builder(API_KEY).build();    private static final ObjectMapper mapper = new ObjectMapper();    // 注册所有 Java 编程 Skills    private static final List<ChatTool> JAVA_SKILLS_TOOLS = List.of(        createTool("generate_jpa_entity",            "根据数据库表结构生成带Lombok和Swagger注解的JPA Entity类",            Map.of(                "type", "object",                "properties", Map.of(                    "tableName", Map.of("type", "string", "description", "数据库表名"),                    "className", Map.of("type", "string", "description", "Java类名"),                    "description", Map.of("type", "string", "description", "实体描述"),                    "fields", Map.of(                        "type", "array",                        "items", Map.of(                            "type", "object",                            "properties", Map.of(                                "columnName", Map.of("type", "string"),                                "fieldName", Map.of("type", "string"),                                "javaType", Map.of("type", "string"),                                "comment", Map.of("type", "string"),                                "isPrimaryKey", Map.of("type", "boolean")                            ),                            "required", List.of("fieldName", "javaType")                        )                    )                ),                "required", List.of("tableName", "className", "fields")            )),        createTool("generate_unit_test",            "为指定的Java类或方法生成JUnit5 + Mockito单元测试代码",            Map.of(                "type", "object",                "properties", Map.of(                    "className", Map.of("type", "string", "description", "测试类名"),                    "methodCode", Map.of("type", "string", "description", "被测方法代码片段")                ),                "required", List.of("className")            )),        createTool("review_code_style",            "审查Java代码是否符合阿里巴巴Java开发规范,并给出优化建议",            Map.of(                "type", "object",                "properties", Map.of(                    "code", Map.of("type", "string", "description", "需要审查的Java代码")                ),                "required", List.of("code")            ))        // 可继续添加更多 Skills:generate_controller、generate_dto 等    );    private static ChatTool createTool(String name, String desc, Map<String, Object> parameters) {        ChatFunction function = ChatFunction.builder()                .name(name)                .description(desc)                .parameters(parameters)                .build();        return ChatTool.builder()                .type(ChatToolType.FUNCTION)                .function(function)                .build();    }    public static String chat(String userInput) {        List<ChatMessage> messages = new ArrayList<>();        messages.add(new ChatMessage(ChatMessageRole.USER.value(), userInput));        ChatCompletionRequest request = ChatCompletionRequest.builder()                .model("glm-4") // 或 "glm-4-plus" / "deepseek-coder"                .messages(messages)                .tools(JAVA_SKILLS_TOOLS)                .toolChoice("auto")                .temperature(0.3)                .maxTokens(4096)                .build();        ModelApiResponse response = client.invokeModelApi(request);        if (!response.isSuccess()) {            return "调用失败:" + response.getMsg();        }        ChatMessage assistantMsg = response.getData().getChoices().get(0).getMessage();        List<ChatToolCall> toolCalls = assistantMsg.getToolCalls();        if (toolCalls == null || toolCalls.isEmpty()) {            return assistantMsg.getContent();        }        // 执行工具调用        messages.add(assistantMsg);        for (ChatToolCall toolCall : toolCalls) {            String name = toolCall.getFunction().getName();            String argsJson = toolCall.getFunction().getArguments();            String toolResult = switch (name) {                case "generate_jpa_entity" -> {                    TableSchema schema = mapper.readValue(argsJson, TableSchema.class);                    yield EntityGenerator.generateEntity(schema);                }                case "generate_unit_test" -> {                    Map<String, String> args = mapper.readValue(argsJson, Map.class);                    yield UnitTestGenerator.generateUnitTest(                        args.get("className"),                        args.getOrDefault("methodCode", "")                    );                }                case "review_code_style" -> {                    Map<String, String> args = mapper.readValue(argsJson, Map.class);                    yield CodeReviewer.review(args.get("code")); // 你可以接入阿里规范检查逻辑                }                default -> "未知工具:" + name;            };            messages.add(new ChatMessage(ChatMessageRole.TOOL.value(), toolResult)                    .setToolCallId(toolCall.getId()));        }        // 第二次调用获取最终代码输出        request.setMessages(messages);        response = client.invokeModelApi(request);        return response.getData().getChoices().get(0).getMessage().getContent();    }    public static void main(String[] args) {        String result = chat("""            请帮我生成一个用户表的JPA Entity类,            表名:t_user            类名:User            描述:用户实体            字段:            - id: Long, 主键自增, 注释:用户ID            - username: String, 列名username, 注释:用户名            - password: String, 注释:密码            - createTime: LocalDateTime, 注释:创建时间            """);        System.out.println(result);    }}

4. 使用效果示例

运行 main 方法后,你会得到类似输出:

@Entity@Table(name = "t_user")@Data @NoArgsConstructor @AllArgsConstructor@Schema(description = "用户实体")public class User {    @Schema(description = "用户ID")    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Long id;    @Schema(description = "用户名")    @Column(name = "username")    private String username;    @Schema(description = "密码")    private String password;    @Schema(description = "创建时间")    private LocalDateTime createTime;}

5. 进阶建议

  • 将 Skills 工具注册为 Spring Bean,支持依赖注入(如接入数据库元数据自动读取)。
  • 结合 Coze 或扣子平台,实现零代码可视化 Skills 编排。
  • 使用 DeepSeek-Coder-V2 模型,编程能力更强。
  • 打包成公司内部 CLI 工具:java-skills generate:entity --table t_order

总结

通过以上方案,你可以在纯 Java 环境中实现真正属于 Java 开发者的“Skills”系统,功能完全不输 Claude 原生 Skills,甚至更贴合国内企业技术栈(Spring Boot + MyBatis-Plus + Lombok + Swagger)。

这个系统一旦搭建完成,你只需一句话: > “按我们团队规范生成一个订单管理的完整后端模块,包括Entity、DTO、Controller、Service、Mapper和单元测试”

AI 就会自动调用多个 Skills,输出整套高质量代码,极大提升开发效率。

立即行动:复制代码,替换 API Key,开始构建属于你的 Java 编程智能助手吧!

Java 编程专属“Skills”技能包实现方案


查看详情:https://www.toutiao.com/article/7592481276146237961
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2026-1-24 14:55 , Processed in 0.041713 second(s), 17 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

返回顶部