该问的话

每一课结尾的"下次让 AI 做这件事时,问它"都收在这里。开工前、上线前、出了事以后,挑一组整段复制给 AI,再照着"自己验证"亲手核对一遍。

121 个问题,来自已上线的 32 课

入门

入门第 0 课 · 认识你的 AI 同事

它手快、能干,只记得眼前这场对话。回到这一课 →

下次让 AI 做这件事时,问它

  1. 动手之前,先说说你打算改哪些文件、分几步做,我同意了再开始。
  2. 把这次对话里我们定下的要求,整理成一份文件放进项目文件夹;下次新对话,你先读它。
  3. 刚才的回答里,哪些是你查到的,哪些是你推测的?分开列出来。

自己验证

  • 它说做完了,看一眼它改了哪些文件,是不是都在你说的范围里。
  • 新开一个对话,先问它“我们之前定了哪些要求”。答不上来很正常,把那份要求文件交给它。

入门第 1 课 · 把想法说清楚,AI 才能一次做对

AI 不认识你。你没说的,它就按最常见的样子猜。回到这一课 →

下次让 AI 做这件事时,问它

  1. 开始之前,先用几句话复述你理解的需求,我确认了你再动手。
  2. 要把这件事做好,你还缺哪些内容?列出来,我来提供。
  3. 页面上哪些文字不是来自我给的内容?全部列出来。

自己验证

  • 拿你写下的“怎样算好”逐条对一遍,每一条都做到了,才算做完。
  • 页面上的每一句话,都能在你给的素材里找到出处。

入门第 2 课 · 出了问题,怎么跟 AI 说

AI 看不到你的屏幕。说清做了什么、看到什么、本该怎样,它才修得准。回到这一课 →

下次让 AI 做这件事时,问它

  1. 先告诉我你认为问题出在哪里,我确认了你再改。
  2. 只修我说的这一个问题,其他地方不要动。
  3. 这次你一共改了哪些地方?全部列出来。

自己验证

  • 按出问题时的步骤原样再做一遍,确认真的好了。
  • 看看有没有别的地方跟着变了:文字、位置、按钮。

入门第 3 课 · AI 说“做好了”,真的做好了吗

它说“已完成”不算完成。你查过,才算。回到这一课 →

下次让 AI 做这件事时,问它

  1. 列出你这次改动或生成的全部东西,一共多少个。
  2. 文章里的每个数字和引用,标出它来自我给的哪份材料。
  3. 先做 10 个给我看,我确认了你再做剩下的。

自己验证

  • 亲手数一遍总数,和你要求的对上。
  • 开头、中间、结尾各抽几样,打开看。

入门第 4 课 · 改坏了,怎么退回上一版

满意的版本,先存一份,再让 AI 动手。回到这一课 →

下次让 AI 做这件事时,问它

  1. 改之前,先告诉我你打算改哪些地方,我同意了你再动手。
  2. 只改我说的这一处,其他地方不要动。
  3. 这次你一共改了哪些地方?全部列出来。

自己验证

  • 改之前,把整个文件夹复制一份,名字里写上日期。
  • 改完把新旧两版并排打开,找出多出来和少掉的地方。

入门第 5 课 · 哪些东西不能交给 AI

只给 AI 这件事需要的:不多给文件,不给密码,不给没有上限的额度。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这件事你需要用到哪些文件或账号?只列必需的。
  2. 做之前先估一下,大概会用掉多少积分或额度?
  3. 先做 3 个给我看,我确认了你再继续。

自己验证

  • 翻一遍对话记录,看有没有发出去过密码或密钥;有的话,马上去作废、换新。
  • 看一眼授权给它的文件夹,里面有没有不想让它看到的东西。

入门第 6 课 · 做好的东西,怎么给别人用

在你电脑上能用,是做完了;在别人手里能用,才算交付。回到这一课 →

下次让 AI 做这件事时,问它

  1. 我想让别人也能打开它,有哪些免费又简单的放法?一步步带我做。
  2. 我的数据存在哪里?换一台设备、换一个浏览器,还能看到吗?
  3. 放到网上之后,里面有没有不该公开的东西,比如密钥、电话、住址?

自己验证

  • 用一台不是你自己的手机打开网址,从头点一遍。
  • 换一个浏览器打开小工具,看数据还在不在。原来的浏览器先别清理,数据可能只在那里。

进阶第 1 篇 · 看懂你造了什么

