返回文章
NO.
022
DATE
READ
~8 min
KIND
笔记
STATUS
原文

TAGS: AI 协作 架构

AI 时代,「对结果负责」到底是什么意思?

「对结果负责」不是保证结果正确,也不是尽力就行。这篇把交付声明拆成四级证据,给出定义需求的五个自检问题、让未知浮出水面的四条管道,以及不该独自承担的硬边界。

「对结果负责」——这句话人人认同,但几乎没人定义清楚。

它不可能是「保证结果正确」。测试只能验证你想到的场景,监控只能看到你选择记录的指标,连专家也无法彻底验证一个足够复杂的系统。如果「负责」等于「保证正确」,世界上不存在负责任的人。

但它也不能是「我尽力了就行」。尽力是态度,不是标准,没法被检验。

我认为,真正的答案藏在一个大多数人没有意识到的区分里。

一、你的声明站在哪一级?

你对自己交付的东西,能提出四种强度不同的声明:

第一级:它运行了。 没有报错,页面加载出来了。这是最低标准。

第二级:它过了我的测试。 在我想到的场景里,它按预期工作。

第三级:它满足了一个真实用户的需求。 不只是你自己——有一个实际使用它的人确认了它是对的东西。

第四级:它值得被真实用户依赖。 它处理不可逆的真实数据,影响真实的人,并承受住了这个重量。

大多数关于「不负责任」的争论,根源不是结果出了错,而是一个人的证据只够支撑第一级,嘴上却宣称自己站在第四级。

「伪精确」就是这么来的。「响应时间必须低于两秒」「测试覆盖率必须达到 90%」「错误率必须低于 0.1%」——这些数字如果没有来自真实用户、现有基线或技术测量,就是用第一级的地基去撑第四级的楼。

所以,对结果负责的第一步,不是「更努力地验证」,而是随时能说清三件事:我的证据支持哪一级?我说出口的是哪一级?这两个数字对得上吗?

这不是谦虚,是校准。

二、定义不清楚是常态,伪造精确才是陷阱

「先把验收标准定义清楚,再让 AI 开发」——这句话隐含一个前提:提需求的人已经理解业务逻辑、技术边界、异常场景和性能约束。

现实中,有经验的开发者也做不到一次全部定义清楚。一个刚接触编程的人只知道「我想导入一份 CSV」,他通常不会想到:文件编码是否统一?某一行格式出错怎么办?重复数据怎么办?导入到一半中断怎么办?会不会覆盖原有数据?用户怎么知道哪些记录失败了?

这些问题不是凭「更努力地思考」就能想到的。它们来自经验、测试、用户反馈和事故。

因此,「定义不完整」不是不能动手的理由。验收标准本来就不是一次写完的,而是逐渐发现的:从「导入过程中页面不能明显卡死」开始,通过测试发现 500 条正常、5000 条卡住,再逐渐把模糊感受转化成可测量指标。合理的过程不是「完美定义→AI 实现→最终验收」,而是「模糊目标→最小实现→观察问题→补充标准→再次实现→再次验证」。

真正危险的不是模糊,而是在模糊的时候伪造精确。初学者应该学会区分四类需求:

  • 已知要求:确实不能覆盖旧数据。
  • 暂定要求:先尝试支持 5000 条。
  • 未知问题:还不知道用户通常导入多少条。
  • 待验证假设:分批处理可能减少卡顿。

一句模糊但诚实的描述,永远比一个没有依据的精确指标更值得信任。

三、让无知撞墙,而不是要求自知

「你必须知道自己不知道什么」——这句话正确,但只在一定范围内可执行。

对于已知的风险类别,自知是做得到的:你知道自己没写过支付系统,你知道自己不懂数据库权限模型,你知道这是第一次处理用户隐私数据。这些「已知的无知」应该被正视,不需要等任何管道来提醒。

但对于真正的未知——你根本没意识到存在的问题——自知就失效了。你没法列出一张不在你脑子里的清单。把「我必须知道自己不知道什么」当唯一目标,只会得到焦虑,不会得到行动。

你需要的是为两种情况分别准备:对已知的无知,诚实承认并寻求帮助;对未知的无知,搭建管道,让问题自己浮出水面。

管道有四条:

让机器枚举。 让 AI 列出异常场景、边界条件、风险清单。清单不会完整,但它把「你完全没想到的问题」变成了一张可以逐条审查的候选名单。不要直接让 AI 开始写代码,先要求它:「根据这个需求,列出正常流程、异常流程、数据风险、性能风险和建议测试方法。不要修改代码,先向我解释。」

让世界测试。 用真实样本,不是 AI 生成的样本。世界不会按你的假设配合你。三份来自真实场景的数据,比十份 AI 编造的测试数据更诚实。

让时间拉长。 分阶段上线、小范围灰度、先在副本上跑。把一次性的大赌注拆成多次可修正的小赌注。

让别人看见。 另一个模型审查、一个懂行的朋友检查、一个真实用户试用。你的盲区不会消失,但另一个人有不同的盲区。

关键原则不是「我什么都知道」,而是「我的不知道会撞上一面墙」。撞墙比自觉更可靠。

四、从五个问题开始

如果不知道怎样定义需求,逐步回答下面五个问题。它们不需要回答得完美,但必须诚实。

