Claude Code 实战:先找到你的未知点

很多人用 Claude Code 写代码时,已经会给需求、贴上下文、要求先出计划。问题出在下一层:Claude Code 未知点没有被提前暴露出来,长任务就会在实现中靠猜测前进。这里的未知点不是“模型不知道某个知识点”。原文把它放在“地图”和“领土”的差距里讲。地图是你给 Claude 的提示词、技能和上下文;领土是代码库、真实业务和各种实际限制。两者之间没

#AI #公众号

Claude Code 实战:先找到你的未知点

资料来源

很多人用 Claude Code 写代码时,已经会给需求、贴上下文、要求先出计划。问题出在下一层:Claude Code 未知点没有被提前暴露出来,长任务就会在实现中靠猜测前进。

这里的未知点不是“模型不知道某个知识点”。原文把它放在“地图”和“领土”的差距里讲。地图是你给 Claude 的提示词、技能和上下文;领土是代码库、真实业务和各种实际限制。两者之间没有写清、没有发现、没有验证的部分,就是任务里的未知点。

Claude Fable 5 让原作者明显感到,工作质量的瓶颈开始转移到人能不能说清这些未知点。模型越能做长任务,越需要人把模糊处、判断标准、转向条件和验证方式暴露出来。

先把未知点分成四类

原文用四类未知点来拆任务,这个分类适合放进任何一次 Agentic coding 会话前面。

第一类是已知的已知。它基本就是你已经写进提示词里的内容:要做什么、交付什么、限制是什么、哪些文件可以改。

第二类是已知的未知。你知道自己还没想清楚,但至少能指出问题在哪里。比如认证流程里该不该兼容旧 token,前端状态要放在本地还是服务端,错误提示要不要暴露底层原因。

第三类是未知的已知。它通常存在于你的经验里,但没有被写出来。比如一个按钮怎样摆才顺眼,一段代码风格怎样才像这个项目,某个业务判断看到结果时就能识别对错。这类信息很容易让 Agent 走偏,因为它没有进入上下文。

第四类是未知的未知。你没有意识到自己缺了哪些知识,也不知道什么样的结果可以算好。比如第一次做视频调色,不知道该问色彩空间、肤色、对比度还是曝光;第一次改陌生认证模块,不知道历史兼容、回滚路径和审计日志会影响实现。

很多 Agent 任务失败,常见原因是第三类和第四类信息没有被挖出来。Claude 会根据行业常见做法补空白,但常见做法未必适合你的代码库。

Claude Code 未知点工作流

实现前先做盲区检查

盲区检查适合用于陌生模块、陌生技术和陌生设计任务。做法很直接:把自己的起点告诉 Claude,让它先找 unknown unknowns。

原文给了一个认证模块的例子:

我正在添加一个新的认证提供方,但我完全不了解这个代码库里的认证模块。你能做一次 blind spot pass,帮我找出相关的 unknown unknowns,并帮助我更好地提示你吗?

这个提示词里有三个信息:任务是什么,自己不知道什么,希望 Claude 先帮忙改进提示词。它让 Claude 的第一步从“开始写代码”变成“先搜索代码库、找风险、补问题”。

如果任务换成设计或视频,也可以这样写:

我不知道什么是调色,但我需要给这个视频调色。你能教我理解自己在调色上的 unknown unknowns,让我能更好地写提示词吗?

盲区检查完成后,不急着让 Agent 实现。先看它列出的未知点里,哪些会改变方案,哪些只是背景知识。会改变方案的问题,应该进入下一轮访谈或计划。

用原型暴露你说不出的判断标准

有些标准很难提前写清楚,只有看到结果才知道要什么。原文把这类信息称为 unknown knowns。

典型场景是界面、交互、文档结构和数据展示。你可能不知道怎样描述一个仪表盘的视觉方向,但看到四个完全不同的方案时,可以很快指出哪个方向接近目标。

原文给的提示词是:

