@bozhou_ai: https://x.com/bozhou_ai/status/2074030629956780417

X AI KOLs Timeline 新闻

摘要

本文作者基于Anthropic员工Thariq的《A Field Guide to Fable》文章,重新思考了AI编程工作流中的未知项管理,提出了从盲区扫描、多版原型、AI采访到实现笔记和测验等方法,强调在编码前发现未知因素以减少返工。

https://t.co/6omQIX8oSM
查看原文
查看缓存全文

缓存时间: 2026/07/06 14:14

从盲区扫描到测验合并,我重写了 AI Coding 工作流

同一个需求,我重写了三遍 prompt。

第一遍,AI 把不该动的旧逻辑改了;第二遍,我把“不要动 XX“全列上去,它倒是没乱动了,但做出来的东西完全不是我想要的感觉;第三遍,我把要求写得事无巨细,结果它死板地照做,明明代码库里有现成的更好方案,它看都不看。

我一直以为,是我 prompt 写得还不够细。

直到看完 Anthropic 员工 Thariq 的《A Field Guide to Fable: Finding Your Unknowns》,我才发现这个循环是个死路。

**写得太细,AI 该变通时不敢变通;写得太粗,AI 就用“业界最佳实践“猜你想要什么。你在“细“和“粗“之间反复横跳,永远找不到那个平衡点。因为有一堆你没说出来、甚至你自己都不知道的信息,AI 每次都在替你猜——prompt 改得再好,也覆盖不到这些。

看完这篇文章,我把自己整个 AI coding 的流程推翻重来了。这篇不做翻译搬运,我带你把我理解这套方法的过程走一遍——包括我理解错的地方。我踩的坑,你大概率也会踩。

一、AI 做偏的时候,它在猜

先从一个你一定遇到过的场景说起。

你跟 AI 说:“帮我给登录系统加一个微信登录。”

半小时后它交活了,你一看:UI 风格跟原来的登录页完全不搭,用户表里新建了一堆字段,原来的手机号登录逻辑还被它顺手“优化“了。

你的第一反应可能是:这模型不行。

Thariq 给了另一个解释,他借用了一句老话:地图不是领土(The map is not the territory)。

  • 地图,是你给 AI 的信息:提示词、规则、计划、验收标准。

  • 领土,是 AI 干活的地方:真实的代码库、历史包袱、你的审美、那些“我们项目从来不这么干“的隐规则。

地图和领土之间的差距,就是未知项(unknowns)

AI 遇到未知项时,不会停下来发呆,它会接着往下猜——按“业界最佳实践“猜,按“一般人应该想要这样“猜。任务越复杂,未知项越多,猜的次数越多,偏差就一点点累积。最后你看到的,就是那个“能跑,但完全不是我想要的“的结果。

Thariq 有句话让我停下来想了很久,大意是:Fable 是第一个让他感觉到,工作质量卡在他澄清未知项的能力上,而没有卡在模型上。

模型越强,这句话越成立。

二、四类未知项:我在这里踩了第一个坑

Thariq 把未知项拆成四类。这个分类直接决定你该用什么方法对付它,值得逐个看。

我用大白话说:

  • 我知道我知道的 —— 你已经写进提示词的信息。“加微信登录,别动手机号登录,UI 沿用现有组件。”

  • 我知道我不知道的 —— 你意识到了但还没答案的问题。“新用户要不要强制绑手机号?我还没想清楚。”

  • 我知道,但没说出来的 —— 你脑子里有标准,但觉得“这还用说吗“。比如你讨厌花里胡哨的 UI,比如你们项目从来不用弹窗。

  • 我根本没意识到自己不知道的 —— 你连这是个问题都不知道。比如你没做过微信登录,根本不知道 unionid 需要绑开放平台才有。

第 3 类最坑人。AI 又不会读心,你没说,它就按通用经验来——结果一出来你说“不是这个感觉“。它每一步都照做了,只是你心里那条标准从没说出口。

第 4 类最危险。第 3 类的问题你看到结果还能反应过来,第 4 类你连问的意识都没有,它就静静躺在那里,等上线之后爆炸。

**我第一次读到这里,就理解错了。我当时想:那“盲区扫描“这招,应该就是用来找第 3 类的吧——把我知道但没说的标准扫出来。

错了。盲区扫描对付的是第 4 类。

后来我想明白了:你知道但没说的标准,扫描是扫不出来的,因为它在你脑子里,AI 在任务里翻不到。这类未知只能靠“给你看东西、让你反应“逼出来——原型、参考案例、AI 反过来采访你。盲区扫描对付的是你连问题存在都不知道的坑:webhook 会重放、可能重复扣款、测试环境配不了回调域名……这些你不可能主动问,只能让 AI 替你排雷。

**不同的未知,要用不同的武器。用错了武器,你会觉得“这方法没用“,但你只是打错了靶子。

三、动手前:先找坑,再实现

理解了四类未知,整个“动手前“的流程就顺了。我现在开工前会按情况做这几件事。

1. 盲区扫描 —— 对付“我不知道自己不知道“

进入不熟悉的领域,第一句话从“帮我实现“换成:

先不要实现。帮我做一次盲区扫描:这个任务里,我可能根本没意识到的坑、边界情况和需要提前定的决策有哪些?按“会不会导致返工/影响架构/影响数据安全“排序。

最后那句排序很重要,不然 AI 会给你列 30 条,把最致命的埋在中间。

2. 多版原型 —— 对付“我知道但说不出来“

审美这种标准,我说不清,但我看了就知道。所以:

先别接真实逻辑。用假数据做 4 个方向完全不同的原型,我看完告诉你我喜欢哪个、讨厌哪个。

原型一定要便宜:假数据、单文件、不碰真实业务。它就干一件事——在改起来还便宜的时候,把你脑子里那些“这还用说吗“的标准逼出来。

