
背景说明Anthropic 创始团队成员、Claude Code 核心开发者 Thariq Shihipar 今天在 X.com 上写了一篇 Fable 模型实战说明。看完之后很有启发感觉这套方法不止适用于 Claude Code 和 Fable 模型也适用于其他 Coding Agent 和模型。现在的大模型已经足够聪明我们需要的是向模型澄清事实让模型帮我们理解自己不清楚的内容从而生成符合预期的结果。以下为原文主要内容的翻译和整理作者使用 Claude Fable 5 一起工作时总是想起一个古老的道理地图不是领地。地图是对要完成的工作的表示它是你的提示词、技能和上下文是你交给 Claude 的东西。领地是工作真正需要发生的地方也就是代码库、真实世界以及它实际存在的约束。地图和领地之间的差异就是作者所说的 unknowns未知项。当 Claude 遇到一个未知项时它需要基于自己对你想要什么的最佳猜测来做决定。要做的工作越多Claude 可能遇到的未知项就越多。Fable 是第一个让作者觉得工作质量受限于澄清未知项能力的模型。重要的是仅仅提前规划并不总是足够。你可能会在实现深处发现未知项或者你的未知项可能会指向这样一个事实你实际上应该用一种完全不同的方式来解决问题。作者发现使用 Fable 工作是一个在实现前、实现中、实现后不断发现自己未知项的迭代过程。了解你的未知项你的未知项是什么当带着一个问题来找 Claude 时通常需要从4个方面分析问题已知的已知这本质上就是提示词里写的内容。告诉 Agent 你想要什么已知的未知你还没有弄清楚什么但你知道自己还没有弄清楚未知的已知太显而易见以至于不会写出来但只要看见它就能认出来未知的未知你完全没有考虑到什么有哪些知识是你不知道自己不知道的也不知道某件事能好到什么程度最好的 Agentic Coders 相对来说未知项很少。看 Boris 或 Jarred 这样的人写提示词时很明显能感觉到他们非常具体地知道自己想要什么。他们和代码库、模型行为都高度同步。但他们也会预设未知项的存在。从很多方面看减少未知项并为未知项做计划就是 Agentic Coding 的技能。幸运的是这是一项可以通过和 Claude 一起工作来提升的技能。让Claude帮助你指导 Claude 是一种微妙的平衡。如果你过于具体即使中途转向可能更合适Claude 也会照着你的指令执行。如果你过于模糊Claude 往往会基于行业最佳实践做选择和假设而这些可能并不适合你的任务。当你没有把未知项纳入考虑时你会在两个方向上同时失败。你不知道什么时候道路上会充满障碍也不知道什么时候道路会很清晰但你仍然希望 Claude 能够适时转向。Claude 可以帮助你更快发现自己的未知项。它可以非常快速地搜索你的代码库和互联网而且它对一般主题知道得比你多得多。它也能更快地从失败中迭代。这个过程中最重要的部分是给 Claude 关于你起点的上下文。例如告诉它你的思考进展到哪里说明你对这个问题和代码库的经验并让它像一个思考伙伴一样和你一起工作。实现前盲区扫描开始工作时最有用的事情之一就是理解你的盲区。例如如果你要在代码库中一个新的部分编写功能或者让 Claude 帮你做自己不熟悉的工作比如迭代一个设计那么你很可能会有很多未知的未知。你可能不知道该问什么问题不知道好的结果是什么样不知道过去做过哪些历史工作也不知道应该避开哪些坑。为此你可以让 Claude 帮你找到你的未知的未知并向你解释它们。作者喜欢直接使用“blindspot pass盲区扫描”和“unknown unknowns未知的未知”这两个词。给它关于你是谁、你知道什么的上下文通常也很重要。示例提示词“我正在添加一个新的认证提供方但我对这个代码库里的认证模块一无所知。你能做一次 blindspot pass帮我弄清楚相关的 unknown unknowns并帮我更好地提示你吗”“我不知道什么是 color grading但我需要给这个视频做调色。你能教我理解关于 color grading 的 unknown unknowns让我能更好地写提示词吗”头脑风暴和原型当在一个有很多未知的已知的领域工作时也就是那些只有在看到之后才知道如何定义标准的东西作者喜欢和 Claude一起头脑风暴并做原型。在原型阶段尽早识别并说出未知的已知非常有价值因为在实现阶段才发现它们可能会相对昂贵。功能或规格中的小变化可能导致代码实现完全不同而且让你的 Agent 回退之前的改动也可能更困难。例如你可能只是想看看在一个 frame 上加一个按钮是什么样而不想为了它接入后端路由或者在前端维护额外状态。视觉设计很难表达清楚但在看到它时知道自己想要什么。在这些情况下作者会要求 Claude 为提供几种设计方法。几乎会在每一次编码会话开始时先做探索或头脑风暴阶段。这帮助你带着明确意图来定义项目范围。Claude 经常会发现我们会错过的高价值方法有时也会只见树木不见森林。头脑风暴能防止我们把范围设得过窄或过宽。示例提示词“我想为这些数据做一个 dashboard但我没有视觉品味也不知道什么是可能的。给我做一个 HTML 页面包含 4 个差异极大的设计方向好让我对它们做出选择。”“在接入任何东西之前先做一个单文件 HTML用假数据 mock 新的编辑器工具栏。我想先对布局做出选择再让你碰真实应用。”“这是我的粗略问题用户会在注册之后流失。搜索代码库头脑风暴 10 个我们可以干预的地方从成本最低到最激进排序。我会告诉你哪些方案更可行。”访谈当已经做了足够的头脑风暴之后很可能仍然还有未知项。在这种情况下让 Claude 就任何未知项或模糊之处与你交互。让 Claude 询问你时尽量给它关于问题的上下文以引导它提出问题。下面是一些例子。示例提示词“一次问我一个问题询问我关于任何模糊之处的看法。优先问那些我的答案会改变架构的问题。”参考资料有时你无法详细描述自己想要什么。例如你可能没有相应的语言或者它太复杂了要完整描述会花很久。在这种情况下最好的答案是参考资料。你可以包含图表、文档或图片但绝对最好的参考是源代码。如果你有一个库以某种方式实现了某个东西或者有一个你非常喜欢的设计组件就把 Fable 指向那个文件夹并告诉它要看什么即使它是用另一种语言写的。这也是 Claude Design 的工作方式。你不必手动给它一个文件当然你也可以这么做。你可以把它指向你喜欢的网站上的一个模块它会读取底层代码而不只是截图。这能提供关于标记、结构以及组件实际如何构建的丰富得多的细节。示例提示词“vendor/rate-limiter 里的这个 Rust crate 实现了我想要的退避机制。读取它并在我们的 TypeScript API client 中重新实现相同语义。”实现计划当觉得自己已经准备好实现时让 Claude 整理一份实现计划给你审阅重点放在最可能发生变化的部分比如审查数据模型、类型接口或 UX 流程。这能让 Claude 浮现出我可能真的需要修改的东西。示例提示词“用 HTML 写一份实现计划但开头先列出我最可能会调整的决策数据模型变化、新的类型接口以及任何用户可见的东西。把机械性的重构埋到最下面那部分我信任你。”实现中实现说明一旦对计划满意开启一个新的会话并把所有相关文件传入提示词。例如我可能会传入一个 spec 文件和一个原型然后要求一个 Agent 去实现它。但事实是无论你做了多少规划总会有未知的未知潜伏着。Agent 可能会在工作过程中发现由于代码中的某个边界情况它需要采取不同做法。要求 Claude Code 保持一个临时的 implementation-notes.md或 .html文件用来记录它做出的决定这样我们就能从下一次尝试中学习。示例提示词“保持一个 implementation-notes.md 文件。如果你遇到迫使你偏离计划的边界情况选择保守选项把它记录在“Deviations”下面然后继续。”实现后提案和解释材料发布某个东西时最重要的部分之一是获得认同和审批。在最终文档中构建 提案和解释材料会有帮助当评审者一开始和你有同样的未知项时加速他们的理解。当专家希望看到你已经考虑到未知项以及他们原本会预想到的常见失败点时加速审批。示例提示词“把原型、spec 和 implementation notes 打包成一个单一文档我可以直接丢到 Slack 里获取大家认可。开头放 demo GIF。”小测试经过一次长时间工作会话后Claude 可能完成了比你意识的多得多的事情。阅读代码 diff 只能让你对发生了什么有一个浅层理解因为很多行为会依赖既有代码路径。在给你大量上下文之后让 Claude 就这次变更考考你能帮助你理解发生了什么。只有在完美通过测验之后才会合并。示例提示词“我想确保自己理解这次变更中发生的一切。给我一份关于变更的 HTML 报告让我阅读并理解其中包含上下文、直觉、完成了什么等等并在底部放一个关于这些变更的测验我必须通过它。”这些如何组合起来发布 Fable虽然作者不会做视频但用这套方法使用Claude Code剪辑完成了Fable模型的发布视频。作者让Claude解释Whisper视频转录的原理澄清可以做什么让Claude教自己做自己不会的内容最终完成了一个合格的发布视频。匹配地图和领土模型变得越好你用正确方法能实现的东西就越多。当一个长期任务返回错误结果时很可能是你需要花更多时间定义自己的未知项或者创建一个允许 Claude 在未知项中即兴处理的实现计划。每一个解释器、头脑风暴、访谈、原型和参考都是一种低成本方式让你在修复成本变高之前发现自己不知道什么。所以开始你的下一个项目时先让 Claude 帮你找到你的未知项。后记我们可以在自己的 Coding Agent 中使用 Superpowers Skill把头脑风暴、设计方案编写、编码实施计划等流程固化下来达到上文提到的效果。Superpowers 是一组面向 Coding Agent 的工作流 Skill可以把常见的软件工程协作步骤拆成可复用的方法让 Agent 更稳定地完成从澄清问题、制定计划到编码实施的过程。原文链接 https://x.com/trq212/status/2073100352921215386