我想为这批数据做一个仪表盘,但我没有视觉品味,也不知道有哪些可能性。请做一个 HTML 页面,给出 4 个差异很大的设计方向,让我可以反馈。

这类原型要刻意做轻。比如只用单 HTML 文件、假数据、静态按钮,不接后端,不维护真实状态。它的目的,是让你把“看到才知道”的判断标准说出来。

另一个例子是编辑器工具栏:

在接任何真实逻辑之前,先做一个单 HTML 文件,用假数据模拟新的编辑器工具栏。我想在你碰真实应用之前先看布局。

这个动作可以降低返工成本。UI 方向、信息层级、按钮密度和交互入口,越早通过原型暴露,越不会在真实代码写完后才返工。

实现前发现未知点的三步流程

让 Claude 采访你,而不是一次问完所有问题

完成头脑风暴后,仍然会有模糊点。这时可以让 Claude 采访你。

原文给的提示词很短:

请一次问我一个问题,采访我关于所有模糊点的答案。优先问那些答案会改变架构的问题。

做法落在“一次问一个问题”和“优先改变架构的问题”上。很多澄清清单会一次抛出十几个问题,回答成本高,也容易把注意力放在无关细节上。逐问逐答更适合把影响方案的未知点排出来。

可以把问题分成三类处理:

这样做的结果,是把“问用户”从停工动作变成设计动作。Agent 问的问题越接近架构和限制,后续实现越不容易偏。

用源代码做参考,比截图更可靠

当你描述不出想要的行为时,参考资料比解释更有效。原文强调,最好的参考资料是源代码。

如果有一个库实现了你想要的退避策略,就直接让 Claude 读那个目录:

vendor/rate-limiter 里的这个 Rust crate 实现了我想要的精确退避行为。请读它,并在我们的 TypeScript API client 里重新实现相同语义。

这里要盯住“相同语义”。截图只能告诉 Agent 长什么样,文档只能告诉它大概意图,源码能给出特殊情况、错误处理、命名结构和真实调用方式。

跨语言参考也可以用。Rust 的退避逻辑可以迁移到 TypeScript,旧系统里的权限判断可以迁移到新接口,已有设计组件的结构可以迁移到新的页面。需要写清楚的是:参考什么,不参考什么,哪些语义必须保持。

实施计划要先暴露会变的部分

准备实现时,可以让 Claude 写实施计划。但计划的顺序很重要。

原文建议把最可能被人调整的部分放在前面,比如数据模型、类型接口、用户流程和任何用户可见行为。机械性重构可以放后面。

示例提示词是:

请写一份 HTML 格式的实施计划,但开头先写我最可能想调整的决策:数据模型变化、新类型接口,以及任何面向用户的部分。机械性的重构放到底部,我信任你处理那些部分。

这个要求能避免计划看起来很完整,但真正需要人判断的地方被埋在下面。对长任务来说,计划最重要的作用,是提前暴露会改变方案的选择点。

审计划时可以重点看四件事:数据结构是否会影响迁移或兼容;新接口是否会影响调用方;用户可见流程是否符合产品判断;回滚、日志、错误处理是否足够支撑上线。

这些问题确认后,再让 Agent 开新会话进入实现,会比在同一个长上下文里一路继续更稳。

实现中维护 implementation-notes.md

再好的计划,也会在实现中遇到未知的未知。原文建议让 Claude Code 维护一个临时的 implementation-notes.md.html 文件,用来记录实现过程中的决策。

示例提示词是:

请维护一个 implementation-notes.md 文件。如果你遇到迫使你偏离计划的特殊情况,请选择保守方案,把它记录在 “Deviations” 下,然后继续。

这个文件至少应该记录三类信息:

它不替代代码 review,但能让人快速理解 Agent 在代码 diff 之外做了哪些判断。尤其是长任务里,很多行为依赖既有代码路径,单看 diff 很难知道影响范围。

实现记录还有一个好处:下一次尝试可以复用这些信息。如果本轮方案失败,新的会话可以带着计划、原型和 implementation-notes.md 重新开始,不必让 Agent 从零猜。

