Claude 的工程师 Thariq Shihipar 在一篇长篇博客中分享了使用 Fable 5 的实用技巧,旨在帮助用户弥合与模型之间的信息鸿沟。
Fable 5 自发布以来,经历了一系列引人注目的事件,包括备受期待的发布、美国政府的禁令以及对非美国用户的访问限制,引起了全球的广泛关注。
随着风波的平息,模型回归其核心价值——提升生产力。Shihipar 的博客旨在解决一个普遍存在的问题:尽管模型能力日益强大,用户为何仍感觉模型无法准确执行任务。
Shihipar 指出,问题的根源在于用户与模型之间的“信息差”,这具体表现为用户提供的提示词、技能、上下文与实际任务执行之间的差异。他的博客核心在于指导用户如何缩小这一差距。
Shihipar 将与 Claude Fable 5 的协作比作“地图”与“疆域”的关系。其中,“地图”代表用户提供的指令,包括提示词、技能和上下文,而“疆域”则是实际需要完成的工作,如代码库和现实世界的约束。
他将地图与疆域之间的差距称为“未知项”。当 Claude 遇到未知项时,它会基于对用户意图的最佳猜测进行决策。任务越复杂,Claude 遇到的未知项可能越多。Shihipar 认为,Fable 是第一个让他明确感受到工作质量瓶颈取决于澄清未知项能力的模型。
重要的是,仅仅提前规划并不总是足够。未知项可能在实现过程中浮现,甚至可能表明需要采用完全不同的解决方案。与 Fable 合作,本质上是一个在实现前、实现中和实现后不断发现未知项的迭代过程。
Shihipar 提出的“未知项”分为四类:
- 已知的已知:用户在提示词中明确说明的需求。
- 已知的未知:用户知道自己尚未弄清楚的部分。
- 未知的已知:对用户而言显而易见,无需言明,但一旦看到就能识别。
- 未知的未知:用户完全未曾考虑过,或者不知道自己不知道的知识。
他指出,高效的智能体式程序员通常能最大程度地减少未知项,他们对需求有清晰的认识并提供充分的细节,同时与代码库和模型行为保持高度同步。减少并提前规划未知项是智能体式编程的核心能力,并通过与 Claude 协作可以不断提升。
在与 Claude 协作时,提供指令需要微妙的平衡。指令过于具体,可能导致 Claude 固守原定方案,即使有更优选择也无法采纳;指令过于模糊,则可能导致 Claude 基于通用最佳实践做出不适合特定任务的假设。当用户未能充分考虑自身未知项时,这两种情况都可能导致失败。
Claude 能够通过快速搜索代码库和互联网,以及其广泛的通用知识,帮助用户更快地发现未知项并从失败中迭代。提供充足的起点上下文至关重要,例如告知 Claude 当前的思考阶段、用户对问题和代码库的熟悉程度,并将其视为一个思考伙伴。
Shihipar 建议了多种在不同阶段发现和处理未知项的方法:
实现前
- 盲点扫描:让 Claude 识别用户在特定领域(如不熟悉的代码库或工作类型)可能存在的“未知的未知”。
- 头脑风暴与原型:在“未知的已知”较多的领域,与 Claude 进行头脑风暴和原型设计,尽早识别并明确标准,避免后期高昂的修改成本。
- 反问:当存在模糊不清之处时,让 Claude 围绕不明确或有歧义的地方提问,以便用户提供更精确的回答。
- 参考资料:提供图表、文档,尤其是源代码作为参考,帮助 Claude 理解复杂或难以清晰描述的需求。
- 实现计划:让 Claude 制定一份实现计划,并重点突出可能发生变化的部分(如数据模型、接口、UX流程),以提前暴露潜在的调整点。
实现中
- 实现笔记:要求 Claude 维护一个记录其决策过程的临时文件(如
implementation-notes.md),特别是在遇到边界情况导致偏离原计划时,记录原因以便后续学习。
实现后
- 推介与解释文档:利用 Claude 生成包含演示 GIF、原型、规格说明和实现笔记的文档,以加速评审者的理解和审批过程。
- 测验:让 Claude 在提供充分上下文后,围绕变更内容设计一份测验,帮助用户深入理解变更细节,并在通过测验后才合并代码。
Shihipar 以 Fable 的发布视频制作过程为例,说明了如何串联这些方法。他从自己已知的领域开始,逐步探索不熟悉的领域,利用 Claude 进行原型设计、调色学习,并最终发现和处理了其中的未知项。
他总结道,模型越强大,用户通过正确的方法就越能完成更多工作。当长周期任务返回错误结果时,往往意味着需要花更多时间定义未知项或制定灵活应对未知项的实现计划。每一次解释文档、头脑风暴、访谈、原型和参考资料,都是在付出高昂代价前发现未知信息的低成本途径。因此,在开始下一个项目时,应首先利用 Claude 帮助识别自身的未知项。
