2025/12/27 10:49:46
网站建设
项目流程
怎么做邮箱网站,网站添加文章之后更新缓存访问网站就需要输入账号密码,h5页面怎么制作报名页面,ai绘画软件免费本文系统介绍了如何与AI协作编程#xff0c;包括构建完整上下文、合理任务分解、分层记忆管理和AI约束等核心方法。通过应用级记忆结构(基础记忆、功能模块记忆、需求迭代记忆)和持续反馈机制#xff0c;让AI成为高效的编程助手。文章还分享了真实案例和最新工具对比#xf…本文系统介绍了如何与AI协作编程包括构建完整上下文、合理任务分解、分层记忆管理和AI约束等核心方法。通过应用级记忆结构(基础记忆、功能模块记忆、需求迭代记忆)和持续反馈机制让AI成为高效的编程助手。文章还分享了真实案例和最新工具对比帮助开发者掌握AI协作编程的关键技能提升开发效率和质量。一、如何充分使用模型能力关键要点完整精确聚焦的上下文是充分使用模型能力的关键。在这个认知之下思考如何系统性的构建满足这个条件的上下文合理的任务分解本质上是在有限上下文宽度和注意力的约束下怎么恰当的把握任务的复杂度边界让模型能够在一个聚焦的任务上作业。完整的背景信息在一个真实的项目中写代码需要理解系统架构和规范、了解业务需求、清楚关键代码实现路径、知道如何修改代码满足新的需求完整了解这些背景信息才能真正的写代码这对于人类和AI来说是一样的。精确的指令描述使用能够让AI更容易理解的方式清晰无歧义的表达要完成的任务如强调语法**、mermaid画图等。有效的验证和反馈信息从我们表达出来-AI理解-生成代码每一层都会有损失而且往往我们自己也会遗漏一些细节这一步的关键是自己要根据AI的产出验证和思考将错漏的内容反馈AI自行反思、纠偏。这4个关键点的应用中还涉及到尺度的把握(信息的细致程度)而这个尺度会随着模型的能力提升而变化。如早期的模型需要非常详尽的内容输入当模型能力提升后可以自主从代码中获得足够的背景知识。二、AI协作编程的方法2.1. 应用级记忆结构关键要点像设计系统架构一样设计上下文架构暗合近期讨论比较多的上下文工程(context engineering)的概念。在这个认知之下思考如何高效、准确的维护这个上下文工程第一层-应用基础记忆是应用比较基础的架构、技术栈、规范、通用工具等长期稳定记忆是与AI交互的System Prompt就像系统架构中的基础组件。第二层-功能模块记忆是对某个具体功能的完整描述包括链路图、代码入口、关键逻辑、依赖关系等相对稳定的功能记忆是与AI交互关键背景知识就像系统架构中由基础组件业务需求组成的具体功能。第三层-需求迭代记忆是AI基于项目迭代中业务需求功能模块背景知识项目系统架构产出的技术方案包括明确的业务需求、代码改造范围、约束条件、边界情况等是作为提供给AI进行代码生成的最终输入。2.2. AI辅助记忆维护记忆维护关键点向AI提供的输入内容和产出验收本身也可以由AI来辅助生成和验证同时记忆的维护是渐进的可跟随实际项目逐步完善。应用基础记忆构建一般AI编程工具都有生成项目顶层记忆文档的功能如Cursor的/Generate Cursor Rules、ClaudeCode的/init在某个应用没有任何记忆时可以作为冷启动的快速建立记忆的方法生成初始记忆后可以根据自己的要求让AI辅助调整。功能模块记忆构建由人类提供提供简洁的功能描述和关键代码入口让AI自动根据代码入口作为线索去检索建立完整链路的记忆文档再根据自己的要求让AI辅助调整。需求迭代记忆构建引用与需求相关的背景知识记忆并且以Markdown格式描述本次需求内容要求其生成技术方案就产出了需求迭代记忆。需求开发完成后反向更新功能模块记忆。记忆文档的规范建立一些基础的记忆文档规范如应用记忆保持整洁、功能模块记忆需要有链路图、需求迭代记忆需要建立在指定目录等。要求AI辅助检查和反思每一层的记忆文档生成后都可以要求AI进行自我检查和反思是否有错漏的地方。通用的记忆格式统一以.md作为记忆格式未来使用任何AI编程工具都可以无缝切换。(cursor的.mdc本质上也是.md)总结核心是系统性的分层分模块管理上下文最大程度让AI辅助维护上下文每次变更的知识负担就可以大幅度下降(输入具体需求即可)配合渐进式的更新维护使用AI编程工具的效率正循环就形成了。这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】2.2.1. 记忆示例功能模块基于、需求迭代记忆的示例涉及到敏感业务代码不再此处展示项目结构和技术栈--- description: globs: alwaysApply: true --- # AE评测系统开发指南 ## 项目结构 - [demo-start](mdc:demo-start): 项目启动模块**这个模块中没有业务逻辑, 在我没有明确指令是不要修改此模块中的代码**。 - [demo-api](mdc:demo-api): HSF API接口定义模块, **对于Demo系统的开发只关心 [demo](mdc:demo-api/src/main/java/com/aliexpress/demo) package下的内容, 其他package内容忽略** - [demo/api](mdc:demo-api/src/main/java/com/aliexpress/demo/api): Demo系统的HSF API的interface均在这个package下定义, 命名后缀为Service - [demo/model](mdc:demo-api/src/main/java/com/aliexpress/demo/model): Demo系统的HSF API的model均保存在这个package, 命名后缀为Request、DTO - [demo/common](mdc:demo-api/src/main/java/com/aliexpress/demo/common): Demo系统的HSF API的enum均保存在这个package下, 命名后缀为Enum - [demo/base](mdc:demo-api/src/main/java/com/aliexpress/demo/base): Demo系统的HSF API的model的基类均保存在这个package下 - [demo-biz](mdc:demo-biz): 业务逻辑实现模块, **对于Demo系统的开发只关心 [demo](mdc:demo-api/src/main/java/com/aliexpress/biz/demo) package下的内容, 其他package内容忽略** - [demo/api](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/api): Demo系统的HSF API的实现类均在这个package下定义, 命名后缀为ServiceImpl - [demo/api/converter](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/api/converter): Demo系统的HSF API的实现类使用的Converter类均保存在这个package下, 命名后缀为Converter - [demo/api/validate](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/api/validate): Demo系统的HSF API的实现类使用的校验类均保存在这个package下, 命名后缀为Validate - [demo/common](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/common): Demo系统的内部的公共类均保存在这个package下, 命名后缀为Enum、Constant - [demo/config](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/config): Demo系统的内部的Diamond、HSF配置类均保存在这个package下, 命名后缀为Config、Configuration - [demo/consumer](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/consumer): Demo系统的MetaQ Consumer类均保存在这个package下, 命名后缀为Consumer(消费MetaQ) - [demo/consumer/listener](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/consumer/listener): Demo系统的Consumer的消费逻辑实现类均保存在这个package下, 命名后缀为Listener(实现消费逻辑) - [demo/demouator](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/demouator): Demo系统的评估器实现类均保存在这个package下, 命名后缀为demouator, **此处的代码相对比较稳定在我没有明确指令时不要自行修改** - [demo/executor](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/executor): Demo系统的通用业务逻辑实现类均保存在这个package下, 命名后缀为Executor - [demo/invoker](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/invoker): Demo系统的调用AI应用的通用封装类均保存在这个package下, **此处的代码相对比较稳定在我没有明确指令时不要自行修改** - [demo/task](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/task): Demo系统的任务提交和任务执行的的通用封装类均保存在这个package下, **此处的代码相对比较稳定在我没有明确指令时不要自行修改** - [demo/util](mdc:demo-biz/src/main/java/com/aliexpress/biz/demo/util): Demo系统的工具类均保存在这个package下, **此处的代码相对比较稳定在我没有明确指令时不要自行修改** - [demo-core](mdc:demo-core): 核心功能模块, 包含基础设施和通用组件, **对于Demo系统的开发, 任何时候都不需要关注这个模块中的内容** - [demo-job](mdc:demo-job): 定时任务模块, **对于Demo系统的开发, 任何时候都不需要关注这个模块中的内容** - [demo-workflow](mdc:demo-workflow): 工作流相关模块, **对于Demo系统的开发, 任何时候都不需要关注这个模块中的内容** - [demo-infrastructure](mdc:demo-infrastructure): 基础设施模块, 包含数据访问、外部服务集成等, **对于Demo系统的开发, 主要关心其中操作数据库的相关代码** - [dao/demo](mdc:demo-infrastructure/src/main/java/com/aliexpress/infrastructure/dao/demo): Demo系统的Mybatis-Plus的Mapper类均保存在这个package下后缀为Mapper - [model/demo](mdc:demo-infrastructure/src/main/java/com/aliexpress/infrastructure/model/demo): Demo系统的Mybatis-Plus的实体类均保存在这个package下其中PO后缀的是与数据库表直接映射的实体类其中/model文件夹下的类是和业务层交互的实体类 - [model/convert](mdc:demo-infrastructure/src/main/java/com/aliexpress/infrastructure/model/convert): Demo系统的Mybatis-Plus的PO与Model之间的转换类均保存在这个package下后缀为Converter - [repository](mdc:demo-infrastructure/src/main/java/com/aliexpress/infrastructure/repository): Demo系统的数据库操作类均保存在这个package下接口后缀为Repository实现类后缀为RepositoryImpl核心的作用是调用Mapper与数据库操作、转换PO与Model - [demo-provider](mdc:demo-provider): 服务提供者模块 - [hsf/provider](mdc:demo-provider/src/main/java/com/aliexpress/provider/hsf/provider): 增加新的HSF服务Provider需要在 [HsfProviderConfig.java](mdc:demo-provider/src/main/java/com/aliexpress/provider/hsf/provider/HsfProviderConfig.java)类中增加配置 - [demo-sdk](mdc:demo-sdk): Demo系统SDK工具模块**此处的代码相对比较稳定在我没有明确指令时不要自行修改** ## 主要技术栈 - Pandora Boot: 基于Spring Boot的阿里内部框架 - HSF: 阿里内部的RPC框架 - Diamond: 阿里内部的配置中心 - Tair: 阿里内部的缓存服务 - MetaQ: 阿里内部的消息服务 - MyBatis-Plus: 轻量级的ORM框架DAO层代码规范--- description: 根据创建表的SQL生成操作数据库层增删改查代码时引用此文件 globs: alwaysApply: false --- ## 操作数据库编码规范 #### 操作DB框架 1. 开发框架使用MyBatis-Plus进行编码 2. 调用逻辑上层通过注入的方式调用Repository的实现在Repository的实现的实现中调用Mapper调用Mapper后返回的对象是PO再通过Converter转换成Model后返回为上层调用方。 3. 数据类型的选择时间字段使用java.util.Date类型 4. 使用MyBatis-Plus方法注意事项注意不要调用deprecated的方法 5. Repository层的删除方法统一使用逻辑删除逻辑删除字段是is_deleted 6. Repository层需操作时需要附加对当前环境的处理调用 [EnvUtil.java](mdc:task-infrastructure/src/main/java/com/aliexpress/qa/task/infrastructure/util/EnvUtil.java)的getEnv().getCode()方法 7. Repository层的的分页方法调用MyBatis-Plus的selectPage方法 #### DAO层PO 1. DAO层PO的命名规范为${TableName}PO 2. DAO层PO的存放目录[model](mdc:task-infrastructure/src/main/java/com/aliexpress/qa/task/infrastructure/model) #### DAO层Mapper 1. DAO层Mapper命名规范为${TableName}Mapper 2. DAO层Mapper的存放目录[dao](mdc:task-infrastructure/src/main/java/com/aliexpress/qa/task/infrastructure/dao) #### Repository层 1. Repository层interface命名规范为${TableName}Repository 2. Repository层实现命名规范为${TableName}RepositoryImpl 3. Repository层Model命名规范为${TableName}Model 4. Repository层interface的存放目录[repository](mdc:task-infrastructure/src/main/java/com/aliexpress/qa/task/infrastructure/repository) 5. Repository层实现的存放目录[repositoryimpl](mdc:task-infrastructure/src/main/java/com/aliexpress/qa/task/infrastructure/repository/impl) 6. Repository层Model存放目录[model](mdc:task-infrastructure/src/main/java/com/aliexpress/qa/task/infrastructure/model) #### Converter层 1. Converter层命名规范位${TableName}Converter 2. Converter层的存放目录[convert](mdc:task-infrastructure/src/main/java/com/aliexpress/qa/task/infrastructure/model/convert) 3. Converter代码规范使用字段进行映射禁止使用json序列化、BeanUtils.copyProperties等方式 ## 参考代码 1. DAO层PO参考代码 java import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; ${必要的引用} /** * author chigong.zxn */ Data Builder TableName(value ${tableName}) AllArgsConstructor NoArgsConstructor publicclass ${TableName}PO { ${注释} ${只可以使用包装类型禁止使用基础类型} ${columnName} }DAO层Mapper参考代码【注意不需要增加增删改查方法MyBatis-Plus已经默认通过继承BaseMapper提供】importcom.aliexpress.qa.task.infrastructure.model.eval.${TableName}PO;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importorg.apache.ibatis.annotations.Mapper;/** * author chigong.zxn */Mapperpublicinterface${TableName}MapperextendsBaseMapper${TableName}PO{}Repository层interface参考代码【注意生成基础的增删改查方法】importcom.aliexpress.qa.task.infrastructure.model.eval.${TableName}PO;importcom.aliexpress.qa.task.infrastructure.model.eval.${TableName}Model;/** * author chigong.zxn */Mapperpublicinterface${TableName}Repository{${注释}${增删改查方法}}Repository层实现参考代码【注意继承Repository接口实现基础增删改查方法调用Mapper生成基础的增删改查方法】importcom.aliexpress.qa.task.infrastructure.model.eval.${TableName}PO;importcom.aliexpress.qa.task.infrastructure.model.eval.${TableName}Model;/** * author chigong.zxn */Mapperpublicinterface${TableName}RepositoryImplimplements${TableName}Repository{${注释}${实现Repository增删改查方法}}Repository层Model参考代码importlombok.AllArgsConstructor;importlombok.Builder;importlombok.Data;importlombok.NoArgsConstructor;${必要的引用}/** * author chigong.zxn */DataBuilderAllArgsConstructorNoArgsConstructorpublicclass ${TableName}Model{${注释}${只可以使用包装类型禁止使用基础类型}${columnName}}Converter层参考代码【注意生成2个静态方法PO转Model、Model转PO】importcom.aliexpress.qa.task.infrastructure.model.eval.${TableName}PO;importcom.aliexpress.qa.task.infrastructure.model.eval.${TableName}Model;/** * author chigong.zxn */publicclass ${TableName}Converter{${注释}${PO转换为Model}${注释}${Model转换为PO}}API层代码规范 code-snippet__js --- description: 增加HSF接口时引用此文件 globs: alwaysApply: false --- ## API开发规范 ### 服务实现 * 验证器存放目录[validate](mdc:task-biz/src/main/java/com/aliexpress/qa/task/biz/eval/api/) * 实现要求必须实现服务验证器 * 服务实现代码参考 java import com.alibaba.fastjson.JSON; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; Service publicclass ${服务名}ServiceImpl implements ${服务名}Service { privatestaticfinal Logger logger LoggerFactory.getLogger(${服务名}ServiceImpl.class); Autowired private ${服务校验器}Validate validate; // 如果需要调用其他bean也可以在此处引入 // 如 // Autowired // private EvalDatasetDetailRepository evalDatasetDetailRepository; Override public ${服务方法出参} ${服务方法名}(${服务方法请求体} request) { logger.info(${服务名}Service.${服务方法名} request:{}, JSON.toJSONString(request)); ${服务方法出参} response new ${服务方法出参}(); try { String validateMsg validate.${服务方法校验器}Validate(request); if (StringUtils.isNotBlank(validateMsg)) { return Response.fail(ErrorCode.PARAM_ERROR.name(), validateMsg); } // 在此处实现业务逻辑 ${业务逻辑} } catch (Exception e) { logger.error(${服务名}Service.${服务方法名} error, e); response Response.fail(ErrorCode.SYSTEM_ERROR.name(), e.getMessage()); } logger.info(${服务名}Service.${服务方法名} response:{}, response); return response; } }服务验证器验证器存放目录validate验证器代码参考验证失败则返回失败原因字符串验证成功则返回空字符串importcom.aliexpress.qa.task.biz.eval.util.ValidateUtil;importorg.springframework.stereotype.Component;Componentpublicclass ${服务名}Validate{// 如果需要调用其他bean也可以在此处引入// 如// Autowired// private EvalDatasetDetailRepository evalDatasetDetailRepository;publicString${服务方法名}Validate(${服务方法请求体}request){// 请求体不能为空if(requestnull){return请求参数不能为空;}// 基础校验使用ValidateUtil校验net.sf.oval annotationStringvalidateMsgValidateUtil.validate(request);if(StringUtils.isNotBlank(validateMsg)){returnvalidateMsg;}// 写明校验注释#{文档要求的其他校验逻辑}// 返回空字符串则校验成功returnStringUtils.EMPTY;}}分布式锁使用服务实现代码参考importcom.alibaba.fastjson.JSON;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Service;importcom.aliexpress.qa.task.infrastructure.util.lock.DistributedLockUtil;Servicepublicclass ${服务名}ServiceImplimplements${服务名}Service{privatestaticfinalLoggerloggerLoggerFactory.getLogger(${服务名}ServiceImpl.class);Autowiredprivate${服务校验器}Validatevalidate;AutowiredprivateDistributedLockUtildistributedLockUtil;// 如果需要调用其他bean也可以在此处引入// 如// Autowired// private EvalDatasetDetailRepository evalDatasetDetailRepository;Overridepublic${服务方法出参}${服务方法名}(${服务方法请求体}request){logger.info(${服务名}Service.${服务方法名} request:{},JSON.toJSONString(request));${服务方法出参}responsenew${服务方法出参}();try{StringvalidateMsgvalidate.${服务方法校验器}Validate(request);if(StringUtils.isNotBlank(validateMsg)){returnResponse.fail(ErrorCode.PARAM_ERROR.name(),validateMsg);}// 根据业务逻辑要求构建lockKeyStringlockKey...;// 分布式锁避免并发调度DistributedLocklockdistributedLockUtil.getLock(lockKey);// 获取分布式锁try{lock.tryLock(1000L);}catch(GetLockErrorExceptionlockException){returnResponse.fail(ErrorCode.LOCK_ERROR.name(),ErrorCode.LOCK_ERROR.getMessage());}try{// 在此处实现业务逻辑${业务逻辑}}finally{lock.unlock();}}catch(Exceptione){logger.error(${服务名}Service.${服务方法名} error,e);responseResponse.fail(ErrorCode.SYSTEM_ERROR.name(),e.getMessage());}logger.info(${服务名}Service.${服务方法名} response:{},response);returnresponse;}}单元测试规范 code-snippet__js --- description: globs: alwaysApply: false --- # 单元测试指南 ## 测试框架 - JUnit Jupiter 5.9.2 - Mockito 4.11.0 - JUnit Platform 1.9.2 ## 严格执行 - 禁止改变被测试方法的任何行为 - private方法测试: 使用反射的方式测试private方法, 禁止改变被测试方法的private java BeforeEach voidsetUp() throws NoSuchMethodException { // 获取私有方法 Method privateMethod TargetClass.class.getDeclaredMethod(privateMethodName, ParameterType1.class, ParameterType2.class); privateMethod.setAccessible(true); } Test voidprivateMethodName_Should_ExpectedBehavior_When_StateUnderTest() throws Exception { // given // when Object result privateMethod.invoke(targetObject, arg1, arg2); // then // assertions }静态方法Mock: 使用MockedStatic方式staticfinal字段处理: 避免直接测试或mock staticfinal字段如日志记录器专注于测试核心业务逻辑和返回值Mybatis-Plus初始化实体类元数据: mock Mybatis-Plus的LambdaUpdateWrapper、LambdaQueryWrapper时在BeforeEach中使用TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ),${实体类名}PO.class);初始化实体类元数据这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】测试命名规范使用Test注解标记测试方法测试方法名应该清晰表达测试目的并且测试方法名必须包含被测试的方法名格式${被测试方法名}_Should_ExpectedBehavior_When_StateUnderTest示例buildQuery_Should_ReturnQueryWithEntrustBizId_When_UserHasEntrustPermission测试最佳实践Mock策略优先测试核心业务逻辑避免过度依赖基础设施组件的验证对于不可变的静态组件如staticfinal字段采用行为验证而非状态验证当无法直接mock某个组件时考虑通过测试输出结果来间接验证行为Mock对象使用: 只能对mock()创建的对象使用when()进行stub禁止对真实对象如通过builder模式创建的对象使用when()测试重点专注于方法的返回值、异常抛出、状态变更等核心行为避免测试框架细节、日志输出等非核心功能保持测试的简洁性和可维护性模块功能文档规范 code-snippet__js --- description: globs: alwaysApply: false --- ## 生成记忆 - 创建记忆文件夹记忆文件统一存放在 [.cursor/memory](mdc:.cursor/memory) 如果我提供了指定了文件目录则按照我提供的文件夹存放如果我没提供则根据需要梳理的链路自动起名创建文件夹 - 创建记忆文件如果我提供了名字则按照我提供的名字创建如果我没有提供则根据需要梳理的链路自动创建文件已.md格式的文件维护记忆。 - 记忆文件内容要求必须包含一个完整的链路图并且将必要的代码入口、核心的代码逻辑放在记忆文档中。技术方案文档规范--- description: globs: alwaysApply: false --- ## 生成开发任务 - 创建任务文件夹当我要求你创建一个开发任务时你需要根据当前分支的名称在 [.cursor/task](mdc:.cursor/task) 文件中查找是否有对应任务的文件如果没有则创建一个任务文件夹 - 创建任务文件在以当前分支命名的文件夹中创建当前任务的详细描述文件使用.md的文件格式生成文档内容文件名根据我的要求自动生成一个中文名 ## 文档内容规范 - 文档结构保持简洁专注技术方案。在没有明确要求时不包含开发计划、风险控制、上线计划等管理内容 - 测试要求单元测试要求覆盖率达到80%以上 - 尽量简洁在满足要求的情况下尽量简洁如果有需要补充的内容我会明确的向你表达 ## 代码设计规范 - 枚举使用新增字符串类型字段时优先考虑枚举定义避免硬编码 - 历史兼容新增字段时考虑历史数据兼容性提供默认值处理2.3. 代码生成与测试平衡效率和质量核心是控制单个任务不要过大当下过大的任务质量和验证过程都会失控。拆解子任务分步执行和AI共同完成技术方案后可以要求其将技术方案分成多个子任务然后子任务分步执行、验证、调整。让AI按照技术方案写测试代码确保核心场景单元测试都能覆盖到避免我们成为AI的填坑奴隶。更进一步是让AI生成集成测试、端到端测试(尝试中)。AI自Review代码根据技术方案生成代码之后可以要求AI根据技术方案检查下当前的代码变更是否有错漏的。对AI的约束模型为了获得奖励有时候会用作弊的方式假装满足用户的要求作弊问题当AI反复多次无法完成任务时就会出现作弊现象比如硬编码绕开测试、模型自己直接给出结果等。可以在规则中明确禁止禁止绕开需求直接生成结果如无法完成时可以明确表示无法完成。超额输出问题无论是技术方案还是代码都存在超额输出的问题AI可能会输出一些不着边际的方案或代码可以将这个问题尽量在技术方案阶段限制住在生成技术方案时要求尽量简洁、专注技术方案不必生成工期之类的内容在生成代码时要求严格按照技术方案生成代码。多任务并行开发Cursor本身支持多任务并行开发的能力Cursor多子任务将技术方案分成多个子任务后可以在CursorIDE中同一个项目开启多个子任务并行开发每个子任务分别验证。Cursor Background Agent异步编程Agent在云端环境启动虚拟环境执行开发任务但是需要上传代码到Cursor的云端环境在团队版的Cursor中强制开启因素模式无法使用Background Agent。开发过程持续更新记忆类似上文提到的记忆是逐步完善的不是一蹴而就的需要在过程中持续完善记忆。记忆与代码不匹配无论是哪一层的记忆如果开发过程中发现有缺少或不恰当的可以直接要求AI根据特定代码修正记忆文档。经验总结回写记忆如果在开发过程中发现有一些规范或场景在规则中没考虑到的可以完成一个子任务后要求AI总结经验并且使用简洁的方式回写到对应记忆文档中。2.3.1. 对AI的约束示例AI作弊的CASE在一个JSON转HTML的任务中cursor在多轮循环无法解决问题之后直接生成了一个html的结果文件给我绕开了使用代码生成html的要求。严格按照要求执行示例- 禁止作弊对于生产代码和测试代码的生成需要完全遵循框架和需求的要求**禁止通过硬编码的方式直接生成结果或绕开测试等行为**。 - 严格按照要求写代码如果我提供了开发任务的.md文档请严格按照文档要求生成代码不要擅自发挥。 - 保持简洁专注按照我的需求生成技术方案。在没有明确要求时不包含开发计划、风险控制、上线计划等冗余内容2.4. 工程师的基础能力对模型能力的动态认知清晰的认知当前AI的能力特征和极限并且随着模型能力的提升能够快速的形成对新模型的新认知改变自己的行为模式获得更高的效率、质量。管理多个AI编程工具通过上下文工程、AI并行开发协作方法驱动多个AI编程工具放大技术杠杆的效果。如Cursor多子任务、Cursor Background Agent、Claude Code多子Agent实例等并行开发手段。软件架构设计能力AI已经能帮助我们很好的处理细节但是在企业级复杂系统中AI当下依然是个执行角色我们需要作为软件系统的主导者、控制者、设计者让系统在预期之内演进。(自己能够处理细节的能力依然重要)业务理解与表达当AI已经能够处理很多的技术细节时深入的产品业务理解能力和清晰的表达能力未来是新的编程技巧。三、真实的使用案例3.1. 初始记忆维护使用示例Cursor规则描述Cursor自动生成 应用基础记忆输入指令/Generate Cursor Rules要求生成特定的规则基于应用基础记忆 结合代码入口生成 功能模块记忆文档3.2. 技术方案生成使用示例基于功能 模块记忆 生成迭代 技术方案3.3. 代码开发与测试使用示例执行开发任务执行开发任务复杂任务拆解输入指令code-snippet__js 将这个方案拆分为多个子任务并且细化到可供Cursor执行的程度。任务过程中反思同项目并行开发Playwright MCP 端到端测试基础处于不可用状态执行了5~10分钟无法处理日期组件等复杂组件。四、AI编程领域的最新趋势4.1. 编程工具对比Cursor依然是当下实用性和性价比较高的编程工具但Claude Code的高任务完成度和其形态的高可玩性正在快速蚕食Cursor的用户市场。以Devin为代表的端到端异步Agent由于其较低的任务完成度已经逐渐失去了用户的信任处在黑暗中挣扎的阶段。(此处仅对比当下有代表性的2款热门工具)近期Cursor的订阅模式的改变(Pro不限量)也可以侧面感受到来自ClaudeCode的竞争压力从能力层面上ClaudeCode目前更强一些但是Cursor放开Pro订阅的使用限制是从成本和用量上拉开优势进行错位竞争先留住用户再追赶能力。(个人理解)4.2. ClaudeCode使用体验特点原生任务规划能力Claude4任务完成度比Cursor更高但是费用也更高。费用费用高主要体现在20每个月的订阅版本无法作为主力开发其额度 5 小时刷新一次但是 1 个额度周期只够开发 1 小时 ( 真实使用 ) 达到额度后要等下一个 5 小时周期。解决额度问题需要升级每月 100 每个月的订阅版本无法作为主力开发其额度5小时刷新一次但是1个额度周期只够开发1小时(真实使用)达到额度后要等下一个5小时周期。解决额度问题需要升级每月100每个月的订阅版本无法作为主力开发其额度5小时刷新一次但是1个额度周期只够开发1小时(真实使用)达到额度后要等下一个5小时周期。解决额度问题需要升级每月100/200的 M A X 版本或者使用 A P I 访问。不过 A P I 的费用更加高昂使用 c l a u d e 4 s o n n e t 1 个任务要花掉 2 的MAX版本或者使用API访问。不过API的费用更加高昂使用claude 4 sonnet1个任务要花掉2的MAX版本或者使用API访问。不过API的费用更加高昂使用claude4sonnet1个任务要花掉2(opus5倍价格)。并行开发Claude Code原生集成Agent功能在任务分解后可以让其自行启动多个子Agent并行开发由Claude Code统一管理。解决复杂问题在一个真实需求中需要将格式不固定的JSON转成HTML在Cursor使用了100次的额度、2-3个小时、尝试了3个方案依然无法符合要求。Claude Code沟通了3-4次完成了可运行的MVP10次左右达到预期效果。无监督运行时长Claude Code跳过权限提示后(–dangerously-skip-permissions)在无额度限制的情况下连续运行的时间远超过Cursor社区有连续运行数个小时的例子。(Cursor的连续工作最大限制是25个tools)无监督自主开发的Agent是否具备条件强如Claude Code虽然持续执行的时间更长但是依然很难做到长期无监督的运行。核心的问题是前期输入信息的完备性和后期的代码验收依然是个很大的挑战执行任务的复杂度越高、无监督时间越长结果越容易失控。使用示例安装和启动code-snippet__js # 安装(需要NPM) npm install -g anthropic-ai/claude-code # 进入项目目录 cd ~/your-project # 启动 claude启动视图使用了claude-code-router介入openrouter api的界面订阅用户稍有区别运行模式创建技术方案拆解子任务并行开发达到限额ClaudeCode 工具集ClaudeCode 解决真实问题五、如何学习AI大模型我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】第一阶段从大模型系统设计入手讲解大模型的主要方法第二阶段在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用第三阶段大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统第四阶段大模型知识库应用开发以LangChain框架为例构建物流行业咨询智能问答系统第五阶段大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型第六阶段以SD多模态大模型为主搭建了文生图小程序案例第七阶段以大模型平台应用与开发为主通过星火大模型文心大模型等成熟大模型构建大模型行业应用。学会后的收获• 基于大模型全栈工程实现前端、后端、产品经理、设计、数据分析等通过这门课可获得不同能力• 能够利用大模型解决相关实际项目需求 大数据时代越来越多的企业和机构需要处理海量数据利用大模型技术可以更好地处理这些数据提高数据分析和决策的准确性。因此掌握大模型应用开发技能可以让程序员更好地应对实际项目需求• 基于大模型和企业数据AI应用开发实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能 学会Fine-tuning垂直训练大模型数据准备、数据蒸馏、大模型部署一站式掌握• 能够完成时下热门大模型垂直领域模型训练能力提高程序员的编码能力 大模型应用开发需要掌握机器学习算法、深度学习框架等技术这些技术的掌握可以提高程序员的编码能力和分析能力让程序员更加熟练地编写高质量的代码。1.AI大模型学习路线图2.100套AI大模型商业化落地方案3.100集大模型视频教程4.200本大模型PDF书籍5.LLM面试题合集6.AI产品经理资源合集获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】