implementation-notes 记录偏离和假设

实现后用解释材料和测验确认理解

交付之后,原文建议生成推介材料和解释材料。它们帮助评审者快速理解:任务解决了什么,哪些未知点被处理了,哪些失败点已经考虑过。

示例提示词是:

请把原型、规格和实施记录打包成一个我可以发到 Slack 里争取支持的单一文档。开头先放演示 GIF。

如果是代码变更,还可以让 Claude 生成一份带测验的报告:

我想确认自己理解了这次变更里发生的一切。请给我一份 HTML 报告,包含这次变更的上下文、直觉解释、做了什么等内容,并在底部附上一个我必须通过的测验。

这个动作适合用在合并前。读完报告后,如果你答不出测验,就说明自己还没有真正理解这次改动。对 Agent 写出的长任务来说,这比“看过 diff”更接近实际风险控制。

测验可以问这些问题:新增路径会在什么条件下触发;哪些旧行为保持不变;失败后怎么回退;哪些权限、日志或配置会影响结果;哪个测试能证明核心行为正确。

能回答这些问题,再进入合并和发布,会减少“代码能跑但人没理解”的风险。

一次小任务可以这样跑

可以用一个很小的 Claude Code 任务练这套方法。比如给后台页面增加一个只读审计日志入口。

第一步,让 Claude 做盲区检查:

我准备给后台页面增加一个只读审计日志入口,但我不熟悉这个项目的权限和日志模块。请先做一次 blind spot pass,找出会影响实现方案的 unknown unknowns,并告诉我需要补哪些上下文。

第二步,让它做轻原型:

在不接真实接口的前提下,用假数据做一个单文件原型,展示审计日志入口、筛选项和详情弹层。我先确认信息结构,再决定是否接入真实代码。

第三步,让它采访你:

请一次问我一个问题,优先问会改变权限、数据模型或用户流程的问题。

第四步,让它写计划:

请写实施计划,先列出权限判断、接口形状、数据模型和用户可见流程,机械重构放最后。

第五步,实现时维护记录:

实现过程中维护 implementation-notes.md。遇到偏离计划的特殊情况,选择保守方案,记录到 Deviations,再继续。

第六步,结束后生成解释材料和测验:

请把规格、实现记录和代码变更整理成一份报告,并在底部给我 5 道测验题。我答对后再合并。

这套流程会增加一点前期时间,但它把返工成本提前到原型、访谈和计划阶段。对长任务、陌生模块和高权限功能尤其有用。

哪些场景不适合照搬

这套方法适合有一定复杂度、需要判断、会影响多人协作的任务。它不适合所有事情。

如果只是改一个明显拼写错误、调整一个静态文案、补一行配置,直接改和跑测试更快。

如果需求负责人自己还没有决定方向,盲区检查只能暴露问题,不能替你做业务决策。此时应该先缩小任务范围,再让 Agent 参与。

如果任务涉及生产数据、权限提升、支付、删除、批量迁移或外部系统调用,需要先把权限、回滚、日志和人工审核写清楚。Agent 可以帮忙找未知点,但不能替代这些保护措施。

如果团队不愿意看 implementation-notes.md、解释材料或测验,流程也会失效。记录只有被审阅,才会变成质量控制。

结尾:先发现未知点,再交给 Agent 长跑

Claude Code 未知点管理的核心动作很朴素:实现前找盲区,实现中记录偏离,实现后确认理解。它把“提示词写长一点”换成了更稳定的协作流程。

模型越能做长任务,人越需要把自己的模糊判断、隐含标准和转向条件说出来。下一次让 Agent 接手陌生模块时,可以先做一次 blind spot pass,再用原型、访谈、实施计划和 implementation-notes.md 把未知点逐步摊开。

我会持续拆解 AI Agent 工程化方案,重点看安全架构、Claude Code、工作流和代码执行。

如果你正在做 Agent 应用,可以关注「大尹隐于网」,后面会继续写这一系列。

Share · · ·

Related Articles