AI 技术专栏 列表全部文章
AI 技术专栏
AI 技术专栏第 3 / 7 篇

让 AI 干活不翻车:任务书写法、代码评审清单、安全红线

AI 写的代码最危险的不是写错,是看起来对。这篇给三样能直接用的东西:一份任务书模板(七要素)、一份评审清单(重点看被删掉的行)、以及四条不能碰的安全红线。写给已经用上 AI、但还没建立规矩的个人和小团队。

更多

我见过两次事故,都和 AI 有关,但都不是 AI 的错。

第一次:它为了让一条集成测试通过,把幂等校验删了。测试绿了,上线两周后重复扣款。第二次:有人把客户的真实数据库结构贴进对话框,问它怎么优化索引——问题解决了,数据也出去了。

两次的根因是同一件事:用了 AI,但没有配套的规矩。工具给了你十倍的手速,你却还在用一倍的谨慎。这篇给三样能直接抄走的东西:任务书怎么写、产出怎么验、红线在哪。

一、任务书:把需求写成一份工程单

AI 不是读不懂人话,是读不懂你没说出口的东西。它不知道你的约束、不敢猜你的边界、也不清楚哪些地方能动。你抱怨「它理解错了」,多数时候是你没说。

七要素

要素解决什么问题不写的后果
目标到底要什么它自己发挥,方向跑偏
现有架构复用什么、别重复造新建一堆你已有的东西
约束不能引入什么、必须用什么随手加依赖,版本对不上
安全要求哪些校验必须保留为了跑通测试把校验删了
范围边界哪些文件、哪些模块不碰顺手改了不该改的地方
验收标准怎样算做完它自己定义「做完了」
审批点什么时候停下来等你一路改到底,攒出三千行 diff

可以直接抄的模板

目标:一句话说清要什么。

现状:现在是怎么做的,相关代码在哪。

约束:
- 复用现有的 XX,不要新建
- 不要引入新依赖(或:只允许引入 XX)
- 保持对外接口行为不变

安全要求:
- 必须保留 XX 校验
- 涉及权限的地方要走 XX 工具类

范围:
- 只改这几个文件 / 只改这个模块
- 不要动 XX(原因:正在下线 / 有其他人在改)

验收:
- 补上这三种情况的测试:A、B、C
- 全量测试必须通过
- 提交前跑一遍 XX 命令

流程:
- 先读仓库,给我方案,我确认后再动手
- 在我确认之前,不要修改数据库结构

这不是什么「提示词技巧」,这就是一份合格的工程任务单。你写给新同事也会这么写,只是平时对 AI 偷懒了——因为它看起来什么都知道。

二、评审清单:重点看减号行

新手最容易浪费时间的地方,是逐行读 AI 生成的代码。三千行 diff 你读不完,也不该读。按这个顺序来,十分钟能过一遍:

  1. 先看改动文件清单。范围不对,直接打回重做,不用往下看。
  2. 过滤 diff 里的删除行。这是重中之重:被删掉的校验、被注释掉的分支、被放宽的异常捕获、被改成 TODO 的失败处理。为了跑通测试而删掉挡路的东西,是 agent 的经典动作。
  3. 查新增依赖是否真实存在。模型编造包名和函数名是常态。编译不过还算走运,怕的是真有个同名包但完全不是你要的东西。
  4. 看边界条件。空值、超时、并发、重复请求、部分失败——它默认写 happy path。
  5. 检查事务与幂等。这两处它改错的概率高,后果又严重。
  6. 看它有没有破坏分层。为了省事把业务逻辑塞进 Controller,是最常见的「架构不合身」。
  7. 测试用例是谁定的。让 AI 写测试再自己跑通,等于让学生自己出题自己判分。测试用例必须由你定。
  8. 跑一遍全量测试,而不是只跑它改的那几个。
  9. 问自己一个问题:半年后我愿意维护这段代码吗?

三、怎么看出它在胡说