第 1 课 · 拆开一个 AI 做出来的网站

先画出网站住在哪、谁连着谁,再决定让 AI 改哪里。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个项目由哪几部分组成?每部分的代码在哪个目录、部署在哪个平台、用哪个地址访问?
  2. 线上域名现在由哪个平台提供?这个仓库还连着哪些平台,它们的部署会不会被误当成线上?
  3. 哪些数据需要长期保存?存在哪里,重新部署以后会不会丢?
  4. 前端代码里有没有任何密钥,或者只该让后端知道的地址?

自己验证

  • curl -sI 你的网址:看 server、cf-ray、x-vercel-id 这类响应头,确认真正的托管方。
  • 在代码仓库的提交记录上看检查结果:每个平台各占一栏,分清哪一栏才是线上。
  • 打开浏览器开发者工具的“网络”面板,看页面向哪些地址发了请求:它们就是这个网站依赖的后端和第三方服务。

第 2 课 · 本地和线上是两个世界

改了没生效时,先问一句:回答我的,是哪个进程?回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个项目本地要启动哪些服务?各占哪个端口,谁把请求转给谁?
  2. 你在后台帮我启动过哪些进程?现在还在跑吗?任务结束时,请停掉不再需要的。
  3. 本地和线上有哪些不同:环境变量、数据来源、数据库、Node 版本、构建方式?
  4. 内容或配置更新以后,哪些服务需要重启才能生效?

自己验证

  • lsof -nP -iTCP:端口号 -sTCP:LISTEN:查端口上是哪个进程。
  • ps -o pid=,lstart=,command= -p 进程号:看它什么时候、用什么命令启动。
  • 上线前按线上的方式构建一次,再在本地预览构建结果(比如 npm run build 之后 npm run preview),别只看开发服务器的效果。

第 3 课 · 从输入网址到看到页面

打不开的时候,先问:请求走到了哪一站?谁回的话,它就至少到了谁那里。回到这一课 →

下次让 AI 做这件事时,问它

  1. 从访客输入网址到拿到页面,这个网站的请求要经过哪几站?每一站由哪个平台负责?
  2. 域名的 DNS 记录指向哪里?经不经过代理?证书由谁签发、会不会自动续期?
  3. 如果中间有转发脚本:它转发哪些路径?后端出错或超时时返回什么?后端的默认地址是不是也对外公开?
  4. 改过部署目录里的文件之后,改动提交进仓库了吗?下一次构建会不会把它覆盖?

自己验证

  • dig +short 你的域名:看域名解析到了哪里(经过 Cloudflare 代理时,只会看到 Cloudflare 的地址)。
  • curl -sI https://你的域名:看是谁在回答、状态码是多少。
  • curl -s https://你的域名/api/某个接口 | head -c 200:看返回的是不是后端给的数据,而不只看状态码。

进阶第 2 篇 · 让页面被看见

第 4 课 · 为什么搜索引擎看不到你的网站

浏览器里看得到,不等于别人拿得到。先问一句:第一次返回的 HTML 里有什么?回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个网站需要被搜索引擎收录吗?如果需要,每个页面第一次返回的 HTML 里有没有完整正文?
  2. 每个页面有自己的 title、description 和分享图吗?它们是构建时写进 HTML 的,还是在浏览器里用 JavaScript 改的?
  3. 访问一个不存在的网址,服务器会返回什么状态码?
  4. 有没有自动生成 sitemap.xml,并在 robots.txt 里声明它?

自己验证

  • curl -s 你的网址 | grep "正文里的一句话":能搜到,才说明正文在 HTML 里。
  • 右键“查看网页源代码”(不是开发者工具里的元素面板,那里显示的是 JavaScript 运行之后的样子),看 <head> 里的标题和描述是不是这一页自己的。
  • curl -I 你的网址/一个不存在的路径:第一行应该是 404。

第 5 课 · 路由、状态码与兜底

“永远成功”的网站,等于什么都没告诉你。该说“没有”的时候,就回 404。回到这一课 →

下次让 AI 做这件事时,问它

  1. 列出这个网站的全部路由,以及一个不在列表里的地址会被怎么处理、返回什么状态码。
  2. 页面不存在、没登录、没权限、服务器出错,各自返回什么状态码?页面上显示什么?
  3. 健康检查地址是哪个?它检查了哪些依赖?部署平台和外部监控,分别是经过哪条链路去访问它的?
  4. 接口返回的不是 JSON(比如是一张网页)时,前端会怎么处理?