正常情况下,我想看到什么? 用一个具体例子描述:我选择一份包含姓名和邮箱的 CSV,点击导入后,页面显示成功数量,联系人列表里出现新数据。这是一条最基本的正常路径。

什么绝对不能发生? 不能删除原有联系人。不能把密钥或密码上传到外部服务。不能因为一行出错丢掉整份文件。不能在没有提示的情况下覆盖数据。——「禁止发生的事」永远比性能数字更容易定义,也更重要。

输入不正常时会怎样? 空文件、缺少列、重复记录、编码错误、文件过大、导入中断。你可以让 AI 列出候选清单,但必须自己判断哪些值得处理。AI 可以拓展视野,但不能代替你决定哪些风险值得处理。

我准备怎样证明它有效? 用三份不同的真实样本测试。导入前后对比记录数量。故意插入一条错误数据。中途关闭页面。查看 Git diff。查看浏览器日志和网络请求。和旧版本结果对比。——「试了一次没报错」是证据,但只是第一级证据,不要把它包装成充分验证。

如果判断错了,能否恢复? 修改前提交 Git。操作数据库前备份。先在小数据集上测试。不在唯一的生产数据上运行。保留旧版本。明确回滚步骤。——犯错不可耻;犯错且没有退路,才真正危险。

五、出题和判卷,不能来自同一个来源

如果同一个 AI 理解你的需求、编写代码、设计测试、然后解释为什么测试通过——它很可能让代码和测试共享同一个盲点。

解法不是「第二个 AI 一定更准」——它同样可能复制偏见。解法是让见证者与出题者不同源:

  • 测试样本来自真实世界,不是 AI 生成的。
  • 对照的是旧版本或人工结果,不是 AI 的回忆。
  • 真正的使用者试用,不是作者自己演示。
  • 对支付、权限、隐私和删除操作,寻求有经验者审核。

一个独立的见证者不需要完美,只需要和出题者不同源。一条独立的错误发现渠道,比十个同源的检查都有价值。

六、硬边界:什么不能独自做

「对结果负责」也包括知道什么时候不该独自承担。

你可以用 AI 做本地工具、个人网站、可丢弃的实验、有备份的数据处理脚本。

但不应该仅凭「运行成功」就独自上线以下系统:

  • 支付系统
  • 权限和身份验证系统
  • 大规模删除或数据迁移程序
  • 涉及用户隐私的数据处理
  • 医疗、法律或金融判断系统
  • 无法恢复的生产数据库操作

这不是因为你不够努力。而是在这些领域里,第一级证据和第四级之间隔着巨大的距离——领域知识、合规要求、边界条件的数量——不是个人谨慎和 AI 辅助能跨越的。

负责任的选择有时是降低范围、寻找专业帮助,或者不做。知道什么时候不做,本身就是对结果负责。

七、责任的本质:让别人能检查你

这一点最常被忽略。

责任不只是个人品质——「我很认真、我很仔细」。责任的本义是「你向某人负责」,它是一种关系结构,不是一种内心状态。

具体来说:Git 历史让人看到你改了什么。写在注释里的假设让人知道你当时在想什么。验证脚本让人可以重现你的测试。一句「我不确定这个部分是否可靠」让后来者知道哪里需要额外注意。

你无法对一个「没人能看见」的结果负责。

所以,对新手来说,最被低估的能力不是「更谨慎」,也不是「更聪明」,而是「把自己暴露给审查」。把刚做完的东西拿给别人看,把验证过程写下来,诚实地说「我不确定」——这些动作比任何个人技巧都更接近责任的本质。

有人会说,既然结果本来就无法保证,那就只能「对决定负责」。这句话本身没错,但它不是免责声明。如果一个错误是你三分钟就能看清的路标,你无视了它,那不是「结果不可控」,那是决定本身有过失,该被追究。决定可查意味着问责更容易,不是更难——因为有一张可以逐条检查的清单,而不是一句含糊的「结果不好」。

八、诚实的结尾

即使做到以上所有,你仍然可能遗漏真正关键的问题。

测试只覆盖你想到的场景。监控只记录你选择的指标。第二个模型可能重复第一个模型的偏见。

AI 时代可能不存在一种廉价、通用、彻底的验证方式,能让缺乏领域知识的人安全驾驭任意复杂系统。AI 降低了生成成本,工具降低了部分验证成本,但领域知识、风险判断和真实世界反馈仍然稀缺。AI 让能力边界向外扩展了,但能力边界没有消失。

我在生成变便宜以后,验证与信任成了新的生产资料里写过这件事的另一面:在组织层面,稀缺的是验证与筛选的产能。这篇是同一个约束落到个人身上的样子——稀缺的是撑得起你那句话的证据。

所以最终建议只有一条:让项目的风险、范围和不可逆性,与你当前的理解能力相匹配。

而进步的标志不是从「它运行了」直接跳到「我能证明它正确」——中间隔着三级证据。进步的标志是你终于能说清楚自己站在哪一级,你为下一级付出了什么证据,你说出口的声明和手中的证据是否对得上。

这四件事——它运行了、它过了我的测试、它满足了一个人的需求、它值得被真实的人依赖——从今天起不要再混为一谈。

评论 →

CC BY-NC-SA 4.0

本文采用 CC BY-NC-SA 4.0 进行许可。

评论

评论由 GitHub Discussions 提供。登录 GitHub 后即可评论。 前往对应 Discussion