您的当前位置:首页>全部文章>文章详情

同一份接口需求,我让模型写了两遍:差在验收,不差在文采

发表于:2026-10-07 11:48:06浏览:5次TAG: #AI助手 #webman #教程

我比的不是谁更像资深工程师

很多人拿两个模型比文采:谁的命名更像人、谁的注释更完整。我拿同一份需求写过两遍,用的是同一个模型。两遍都能交出看起来能跑的代码。拉开差距的不是文笔,是第一遍没有验收,第二遍有。

需求只有三句。老师登录后,选择班级和考试,导出成绩,列里要有姓名、学号、分数、是否及格。项目是 Webman,成绩在 MySQL 里。

第一遍:只丢需求

模型交回一个完整控制器。查用户、查成绩、写表格、返回下载。用一个 30 人的班级点一下,文件确实下来了。代码整齐,注释也全,拿去演示不会丢人。

不能上线的地方,它一个都没问:

  • 请求里的班级编号被直接使用,没有核对这个老师是不是这个班的任课老师。别人改一个数字,就能把别的班下走。
  • 一场考试两千人,它一次把行全部载入内存再写文件。演示数据看不出这个问题。
  • 及格线写死 60。这套系统的及格线在试卷上,有的考试是 70。
  • 文件名用了班级名。班级名里出现斜杠,保存路径就坏了。

这四件事后来都返工了。模型没有偷懒,它只是在你没说的地方做了最常见的假设。演示环境里,及格线正好是 60,班级不到五百人,也没有人去改请求,所以第一遍看起来和正确版本一样好。

第二遍:先写验收,再让它写

第二次我把提示词改成两段。第一段还是那三句需求。第二段是验收,并且加了一句:先不要写代码,先列出你打算采用的假设,等我确认再写。

它列出的假设里有一条:「及格线默认 60,如果以后有配置再改。」我直接否掉,告诉它及格线只读试卷表,没有配置就拒绝导出,不要猜一个数。来回只有两句话,但把后面一次返工消掉了。

确认之后的验收是这五条:

  1. 只能导出自己任课的班级。越权必须拒绝,文件一个字节都不能生成,并记一条日志。
  2. 及格线读试卷配置,禁止写死。
  3. 超过 500 行就分批查,不许一次载入全部。
  4. 文件名只保留中文、字母和数字。
  5. 先写两条验证:任课老师成功;张老师只教高一二班,请求改成高一三班必须失败。

第二遍的代码不一定更好看。它第一次提交就能对上业务,我只改了一处命名。

不要让它给自己盖章

有人会在代码写完后补一句:帮我把测试也写了。模型会按自己刚写的逻辑写测试,测试当然全绿。那不叫验收,叫自己给自己盖章。

验收要写在代码之前,用业务语言写,而且至少有一条是「必须失败」的。成功用例模型自己会凑。失败用例才说明权限真的存在,而不是页面上碰巧没有那个按钮。

要在写代码前定下来不写时,模型通常会怎么猜
谁能调用,谁不能,拒绝时返回什么只要登录就算有权限
关键数字从哪张表来写成一个看起来合理的常数
最多多少行,超过怎么分批按演示数据一次性查完
失败时用户看见什么,日志记什么抛一个通用错误,或悄悄当成功
哪一条验证必须失败只给你一条能跑通的示例

这五行写不清,换一个更贵的模型,也只是把错误写得更自信。若它开始写代码时还在问「及格线是不是 60」,说明五行里还有空,继续写,别让它猜。

文采是副产品。验收才是你和模型之间的合同。