自己验证

  • curl -I https://你的网站/根本不存在的地址:第一行应该是 404。
  • curl -s https://你的网站/healthz:看返回的是不是后端给的那段状态,而不只看状态码。
  • curl -sI https://你的网站/某个旧地址:搬走的地址应该返回 301 或 308,并指向新地址。

进阶第 3 篇 · 让 AI 把事做对

第 6 课 · AI 默认给你的,是语料里最常见的样子

AI 不知道你的网站是给谁的。你没说的地方,它就用最常见的样子填上。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个网站是给谁用的、主要用来做什么?动手之前,请先复述一遍你的理解。
  2. 你参考了哪些来源?哪些组件是参考里有的,哪些是你按"这类网站通常有"加上的?
  3. 页面上每个数字、状态、按钮和链接,分别来自哪份真实数据、哪个真实功能?
  4. 哪些元素只起装饰作用?列出来,由我决定去留。

自己验证

  • 把页面上所有看起来能点的东西都点一遍:链接、按钮、标签页、复制图标。
  • 对每个数字和状态问一句"它从哪来",在代码里找到它的数据来源。
  • AI 声称"已检查"的地方,自己打开页面实际看一遍,别只看它的报告。

第 7 课 · 把需求交代清楚

同样的反馈说到第二遍,就该停下来写需求了。回到这一课 →

下次让 AI 做这件事时,问它

  1. 动手之前,用几句话复述你理解的目标、参考对象、要覆盖的范围,以及明确不做的事。
  2. 我说的"乱",你认为具体是哪几层的问题?颜色、字号、页面骨架、宽度,请逐层说。
  3. 这次改动怎样才算完成?列出能逐条检查的验收标准,每条写明用什么办法验证。
  4. 有哪些地方是你替我做了决定?标出来,让我确认。

自己验证

  • 把参考和改完的页面并排打开,关键数值(版心宽度、正文宽度、标题字号)用开发者工具各量一遍。
  • 检查范围:你说的"整体",AI 改到了几类页面?逐类打开看。
  • 验收时拿参考来比,不要拿 AI 自己写的规范来比。

第 8 课 · 识别 AI 味儿与过度设计

每个数字问来源,每个按钮点一下,每个装饰问一句:删掉会少什么?回到这一课 →

下次让 AI 做这件事时,问它

  1. 页面上的每个数字、图表和状态,数据来源是什么?没有来源的请列出来。
  2. 所有看起来能点的元素,点了之后会发生什么?哪些其实没有功能?
  3. 哪些元素只起装饰作用?删掉它们,读者会少什么?
  4. 配图和图表的可读性标准是什么(最小字号、是否重叠、留白)?逐张截图给我看。

自己验证

  • 把页面上所有像链接、像按钮的东西都点一遍,记下没反应的。
  • 对每个数字问一句"它从哪来",在代码里找到它的数据来源。
  • 把配图放到实际显示的尺寸下逐张看,不要只看缩略图或脚本报告。

进阶第 4 篇 · 把它送上线

第 9 课 · Git:存档、回退与不该提交的东西

提交之前看一眼,比提交之后清理便宜得多。回到这一课 →

下次让 AI 做这件事时,问它

  1. 开始改动之前,工作区是干净的吗?请先提交一次当前状态。
  2. 这次要提交哪些文件?有没有依赖目录、构建产物、密钥、数据库文件或大文件混在里面?
  3. 把这次的改动按独立的目的拆成几个提交,每个都能单独构建通过。
  4. .gitignore 覆盖了哪些类别?仓库里有没有已经被跟踪、却本不该提交的文件?

自己验证

  • git status --short:提交之前完整看一遍,不要只看前几行。
  • git ls-files -z | xargs -0 du -h | sort -rh | head:找出仓库里最大的几个文件。
  • git ls-files data/:看某个目录下到底跟踪着哪些文件。

第 10 课 · 依赖、锁文件与运行环境

本地能跑,只说明你的电脑能跑。让线上和本地用同一份锁文件、同一个版本,再下结论。回到这一课 →

下次让 AI 做这件事时,问它

  1. 线上构建用的是哪个版本的 Node 和包管理器、执行的是什么安装命令?和我本地有哪些不同?
  2. 这次新增或升级了哪些依赖?锁文件有没有一起更新并提交?
  3. 项目需要的最低 Node 版本是多少?有没有写进 .node-version 和 package.json 的 engines?
  4. 构建失败时,请先用和线上相同的版本在干净的副本里复现,再动手修。

