---
type: article
title: "Claude Fable 实战指南：发现你的未知"
date: 2026-07-06 23:52:00 +0800
tags: [translation, claude, fable, unknowns, agent, coding, design, anthropic]
---

> 原文：[A field guide to Claude Fable 5: Finding your unknowns](https://claude.com/blog/a-field-guide-to-claude-fable-finding-your-unknowns)
> 作者：Thariq Shihipar（Anthropic 技术团队成员）

![地图与领土](/images/2026/finding-your-unknowns/map-territory.png)

在使用 Claude Code 时，我常常想起**地图与领土**之间的区别。

**地图**，即待完成工作的表征，是我的`提示词`、`技能`和`上下文`——是我提供给 Claude 的东西。**领土**，则是工作需要实际发生的地方：`代码库`、`现实世界`、`真实的约束条件`。

地图与领土之间的差距，就是我所说的**未知（unknowns）**。当 Claude 遇到一个未知时，它需要根据对我意图的最佳猜测来做出决策。工作量越大，Claude 可能遇到的未知就越多。

Claude Fable 是我遇到的第一个模型，其工作质量的瓶颈在于**我澄清未知的能力**。

重要的是，仅仅提前规划并不总是足够的。你可能会在深入实现时发现未知，或者你的未知可能指向一个事实：你其实应该用完全不同的方式来解决问题。

我发现，使用 Fable 工作是一个**迭代过程**——在实现之前、之中和之后，不断发现自己的未知。

## 认识你的未知

你的未知是什么？当我带着问题来找 Claude 时，我倾向于将其分解为四种类型：

- **已知的已知（Known Knowns）**：这本质上就是我的提示词中的内容。我告诉智能体我想要什么？
- **已知的未知（Known Unknowns）**：我还有什么没搞清楚的，但我已经意识到我还没搞清楚？
- **未知的已知（Unknown Knowns）**：有哪些事情如此显而易见，以至于我永远不会写下来，但看到时却能认出来？
- **未知的未知（Unknown Unknowns）**：我完全没有考虑过什么？有哪些知识是我不知道自己不知道的？我知道某件事可以做得多好？

![四类未知矩阵](/images/2026/finding-your-unknowns/unknown-matrix.png)


| 象限 | 解释 |
|---|---|
| **已知的已知** | 你提示里的内容 — 你告诉 Agent 你想要什么。 |
| **已知的未知** | 你知道该问的问题 — 你还没弄清楚、但你知道自己不知道。 |
| **未知的已知** | “一见便知” — 太显而易见，不用写下来；但看到时你会认得。 |
| **未知的未知** | 你从未考虑过的事 — 那条路上你不知道会存在的坑。 |

![四类未知矩阵](/images/2026/finding-your-unknowns/unknown-matrix-zh.webp)

最优秀的智能体编程者拥有的未知相对较少。观察像 Boris 或 Jarred 这样的人写提示词时，我明显感觉到他们非常清楚自己想要什么。他们与代码库和模型行为都保持着深度同步。

但他们也**预设了未知**的存在。在很多方面，减少和规划你的未知，正是**智能体编程的核心技能**。幸运的是，这是一项你可以通过与 Claude 合作来提升的技能。

## 帮助 Claude 更好地为你提供帮助

![发现未知前后的冰山](/images/2026/finding-your-unknowns/iceberg.png)

指导 Claude 是一种微妙的平衡。如果你**过于具体**，Claude 即使应该转向时也会遵循你的指示。如果你**过于模糊**，Claude 往往会基于行业最佳实践做出选择和假设，而这些可能并不适合你的任务。

当你没有考虑到你的未知时，你两边都会失败。你不知道什么时候道路上充满了障碍，也不知道什么时候道路明明畅通无阻，你却仍然想让 Claude 偏离方向。

Claude 可以帮助你更快地发现自己的未知。它可以极其快速地搜索你的代码库和互联网，而且它对大多数话题的了解比你更多。它还能更快地从失败中迭代。

这个过程中最重要的部分，是给 Claude 关于你**起点的上下文**。例如，告诉它你目前处于思维过程的哪个阶段；坦诚你对问题和代码库的经验；让它像思想伙伴一样与你协作。

在本文中，我将详细介绍一些我用来发现这些未知的模式，包括：

**实现前：**

- 盲区扫描
- 头脑风暴与原型
- 访谈
- 参考
- 实现计划

**实现中：**

- 实现笔记

**实现后：**

- 提案与说明文档
- 测验

---

## 实现前

### 盲区扫描（Blind Spot Pass）

开始工作时，你能做的最有用的事情之一就是了解自己的盲区。例如，如果你正在代码库的一个新区域编写功能，或者使用 Claude 帮助你处理不熟悉的工作（如迭代设计），你很可能会遇到大量**未知的未知**。

你可能不知道该问什么问题，不知道"好"的标准是什么，不知道历史上做过哪些工作，或者不知道应该避开哪些坑。

在这些情况下，你可以请 Claude 帮助你找出**未知的未知**，并向你解释它们。我喜欢使用"盲区扫描"和"未知的未知"这样的字面表述。让 Claude 了解你是谁、你知道什么，通常对它理解与你协作的最佳方式很重要。

**示例提示词：**

- "我正在添加一个新的认证提供商，但我对这个代码库中的认证模块一无所知。你能做一个盲区扫描，帮我找出相关的未知的未知，并让我更好地向你提问。"

- "我不知道什么是调色（color grading），但我需要给这个视频调色。你能教我理解我关于调色的未知的未知，以便我能更好地写提示词吗？"

### 头脑风暴与原型

当我在一个有很多**未知的已知**的领域工作时——涉及的标准只有当我看到时才能定义——我喜欢请 Claude 和我一起头脑风暴并制作原型。

在原型阶段尽早识别并表达未知的已知是极其有价值的，因为在实现阶段发现它们可能会（相对地）代价高昂。功能或规格中的微小变化可能导致代码实现方式的天壤之别，而且让你的智能体回退之前的更改可能会更加困难。

例如，你可能只是想看看一个按钮添加到框架中是什么样子，而不必连接后端路由或维护前端中的额外状态。

另一个例子是视觉设计——对我来说，这是难以用语言描述的东西，但我看到时就知道自己想要什么。在这些情况下，我会要求 Claude 为一个产物提供几种不同的设计方向。

我还几乎在每次编码会话开始时都会进行探索或头脑风暴阶段。这帮助我有意识地定义项目的范围。Claude 经常能找到我会错过的高价值方案，有时也会只见树木不见森林。头脑风暴防止我将范围设定得过窄或过宽。

**示例提示词：**

- "我想要一个这个数据的可视化看板，但我没有任何视觉品味，也不知道可以做成什么样。给我做一个 HTML 页面，包含 4 种完全不同的设计方向，让我来评价。"

- "在连接任何东西之前，先用一个单独的 HTML 文件模拟新的编辑器工具栏，使用假数据。我想在触碰真实应用之前先对布局做出反应。"

- "这是我的粗略问题：用户在新手引导后流失。搜索代码库并头脑风暴 10 个我们可以介入的地方，从成本最低到最雄心勃勃。我会告诉你哪些 resonates。"

### 访谈

一旦我完成了充分的头脑风暴，我可能仍然有未知。

在这种情况下，我会请 Claude 就任何未知或模糊之处**采访我**。当你让 Claude 采访你时，试着给它关于你问题的上下文，以引导它的问题。

**示例提示词：**

- "一次问我一个问题，关于任何模糊之处，优先提问那些我的回答会改变架构的问题。"

### 参考

有时你无法详细描述你想要什么。例如，你可能没有相应的术语，或者它太复杂了，需要花很长时间才能描述清楚。

在这种情况下，最佳方法是使用**参考**。虽然你可以包含图表、文档或图片，但绝对最好的参考是**源代码**。

如果你有一个以某种方式实现功能的库，或者一个你非常喜欢的的设计组件，只需让 Fable 指向该文件夹并告诉它要找什么，即使那是用不同语言写的。相比截图，这能为 Claude 提供关于标记和结构的丰富得多的细节。

**示例提示词：**

- "vendor/rate-limiter 中的这个 Rust crate 实现了我想要的精确退避行为。阅读它并在我们的 TypeScript API 客户端中重新实现相同的语义。"

### 实现计划

当我认为准备好实现时，我倾向于请 Claude 为我整理一份**实现计划**供我审阅。计划重点关注最可能发生变化的部分，如数据模型、类型接口或 UX 流程。这让 Claude 能够呈现我实际上可能需要调整的东西。

**示例提示词：**

- "用 HTML 写一份实现计划，但把我很可能调整的决策放在前面：数据模型变更、新的类型接口，以及任何面向用户的东西。把机械性的重构放在底部，那部分我相信你。"

---

## 实现中

### 实现笔记

一旦我对计划满意，我会创建一个新会话，并将所有产物传递给提示词。这给了 Claude 一个全新的上下文窗口，但包含了它从你的规划中编译的所有信息。例如，我可能会传入一个规格文件和一个原型，然后让智能体实现它。

但事实是，无论你做了多少规划，总会有**未知的未知**潜伏着。智能体在工作过程中可能会发现，由于代码中的某个边界情况，它需要采取不同的策略。

我让 Claude Code 维护一个临时的 `implementation-notes.md`（或 `.html`）文件，记录它做出的决策，以便我们下次可以学习。

**示例提示词：**

- "维护一个 implementation-notes.md 文件。如果你遇到一个边界情况，迫使你偏离计划，选择保守的选项，在'偏差'（Deviations）下记录它，然后继续。"

---

## 实现后

### 提案与说明文档

交付工作中最重要的一部分是获得**支持和批准**。在最终文档中构建提案和说明性产物有助于：

- 当审查者和你开始时有着相同的未知时，加速理解
- 当专家想看到你已经考虑到了他们会预料到的未知和常见失败点时，加速批准

**示例提示词：**

- "把原型、规格和实现笔记打包成一份我可以直接发到 Slack 获取支持的文档。把演示 GIF 放在最前面。"

### 测验

经过长时间的工作会话后，Claude 可能完成的比我意识到的要多得多。阅读代码差异只能让我对发生的事情有一个浅显的理解，因为很多行为将取决于现有的代码路径。

在给了我一堆上下文之后，让 Claude 就变更**测验我**，帮助我理解发生了什么。只有我完美地通过了测验，我才会合并代码。

**示例提示词：**

- "我想确保我理解这次变更中发生的所有事情。给我一份关于这些变更的 HTML 报告，包含上下文、直觉、做了什么等等，然后在底部做一个关于这些变更的测验，我必须通过。"

---

## 这一切如何结合：发布 Fable

Fable 的发布视频完全是用 Claude Code 剪辑的。这对我来说是一个全新的领域，我绝不是专家。

所以我从我**已知**的东西开始。我知道 Claude 可以用代码编辑视频并转录它们，但我不确定它是否足够准确。然后我请 Claude 向我解释像 Whisper 这样的转录是如何工作的，以及我是否能用 ffmpeg 准确地剪掉诸如"嗯"或大段停顿之类的东西。

我想让 Claude 创建一个与我说的词语同步的 UI，但不确定是否可行，所以我请 Claude 使用 Remotion 和转录创建一个原型视频，看看是否可行。

最后，视频本身看起来有点暗淡，我知道这是调色的结果，但我其实不知道什么是调色。我的第一次尝试是让 Claude 做几个变体供我选择，但我意识到我不知道调色方面"好"是什么样子。所以相反，我请 Claude 教我关于调色的知识，以发现我的未知。

---

## 匹配地图与领土

模型越好，你用正确的方法就能实现越多。当一个长周期任务返回错误的结果时，很可能你需要花更多时间来定义你的未知，或者创建一个允许你和 Claude 在过程中适应未知的实现计划。

每一次解释、头脑风暴、访谈、原型和参考，都是一种低成本的方式来发现你在为时已晚之前不知道的东西。

所以，从你的下一个项目开始，请 Claude 帮助你发现你的未知。

---

*本文由 Anthropic 技术团队成员 Thariq Shihipar 撰写。*
