Claude Code团队成员详解Fable 5:长任务前先找未知盲区的方法
长程任务中模型常因用户未明确约束而自行补全世界。将盲区分为四类,开工前扫描未知盲区,执行中记录偏离,结束后生成解释并提问验证,可有效降低返工风险,减少模型幻觉,显著提升长程任务可靠性。
作者 Thariq(@trq212)近期在 X 平台发布了一篇题为《A Field Guide to Fable: Finding Your Unknowns》的文章,深入探讨了长程任务中最容易出现的瓶颈——模型自动填充未知信息。随着 Fable 5 处理长程任务的能力持续增强,这一问题愈发明显:业务约束未明确说明、代码历史未充分交代、交互偏好未定义、审查标准仅存于脑海,最终导致模型在代码中自行猜测并做出选择。Thariq 将此总结为一套实用方法论:任务开始前先识别盲区,执行过程中记录偏差,任务完成后让 Claude 反向解释并测试你的理解。
核心在于“unknowns”这个概念。那些你未能清晰阐述、未曾意识到、或仅在看到结果后才回想起来的内容,正是盲区。当 Fable 5 遇到这些信息空白时,它不会无限等待;多数情况下,它会基于现有上下文做出看似合理的推断。等到你查看 diff 时,问题可能已经层层嵌套。

Thariq 用一个形象的比喻说明:prompt、skills、context 构成“地图”,而真实的代码库、业务约束和运行环境则是“疆域”。地图与疆域之间的差异,就是 unknowns。Fable 5 处理长程任务的能力越强,就越需要提前缩小这一差距。模型能够连续执行更多步骤,同时也意味着它会在更多未明确说明的环节自行补全信息。
四种未知盲区(unknowns)
Thariq 将 unknowns 划分为四类,这套分类非常适合用来审视自己的 prompt 设计。

第一类是 known knowns,即你已经明确写入 prompt 的内容。例如你告诉 Claude:要新增一个登录方式,指明目标文件位置,要求接口兼容旧逻辑。
第二类是 known unknowns,即你清楚自己尚未想清楚,也知道该提出哪些问题。比如数据库 schema 是否需要调整,旧用户迁移如何处理,异常状态应该呈现为何种形式。
第三类是 unknown knowns,这类信息通常隐藏在你的经验中。你没有写出来,但看到结果时能判断好坏。设计、交互、代码风格、产品语气等往往属于此类。
第四类是 unknown unknowns,即你连自己不知道什么都不知道。例如这块代码历史上曾踩过哪些坑,团队内部有哪些隐形约定,某个模块为何不能随意改动。
优秀的 agentic coder 通常拥有更少的 unknowns。原因并不神秘:他们更清楚自己的需求,也更熟悉代码库和模型的习惯;同时,他们默认 unknowns 一定存在,并将发现 unknowns 视为任务的一部分。这也是 Fable 5 这类长程模型的使用门槛——模型能力越强,人越不能只写一句“帮我实现一下”。
开工前,先让 Claude 识别盲区
如果任务涉及不熟悉的领域,Thariq 建议先做一次盲区扫描(blind spot pass)。例如你要修改一个不熟悉的 auth 模块,可以这样提问:
我计划添加一个新的身份验证提供者,但对该代码库中的 auth 模块不熟悉。请先帮我做一次盲区扫描,找出我可能未意识到的 unknown unknowns,并协助优化后续的 prompt。
这句话的价值在于,它没有直接要求 Claude 开始实现,而是让 Claude 先展开问题空间。它可以搜索代码库、查看历史实现、寻找相似模块、列出潜在约束。你不需要全盘接受,但它能帮你更早发现自己尚未提出的问题。

