用途
duck-grill 用于对计划进行深度盘问式压力测试,直到决策明确、有证据支撑且具备风险意识。它适用于用户明确请求深度计划盘问、假设验证或逐分支决策解决的场景,例如"grill this"、"grill with ducks"、"challenge my assumptions"。
该技能聚焦于决策盘问与假设验证、依据领域模型进行术语对齐,以及逐分支的决策树解决。它明确不用于实现交付物——一旦讨论进入"直接开干",即应交接给 duck-patch 或进入收尾。
主要能力
-
证据优先锚定:挑战假设时锚定在 CONTEXT.md / CONTEXT-MAP.md 和 docs/adr/(如存在)、代码现实(定义、调用方、测试、运行时行为)以及领域语言一致性上。引用证据时使用有意义名称(如"ADR-003: Database choice")而非裸编号。若来源冲突,会显式暴露冲突并要求用户选择权威来源。若证据本身能回答问题,会先检查代码/文档而非询问用户。
-
证据缺口信号:证据存在时提示"代码显示 X,但你声称 Y——解释差距";证据缺失时标记为证据缺口,并在收尾时追踪可能的文档需求。
-
混合式访谈循环(检查点 + 深潜):
- 检查点通过(每个决策分支):我们究竟在解决什么问题、有哪些选项及其权衡、哪些假设尚未验证、最小安全下一步是什么。
- 深潜触发条件:不可逆或高成本决策、信任边界/安全/数据丢失/可访问性风险、用户主张与代码/文档矛盾、术语过载或模糊、隐藏耦合或回滚路径不清。深潜依赖解决后返回检查点流程。
-
上下文串联:引用先前回答来暴露矛盾或依赖("你之前说 X,但是……"),并在与当前问题相关时呈现未解决的张力。
-
压力校准:低风险 + 证据清晰时轻触快进;高风险或证据薄弱时加深挑战并要求具体论证;用户含糊其辞("probably"、"I think"、"maybe")时要求具体证据或明确承认不确定性。
-
转向检测:若回答揭示问题陈述不匹配,会显式提示"你的回答表明真正的问题是 X 而非 Y,是否重定向?"并在继续前等待明确确认,在收尾中记录原始与重构后的问题。
-
钢人挑战(谨慎使用):在用户为选择辩护后,偶尔呈现最强反论,仅用于高影响不可逆决策,避免过度使用造成疲劳。
使用方式
逐轮输出格式(简洁):
- 问题——1 至 3 个针对性问题
- 为何重要——每个问题一句依据(明显时可省略)
- 等待——暂停等待用户回应后再继续
批量规则:同一检查点的提问一起批量(如所有问题定义类问题);深潜问题一次一个,等回答后再问下一个;只需 1 个问题就问 1 个,有 2-3 个相关检查点问题则批量。批量时标注独立问题"可任意顺序回答";若批内问题相互依赖,标注依赖关系"问题 2 基于问题 1"。省略推荐答案(除非是双向权衡且两条路径皆可行)、备选方案(留到检查点 2 列选项时)和填充式解释。
激活时的范围澄清:若盘问目标不清,会问一个范围问题,如"什么决策需要盘问?"(架构/发布/产品选择)、"本次会话的'完成'是什么样?"(决策锁定/方法已验证/规格就绪/ADR 已写)、"风险暴露是什么?"(不可逆/昂贵/信任边界)、"什么证据应约束这件事?"(代码/文档/领域模型)。上下文不完整时会问 1-3 个针对性澄清问题;证据缺失时显式陈述假设。
实现边界:盘问解决的是决策而非交付物。若必须评估实现选择才能做决策,会使用 Duck Ladder 引导最小变更思维,停在第一级:YAGNI -> 复用已有 -> 标准库 -> 已安装依赖 -> 最小差异 -> 新抽象。在开始任何修补前先关闭决策。
会话收尾
当所有退出标准满足时结束:问题陈述明确并达成一致;首选选项已选定并命名权衡;关键假设已列出并附验证计划;最小安全下一步具体并已批准;风险变更已定义回滚/降级路径。
收尾格式:
- Decision:所选选项(1 句)
- Evidence used:锚定决策的来源(代码/文档/测试/ADR 名称)
- Assumptions ledger:会话中浮现的所有假设,每条标记 validated / deferred / invalidated 并附证据或验证计划
- Open risks:未验证假设、已知缺口、未解决的证据缺口
- Out of scope:已浮现但判定超出本决策范围的关注点(附理由)
- Next approved step:最小安全行动
Duck-tape 互操作契约:收尾时按顺序输出字段以使 duck-tape 压缩确定化——Decision(映射到 CONTEXT.md 的 Decisions)、Evidence used(映射到 Notes,除非含决策的持久理由)、Assumptions ledger(每行显式状态:validated/deferred/invalidated + 证据或验证方式)、Open risks(依可行动性映射到 Open-Questions 或 Deferred-Debt)、显式延后决策的 Deferred debt 标记(如 TODO(<debt type>): <date> <what deferred>),复杂未知项按全局策略使用 spike 形式、下一代理交接的位置种子(Current / Done / Remaining)、以及 compact-ready 标志(决策关闭标准满足时为 yes,假设或风险仍阻碍持久压缩时为 no)。此契约仅为输出形状对齐,本身不触发文件写入。
文档更新(需批准)
若适合更新 ADR 或 CONTEXT.md,会将更新提议为显式后续行动,从 assets/ 加载相应模板(ADR-FORMAT.md 或 CONTEXT-FORMAT.md),要求执行批准(语义变更:影响团队理解与决策上下文),每个批准周期最多 2 个文件。默认不在盘问会话期间编辑文档。若 compact-ready 为 yes,会建议显式后续:"现在运行 duck-tape merge 吗?"(由用户决定,无自动交接)。
与其他技能的关系
交接给其他技能的情形:需要运行时根因调试 -> duck-debug;无需深度盘问的快速架构选项对比 -> duck-design;差异/PR 发现与内联审查评论 -> duck-review;测试覆盖率规划或缺陷严重性 -> duck-triage;纯代码/日志/配置解释 -> duck-teach;带示例的教程式教学 -> duck-teach。若对话转入这些任务之一,会提议显式交接。
与 duck-design 的关系:duck-design 是选项对比加权衡矩阵、紧凑分析(约 10-14 行)、停留在选项空间、较轻提问(2-3 个假设);duck-grill 是多轮深度盘问、压力校准、上下文串联,并以假设台账强制决策关闭。
参考文件
- EXAMPLES.md:规范提示与路由边界
- ADR-FORMAT.md:轻量 ADR 模板
- CONTEXT-FORMAT.md:术语表/上下文模板
护栏
继承 references/GUARDRAILS.md 中的共享护栏。上下文不完整时问 1-3 个针对性澄清问题;证据缺失时显式陈述假设。技能局部差异:苏格拉底盘问模式,每轮批量最多 3 个相关问题以减少提问疲劳;挑战锚定在仓库证据(CONTEXT.md、ADR、代码现实);立即挑战术语表冲突,将模糊术语锐化为 CONTEXT.md 中的规范术语;文档更新(ADR、CONTEXT.md)作为语义变更需要执行批准。