自己验证

  • 读构建日志时先看开头:构建机用的是哪个版本的 npm 和 Node。
  • npm ls 包名:看一个包是被谁带进来的、装的是哪个版本。
  • 推送前在一份干净的副本里跑一遍 npm ci 和构建,模拟线上的安装方式。

第 11 课 · 密钥与配置

密钥交出去之前,先想好它什么时候收回来。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个任务需要哪些密钥?每把需要的最小权限是什么、多久过期?
  2. 密钥放在哪个被 git 忽略的文件或平台变量里?你执行的命令里会不会出现密钥原文?
  3. 配置有几个来源(平台变量、.env、代码里的默认值)?谁优先?线上会不会读到本地文件?
  4. 任务结束后,列出这次用过的所有令牌,提醒我逐个作废。

自己验证

  • git check-ignore -v .env:确认 .env 被 git 忽略了。
  • 在会话记录和命令历史里搜一下密钥的开头几位,看它出现在了哪些地方。
  • 到平台后台看一眼令牌列表:每把令牌的权限、过期时间、最后一次使用时间。

第 12 课 · 托管平台与"一个站两处部署"

每个入口都要有明确的身份:生产、预览,或者该删掉。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个网站现在能从哪些地址打开?逐个列出:哪个是生产、哪个是预览、哪个该断开。
  2. 这个仓库连着哪些托管平台?每次推送会触发几个部署?
  3. 后端除了提供接口,是不是也在托管页面?这是有意的吗?
  4. 同一份内容有多个地址时,有没有用 canonical 或 301 指明哪一个是正本?

自己验证

  • 对每个入口执行 curl -sI,看状态码、server 响应头和页面标题是否一致。
  • 在代码仓库的提交记录上看检查结果,数一数每次推送触发了几个平台。
  • 查看页面源代码里的 <link rel="canonical">,确认它指向正式域名,而且不会再被跳转。

进阶第 5 篇 · 让它活下去

第 13 课 · 失败路径:白屏、错误边界与兜底

判空修已知的错,错误边界兜未知的错,日志告诉你错发生过。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个页面依赖的数据不存在、接口失败、地址写错时,分别会显示什么?
  2. 渲染出错时,有没有错误边界接住?它包住了哪些部分、显示什么、怎么恢复?
  3. 前端的错误有没有上报到我看得到的地方?
  4. 请手动触发一次错误,把兜底页面截图给我看。

自己验证

  • 在地址栏里故意输入一个不存在的章节、术语或文章地址,看页面怎么回应。
  • 打开开发者工具的控制台,把日志级别切到"全部",看有没有被忽略的警告。
  • 断开网络再操作一次,看接口失败时页面显示什么。

第 14 课 · 账号、限流与成本护栏

护栏先问谁能进来,再问总共能花多少。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个付费功能谁能用?注册有没有门槛:验证码、邀请码、按 IP 限流?
  2. 一共有几道护栏:每人每天、每分钟、全站每日预算?各自在哪里计数?
  3. 超过限制时,接口返回什么状态码?用户看到什么?监控看得见吗?
  4. 按最坏情况估算:一个人批量注册账号、每个都用满上限,一个月会花多少钱?

自己验证

  • 用一个新注册的账号连续请求,确认第几次开始被拦下、返回的状态码是什么。
  • 在数据库里看一眼计数表:每次请求都记下了吗?记在谁的名下?
  • 到模型平台的后台看实际用量和账单,和自己的计数对一对。

第 15 课 · 重构时的隐形依赖

删东西之前先问一句:还有谁在用它?回到这一课 →

下次让 AI 做这件事时,问它

  1. 这次要删或要改的变量、类名、组件,在整个项目里还有谁在引用?请全部列出来。
  2. 这些定义的作用域是什么?用到它们的地方都在作用域里面吗?
  3. 有哪些看不见的依赖(样式变量、全局类名、文件路径)?文件头注释里写清楚了吗?
  4. 改完之后,用构建产物或截图比对证明外观没变。

自己验证

  • 全项目搜索要删的名字,比如 grep -rn "var(--teal" src,确认每一处引用都有着落。
  • 改动前后各构建一次,逐个文件比对构建产物,看哪些页面变了、为什么变。
  • 打开用到这些样式的页面,在开发者工具里看计算后的颜色,是不是预期的值。

