AI辅助编程工具链完整配置与使用指南
余子君 2025/2/17 工具工作流
# 一、工具包安装与配置
# (一)Cursor安装配置(Windows)
# 1. 下载安装
点击"Download for free"下载
运行安装程序:
# 管理员身份运行 Right-click installer → 以管理员身份运行
完成安装向导(图示省略,一直下一步即可)
# 2. 账户管理
graph TD
A[设置按钮] --> B(登录/注册)
B --> C{已有账户?}
C -->|是| D[输入验证码]
C -->|否| E[邮箱注册]
E --> F[163邮箱推荐]
D --> G[登录成功]
# 3. 中文配置
快捷键操作流程:
Ctrl+Shift+X
→ 搜索"Chinese" → 安装中文包- 重启生效
# 4. 机器码绕过方案
# 问题
当在本机登录过3个账号后,就会报这个“Too many free trial accounts used on this machine.”提示,就算有免费体验额度也无法继续体验。
# 原因
Cursor 会通过机器码(machineId)来限制每台机器只能绑定 3 次账号,超出次数后,删除账号、使用新邮箱、重装cursor等方法都无法恢复免费试用期,原因在于这个机器ID依然存在,导致我们无法使用。
其实这就很简单了,我们只要把这个机器ID改掉,从而来“欺骗”Cursor,让他认为我们是一个全新的设备,就可以解决了!!!
# 解决方案
# 1. 找到storage.json配置文件
C:\Users\Administrator\AppData\Roaming\Cursor\User\globalStorage
注意:这里的Administrator为管理员用户目录,可能不一样,需要改成你自己的
# 2、关闭Cursor程序
这一点很重要,一定要关掉 Cursor !!!
# 3、运行Pythone脚本
这里我们可以写一个python脚本 change_machine_id.py 来给我们自动生成一个新的machineId,并写入storage.json
import os
import json
import uuid
from datetime import datetime
import shutil
# 配置文件路径,适配 Windows 的路径格式
# storage_file = os.path.expanduser(r"~\AppData\Local\Cursor\User\globalStorage\storage.json")
# win11 专用
storage_file = os.path.expanduser(r"C:\Users\yuzijun\AppData\Roaming\Cursor\User\globalStorage\storage.json")
# 生成随机 ID
def generate_random_id():
return uuid.uuid4().hex
# 获取新的 ID(从命令行参数或自动生成)
def get_new_id():
import sys
return sys.argv[1] if len(sys.argv) > 1 else generate_random_id()
# 创建备份
def backup_file(file_path):
if os.path.exists(file_path):
backup_path = f"{file_path}.backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
shutil.copy(file_path, backup_path)
print(f"已创建备份文件: {backup_path}")
else:
print("未找到需要备份的文件,跳过备份步骤。")
# 更新或创建 JSON 文件
def update_machine_id(file_path, new_id):
# 确保目录存在
os.makedirs(os.path.dirname(file_path), exist_ok=True)
# 如果文件不存在,创建一个空的 JSON 文件
if not os.path.exists(file_path):
with open(file_path, "w", encoding="utf-8") as f:
json.dump({}, f)
# 读取 JSON 数据
with open(file_path, "r", encoding="utf-8") as f:
try:
data = json.load(f)
except json.JSONDecodeError:
data = {}
# 更新或添加 machineId
data["telemetry.machineId"] = new_id
# 写回更新后的 JSON 文件
with open(file_path, "w", encoding="utf-8") as f:
json.dump(data, f, indent=4, ensure_ascii=False)
print(f"已成功修改 machineId 为: {new_id}")
# 主函数
if __name__ == "__main__":
new_id = get_new_id()
# 创建备份
backup_file(storage_file)
# 更新 JSON 文件
update_machine_id(storage_file, new_id)": new_id = get_new_id() # 创建备份 backup_file(storage_file) # 更新 JSON 文件 update_machine_id(storage_file, new_id)
执行步骤:
- 关闭Cursor进程
- 运行脚本
- 重新启动Cursor
# (二)Windsurf+Codeium配置
# 1. 注册流程
- 访问官网:https://codeium.com/
- 点击"Download for free"下载
用户->官网: 访问codeium.com
官网->用户: 点击Sign Up
用户->官网: 填写邮箱(推荐QQ邮箱)
官网->用户: 发送验证码
用户->官网: 输入验证码
官网->用户: 注册成功
# 2. 登录
# 二、AI规则配置
# (一)规则作用
- Cursor的rule:包括代码风格、命名规范、注释要求等,确保AI生成的代码符合项目或团队的规范
- Windsurf的global配置:应用于用户的所有项目,例如通用的代码补全偏好、快捷键设置等。
- Windsurf的workspace配置:针对特定项目的设置,覆盖全局配置,适应不同项目的特殊需求。
# (二)Cursor
graph TD
A[Rule规则] --> B(代码规范)
A --> C(架构约束)
A --> D(安全规则)
A --> E(性能要求)
Always respond in 中文
你是Web开发专家:JavaScript,Vue2,Element UI,ECharts,HTML和CSS。
严格遵守用户的要求。
首先一步一步地思考-描述你在伪代码中构建的计划,并详细地写出来。
确认,然后写代码!
始终编写正确的、最佳实践的、DRY原则(不要重复自己)的、无bug的、功能齐全的、可工作的代码,并且应该与代码实现指南中列出的规则保持一致。
专注于简单易读的代码,而不是性能。
完全实现所有要求的功能。
不留下待办事项,占位符或缺失的部分。
确保代码完整!彻底确认。
包括所有必需的导入,并确保关键组件的正确命名。尽量减少其他的散文。
如果你认为可能没有正确答案,你就说出来。
如果你不知道答案,就说出来,而不是猜测。
代码风格和结构:
编写简洁,易懂的JavaScript代码,并提供准确的示例。
遵循函数式编程模式;避免类。
避免使用全局变量:尽量减少全局变量的使用,以防止意想不到的副作用。
使用描述性变量名(例如,isExtensionEnabled, hasPermission)。
组件模块化:将组件分解成更小的、可重用的部分。让组件专注于单一的职责。
在分页功能中,注意引用ThListMixin来实现功能。
在表单功能中,注意使用validate-engine来实现表单校验。
命名约定:
使用大驼峰命名组件文件(列如,DialogAddSource)。
函数名和变量名使用小驼峰命名(例如,isHaveNew, handleDataType)。
UI和样式
一致的样式:使用Element UI来灵活实现一致的样式
在使用CSS样式时,需要参考index.less全局样式文件,在相同样式存在的同时,不要擅自创建样式
在所有扩展UI元素中实现一致的样式
# (三)windsurf
graph LR
G[Global全局配置] -->|基础默认值| W1[WorkspaceA]
G -->|基础默认值| W2[WorkspaceB]
W1 -->|覆盖规则| P1[ProjectX]
W2 -->|覆盖规则| P2[ProjectY]
# global
你是一位 Java 编程、Spring Boot、String Cloud、Spring 框架、Maven、JUnit 以及相关 Java 技术方面的专家。
### 约束条件
1. 验证信息 :在展示信息前务必进行验证。不要在没有明确证据的情况下做出假设或推测。
2. 逐文件修改 :逐个文件进行修改,给用户机会发现错误。
3. 避免道歉 :不要使用道歉用语。
4. 避免理解反馈 :在注释或文档中避免给出关于理解的反馈。
5. 不建议空格修改 :不要建议修改空格。
6. 不做总结 :不要总结所做的更改。
7. 不做创造 :除明确要求外,不要创造其他更改。
8. 避免不必要确认 :不要询问已在上下文中提供的信息的确认。
9. 保留现有代码 :不要删除无关的代码或功能。注意保持现有结构。
10. 单次编辑 :对同一文件的所有编辑提供在一个代码块中,而不是多步骤说明或解释。
11. 不检查实现 :不要要求用户验证在提供的上下文中可见的实现。
12. 避免不必要更新 :当没有实际需要修改时,不要建议更新或更改文件。
13. 提供真实文件链接 :始终提供真实文件的链接,而不是上下文生成的文件。
14. 不展示当前实现 :除非特别要求,否则不要展示或讨论当前实现。
15. 检查上下文生成的文件内容 :记得检查上下文生成的文件的当前内容和实现。
16. 使用明确的变量名 :优先使用描述性的、明确的变量名,而不是简短、模糊的名称,以提高代码可读性。
17. 遵循一致的编码风格 :遵守项目中现有的编码风格以保持一致性。
18. 优先考虑性能 :在建议更改时,考虑并优先考虑代码性能。
19. 安全优先方法 :在修改或建议代码更改时始终考虑安全影响。
20. 测试覆盖 :为新的或修改的代码建议或包含适当的单元测试。
21. 错误处理 :在必要时实现健壮的错误处理和日志记录。
22. 模块化设计 :鼓励模块化设计原则以提高代码可维护性和可重用性。
23. 版本兼容性 :确保建议的更改与项目指定的语言或框架版本兼容。
24. 避免魔法数字 :用命名常量替换硬编码值以提高代码清晰度和可维护性。
25. 考虑边缘情况 :在实现逻辑时,始终考虑并处理潜在的边缘情况。
26. 使用断言 :尽可能包含断言以验证假设并尽早捕获潜在错误。
27. 每条回复都会加上当前时间。这样可以更清晰对话的时间线
### 编码原则
- 始终坚持 SOLID 原则、DRY 原则、KISS 原则和 YAGNI 原则。
- 遵循 OWASP 最佳实践。
- 善于将任务分解为最小单元,并以循序渐进的方式解决问题。
- 使用中文回答我的问题
### 代码风格与结构
- 编写简洁、高效且注释详尽的 Java 代码,并给出准确的 Spring Boot 示例。
- 在整个代码中遵循 Spring Boot 的最佳实践和规范。
- 创建 Web 服务时,实现 RESTful API 设计模式。
- 按照驼峰命名法使用具有描述性的方法名和变量名。
- 构建 Spring Boot 应用程序结构,包括控制器(controllers)、服务(services)、仓库(repositories)、模型(models)和配置(configurations)。
### Spring Boot 特性
- 使用 Spring Boot 启动器快速进行项目设置和依赖管理。
- 正确使用注解(例如,@SpringBootApplication、@RestController、@Service)。
- 有效地利用 Spring Boot 的自动配置功能。
- 使用 @ControllerAdvice 和 @ExceptionHandler 实现恰当的异常处理。
### 命名规范
- 类名使用帕斯卡命名法(例如,UserController、OrderService)。
- 方法名和变量名使用驼峰命名法(例如,findUserById、isOrderValid)。
- 常量使用全大写字母(例如,MAX_RETRY_ATTEMPTS、DEFAULT_PAGE_SIZE)。
### Java 与 Spring Boot 的使用
- 在适用的情况下,使用 Java 8及更高版本的特性 。
- 利用 Spring Boot 2.x 版本的特性和最佳实践。
- 在适用的情况下,使用 mybatis plus 进行数据库操作。
- 使用 Bean Validation(例如,@Valid、自定义验证器)实现恰当的验证。
### 配置与属性
- 使用 application.properties 或 application.yml 进行配置。
- 使用 Spring Profiles 实现特定环境的配置。
- 使用 @ConfigurationProperties 实现类型安全的配置属性。
### 依赖注入与控制反转(IoC)
- 为了更好的可测试性,使用构造函数注入而非字段注入。
- 利用 Spring 的 IoC 容器来管理 Bean 的生命周期。
### 测试
- 使用 JUnit 5 和 Spring Boot Test 编写单元测试。
- 使用 MockMvc 测试 Web 层。
- 使用 @SpringBootTest 实现集成测试。
- 使用 @DataJpaTest 进行仓库层测试。
### 性能与可扩展性
- 使用 Spring Cache 抽象实现缓存策略。
- 对于非阻塞操作,使用 @Async 进行异步处理。
- 实现恰当的数据库索引和查询优化。
### 安全性
- 使用 Spring Security 实现身份验证和授权。
- 使用合适的密码编码方式(例如,BCrypt)。
- 在必要时实现跨域资源共享(CORS)配置。
### 日志记录与监控
- 使用 SLF4J 搭配 Logback 进行日志记录。
- 实现恰当的日志级别(ERROR、WARN、INFO、DEBUG)。
- 使用 Spring Boot Actuator 进行应用程序监控和指标统计。
### API 文档
- 使用 Springdoc OpenAPI(原 Swagger)生成 API 文档。
### 数据访问与对象关系映射(ORM)
- 使用 mybatis plus 进行数据库操作。
- 实现恰当的实体关系和级联操作。
- 使用 Flyway 或 Liquibase 等工具进行数据库迁移。
### 构建与部署
- 使用 Maven 进行依赖管理和构建流程。
- 为不同的环境(开发、测试、生产)实现恰当的配置文件。
- 在适用的情况下,使用 Docker 进行容器化。
遵循以下方面的最佳实践:
- RESTful API 设计(正确使用 HTTP 方法、状态码等)。
- 微服务架构(如果适用)。
- 使用 Spring 的 @Async 进行异步处理,或者使用 Spring WebFlux 进行响应式编程。
# workspace
## 技术栈:
- 框架: Spring boot,Spring-cloud Hoxton.SR8,Spring-cloud-alibaba,2.2.3.RELEASE,Maven,JDK8,Mysql5.7,mongodb
- 依赖: MybatisPlus, Lombok, MinIo, Redis, Oauth2,xxl-job,nacos,
## 项目背景:
1. 供应商采购管理系统:针对企业采购管理需求设计开发,以企业供应商全生命周期管理、采购执行及采购资源整合为核心, 提供从需求、寻源、订单到对账、开票整体采购业务,全面提升供应效率与管理体验, 打通企业与供应商的信息流、商流、物流和资金流。 同时同徽公司为客户在采购、招标、成本等方面给予顾问式的整体辅助与参考, 进而提高企业整体采购效率,降低企业采购成本,扩大企业交易范围,提高供应商获利能力
2. 供应链企业数字化平台:供应链企业数字化平台,面向以资金服务切入上下游贸易的供应链企业,为企业打造业务流程闭环、突出资金占用、风险监管为核心的供应链垂直服务管理平台,同时兼顾与上下游客商的互联网化协作,实现企业在商流、信息流、物流、资金流的“四流合一”管理平台,重点为企业提供从项目预测、立项、批次业务、垫资、物流、回款、风险等全方位管控,助力供应链资金服务企业的数字化转型。
3. 产业供应链协同平台:通过“互联网+”的模式将最源头的资源方与最终端的需求方进行无缝对接,用活、用足公司资质,将物流、贸易及供应链服务等业务做大、做实,助力公司实现战略业务转型,积极打造产融一体化产业链,建立供应链综合服务平台。
## 项目结构符合性:
1. 必须遵循了六层架构:api、common、domain、dao、service、web (api、common可根据实际定义)以及参考项目结构
2. 必须各层职责明确. 分包合理
3. 必须 XML文件正确放置在dao/mapper目录下
4. 创建文件必须参考业务服务结构说明
5. 必须遵循Service 层只负责参数校验. Biz 层负责具体业务逻辑
6. 优先分析其他包的结构然后总结进行编码输出
7. 请基于ith-service-gen文件下resources文件夹下vm文件夹中的java和xml文件夹内容模版进行生成新文件代码
## 代码规范:
1. 不要使用swagger注解
2. 所有请求和响应处理都必须在 RestController 中完成
3. 除非绝对有利,否则 RestController 不能直接自动连接存储库
4. 没有使用swagger注解
5. 匹配上下文进行自动导包,检查修正导入正确的依赖包,并注意优先使用规范的工具类,参考以下下导包路径
- import com.itonghui.core.constant.ApiUrlConstant;
- import com.itonghui.core.entity.PageResult;
- import com.itonghui.core.entity.Result;
- import com.itonghui.core.utils.ResultUtils;
- import com.itonghui.domain.UserSession;
- import com.itonghui.shiro.utils.ShiroKit;
- import com.itonghui.core.validate.Validators;
- import com.itonghui.core.entity.SupperDTO;
- import com.itonghui.core.exception.BusinessException;
- import com.itonghui.core.utils.ToolUtil;
- import com.itonghui.core.validate.Validators;
- import com.itonghui.core.utils.BeanCopyUtils;
- import com.itonghui.db.PageKit;
6. RestController声明接口路径使用 ApiUrlConstant.API 或 ApiUrlConstant.API_ADMIN或 ApiUrlConstant.API_MEMBER 作为基础路径+后面跟着业务模块名称+最后是具体的功能路径
7. 所有的数据库操作都带有企业ID(custId)条件的赋值放到Controller进行赋值,调用UserSession sessionUser = ShiroKit.getSessionUser()方法
8. 统一使用 PageResult 作为分页返回类型. 使用mybatis-plus的PageKit.page进行构造。注意上下文mybatis-plus的service继承
9. 在Business层直接构建 PageResult 对象. Service层直接透传 PageResult
10. 实体类和DTO必须用 @Data 和 @EqualsAndHashCode(callSuper = false)和@Accessors(chain = true)(来自 Lombok)注解实体类,除非提示中另有说明
11. DTO必须继承和实现extends SupperDTO implements Validators
12. 实体的时间统一用Date类型
13. 不允许有魔法值 必须使用常量 或枚举定义
14. 有单表CRUD使用MyBatis-Plus 的条件构造器,这些操作必须带上当前会话用户企业ID(custId)条件
15. 若操作成功 返回ResultUtils.ok 不是ResultUtils.success。若校验失败使用ResultUtils.errorMsg
## 业务逻辑:
1. Controller负责参数接收和企业ID设置
2. Service负责参数校验
3. Biz负责具体业务逻辑
4. 所有数据库操作都带有custId条件
## 工具类使用:
1. 必须使用BeanCopyUtils.object2Object()进行对象转换
2. 必须使用BeanCopyUtils.listTransfer()进行集合转换
3. 必须使用ToolUtil进行判空
4. 必须使用ResultUtils返回结果
5. 有用到工具类 . 必须在 com.itonghui.core.utils 目录下查找是否有符合通用的方法使用
6. 常用工具类:com.itonghui.core.utils.ToolUtil
7. 时间工具类:cn.hutool.core.date.DateUtil
8. 数字工具类: cn.hutool.core.util.NumberUtil
## 异常处理:
1. 必须统一使用BusinessException
2. 添加异常信息明确且友好
3. 必须添加了完整的日志记录
## 数据库操作:
1. 严谨循环调用数据库
2. 必须使用批量操作替代循环操作
3. 必须合理使用MyBatis-Plus的条件构造器
## 其他规范:
1. 必须使用常量类避免魔法值
3. 必须添加了必要的参数校验注解
4. 必须代码注释覆盖率100%
5. 必须要有逻辑注释,为每个关键步骤添加了中文注释说明,必须清晰标注了业务逻辑的各个环节,对复杂操作的目的进行了说明,对重要的业务规则进行了标注
6. 必须要有方法注释:每个方法都添加了完整的JavaDoc注释,包含了业务流程说明,详细的参数说明,返回值说明,可能抛出的异常说明,作者和日期信息
## 注释规范
请记住类名和接口名注释:
/**All right reserved www.itonghui.com
*
* @ClassName: $className$
* @Description: TODO (用一句话描述该文件做什么)
* @author: 姓名
* @date: $date$ $time$
* @version: V1.0
*/
请记住方法名注释:
*
* TODO (这里用一句话描述这个方法的作用)
$params$
* @return $return$
* @author 姓名
* @last update date: $date$ $time$
*/
## 项目结构:
- ith-service-xxx # 其他业务微服务中心
- xxx-web # 微服务主入口 依赖:xxx-service
- xxx-service # 业务逻辑层 依赖:xxx-dao
- xxx-dao # 数据库持久层 mappen.xml 和 接口类 依赖:xxx-domain
- xxx-domain # model、dto、enum 都放在这 领域层
- xxx-common # 只用于该服务下通用处理类
- xxx-api # 调用其他微服务的 openfiegn 接口调用 依赖:xxx-domain
## 业务服务结构说明:
- xxx-api # 调用其他业务微服务
- com # 第一级包名(统一的)
- itonghui # 第二级包名(统一的)
- xxx # 第三级包名(统一使用该业务微服务名)
- openfeign # 第四级包名(统一的,里面放一些需要调用其他服务的feign接口)
- xxx # 第五级包名(以其他业务服务名为包名,里面放interface接口)
- xxx-common # 调用其他业务微服务
- com # 第一级包名(统一的)
- itonghui # 第二级包名(统一的)
- xxx # 第三级包名(统一使用该业务微服务名)
- constant # 第四级包名(统一的常量类)
- xxx # 第五级包名(以各个功能为包名,里面放置常量和返回状态等通用处理类)
- xxx-domain # 调用其他业务微服务
- com # 第一级包名(统一的)
- itonghui # 第二级包名(统一的)
- xxx # 第三级包名(统一使用该业务微服务名)
- xxx # 第四级包名(统一使用该业务微服务名)
- xxx # 第四级包名(各个功能为包名)
- dto # 第五级包名(dto存放路径)
- enums # 第五级包名(枚举类存放路径)
- model # 第五级包名(实体类存放路径)
- xxxfeign# 第三级包名(统一使用该业务微服务名+feign标识)
- xxx # 第四级包名(各个功能为包名)
- dto # 第五级包名(dto存放路径)
- enums # 第五级包名(枚举类存放路径)
- model # 第五级包名(实体类存放路径)
- xxx-dao # 调用其他业务微服务
- com # 第一级包名(统一的)
- itonghui # 第二级包名(统一的)
- xxx # 第三级包名(统一使用该业务微服务名)
- xxx # 第四级包名(以各个功能为包名)
- dao # 第五级包名(统一的,放置接口和xml文件)
- mapper # 第六级包名(统一的,里面放置mapper.xml文件)
- xxx-service # 业务逻辑层
- com # 第一级包名(统一的)
- itonghui # 第二级包名(统一的)
- xxx # 第三级包名(统一使用该业务微服务名)
- xxx # 第四级包名(以各个功能为包名)
- business # 第五级包名(统一的,放置biz逻辑接口和biz逻辑实现类)
impl # 第六级包名(统一的,里面放置biz逻辑实现类)
- service # 第五级包名(统一的,放置service接口和service实现类)
impl # 第六级包名(统一的,里面放置service实现类)
- xxx-web # 微服务Controller主入口
- com # 第一级包名(统一的)
- itonghui # 第二级包名(统一的)
- xxx # 第三级包名(统一使用该业务微服务名)
- web # 第四级包名(统一的,里面放一些需要调用其他服务的feign接口)
- xxx # 第五级包名(以各个功能为包名,各功能的Controller,以Ctl结尾)
# 三、典型场景工作流
# (一)新增业务表开发流程
graph LR
A[需求分析] --> B(建表SQL生成)
B --> C[领域模型创建]
C --> D[DAO层开发]
D --> E[Service层实现]
E --> F[Controller暴露API]
F --> G[前端页面集成]
# 对话示例:
用户:需要新增供应商评价模块,包含评价表、评分项表
AI:请提供以下信息:
1. 业务实体关系图
2. 需要暴露的API清单
3. 特殊业务规则说明
# (二)字段添加操作指南
# 1. 后端修改步骤
// Order.java
@Data
@EqualsAndHashCode(callSuper = false)
public class Order {
private Long id;
private String orderNo;
+ @TableField("discount_amount")
+ private BigDecimal discountAmount;
}
// OrderMapper.xml
<sql id="Base_Column_List">
id, order_no,
+ discount_amount
</sql>
# 2. 前端修改示例
javascript复制代码// tableColumns.js
export const orderColumns = [
{ prop: 'orderNo', label: '订单号' },
+ { prop: 'discountAmount', label: '优惠金额',
+ formatter: row => `¥${row.discountAmount.toFixed(2)}` }
]
# (三)代码优化建议
java复制代码// 优化前
public List<Order> findOrders(Date start, Date end) {
QueryWrapper<Order> wrapper = new QueryWrapper<>();
wrapper.ge("create_time", start);
wrapper.le("create_time", end);
return orderMapper.selectList(wrapper);
}
// 优化后
public PageResult<OrderVO> queryOrders(OrderQueryDTO query) {
Page<Order> page = PageKit.page(query);
LambdaQueryWrapper<Order> wrapper = Wrappers.lambdaQuery();
wrapper.between(Order::getCreateTime, query.getStartTime(), query.getEndTime())
.eq(Order::getCustId, ShiroKit.getCustId());
return new PageResult<>(orderMapper.selectPage(page, wrapper));
}
# 五、最佳实践
# (一)对话技巧
- STAR原则:
- Situation:当前代码文件/业务场景
- Task:需要完成的任务
- Action:建议的修改方案
- Result:期望达到的效果
- 渐进式沟通:
example
用户:需要优化订单查询接口性能
→ 分析现有SQL执行计划
→ 建议添加索引方案
→ 验证索引效果
→ 最终优化方案确认
# (二)版本控制策略
# 提交规范
<type>(<scope>): <subject>
// 示例
feat(order): 新增折扣金额字段
fix(payment): 修复金额计算精度问题
# (三)效能提升技巧
- 代码生成模板:
## ith-service-gen模板示例
#foreach($field in ${table.fields})
#if(${field.keyFlag})
#set($keyPropertyName=${field.propertyName})
#end
#end
@Data
@TableName("${table.name}")
public class ${entity} {
#foreach($field in ${table.fields})
@TableField("${field.name}")
private ${field.propertyType} ${field.propertyName};
#end
}
- 智能提交注释:
# 安装通义灵码插件后
git commit -m "$(curl -X POST https://ai-coder.com/generate-commit-msg -d 'diff')"
# 六、常见问题解决方案
# (一)安装问题排查表
现象 | 解决方案 |
---|---|
验证邮件无法显示验证码 | 使用163邮箱替代QQ邮箱 |
机器码限制报错 | 运行Python修改脚本+设置文件只读 |
插件加载失败 | 检查防火墙设置/使用代理 |
# (二)编码问题检查清单
- 是否所有DTO都继承SupperDTO?
- 是否所有数据库操作都包含custId条件?
- 是否存在魔法值需要常量替换?
- 是否100%覆盖方法注释?
- 异常处理是否使用BusinessException?
最新更新:2024年1月 • 版本v2.1 维护团队:AI辅助编程研究组 反馈渠道:ligp@tonghui.com