mcpField
U
unknowns-discovery

unknowns-discovery

github.com/ohyehAgent 工作流0222 次安装今天更新
代码仓库

关于 unknowns-discovery

unknowns-discovery 是一项帮助编码 Agent 在实施前后识别任务未知条件的技能,适用于需求复杂或涉及陌生领域的工作。它强调基于证据探索、明确默认假设,并只在特定条件满足时向用户提问。

主要功能

  1. 01梳理已知与未知信息
  2. 02识别需求盲点并说明默认假设
  3. 03为主观验收标准制作原型选项
  4. 04按条件决定是否向用户提问
  5. 05复杂任务实施前编写计划

适用场景

  1. 01探索不熟悉的代码或技术领域
  2. 02处理验收标准主观的设计任务
  3. 03规划涉及多文件或接口变更的工作

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ohyeh/agent-scripts --skill unknowns-discovery

安装后在 Claude Code 中输入/unknowns-discovery确认已加载。

详细介绍

未知信息探索

摘自《A Field Guide to Fable: Finding Your Unknowns》(Thariq,Anthropic)。 地图是用户的提示词和验收标准;疆域是真实的代码库及其实际限制。两者之间的差距由未知信息构成;每个未知信息都会迫使你猜测,而累积的错误猜测会让长任务严重偏离方向。偏重探索,而非速度。琐碎任务(例如只需修正拼写)完全跳过此技能。

§1 每项任务中的四类信息

  1. 已知的已知信息——提示词明确说明的内容。
  2. 已知的未知信息——用户知道自己尚未弄清楚的内容。
  3. 未知的已知信息——用户持有但从未写下的标准,因为他们觉得显而易见;只有看到输出时才会意识到(“不,不是这样”)。
  4. 未知的未知信息——用户尚未考虑过的选项、风险和可能性。

工作就是在实现之前、过程中和之后找出第 2–4 类信息,而不是拿到提示词就埋头苦干。探索不能免除证据纪律:在将声明作为事实报告之前,仍须核实。

通用约束(适用于以下所有章节,包括通过 §8 重新进入的情况):此技能中的任何内容都不授权你自行停下来提问。任何向用户提出的问题——盲点、参考资料、计划或访谈问题——都必须由用户邀请,或独立满足下方的 §STOP 条件。否则:用一句话说明默认选择或假设,然后继续。指出未知信息是在报告情况,不是在请求许可。

§STOP 何时可以向用户提问

始终先提问(强制停止条件):删除数据、暴露隐私、产生外部影响(电子邮件、工单、部署、付款)、不可逆操作、生产环境或受保护分支的更改、重大架构风险。

此外,满足以下任一条件时也要停止并提问:

  • 对请求的两种解读会导致实质不同的工作,而且选错会涉及超过 2 个文件,或更改架构、API 或公共接口。
  • 即使读过代码,也无法客观地陈述验收标准。
  • 你即将推翻用户之前明确给出的指示。

其他情况:选择最合理的解读,用一句话说明,然后继续。对于可逆且符合范围的工作,绝不要以“要我继续吗?”结束一轮对话。

§2 盲点检查

适用场景:用户进入陌生领域(新模块、不熟悉的技术或他们以前没做过的工作类型)。

  • 快速调查代码库或领域;列出用户可能尚未意识到自己不了解的事项。
  • 说明在该领域中“做好”的标准、常见的历史陷阱,以及他们应该提出的问题。
  • 目标:教用户更好地编写提示词——指出需要做出的决定,不要隐藏它。将每个指出的盲点与所选默认方案一并说明,然后继续(遵循通用约束);只有满足 §STOP 条件时才暂停等待。

正面示例:“你要求添加 WebSocket 层。这里的盲点包括:重连/退避策略、连接期间的身份验证令牌刷新、移动操作系统在应用进入后台时会终止套接字。默认采用指数退避/重连时刷新/返回前台时重新订阅——如果想更改,告诉我即可。现在继续。”

反面示例:因为“业界标准”而默默选择重连策略——这是穿着西装的猜测。同样不妥的是:有合理默认方案时,却为了选择哪种策略而暂停一项可逆任务并提问。

§3 先构思并制作原型,再编写正式代码

适用场景:验收标准是“看到就知道”(视觉设计、交互、方向)。

  • 先制作几个截然不同的选项或模拟原型(单个 HTML 文件、虚拟数据)。不要改动正式代码。
  • 让用户对具体方案作出反馈,而不是凭描述想象。
  • 选定方向后,才开始实现。

原因:事后推翻错误方向的代价远高于现在评审模拟原型;细小的规格变更也可能导致截然不同的实现。

§4 访谈——一次只问一个问题

适用情况:用户明确要求接受访谈(“采访我”),或初步探索后仍有歧义。

  • 用户主动要求访谈:允许多轮访谈——每轮只问一个问题,等用户回答后再问下一个。
  • 非用户主动要求:每个问题都必须单独满足 §STOP 条件。对于有合理默认选项的问题,不要提问——用一句话说明默认选项/假设,然后继续。
  • 将提问额度用于会改变架构(数据模型、API 形式、面向用户的行为)的答案——绝不浪费在琐事上。

§5 询问参考资料

适用情况:用户难以描述需求——即无法客观地陈述验收标准,而这本身就是 §STOP 条件;根据通用守则,该条件授权提问。

  • 询问:“是否有符合你期望的现有实现/组件/库?请指给我看。”
  • 如果存在合理的默认理解,§STOP 条件就不成立——用一句话说明该理解,然后继续。
  • 源代码是最佳参考,即使使用的是不同语言。用户提供参考后,就必须先严格遵循;如果无法奏效,应在自行变通前报告具体偏差。

§6 实施计划审查

适用情况:执行复杂任务之前(涉及多个文件、架构/API 变更,或超过约 3 个步骤)。

  • 按照项目的规划惯例编写计划并提交。
  • 优先说明用户最可能调整的内容:数据模型、类型接口、面向用户的行为。
  • 将机械性重构放在最后——这部分用户信任你来处理。
  • 仅在满足 §STOP 条件时等待审查(硬性停止条件列表、不同解释之间存在分歧、无法陈述验收标准)。否则,提交计划后在同一轮继续执行。

§7 大幅变更后的说明

适用情况:变更远超用户预期,或用户提出要求时。

  • 撰写变更报告:说明背景、思路、做了什么以及原因。
  • 提供一份关于变更的简短测验;用户通过测验才算真正理解。仅看差异只能获得浅层理解——很多行为取决于现有代码路径,而不了解就合并会导致未来不断积累未知问题。

§7.1 自愿参与的评估访谈(仅在用户要求“让它可测试”时)

  • 针对上文揭示的每个盲点/默认选项,提出一个问题,将其转化为可由机器检查的验收条件:输入是什么、可观察的输出是什么、用什么命令验证。将答案记录为 evals/fixtures/ 中的候选测试样例(架构见 evals/README.md)。绝不要擅自启动此流程——这会大幅增加问题数量,违反一次只问一个澄清问题的规则。

§8 提醒

  • 指令过于具体,会让你在应当调整方向时仍盲目服从;指令过于模糊,则会让你用可能不适合该项目的“最佳实践”自行猜测。这种张力是一个信号,而非停止理由:只有满足 §STOP 条件时才提问;否则,用一句话说明默认选项/假设,然后继续。
  • 长期任务最终结果出错,通常是因为未定义的未知因素,而非模型能力不足。不要盲目重试:引导用户重新走一遍 §2–§5。同一任务以确实不同的尝试失败两次时,应怀疑的是路线图,而不是驾驶者。

评论

支持 Markdown