
编辑器里有代码补全,终端里有能读项目、改文件、跑测试的 Agent。新工具一出来,下载安装、配置模型、比较效果,几乎成了一套固定动作。
可工具换了一轮,项目未必做得更快。
AI 几分钟就能生成几百行代码,人却要花更久理解和返工;一个页面刚改好,另一个模块悄悄出了问题;同样的坑在上个项目踩过,换个项目又来一次。
很多返工,其实在 AI 写下第一行代码前就埋下了。任务没说清,执行过程没有护栏,解决过的问题也没有留下。模型再强,也只能在这些缺口上猜。
把这三件小事做好,通常比再换一个工具管用。
一句“做个用户系统”,够 AI 忙很久
下面这条指令很常见。
帮我做一个用户系统。
人看到它,往往会继续追问。用账号密码还是手机号?需要注册和找回密码吗?用 Session 还是 JWT?数据库能不能改?做到什么程度才算完成?
AI 通常会直接开工。它根据当前上下文和常见做法补齐空白,很快交付一套看起来颇为完整的代码。麻烦也出在这里——它补上的细节,未必符合项目需要。
把任务改成这样,结果会稳定许多。
在现有项目中增加账号密码登录接口,使用项目已有的 JWT 工具。只修改
src/auth和对应测试,不改数据库结构,不增加注册、短信验证和第三方登录。登录成功返回 access token,密码错误返回 401,完成后通过 auth 模块全部测试。
后一种写法没有什么提示词技巧,只回答了四个问题:做什么、能改哪里、哪些事情不做、怎样算完成。
AI 得到的自由度少了一些,返工空间也跟着小了。
能自动干活,也得知道什么时候停
任务说清之后,AI 仍可能在执行途中做出局部合理、全局危险的决定。
为了消除一个报错,它也许会升级核心依赖;为了通过类型检查,它可能用默认值盖住异常数据;改动一个业务模块时,又“顺手优化”了公共函数。每一处单独看都有理由,合在真实项目里,很容易变成隐蔽的回归。
我现在更看重四道护栏。
先让 AI 给出改动计划,列清准备修改的文件和可能影响。一个任务只处理一类变化,不把框架升级、组件重写和工具函数整理捆在一起。每一步完成后运行现有的格式检查、类型检查和测试。涉及依赖升级、数据库修改、文件删除或公共 API 变更时,必须停下来等待确认。
计划无法保证结果正确,但能让方向错误更早暴露。小步修改也不一定更快,出了问题却容易定位和撤回。
Agent 可以自主工作,不等于应该拥有无限的修改权限。它需要知道哪些事情可以直接做,哪些事情必须把决定交还给人。
别把经验锁在聊天记录里
使用 AI 一段时间后,很容易出现另一种浪费。
每次打开新会话,都要重新介绍技术栈和目录结构;同一种需求,重新组织一遍 Prompt;刚解决过的兼容性问题,隔一阵又查一次。有用的信息散在几十段聊天里,想找时已经记不起关键词。
聊天记录适合保存过程,不适合直接复用。值得留下来的内容大致有三类。
第一类是经过验证的 Prompt 模板。除了 Prompt 原文,还要写清适用场景、需要提供哪些输入、最后如何验收。
第二类是项目规则。技术栈、目录约定、命名规范、测试命令和禁止事项,都可以放进项目文档。以后每次开启新会话,AI 都从同一套事实出发。
第三类是踩坑记录。最省事的格式只有四项:症状、原因、解决办法、适用版本。再遇到相似问题时,先查自己的记录,几分钟就能知道是否走过这条弯路。
这些东西攒得越多,每次与 AI 协作的起点就越高。工具会更新,模型会替换,留下来的项目知识还在。
一张能直接复制的 AI 任务卡
下次把开发任务交给 AI 前,可以先花两分钟填完这张卡。
【任务目标】要解决什么问题?完成后给谁使用?【允许范围】可以读取和修改哪些目录、文件或模块?【明确边界】这次不做什么?哪些接口、依赖或行为不能改变?【实现约束】需要遵守哪些技术栈、版本、风格和安全要求?【执行方式】先给出计划;小步修改;高风险操作执行前等待确认。【验收标准】必须通过哪些测试?应该得到什么可观察结果?【交付内容】说明修改了什么、如何验证、还存在哪些风险。它不会让模型突然变聪明,作用只是把容易产生歧义的地方提前写下来。等 AI 交付时,也有一套清楚的标准判断结果能不能用。
我为什么开始写「AI开发手记」
AI 领域每天都有新消息。发布会摘要和工具榜单已经不少,我更想把开发过程写出来。
一个 AI 功能怎样从想法走到上线,代码生成之后如何测试和维护,工具在真实项目里省下了什么、又带来了什么,那些演示里看不见但开发时绕不开的坑,都会成为这里的内容。
我也会尽量在每篇文章里留下一份能直接带走的东西。可能是一段代码、一份 Prompt、一张检查清单,也可能只是一个经过验证的结论。
工具一直会变。把任务交代清楚,控制住执行过程,再把解决过的问题留下来,这些习惯不会很快过时。
如果你也在用 AI 写代码,欢迎在评论区说说目前最头疼的问题。我会挑一个有代表性的问题,写成下一篇可以照着操作的实战文章。
夜雨聆风