第 16 课 · 验收:怎么确认"真的没变"

先让测量可信,再相信它给的数字;结论要带着范围。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这次验收要比哪些页面、哪些状态(亮暗、中英、手机宽度)?哪些不比,为什么?
  2. 截图之前,动画、字体加载、平滑滚动都处理了吗?你怎么确认页面已经准备好了?
  3. 每一组差异具体出现在页面的哪个位置?请截出来给我看。
  4. 验收报告里,把比过的、没比的、有意保留的差异分三栏写清楚。

自己验证

  • 差异不为零时,先把两张截图并排打开,找到差异的具体位置,再下结论。
  • 同一个页面连续截两次、互相比对:如果差异不是 0,说明测量本身就不稳定。
  • 随机挑几个不在清单里的页面,亲手打开看一眼。

进阶第 6 篇 · 给产品装上 AI

第 17 课 · 流式输出:让慢回答不像卡死

慢是模型的事,卡是体验的事:先让第一个字尽快出现。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个 AI 功能的首字时间和总耗时分别是多少?请在线上实测几次。
  2. 从模型到页面,每一段都在逐段传递吗:SDK、服务端、中间的代理、前端?
  3. 用户点“停止”之后,服务器上的模型调用会停下来吗?这一次的额度怎么算?
  4. 回答写到一半出错时,页面怎么显示?已经出来的内容还保留吗?

自己验证

  • 用 curl -N 直接请求流式接口,看数据是一段一段到,还是最后一次性到。
  • 在浏览器开发者工具的“网络”面板里看这个请求的时间分解:等了多久才收到第一个字节。
  • 回答到一半时点“停止”,再去服务器日志里看这次调用有没有提前结束。

第 18 课 · Agent、工具与 Skill

给 Agent 的边界,要写在代码里、排在最前面,并且用测试证明。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个 Agent 能用哪些工具?每个工具能碰到哪些数据、会不会写入?
  2. 哪些操作是硬性禁止的?靠什么机制禁止?有没有测试证明它拦得住?
  3. Agent 的进程继承了哪些环境变量?请改成只传入必需的那几个。
  4. 最多循环几轮、预算上限多少?超过时用户会看到什么?

自己验证

  • 写一个测试:让 Agent 读取目录之外的文件、调用被禁止的工具,确认都被拒绝。
  • 在 Agent 进程里打印它实际拿到的环境变量名(只打印名字,不打印值),看有没有宿主留下的。
  • 把请求发到本地一个小服务上截下来,看请求里实际带的是哪个凭证(只看开头几位)。

第 19 课 · 成本护栏不能只信上报的用量

护栏数自己数得清的东西,钱以账单为准;上报的用量,只配当参考。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个 AI 功能每次调用大约用掉多少输入和输出 token?其中系统提示词和工具说明占多少?
  2. 接口上报的用量和费用,是按谁的价格算的?和平台账单对过吗?
  3. 护栏是按什么计数的?计数记在哪里、保留多久?
  4. 每次调用的用量有没有记下来?能不能每月和平台账单对一次?

自己验证

  • 同一个请求连发几次,比较上报的 token 数稳不稳定。
  • 到模型平台的后台,把一天的账单金额和自己数据库里的调用次数放在一起看。
  • 看一眼计数表的结构:除了“谁、什么时候”,还记了什么?

进阶第 7 篇 · 让 Agent 靠得住

第 20 课 · 工作台装不下的时候:交接与记忆

聊天里说过的,换个会话就没了。要留下来的,写进文件。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这次对话里定下的决定和理由,整理进方案文档;长期有效的约定,写进规则文件。
  2. 收工前写一份交接:做到哪了、定了什么、还没做完的、机器上还留着什么、接手的人怎么验证。
  3. 你在这台机器上启动过哪些后台进程、临时服务,改过哪些本地配置?全部列出来,说明要不要保留。
  4. 交接文档里的每一句,现在还是真的吗?和代码、和最近一次的测试结果对一遍。

自己验证

  • 开一个新会话,只给它交接文档,看它能不能不问你就接着干。
  • 在一个干净的目录里重新克隆一份,只照着说明文档从头走一遍。
  • 收工前看一眼本机开着的端口和后台进程,确认每一个都有着落。

第 21 课 · 几个 AI 一起干活

AI 之间不共享记忆,只共享文件。该让下一个知道的,写下来。回到这一课 →