3. 让 AI 采访你 —— 对付“我知道我不知道“

采访我,一次只问一个问题,优先问那些答案会改变架构、数据模型或用户流程的问题。

一次一个问题,这个细节很重要。AI 一口气甩 20 个问题,你会麻,挑软柿子答。

4. 实现计划 —— 开工前最后一道闸

让它先出计划,而且明确要求:把最可能变的部分放最前面——数据模型、接口、用户流程。机械性的重构放最后,那部分我信它。

四、动手中:我踩的第二个坑

规划做足也挡不住实现途中冒出来的未知项,Thariq 在文章里专门强调了这一点。AI 钻进代码库以后,才会撞上真实约束——某个组件跟计划里的名字不一样、某个测试写死了登录方式只有两种。

我在这里踩了第二个坑。

想一个场景:AI 实现时发现,计划里说用 LoginButton,但代码库里统一用的是功能一样的 AuthButton。它该怎么办?

我原来的直觉是:停下来问我。

又错了。合理的做法是:复用现成的 AuthButton,把这个偏离记下来,继续干活。

我当时的逻辑是“有不确定就该问我啊“。但你想想,如果 AI 每碰到一个命名差异都停下来问你,你等于雇了个每五分钟敲一次你门的实习生——那还自动化个什么劲。

分界线是风险,跟“有没有偏离计划“没关系:

  • 小的代码库适配(组件命名、测试文件位置、代码风格):选保守方案,记一笔,继续走。

  • 高风险决策(动用户数据、合并账号、删字段、改权限、难以回滚的操作):必须停下来问,不许猜。

那“记一笔“记在哪?Thariq 的做法是让 AI 维护一个临时的 implementation-notes.md,记录四类信息:它做了什么假设、为什么选这个方案、哪里偏离了原计划、发现了什么边缘情况。

这个文件干的事,是把 AI 原本会悄悄完成的猜测,变成你可以检查和纠正的记录。AI 做复杂任务时,改错一行代码你还能查出来;它替你做了一堆判断而你根本不知道,你连查的入口都没有。

五、做完后:测验全对,才许合并

这个环节我以前完全没有,也是这篇文章对我流程改动最大的地方。

以前 AI 干完活,测试绿了,我扫一眼 diff,合并。感觉效率很高。

但 Thariq 点破了一个问题:diff 只告诉你“文件变了“,没告诉你“行为变了什么“。你处在一种很危险的状态里——

代码是 AI 写的,能跑,但我不知道它为什么这么写,也不知道哪里会坏。

他管这叫失去对系统的“理解权“。解法是两步。

第一步,要一份解释报告。“已完成✅“那种总结没用,要的是:解决了什么问题、关键决策是什么、和原计划比哪里变了、有哪些边缘情况、还剩什么风险。

第二步,让 AI 反过来考你。

给我出一套关于这次改动的测验,覆盖动机、业务逻辑和边缘情况。我答错时别直接给答案,先追问我的理解。

Thariq 的规矩是:测验不全对,不合并。

我第一次看觉得有点行为艺术,试了一次就服了。AI 问我“如果微信没返回 unionid,现在的流程会怎么走“,我卡住了——那一刻我才承认,我对这次改动的理解只停留在“它大概加了个登录方式“。

答不上来的那道题,就是你的下一个未知项。

六、重塑之后的流程长什么样

学完这一整套,我把自己的 AI coding 流程重写了。对比一下:

**以前:想需求 → 写个尽量详细的 prompt → AI 实现 → 看结果不对 → 加需求重来 → 循环到能用为止。

现在:

  • 动手前:不熟的领域先盲区扫描;说不清的标准用多版原型逼出来;想不清的决策让 AI 采访我;最后出实现计划,重点看会变的部分。

  • 动手中:AI 维护实现笔记;小适配记录后继续,碰数据、账号、架构的必须停下来问我。

  • 做完后:解释报告 + 测验,全对才合并。

以前我在优化 prompt,现在我在管理未知项。

以前那个循环慢在哪?每次“结果不对“,都是某个未知项拖到实现完成之后才暴露——代码已经写完、方向已经固化,返工要推翻的东西最多。新流程里的每个动作,盲区扫描、原型、采访、测验,干的都是同一件事:趁改起来还便宜,把未知项提前挖出来。

模型只会越来越强。往后你和高手的差距,不会体现在谁的 prompt 写得长,而是同样让 AI 干一天活,有人拿到的是能直接合并的代码,有人拿到的是一堆看着能跑、但不知道哪里会坏的东西。

差别就在:谁知道自己还有哪些不知道。

最后,我把这一套流程总结成了一个 CLAUDE.md 文件——动手前的盲区扫描、原型、采访、实现计划,动手中的实现笔记和停下来问的规则,做完后的解释报告和测验,都写成了 Claude Code 能直接执行的约定。

项目地址:https://github.com/bozhouDev/finding-unknowns-skills

拿去直接用,放进你的项目根目录就行。

相似文章

@ba_niu80557: https://x.com/ba_niu80557/status/2071277244287426980

X AI KOLs Timeline

文章深入分析了Anthropic因AI代码生成变得极其高效而面临的内部变化:瓶颈从“写作”转移到“验证”,传统管理、长期规划和努力衡量失效,注意力成为新的稀缺资源,工程师甚至感到孤独。这些现象预示了其他公司未来可能面临的挑战。

@Khazix0918: https://x.com/Khazix0918/status/2062731170337763796

X AI KOLs Timeline

Anthropic发布深度文章《When AI builds itself》,展示AI系统正在加速自身开发,包括代码生成、基准测试饱和以及内部数据表明工程师生产力提升8倍。文章探讨递归自我改进的趋势与潜在影响。