三种典型症状:

  • 编造依赖和 API。给出一个不存在的包名、一个从没有过的重载。查证方式很简单:让它给出官方文档链接,或者你直接 grep 一遍仓库和依赖树。
  • 用过时的写法。它学到的知识有截止点,而你的项目用的是新版本。凡是涉及框架版本的建议,都要对着你实际的依赖版本核一遍。
  • 自信的错误。这是最麻烦的——它不会说「我不确定」,而是用非常笃定的语气给出一个错的结论。凡是它给出的、你没法立刻验证的事实性结论(配置项含义、参数默认值、某个行为的表现),一律当成待验证假设。

一个实用的习惯:让它在回答里带上依据——「这个结论来自哪份文档 / 哪段代码 / 哪次命令输出」。给不出依据的,多半是编的。这个要求比反复追问「你确定吗」有用得多,因为它不会因为你问三遍就改口。

四、四条安全红线

红线一:密钥和凭据,绝不进对话

API Key、数据库密码、私钥、token、内部地址——一律不进对话框、不进上下文、不截图粘贴。真需要它连数据库,给一套脱敏的结构和假数据。

红线二:真实数据先脱敏

生产环境的数据结构、客户的核心报表逻辑、含个人信息的内容,进 AI 之前必须过一道人肉脱敏。这一步一开始觉得麻烦,时间长了能省掉无数沟通成本和后悔。

红线三:客户项目用团队批准的工具

不要自己在客户项目上装没经过评估的插件。涉及代码出境的,优先选支持私有化部署、或明确承诺数据不用于训练的方案。这不是技术问题,是合同问题。

红线四:产出的许可证要看一眼

AI 生成的代码可能和训练数据里的片段高度相似。对商业交付项目,尤其是要交付源码的,许可证风险要提前和客户说清楚——这在软著登记和验收环节都可能被问到。

五、团队里的三条规矩

个人怎么方便怎么来,团队必须有硬规矩。建议最少定这三条:

  • 敏感内容进 AI 之前必须人肉脱敏,工具可以各用各的,这条不能有例外。
  • AI 产出的代码必须有人工评审才能合并,评审重点按上面的清单走,不是扫一眼就过。
  • 每个仓库维护一份项目说明文件,约定、命令、以及「不要碰」的清单写进去,随项目演进更新。

最后一句:AI 让你的手变快了十倍,你的谨慎也必须跟上十倍,否则省下来的时间会以另一种方式还回去。这两次事故,都是十几秒的操作,加上几周的收拾。

备忘

  • 事故根因通常是「用了 AI 但没配套规矩」,不是 AI 本身。
  • 任务书七要素:目标、现有架构、约束、安全要求、范围边界、验收标准、审批点。
  • 范围边界和审批点最容易被省,也最容易出事。
  • 评审顺序:改动清单 → 删除行 → 新增依赖真实性 → 边界条件 → 事务与幂等 → 分层 → 谁定的测试 → 全量测试 → 半年后愿不愿意维护。
  • 删除行是重灾区:被删的校验、被注释的分支、被放宽的异常捕获、改成 TODO 的失败处理。
  • 测试用例必须由你定,不能让它自己出题自己判分。
  • 识别胡说:编造依赖、过时写法、自信的错误。让它给出依据,给不出多半是编的;别靠反复追问「你确定吗」。
  • 四条红线:密钥不进对话、真实数据先脱敏、客户项目只用批准的工具、产出许可证要看。
  • 团队三条规矩:敏感内容人肉脱敏、AI 产出必须人工评审、每仓维护项目说明文件。
— 感谢读到这里 —发现错误,或想补充?告诉我 →
TURN KNOWLEDGE INTO SOMETHING REAL

有想法,也想把它做出来?

从技术方案到上线交付,聊聊你的下一个项目。

聊聊需求

一起聊聊

搜索文章

输入关键词,按标题和摘要即时筛选。

浏览分类文章归档

阅读设置

字号
行宽
专注模式

专注模式会隐藏页头与侧栏,只留正文。设置保存在当前浏览器。

稍后阅读

保存在当前浏览器,留给下一次安静阅读。

总浏览 -- 次 · 总访客 -- 人 · 今日浏览 -- 次 · 今日访客 -- 人