实战指南:让 LLM 用结构化思维方法自我审视与精炼输出)
BMAD-METHOD 高级启发式追问技能Advanced Elicitation实战指南让 LLM 用结构化思维方法自我审视与精炼输出【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Driven Development项目地址: https://gitcode.com/gh_mirrors/bm/BMAD-METHOD本指南围绕 BMAD-METHOD 仓库中的bmad-advanced-elicitation技能展开完整讲解它的设计定位、激活流程、方法目录、CLI 命令、配置定制方式并结合源码与测试深入其实现原理。读完你既能直接上手使用也能把整套结构化第二遍审视机制移植到自己的 Agent 工作流中。高级启发式追问Advanced Elicitation是 BMAD-METHOD 中的一个共享精炼检查点shared refinement checkpoint当某个 skill 产出一份规格、计划、草稿或决策后其他技能会在自然的停顿点调用它对刚完成的工作进行施压式复审用户也可以在对话中随时直接调用它针对最近一次输出做更深的批判。它的核心思想非常明确不要要求 LLM 模糊地再试一次或改进一下而是从一整套命名了的具体思维方法如苏格拉底式提问、第一性原理、Pre-mortem 预演、红队/蓝队对抗中挑选一种让 LLM 以该方法为镜头重新审视自己的输出。模糊的要求只会产生模糊的修订而具名方法强制了具体的攻击角度能揭示泛泛尝试会错过的洞察。本技能所在的 SKILL.md 约 60 行但其背后是一套完整的可运行体系包含 71 种内置思维方法的目录 methods.csv、负责按需投喂目录的 CLI 脚本 pick_methods.py、可被团队与个人两层覆盖的 customize.toml以及覆盖合并规则与抽样逻辑的测试用例 test_pick_methods.py。本文将把这五部分串成一条完整的实战链路。一、技能定位BMad 工作流中的共享精炼检查点在 BMad 的体系中各技能如 bmad-prd、bmad-spec、bmad-ux、bmad-brainstorming 等产出内容后往往需要一个统一的复审环节。bmad-advanced-elicitation就是这个环节的标准接口它同时承担两种角色被调用方其他技能在自然停顿点调用它对刚产出的作品施压、精炼、增强直接服务方用户随时直接调用它针对对话中最近一次输出某个段落、计划、草稿或决策进行更深的批判式追问。它的目标对象默认是对话中最新的输出——除非调用者或用户明确指向其他内容。运行约定包括在周边会话所用的沟通语言communication language中工作如果会话中启用了 party mode多智能体模式需要在此提示下注明Party mode is active — agents will join in.让其他 Agent 加入审视过程。从仓库中的多语言文档如 advanced-elicitation.md可以看到官方对它的定义这是一种结构化的第二遍检查structured second pass。区别是实质性的——具名方法强制了具体的攻击角度而不是靠运气去重新生成。二、何时使用四个典型触发场景根据官方文档与 SKILL 描述以下四类场景是高级启发式追问的高频触发点工作流生成内容后需要备选方案——workflow 产出内容后在决策点询问是否运行 elicit输出看起来还行但直觉告诉你还有更深的内容——需要加压以挖出更多深度对假设做压力测试或寻找薄弱点——发布前、写代码时、多方竞争时重要内容值得复审——越是关键产出越值得一次结构化再审。一个官方推荐的实践对任何规格说明spec或计划planPre-mortem Analysis事前验尸分析都是很好的第一选择它总能稳定地找出常规复审会漏掉的缺口。三、完整工作流程从激活到交付3.1 激活解析自定义配置技能被调用时第一步是解析配置。SKILL 中规定的激活命令为uv run {project-root}/_bmad/scripts/resolve_customization.py --skill {skill-root} --project-root {project-root} --key workflow该命令由 resolve_customization.py 实现它执行 BMad 标准的三层合并skill 默认值 → 团队覆盖 → 个人覆盖把合并后的[workflow]表输出为 JSON。若执行失败则直接读取{skill-root}/customize.toml并使用默认值。整个会话期间{workflow.preferences}中的每一条偏好都必须始终生效——它们决定了后续出菜单时的取舍倾向。3.2 投喂方法目录pick_methods.py 的四个命令方法目录永远不会整份进入上下文这是刻意的上下文管理设计唯一的例外是用户明确要求列出全部目录。目录由 pick_methods.py 按需投喂统一调用形式为uv run {skill-root}/scripts/pick_methods.py --file {workflow.methods_file} command四个命令及其用途命令作用说明categories列出类别名与各类别方法数量最廉价的地图用于快速判断目录规模与分布list --category cat [--category cat]列出指定类别的方法索引编号/类别/名称/摘要必须显式给--category或--all否则拒绝执行list --all一次性倾倒全部目录刻意设计为大而重仅当用户要求看全部时才使用show name-or-num [...]按名称或编号展示方法的完整行支持一次查多个random -n 5 --spread [--exclude name]...类别多样化随机抽取--spread强制类别多样性每类至多一个类别耗尽才回绕--exclude用于跳过已展示过的方法3.3 首屏菜单五选一的交互契约技能激活后必须先 HALT暂停把选择权交给用户菜单内容固定为四类五个推荐方法按名称列出用户可选择一个或多个Reshuffle重洗用五个全新选项替换当前列表List all全部列出展示带描述的全量目录Proceed继续不再追问当前增强版本即最终版本。这个菜单是其他技能与用户依赖的稳定接口其选项和行为必须保持稳定。首屏五个方法的生成策略先运行categories拿到类别地图再根据目标挑 24 个契合的类别——发布前用 risk风险类、写代码用 technical技术类、利益相关方竞争时用 collaboration协作类、内容平淡时用 creative创意类——然后list这些类别并手工挑选五个从不同角度攻击目标的方法同时始终遵循{workflow.preferences}中的偏好。重洗时则用random -n 5 --spread并排除一切已提供过的方法。3.4 执行方法Apply / Reject / 定向指示执行某个方法时把该方法的description当作意图、把output_pattern当作灵活的流程指南并根据目标规模调整深度一个段落只需轻量过一遍一个架构决策则需要完整处理。每轮应用都作用于当前增强版本因此多轮精炼的效果是叠加复合的。执行后展示方法揭示的问题与提议的修改然后 HALT 等待用户选择Apply应用接受提议的修改Reject拒绝完全丢弃该提议其他回复视为方向性指示按指示继续处理。硬性约束是除非用户接受提议否则绝不改动作品。若用户选择 Proceed则把增强后的版本交还给调用它的技能作为替代品并发出完成信号让调用流程从暂停处继续如果展示过但未被接受的内容必须在返回前确认哪些应该保留。四、方法目录全景71 种具名思维方法、14 个类别methods.csv 是技能的方法仓库每行五列num编号、category类别、method_name方法名、description一句话摘要、output_pattern输出模式如assumptions → truths → new approach作为灵活流程引导。当前仓库内置71 种方法覆盖 14 个类别类别数量代表方法advanced进阶推理8Tree of Thoughts、Graph of Thoughts、Thread of Thought、Self-Consistency Validation、Meta-Prompting Analysis、Reasoning via Planning、Chain-of-Thought Scaffolding、Few-Shot Exemplar Primingcollaboration协作12Stakeholder Round Table、Expert Panel Review、Debate Club Showdown、User Persona Focus Group、Time Traveler Council、Cross-Functional War Room、Mentor and Apprentice、Good Cop Bad Cop、Improv Yes-And、Customer Support Theater、Six Thinking Hats、Delphi Methodcompetitive对抗3Red Team vs Blue Team、Shark Tank Pitch、Code Review Gauntletcore核心11First Principles Analysis、5 Whys Deep Dive、Socratic Questioning、Critique and Refine、Explain Reasoning、Expand or Contract for Audience、Second-Order Thinking、Inversion Analysis、Problem Decomposition、Analogy Mapping、Steelmanningcreative创意9SCAMPER Method、Reverse Engineering、What If Scenarios、Random Input Stimulus、Exquisite Corpse Brainstorm、Genre Mashup、Constraint Injection、Morphological Analysis、Subtractionframing框架重构4Abstraction Laddering、Reframe the Question、Stakeholder Lens Rotation、Map Is Not the Territorylearning学习3Feynman Technique、Active Recall Testing、Deliberate Practice Loopphilosophical哲学2Occams Razor Application、Trolley Problem Variationsresearch研究4Literature Review Personas、Thesis Defense Simulation、Comparative Analysis Matrix、Source Triangulationretrospective回顾2Hindsight Reflection、Lessons Learned Extractionrisk风险7Pre-mortem Analysis、Failure Mode Analysis、Challenge from Critical Perspective、Identify Potential Risks、Chaos Monkey Scenarios、Assumption Audit、Cascading Failure Simulationtechnical技术6Architecture Decision Records、Rubber Duck Debugging Evolved、Algorithm Olympics、Security Audit Personas、Performance Profiler Panel、Boundary Edge Case Sweep几类值得重点介绍的方法Pre-mortem Analysis事前验尸想象项目已经失败再倒推失败原因——发布前风险缓释的利器官方文档推荐它作为任何规格/计划的第一选择Inversion Analysis反向分析不问如何成功而是问什么能保证失败从反方向逼近盲区Steelmanning稻草人加固先构建对方观点的最强版本再回应避免 strawman 式的曲解Subtraction减法刻意移除元素而非添加对抗人类普遍的加法偏见Chaos Monkey Scenarios故意搞破坏以测试系统韧性Assumption Audit假设审计显式列出计划下所有假设按置信度与影响评分再压力测试最薄弱者。涉及人设的方法参与者从哪来当某个方法需要人设圆桌、评审团、辩论等先看 party mode 是否激活激活则复用会话中已有的 party 成员否则通过以下命令按需解析已安装的 Agentuv run {project-root}/_bmad/scripts/resolve_config.py --project-root {project-root} --key agents该命令由 resolve_config.py 实现执行 BMad 中央配置的三层合并_bmad/config.toml加两层_bmad/custom/覆盖每个以 agent code 为键的条目携带 name、title、icon、description。如果两层都没有合适人选就针对内容虚构具名视角。五、配置与定制三层合并机制详解customize.toml 是技能的完整配置面包含三个配置项文件头部明确说明覆盖文件的放置位置团队覆盖{project-root}/_bmad/custom/bmad-advanced-elicitation.toml个人覆盖{project-root}/_bmad/custom/bmad-advanced-elicitation.user.toml合并遵循 BMad 结构规则标量覆盖优先、普通数组追加、以code为键的表数组匹配则替换、新键追加。5.1 methods_file方法目录路径methods_file {skill-root}/assets/methods.csv默认锚定在{skill-root}下保证无论工作目录在哪都能解析pick_methods.py总是通过--file {workflow.methods_file}被调用。在团队或个人覆盖文件中改这个路径即可整体替换成不同的方法目录。5.2 preferences持久偏好preferences []每次会话都生效的持久偏好——倾向或回避的方法、pushback 的落点、应用修改的家规。写的是字面句子按追加合并所以团队偏好和个人偏好会同时生效。示例写在覆盖文件中preferences [ Lead with a risk-category method for anything touching production systems., Never offer roleplay or persona methods., ]5.3 additional_methods注入自定义方法这是最有价值的扩展点不修改随仓库分发的 CSV即可把自定义方法乃至全新类别合并进目录且自定义方法在每次菜单、重洗和列表中都享有一等公民地位通过--extra传给pick_methods.py。每个条目五个字段[[workflow.additional_methods]] code regulatory-inversion # 仅作 TOML 合并键个人条目 code 相同则替换团队条目新 code 追加 category domain-specific # 全新类别也会进入 categories 列表 method_name Regulatory Inversion # 目录身份与内置方法同名则替换保留内置编号否则以新编号追加 description Start from the compliance constraint and ask what becomes possible only because of it - turns the rule into a generative frame output_pattern constraint → possibilities → design关于code与method_name的分工customize.toml 中特别强调了两点code 只是 TOML 合并键用于跨层覆盖个人条目 code 相同则替换团队条目新 code 追加method_name 才是目录身份——与内置方法同名会替换它可微调其描述或模式保留内置编号其他则追加新编号。若两个条目 code 不同但 method_name 相同两者都会通过 TOML 合并存活只有后到者进入目录。5.4 源码中的合并实现--extra的实现细节在 pick_methods.py 中清晰可见load_extra接受两种形式以[开头的 JSON 数组字面量或指向 JSON 文件的路径缺失字段被规范化为空字符串code字段被保留用于溯源merge_extra按method_name大小写不敏感建立索引同名替换且继承被替换行的编号异名追加随后从当前最大编号1 开始给所有空编号行分配连续新编号——因此合并后的每个方法无论内置还是注入都能按编号寻址。这一行为被 test_pick_methods.py 的test_merge_extra_replaces_by_name_and_appends精确锁定5 个内置方法 1 个同名替换保留 num1 1 个追加获得 num6新类别domain进入 categories 计数。六、源码级原理pick_methods.py 的关键设计6.1 为什么不让目录整份进上下文SKILL 明确说明pick_methods.py的职责是serves the method catalog … so it never enters context whole。这在代码层面由两点保障其一list命令在没有--category也没有--all时直接报错退出listneeds --category or --all把全量倾倒变成必须显式选择的动作pick_methods.py其二默认输出是紧凑的 TSV 文本每行五个字段并支持--json输出结构化结果供程序化消费。测试test_cli_list_requires_scope验证了缺参即退出的行为。6.2 spread 抽样算法random -n 5 --spread的多样性由spread_sample实现pick_methods.py先把方法按类别分桶、随机打乱桶序和桶内顺序然后按桶轮转各取一个直到取满 n 个或桶耗尽。这样在类别数量不少于 n 时保证 n 个方法来自 n 个不同类别类别不足时才回绕复用。测试test_spread_hits_distinct_categories用 20 个随机种子验证取 3 个必来自 3 个不同类别test_spread_wraps_when_categories_run_out与test_spread_clamps_to_pool分别验证回绕与超量截断。6.3 健壮性细节BOM 容忍加载 CSV 使用utf-8-sig编码兼容 ExcelCSV UTF-8、记事本等产出的带 BOM 文件pick_methods.pyUTF-8 输出固定main 入口对 stdout 执行reconfigure(encodingutf-8)因为目录行中含有→等箭头字符避免在非 UTF-8 locale 下崩溃pick_methods.py参数钳制random -n对负数或超大值做max(0, min(n, len(pool)))钳制空池返回退出码 1pick_methods.py错误路径明确方法文件缺失、--extra解析失败均返回退出码 2 并给出可读错误信息内置目录完整性自检测试test_shipped_catalog_loads_clean会加载随仓库分发的真实methods.csv断言至少 60 行且每行类别、名称、描述非空test_pick_methods.py——这是防止目录被意外截断或格式破坏的回归护栏。运行测试的方式在测试文件头部注释中给出uv run scripts/tests/test_pick_methods.py # 或 uv run --with pytest -m pytest scripts/tests/test_pick_methods.py七、在 BMad 生态中的协作方式在仓库内搜索advanced-elicitation可以看到它被多个技能引用从源码结构看它扮演的是横向复用的精炼枢纽例如 bmad-brainstorming、bmad-product-brief、bmad-prd、bmad-ux、bmad-spec 等产出型技能都会在自然停顿点调用它bmad-create-epics-and-stories 的步骤文档如 step-02-design-epics.md、step-03-create-stories.md也把它纳入流程。其交互契约五选一菜单 Apply/Reject Reshuffle Proceed刻意保持稳定正是因为其他技能和用户都依赖这个接口来继续自己的工作流。使用前提说明本技能的命令均通过uv run执行要求 Python ≥ 3.11resolve_config.py与resolve_customization.py依赖标准库tomllib低版本会报错退出码 3{skill-root}、{project-root}是 SKILL 运行时解析的占位符{workflow.name}则解析自合并后的customize.toml的[workflow]表。这些占位符在真实运行环境中会被替换为实际路径仓库内的命令示例为技能运行语义的权威说明。八、最佳实践小结从 categories 开始别让全目录进上下文先拿廉价地图再按目标挑 24 个类别手选五个不同角度的方法Pre-mortem 是默认安全牌任何规格或计划的第一轮审视都值得先用它多轮精炼是叠加的每轮方法都作用于当前增强版本连环施压的效果优于单次大改尊重 Apply/Reject 契约除非用户接受否则不改动作品——这是信任的基础用 additional_methods 沉淀团队方法不修改仓库文件在团队覆盖 TOML 里注入自定义方法与新类别靠code做跨层覆盖、靠method_name做目录身份替换涉及人设的方法优先复用会话中的 party 成员避免为每个方法重复创建 Agent减轻上下文负担。无论是作为 BMad 工作流中的精炼检查点还是作为独立方法论复用到自己的 Agent 系统给 LLM 一个具名思维镜头、让它审视自己的输出、由你决定是否采纳这套机制都是把 AI 从一次性生成器升级为可迭代共创者的关键一环——而 bmad-advanced-elicitation 已经把这套机制做成了开箱即用、可配置、有测试保障的完整实现。【免费下载链接】BMAD-METHODBreakthrough Method for Agile Ai Driven Development项目地址: https://gitcode.com/gh_mirrors/bm/BMAD-METHOD创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考