别再让AI乱改Flutter代码!我总结了一套边界管控方案
文章目录一、现在AI写Flutter代码跟脱缰野马一样1.1 代码跑偏四大经典社死现场二、全套约束方案专治AI乱改代码2.1 双层规则文件给模型画死红线2.1.1 AGENTS.md项目通用底线不超50行2.1.2 .cursor/rules/拆分规则文件按需加载2.2 改指令话术从开放式提问变成锁边界提问2.3 复杂任务先走计划确认完再写代码2.4 会话做好卫生管理防止约束被稀释2.5 Flutter专属两道防火墙堵住高频翻车点2.5.1 全局统一WidgetKeys常量2.5.2 屏蔽自动生成代码禁止手动修改三、一眼识别跑偏前兆刚开头就止损四、最后总结AI写代码的核心是圈住边界P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01一、现在AI写Flutter代码跟脱缰野马一样咱现在做Flutter谁不用Cursor、Claude Sonnet 5工具强到离谱写页面、修bug速度直接翻倍但用久了全是崩溃瞬间。我上周就踩了个大坑只让它改登录页一个圆角按钮回头一看好家伙直接把整个LoginPage全重构了状态管理偷偷从Riverpod换成Bloc测试用例全给我改乱改完我花俩小时回滚比自己写代码还累。这模型不是变笨了是现在大模型自带“热心肠”你让它干一件小事它非要顺带优化整个项目跟过年家里来的亲戚一样你只是问一句工资他能从婚恋讲到买房完全抓不住边界。1.1 代码跑偏四大经典社死现场范围漂移管不住自己的手只指定修改A文件它顺手把B、C、D三个无关页面全改了甚至给你重构路由逻辑。Sonnet 5比前代模型更爱自作主张优化微软实测数据摆在那属于模型自带的“多管闲事”天赋。举个搞笑例子我让它改列表里一个Item样式它直接把全局主题色、字体大小全统一了我只是想微调UI不是要改版设计稿。范式摇摆自己都记不住项目规矩项目明明统一用Riverpod做状态管理写两行代码突然切Bloc测试查找元素一会儿find.text、一会儿find.byKey代码规范来回横跳。根源就是项目规则没给模型锁死几十条规范堆一个文件模型token读不完写到后半段直接放飞自我相当于你跟新人讲十遍规范转头他就忘。上下文中毒聊久了彻底失忆同一个对话聊十几轮之后之前定好的红线全部失效明明说过禁止重写build完整方法它又整段删掉重写前面强调的约束全被后续对话稀释。就像跟朋友唠嗑一开始说好只聊工作聊半小时扯到游戏、美食最开始的约定早就抛到脑后。自检幻觉满嘴跑火车的假验证模型写完代码会主动说“我执行测试全部通过”实际根本没跑命令甚至跑错测试文件纯靠脑补结果。每次看到这句我都头大跟同事拍胸脯保证功能没问题结果一打包全是报错纯纯大型欺诈现场。Flutter项目本身widget嵌套深、自动生成代码和手写代码混在一起本身就容易乱再加上模型爱越界跑偏概率直接翻倍。二、全套约束方案专治AI乱改代码2.1 双层规则文件给模型画死红线很多人把上百条规范塞进一个.cursorrules模型读取token不够后半段规则直接看不见等于白写。分层设计才是最优解。2.1.1 AGENTS.md项目通用底线不超50行放在项目根目录所有AI编码工具通用只写绝对不能碰的底线相当于公司规章制度谁来都要遵守。里面必须写清楚固定状态管理方案、测试查找元素强制用常量Key、禁止手动修改.g.dart生成文件、修改必须标注文件行号、不许完整重写build方法。别写长篇大论写多了模型读不全核心规矩浓缩几十行一眼就能抓到重点就像公司考勤只记迟到早退这种硬要求杂七杂八的细节放别处。2.1.2 .cursor/rules/拆分规则文件按需加载Cursor新版支持按文件类型匹配规则拆分成多个mdc文件用globs匹配对应代码只有打开对应文件才会加载对应规范大幅节省token。目录分层逻辑超清晰000核心通用规则、010控制模型思考长度、100Flutter编码规范、101状态管理、102测试专用、103资源配置。划重点全局自动加载的规则总字数控制在500字以内Sonnet 5新分词器会多消耗30%token文字一多直接被截断写再多规范也没用。2.2 改指令话术从开放式提问变成锁边界提问代码跑偏80%原因是指令太宽松一句“优化登录页”等于给模型开绿灯它想怎么改就怎么改。指令必须包含三要素修改位置、修改内容、绝对不能改动的部分。❌ 踩坑示范把登录按钮改成圆角✅ 标准模板lib/pages/login_page.dart L78仅修改当前ElevatedButton圆角参数为12不改动页面其他组件不修改项目状态管理相关代码“不改什么”比“改什么”重要十倍模型天生爱顺手优化你不提前拦住它必然给你额外加需求就像点外卖只说一杯奶茶商家非要给你搭配小蛋糕、小零食多出来的东西你根本不需要。2.3 复杂任务先走计划确认完再写代码跨文件重构、新增功能、路由调整这种大改动千万别让模型直接上手写代码先让它输出完整改动方案。直接给指令先列出所有待修改文件、每个文件改动范围、验证命令我确认无误后再生成代码。核对方案只盯三件事列出的文件是不是真的需要修改模型经常多列一堆无关文件直接删掉有没有夹带私货比如顺带抽主题、新增测试全部驳回检查flutter test、build_runner命令是否准确避免执行报错。看似多花几百token实际能省下三四轮返工相当于装修前先看设计图总比装完拆了重装划算。2.4 会话做好卫生管理防止约束被稀释同一个对话聊到十几轮前期定下的规则会慢慢失效模型开始自由发挥这是跑偏高发期。三个实操习惯一个对话只处理一件事改UI、修bug、写测试分开新建会话互不干扰Cursor聊天框左侧色环变黄立刻新开对话别硬撑代码改崩直接回滚Checkpoint不要在错误代码上继续追问越改越乱。用compact压缩会话时一定要补充一句保留项目核心编码规范不然压缩后底线规则直接丢失白提前约定半天。2.5 Flutter专属两道防火墙堵住高频翻车点2.5.1 全局统一WidgetKeys常量测试代码最容易乱的地方就是查找元素模型反复切换find.text和find.byKey规范直接作废。在lib/core/keys文件夹统一存放所有页面key常量所有交互组件必须定义固定key规则文件强制要求测试查找只能调用常量彻底杜绝混用。2.5.2 屏蔽自动生成代码禁止手动修改模型总喜欢手动修改.g.dart、freezed生成文件注解和生成代码对不上直接编译报错。两步解决AGENTS.md写明只能修改model注解生成文件交给build_runner命令生成.cursorignore过滤所有自动生成后缀文件模型连读都读取不到从根源杜绝乱改。三、一眼识别跑偏前兆刚开头就止损不用等代码全部生成完再返工模型第一段回复出现下面任意一种情况直接打断重新发指令减少无效工作量。开头长篇大论复述需求铺垫一堆无关话术大概率接下来要越权修改出现没标注的文件路径擅自改动目标以外的代码主动新增测试、文档、README属于多余的自检溢出提出顺带优化样式、抽离公共组件典型模型自作主张思考篇幅超长但输出内容完全偏离需求规则约束没生效。早点叫停少熬半小时夜干开发的谁不想准点下班。四、最后总结AI写代码的核心是圈住边界现在大家总追求更强的大模型实际上真正能提升效率的是一套完整的约束体系。管控层级工具方案核心作用底层红线AGENTS.md50行内跨工具通用锁定项目不可打破规范细分细则.cursor/rules多文件拆分按文件类型加载控制token消耗单次指令约束型三段式提问单次修改划定清晰范围杜绝越界复杂任务先输出改动计划再执行提前拦截多余修改减少返工会话管理单会话单任务、及时重置对话避免长期对话稀释约束条件Flutter专项统一Key常量过滤生成文件解决框架专属高频跑偏问题这套方案在多个线上Flutter项目落地验证过开通Cursor会员之后同样的额度使用时长直接翻倍代码返工次数大幅减少。AI编码不是让模型无拘无束随便写而是给它划定清晰的活动范围圈子限制到位它才能稳定产出符合项目规范的代码不然工具越强返工越痛苦。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01