前端、设计、交互、数据展示等任务尤其适合先进行头脑风暴和原型制作。很多判断属于“我看到才知道”,直接操作真实代码成本过高,让 Claude 先做几个 HTML 原型更划算。例如先制作 4 个完全不同的 dashboard 方向;或者在不连接后端、不改动真实状态的情况下,用假数据构建一个编辑器工具栏。这个阶段不必追求交付代码,重点是把那些说不清的偏好逼出来。
还有一个很实用的技巧:让 Claude 采访你。不要一次性提出十个问题,而是逐个提问,优先询问那些“答案会改变架构”的关键问题。很多时候,Claude 并不缺少大量背景材料,它等待的是你在关键分岔路口给出明确的选择。
参考物比描述更管用
很多时候,你无法准确描述自己想要什么。Thariq 的应对方法很直接:提供参考(reference)。参考可以是文档、截图、设计图。对于 coding agent 而言,最好的参考往往是源码。如果你喜欢某个组件、某个库、某个现有模块的行为,就让 Fable 去读取对应目录,即使它使用另一种语言。这一点对 Claude Code 尤为重要。截图只能告诉模型“长什么样”,源码则会传递结构、命名、状态、约束和交互细节。模型读到的是一套可复用的实现范式。
待准备进入实现阶段时,再让 Claude 编写 implementation plan。Thariq 会将计划的前半部分留给那些最可能被调整的内容,比如数据模型、类型接口、用户可见流程。机械重构可以放在后面,最需要人工决策的内容要前置。这样做等于重新分配 review 的注意力——你不应该只检查“它有没有把文件改完”,更要看“它有没有选对方向”。
实现过程中,留一份 notes
无论计划多么细致,进入代码后仍会遇到新的 unknowns。例如某个旧接口行为与预期不符,某个组件无法按计划复用,某个异常状态要求你更换实现路径。如果 Claude 只是一路改下去,最后你看到的只是一堆 diff,很难了解中间发生了什么。
Thariq 的做法很朴素:让 Claude Code 维持一个临时的 implementation-notes.md 或 .html 文件。每次遇到偏离计划、临时取舍、异常约束,都记录下来。这份 notes 后续会很有用——下一轮 prompt 可以基于它继续推进,review 时也能更快判断:哪些地方按计划完成了,哪些地方是模型在未知中做出的选择。
合并前,让 Claude 反过来考你
长任务完成后,仅查看 diff 往往不够。代码改动可能很多,实际行为还隐藏在现有路径中。Thariq 建议让 Claude 做两件事。
第一,将 prototype、spec、implementation notes 打包成一个 explainer。当需要向同事、reviewer 或产品方展示时,一份能解释决策的文档比一堆 diff 更容易推进工作。

第二,让 Claude quiz 你。即让 Claude 基于这次改动编写一份解释和测验,你读完后必须答对,才合并代码。这个动作看似绕了一圈,但非常适用于长程 agent 工作流。模型做了很多事,你不一定每一行都看完;quiz 能检查你是否理解了主要行为、关键取舍和潜在风险。对于复杂改动来说,这比“扫一眼 diff 感觉没问题”更可靠。
Fable 发布视频就是这样做出来的
Thariq 给出了一个实例:Fable 的 launch video 是作者使用 Claude Code 完成剪辑的。这对作者来说是一个全新领域。他知道 Claude 可以用代码剪视频、转录视频,但不确认转录是否足够准确,也不确定能否用 ffmpeg 自动剪掉口癖和长停顿。于是他先让 Claude 解释 Whisper 这类转录工具的工作原理,再用 Remotion 和 transcript 制作原型,验证 UI 能否与说话内容对齐。后来视频颜色偏灰,他意识到问题可能在 color grading,但自己也不知道什么叫“好”的 color grading,于是让 Claude 先教授这部分知识,再继续推进。
这个例子正好说明 Fable 5 的使用方式:它可以帮你做事,也可以帮你发现自己还不知道什么。你越早把 unknowns 暴露出来,它就越不需要在关键位置替你猜测。
总结
Fable 5 强在执行能力,也强在把人的瓶颈暴露出来。过去使用 Claude Code,我们更关心它会不会写代码、能不能跑测试、能不能一次修完 bug。到了 Fable 5 这类长程模型,问题开始前移:任务开始前,人有没有把未知拆清楚;任务进行中,模型有没有记录偏离;任务结束后,人能不能说清改动。
短任务可以直接让模型写。长任务最好先让它找盲区、做原型、采访你、找 reference、写 plan。实现时让它记 implementation notes。结束后让它写 explainer,再反过来 quiz 你。这些步骤看似多了几件事,但省下的是后面返工和 review 的时间。
下次再让 Claude Code 接长任务,可以先别急着说“帮我实现”。先问它一句:这件事里,我还有哪些 unknown unknowns?
参考链接
- A Field Guide to Fable: Finding Your Unknowns:https://x.com/trq212/article/2073100352921215386
- Fable launch video:https://x.com/ClaudeDevs/status/2064399512664526853

