要让DeepSeek生成的代码严格匹配项目规范,需四步:一、在prompt开头声明项目级上下文(如Spring Boot 3.2+Java 17、Lombok、Serializable等);二、用FIM标记提供待插入位置的前后代码;三、在prompt末尾列出CI真实报错项或提供本项目已通过审查的Few-Shot示例;四、通过Gradle插件执行落地验证,确保编译、Checkstyle、SonarQube全通过。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要让DeepSeek生成的代码严格匹配你当前项目的编码风格、依赖约束和工程结构,不能只靠“写个函数”这种模糊指令——模型会按通用Python/Java规范输出,而你的项目可能要求Google Java Style、强制Lombok、禁用ArrayList而改用Guava ImmutableList,甚至要求所有DTO必须实现Serializable并带固定serialVersionUID。
第一步:注入项目级上下文
在prompt开头明确声明项目特征,而非泛泛而谈“Java项目”。例如:
你正在维护一个Spring Boot 3.2 + Java 17微服务,模块名是order-service,使用Lombok @Data、@Builder,所有DTO必须实现java.io.Serializable,serialVersionUID = 1L;禁止使用原始类型数组,集合统一用List<String>而非ArrayList<String>;日志用slf4j,不许出现System.out.println。
这一步漏掉,模型默认按教科书式Java生成——比如它会写ArrayList<String> list = new ArrayList<>(),但你的Checkstyle规则会立刻报错。
第二步:绑定具体文件路径与已有代码
把待插入位置的前后代码原样粘贴进来,用FIM标记包裹:
<|fim▁begin|>public class OrderValidator {<br> private final OrderRepository orderRepository;<br> private final UserService userService;<br><br> public OrderValidator(OrderRepository orderRepository, UserService userService) {<br> this.orderRepository = orderRepository;<br> this.userService = userService;<br> }<br><br> // 新增方法位置<br><|fim▁hole|><br><|fim▁end|>}
模型看到这个结构,才会生成符合构造器注入风格、参数命名与已有字段一致(如userService而非userSvc)、访问修饰符为private的方法体。若只说“写个校验方法”,它可能生成static工具方法,直接破坏Spring Bean管理契约。
统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。
第三步:强制执行团队规范检查项
方法一:在prompt末尾逐条列出CI流水线真实报错项
请确保生成代码满足以下4项,否则CI会失败:
① 所有public方法必须有Javadoc,含@param和@return;
② 方法体内不得出现magic number,金额相关数字必须定义为private static final BigDecimal;
③ 不得调用Thread.sleep(),需改用ScheduledExecutorService;
④ 所有异常捕获后必须打warn日志,格式为“订单校验失败,orderId={},原因={}”。
方法二:提供已通过审查的同类代码作Few-Shot示例
# 示例(已通过SonarQube和Checkstyle)
public BigDecimal calculateTotal(Order order) {
if (order == null) {
log.warn("订单为空,无法计算总价");
return BigDecimal.ZERO;
}
return order.getItems().stream()
.map(item -> item.getPrice().multiply(BigDecimal.valueOf(item.getQuantity())))
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
【关键前提】示例代码必须来自你自己的项目,且刚通过CI——模型会模仿其空格、换行、注释密度、even/odd缩进习惯,而不是照搬Stack Overflow的写法。
第四步:启用Gradle插件做落地验证
步骤一:在build.gradle中配置deepseekCheck任务,指定sourceSet为main,classpath与compileJava完全一致
步骤二:执行./gradlew deepseekCheck --scan,查看报告中“Style Violation”类问题是否归零
步骤三:若仍有PEP8或ImportOrder违规,立即回退到第一步,检查是否遗漏了项目特有的import分组规则(如com.xxx.*必须在javax.*之前)
这一步不做,前面所有提示词优化都是纸上谈兵——模型输出再漂亮,编译不过、Checkstyle挂掉、SonarQube标红,就等于没完成任务。


















