零基础AI编程实战:一个月四项目,我总结出Agent纪律系统
1. 一个月从零到四个项目我到底经历了什么先把背景交代清楚。我此前没有任何编程基础HTML、CSS、JavaScript这些词对我来说就是天书。一个月前我决定用AI编程工具从零开始做项目目标很明确不学语法、不啃教材直接上手做东西。一个月下来我完成了四个项目从最简单的静态页面到带后端逻辑的小工具全部跑通。但真正让我觉得有价值的不是这四个项目本身而是我在过程中反复踩坑之后把那些教训固化成了一个“agent项目纪律系统”。这个系统说白了就是一套规则和流程用来约束AI编程助手的行为让它在帮我写代码的时候不跑偏、不偷懒、不胡编。你可能觉得这听起来有点抽象我举个例子你就明白了。刚开始用AI编程的时候我让它帮我写一个登录页面它三秒钟就吐出来两百行代码看起来特别专业。结果我一运行报错。我问它怎么回事它说“抱歉我漏了一个依赖”然后补了一段。再运行又报错。再问它又说“抱歉我之前的逻辑有问题”。来回折腾了七八次一个简单的登录页面搞了一下午。后来我才意识到问题不在AI的能力而在于我没有给它设定清晰的纪律。它就像一个能力很强但完全没有规矩的实习生你不告诉它边界在哪、验收标准是什么、遇到不确定的情况该怎么处理它就会自由发挥而自由发挥的结果往往是一团乱麻。所以这篇文章我想聊的不是“AI编程有多神奇”而是“怎么让AI编程真正可控”。我会把四个项目的实战过程拆开讲重点放在我踩过的坑、我总结的纪律规则、以及这套agent项目纪律系统到底怎么运作。如果你也是零基础想用AI做项目或者你已经会用AI写代码但总觉得效率不高、返工太多那这篇内容应该能帮你省下不少时间。2. 四个项目的真实推进过程与关键转折2.1 第一个项目静态个人主页让我看清了AI的“过度自信”第一个项目我选了一个静态个人主页理由很简单不需要后端、不需要数据库、不需要复杂逻辑就是一个展示页面。我想着这总该简单了吧。我用的工具是Cursor当时选它是因为网上讨论度很高而且它对新手比较友好界面直观不需要配置太多东西。我打开Cursor新建了一个文件夹然后在对话框里输入“帮我做一个个人主页包含头像、简介、技能列表和联系方式风格简洁现代。”AI的反应非常快大概五秒钟就生成了完整的HTML、CSS和JavaScript代码。我一看代码结构很清晰甚至还加了响应式设计。我当时觉得这也太爽了吧。然后我把它保存成index.html双击打开。页面确实出来了但头像位置是空的技能列表的图标全部显示为方块联系方式点击没反应。我把问题反馈给AI它说“抱歉我使用了外部图标库你需要引入对应的CDN链接”。我说那你加上。它加上了。再打开图标出来了但布局乱了头像跑到了页面底部。这个过程重复了大概五六次每次都是修好一个地方另一个地方出问题。最后我实在受不了了就自己打开代码一行一行看。虽然我不懂语法但HTML的结构我还是能看懂的。我发现AI在修改代码的时候经常会把之前正确的部分也改掉而且它从来不告诉我它改了哪些地方。这个项目最终花了大概三天时间才跑通。回头看技术难度几乎为零所有时间都花在了“反复沟通和返工”上。这让我意识到一个关键问题AI编程工具没有“记忆纪律”它每次修改都是基于当前对话的上下文如果上下文太长或者太乱它就会丢失之前的约束条件。2.2 第二个项目待办清单工具第一次接触“状态管理”的坑第二个项目我选了一个待办清单工具功能包括添加任务、标记完成、删除任务、按状态筛选。这个项目需要用到JavaScript的状态管理也就是数据变了页面要跟着变。我依然用Cursor这次我学乖了一开始就把需求写得很详细“做一个待办清单用原生JavaScript不要用任何框架数据存在localStorage里页面刷新后任务不丢失。”AI生成的代码看起来没问题我运行之后也能添加任务。但很快我发现当我标记一个任务为完成时页面上的样式变了但刷新之后又变回未完成状态。我检查了localStorage发现数据确实存进去了但存的是旧状态。我把这个问题描述给AI它说“你需要确保在更新DOM之前先更新数据模型”。我说那你帮我改。它改完之后添加任务又出问题了新添加的任务不会立即显示必须刷新页面才能看到。这个坑的本质是AI在处理“数据流”的时候经常会把“更新数据”和“更新视图”的顺序搞反或者漏掉其中一个。它知道这两个东西都要做但在具体实现的时候会顾此失彼。这个项目我花了大概五天其中三天都在跟状态同步的问题较劲。最后我总结出一个经验对于涉及状态管理的项目必须在提示词里明确写出“数据流方向”和“更新顺序”不能指望AI自己理清楚。2.3 第三个项目天气查询小工具API调用的“幻觉”问题第三个项目我想做一个天气查询工具用户输入城市名显示当前天气。这个项目需要调用外部API。我选了一个公开的天气API注册了账号拿到了密钥。然后我把API文档的关键信息复制给AI让它帮我写调用代码。AI生成的代码逻辑看起来没问题但运行之后一直报错。我检查了错误信息发现它请求的URL跟文档里的不一样。我问AI为什么它说“抱歉我记错了应该是这个URL”。改完之后又报错这次是参数名不对。再改又报错这次是返回数据的解析方式不对。来回折腾了四五次我终于忍不住自己去看了API文档。我发现AI在生成代码的时候会“脑补”一些它认为合理的参数和返回值而不是严格按照文档来。这就是所谓的“幻觉”问题——AI会自信地编造一些看起来合理但实际错误的信息。这个项目最终花了四天其中大部分时间都在核对API文档和AI生成的代码之间的差异。我后来养成了一个习惯凡是涉及外部接口的代码我必须自己对照文档逐行检查不能完全信任AI的输出。2.4 第四个项目多页面数据管理工具多agent协作的初步尝试第四个项目的复杂度明显上了一个台阶。我想做一个多页面的数据管理工具包含数据录入、数据列表、数据筛选、数据导出四个页面页面之间需要共享数据。这个项目我尝试了一种新的方式把不同页面的开发任务分配给不同的AI对话窗口也就是所谓的“多agent协作”。具体做法是我开了四个对话窗口每个窗口负责一个页面然后我手动同步它们之间的数据接口。理想很美好现实很骨感。四个窗口各自生成的代码在数据格式上完全不统一。有的用JSON对象有的用数组有的用字符串。我花了大量时间在“对齐数据格式”上比自己写还累。这次失败让我明白了一个道理多agent协作的前提是“接口约定”必须提前定义好而且这个约定要对所有agent可见。否则每个agent都会按照自己的理解去实现最后拼在一起就是灾难。3. 踩坑之后我把教训固化成了agent项目纪律系统3.1 什么是agent项目纪律系统为什么需要它四个项目做下来我最大的感受是AI编程工具的能力上限很高但它的“默认行为”非常不可靠。它会过度自信、会遗忘约束、会脑补信息、会在修改时破坏已有逻辑。这些问题不是某个工具的bug而是当前阶段AI编程的共性特征。所以我开始思考能不能把我在踩坑过程中总结出来的规则变成一套可复用的“纪律”让AI在每次执行任务时都遵守这就是agent项目纪律系统的由来。它不是某个具体的软件或插件而是一套我写在提示词里的规则集合配合我的工作流程用来约束AI的行为。你可以把它理解成给AI编程助手的一份“员工手册”告诉它什么能做、什么不能做、遇到不确定的情况该怎么处理。这套系统包含四个核心模块任务拆解纪律、上下文管理纪律、验证纪律和回滚纪律。下面我逐个拆开讲。3.2 任务拆解纪律不要让AI一次做太多我踩过的最大坑就是“让AI一次做太多”。第一个项目的时候我一句话就让AI生成了整个页面结果出了问题根本不知道是哪里的错。后来我给自己定了一条规矩任何任务必须拆解成“最小可验证单元”。什么叫最小可验证单元就是一个功能点做完之后可以立即运行并验证结果。比如做登录页面我不会说“帮我做一个登录页面”而是拆成先做静态布局只包含输入框和按钮不包含任何逻辑验证布局没问题后再加表单验证逻辑验证表单验证没问题后再加提交逻辑验证提交逻辑没问题后再加错误提示每一步做完我必须运行一次确认没问题再进行下一步。这样做的好处是一旦出问题我能立即定位到是哪个步骤引入的。在提示词里我会明确写“本次任务只做第一步不要提前实现后续步骤。”这句话很关键因为AI有“过度完成”的倾向你不限制它它就会把后面几步一起做了然后你就失去了逐步验证的机会。3.3 上下文管理纪律怎么让AI不“失忆”AI编程工具的一个核心限制是上下文窗口。对话越长它越容易丢失早期的约束条件。我在第二个项目的时候就吃了这个亏前面说了“不要用框架”后面AI还是引入了框架的写法。我的应对策略是每个独立任务开一个新的对话窗口并且在窗口开头把“全局约束”重新声明一遍。全局约束包括技术栈、代码风格、目录结构、命名规范、禁止事项。比如我会在窗口开头写这样一段全局约束 - 技术栈原生HTML/CSS/JavaScript不使用任何框架 - 代码风格函数名用驼峰命名常量用全大写 - 目录结构所有文件放在根目录不建子文件夹 - 禁止事项不使用外部CDN不引入任何第三方库 - 数据存储使用localStoragekey统一用app_前缀这段约束我会在每个新窗口都复制一遍。虽然有点繁琐但它能极大减少AI“跑偏”的概率。另外当一个对话窗口的对话轮次超过十轮之后我会主动开新窗口把当前进度和关键决策复制过去。因为超过十轮之后AI的注意力会明显下降开始出现前后矛盾的情况。3.4 验证纪律不验证等于没做我一开始有个坏习惯AI说改好了我就直接进行下一步。结果就是问题越积越多最后一起爆发。后来我定了一条铁律任何修改必须经过“运行验证”才能进入下一步。验证的方式包括页面能不能正常打开控制台有没有报错功能是否符合预期边界情况是否处理了如果验证不通过我不会让AI继续改而是先让它“解释问题原因”然后再让它“给出修复方案”最后才让它“执行修复”。这个顺序很重要因为如果直接让它改它可能会用一个新的错误去掩盖旧的错误。在提示词里我会这样写“请先分析问题原因不要直接修改代码。等我确认原因后再给出修复方案。”3.5 回滚纪律每次修改前先存档这个纪律是我在第三个项目之后才加上的。当时AI改代码改出了新问题我想回到之前的版本发现已经找不到了。我的做法很简单每次让AI做重大修改之前先把当前文件复制一份命名加上时间戳。比如index_20240101_1430.html。这样如果改坏了直接回滚到上一个版本就行。后来我发现Git更适合做这件事但对于零基础的人来说Git的学习成本有点高。所以我建议新手先用“复制文件”的方式等熟悉了再上Git。在提示词里我会写“本次修改涉及核心逻辑请先告诉我你打算修改哪些文件、修改什么内容我确认后再执行。”4. 这套纪律系统在实际项目中的效果对比4.1 效率对比从三天一个页面到一天一个项目我用第一个项目和第四个项目的实际耗时做了个对比。第一个项目是静态个人主页技术难度最低但花了三天。第四个项目是多页面数据管理工具技术难度最高但只花了一天半。差异的核心不在于技术难度而在于我有没有执行纪律系统。第一个项目的时候我没有拆解任务、没有管理上下文、没有验证纪律所有问题都是“事后补救”。第四个项目的时候我严格执行了拆解、约束、验证、回滚四个环节大部分问题在发生之前就被规避了。具体数据如下对比维度第一个项目无纪律第四个项目有纪律任务拆解无一次性生成拆成12个最小单元上下文管理单窗口对话超30轮每任务新窗口约束前置验证频率出问题才验证每步必验证回滚机制无每次修改前存档返工次数约15次约3次总耗时3天1.5天这个对比让我很直观地看到纪律系统的价值不在于“让AI更聪明”而在于“让AI更可控”。可控带来的效率提升远比能力提升更明显。4.2 质量对比从“能跑就行”到“结构清晰”第一个项目的代码我现在回头看简直不忍直视。变量命名混乱、函数职责不清、重复代码到处都是。但当时我的标准就是“能跑就行”。第四个项目的代码虽然也不算完美但至少结构是清晰的。每个函数只做一件事变量命名有规律数据流方向明确。这不是因为我编程水平提高了而是因为纪律系统强制AI遵守了命名规范和结构约束。我在提示词里会明确写“每个函数不超过30行函数名必须体现功能禁止使用a、b、c这种无意义命名。”这些约束看起来很简单但它们对代码质量的影响非常大。4.3 心态对比从“焦虑救火”到“从容推进”这一点可能比技术层面的收获更重要。第一个项目的时候我每天都在焦虑为什么又报错了为什么改了这里那里又坏了我是不是不适合编程第四个项目的时候我的心态完全不一样了。因为我知道每个步骤都是可验证的每个问题都是可定位的每个修改都是可回滚的。这种“确定性”带来的安全感让我能够从容地推进项目而不是被问题追着跑。5. 给零基础AI编程者的实操建议5.1 工具选择不要贪多先用透一个我试过好几个AI编程工具包括Cursor、GitHub Copilot、还有一些在线的代码生成工具。我的建议是零基础阶段选一个用透就行。Cursor是我目前用得最顺手的原因有三个第一它对新手友好不需要配置复杂的环境第二它的对话式交互很直观你可以像跟人说话一样跟它沟通第三它的代码补全和错误提示做得不错能帮你快速定位问题。但工具本身不是关键关键是你怎么用它。我见过很多人换了七八个工具每个都只用皮毛最后哪个都没用好。与其这样不如先把一个工具用熟把纪律系统跑通再考虑换工具。5.2 提示词写法把AI当成一个“很聪明但没规矩的实习生”这是我最核心的心得。你跟AI沟通的方式决定了它的输出质量。不要这样写“帮我做一个登录页面。”要这样写“帮我做一个登录页面。要求1. 只做静态布局包含用户名输入框、密码输入框、登录按钮2. 不使用任何框架3. 样式简洁居中显示4. 本次任务只做布局不要加任何逻辑5. 完成后告诉我你修改了哪些文件。”后面这种写法把“任务边界”“技术约束”“验收标准”“输出要求”全部说清楚了。AI拿到这样的提示词跑偏的概率会大幅降低。5.3 学习路径先做项目再补基础很多人建议零基础先学HTML、CSS、JavaScript再上手做项目。我的经验恰恰相反先做项目遇到不懂的再补基础。原因很简单纯学语法太枯燥了而且学了不用很快就忘。但做项目不一样你有明确的目标遇到问题会主动去查、去问、去试。这种“问题驱动”的学习方式效率比“知识驱动”高得多。当然这并不意味着基础不重要。我的做法是每做完一个项目回头把项目中用到的知识点系统梳理一遍。比如做完待办清单之后我把JavaScript的数组方法、DOM操作、事件监听这几个知识点专门花时间学了一遍。这样既有实战经验又有理论基础。5.4 常见问题速查表下面这张表是我在四个项目中遇到的高频问题以及对应的解决方案。你可以把它当成一个速查手册遇到类似问题的时候直接对照。问题现象根本原因解决方案AI生成的代码运行报错缺少依赖或参数错误让AI先分析原因再给修复方案修改一个功能导致另一个功能失效AI修改时破坏了已有逻辑每次修改前存档出问题立即回滚AI“忘记”了之前的约束上下文窗口超限开新窗口重新声明全局约束API调用一直失败AI脑补了错误的参数对照官方文档逐行检查多页面数据格式不统一缺少接口约定提前定义数据格式所有agent共享代码越改越乱没有拆解任务拆成最小可验证单元逐步推进6. 这套纪律系统还能怎么扩展我现在把这套纪律系统用在一个Markdown格式的规则文件里每次开新项目的时候把文件内容复制到对话窗口开头。它目前覆盖了任务拆解、上下文管理、验证和回滚四个模块但我觉得还有扩展空间。第一个扩展方向是“自动化检查”。目前验证环节还是靠我手动运行和观察未来我想尝试写一些简单的检查脚本让AI在生成代码后自动跑一遍基础检查比如语法检查、链接检查、控制台错误检查。这样能进一步减少人工验证的工作量。第二个扩展方向是“跨项目复用”。我现在每个项目都会重新写一遍全局约束虽然内容差不多但每次都要重新整理。我想把这些约束做成模板按项目类型分类比如“静态页面模板”“数据管理模板”“API调用模板”用的时候直接套。第三个扩展方向是“多agent协作的接口约定”。第四个项目的失败让我意识到多agent协作的关键不是agent本身而是它们之间的接口约定。我下一步想尝试的做法是先定义一个“接口契约文件”里面写清楚数据格式、函数签名、调用方式然后让每个agent都基于这个契约文件来生成代码。这样应该能解决数据格式不统一的问题。说实话这套系统并不完美它只是我在一个月里踩坑之后总结出来的“土办法”。但它的好处是实用、可操作、零基础也能上手。如果你也在用AI编程做项目不妨试试把这四个纪律用起来看看你的返工次数能不能降下来。我个人在实际操作中的体会是AI编程的上限取决于你的纪律而不是AI的能力。你给它越清晰的边界它给你的结果就越可靠。这个道理可能不仅适用于编程也适用于很多其他事情。