下次让 AI 做这件事时,问它

  1. 开始之前,先读一遍项目里的规则文件和最近的交接说明,告诉我你读到了哪些约定。
  2. 这次你只负责下面这些文件。范围之外发现的问题,记下来交回给我,不要顺手改。
  3. 这次改动会碰到哪些别人也在用的东西(配置、依赖、共用的样式和规范)?改之前先列出来。
  4. 做完交回一份说明:改了什么、没做什么、别人拉取之后要做什么。

自己验证

  • 合并之前,拉取最新的主分支,把自己的提交变基到它后面,再把构建和检查重跑一遍。
  • 看一眼这次的提交动了哪些文件,是不是都在它负责的范围里。
  • 换一个 AI 审查时,给它同样的规则文件和验收标准,让它打开页面看结果,而不只是读汇报。

第 22 课 · 别让它自己验收自己

它说"没问题"时,先问:要是有问题,你这个测法看得出来吗?回到这一课 →

下次让 AI 做这件事时,问它

  1. 你是在什么条件下测的?浏览器、窗口大小、操作步骤,和我遇到问题时一样吗?
  2. 这个检查能不能失败?先放一个已知有问题的样本,证明它找得到。
  3. 你的结论里,哪一句是测出来的,哪一句是推断?分开写。
  4. 把原始输出贴出来,不要只给结论。

自己验证

  • 照你最初发现问题时的操作,自己复现一遍。
  • 它说"没有"的时候,追问一句:要是有,这个检查找得到吗?
  • 重要的改动,换一个 AI 或一个人,给同样的验收标准,独立查一遍。

第 23 课 · 给 Agent 一个能动手的环境

模型负责想,环境决定它能做什么、知道什么。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个 Agent 在哪个目录里运行?它能读到、改到哪些文件?
  2. 它启动时继承了哪些环境变量?哪些是这台机器特有的?请改成只传入需要的那几个。
  3. 开局放进提示词的是什么?哪些信息该直接给它,哪些该让它用工具自己去找?
  4. 缺了必需的目录、配置或变量时,它会在启动时就报错,并说清楚怎么补吗?

自己验证

  • 在一个干净的目录里重新克隆一份,只照着说明文档操作,看能不能跑起来。
  • 故意拿掉一样必需的东西(资料目录、某个配置),确认启动时就报错,而不是等到第一次提问才出问题。
  • 打印 Agent 进程实际拿到的环境变量名(只看名字,不看值),对照你打算交给它的清单。

第 24 课 · 限制放在哪:经验、钩子,还是人

希望它做到的,写进提示词;必须做到的,写成代码;做错了要有人担责的,留给人拍板。回到这一课 →

下次让 AI 做这件事时,问它

  1. 这个 Agent 有哪些"不许做"的规则?每一条写在哪里:提示词、代码,还是要人确认?
  2. 哪些限制是必须做到的?请写成代码,并给每一条写一个故意越界的测试。
  3. 哪些动作会写数据、发消息、花钱,或者撤销不了?执行之前要不要先让人确认?
  4. 代码里的这些限制,会不会把正常的用法也挡住?被挡住时,用户会看到什么?

自己验证

  • 对每条"必须做到"的限制,发一个故意越界的请求,确认它真的被拦下,而不是只看提示词里写了没有。
  • 列一张表:每条限制、放在哪一层、靠什么验证。没有验证办法的那几条,就是还没守住的。

第 25 课 · 看得见才改得好:日志、评测与闭环

看得见,才知道错在哪;有标准答案,才知道改对了没有。回到这一课 →

下次让 AI 做这件事时,问它

  1. 启动时把实际生效的配置打印出来:连的是哪个地址、哪个模型、读进了几项配置(不打印密钥)。
  2. 每次回答都记下:问题、调用了哪些工具、读了哪些文件、用了多久,存起来供以后分析。
  3. 先帮我写评测题:每条写清必须命中的要点和出处;资料里没有的题,先在全文里搜一遍,确认真的没有。
  4. 用户反馈的问题修好之后,把它写成一条评测题;评测跑通了,才算处理完。

自己验证

  • 改提示词、换模型之后,先跑一遍评测,和改之前的通过率对比。
  • 故意配错一个地址,看日志能不能让你在几分钟内找到它。
  • 翻一遍反馈清单:标了"已处理"的每一条,都有一条对应的评测题跑通了吗?