
让AI持续追问,直到你真的想清楚为止
让AI持续追问,直到你真的想清楚为止
不是让AI猜你想要什么,而是让它逼你把话说清楚。
痛点
" 你说"做一个用户管理模块",AI就开始写代码。
写完一看:不是你想要的。
- 权限设计不对
- 数据结构有漏洞
- 边界情况没考虑
问题不在AI,在于你一开始就没想清楚。
grill-with-docs 是什么
Matt Pocock开发的工程Skill——
一个无情的面试官,在写代码前逼你把每个决策分支都讲清楚,同时帮你构建项目的领域模型和文档(ADR和词汇表)。
核心价值
- 🎯 对齐优先 — 写代码前先对齐理解
- 📝 文档沉淀 — 自动更新CONTEXT.md和ADR
- 🧠 领域建模 — 用/domain-modeling技能打磨概念
- ❓ 持续追问 — 每个分支都问到水落石出
解决的核心问题
问题1:Agent没做我想做的
最常见: 你以为AI懂了,看完结果发现完全不是那回事。
这是沟通鸿沟。
解决: 在动手前,先做grilling session——让AI问到你把每个细节都想清楚。
问题2:AI太啰嗦
现象: 项目里有专有术语,AI不知道,用20个字说本来1个词能说清的东西。
"让一个章节里的课程变成'real'(即在文件系统里分配位置)出问题了"
vs
"materialization cascade出问题了"
解决: 建立共享语言——CONTEXT.md词汇表,让AI和你说同一种语言。
好处:
- 变量、函数、文件命名一致
- 代码库更容易导航
- AI花在思考上的token更少
问题3:代码不work
对齐了,语言也统一了,代码还是烂?
看你的反馈循环——没有反馈,AI就是在盲飞。
需要:
- 静态类型
- 浏览器访问
- 自动化测试(TDD red-green-refactor)
grill-with-docs本身不解决这个,但它能让对齐和建模先发生,避免返工。
怎么工作
第一步:运行/grill-with-docs
/grill-with-docs第二步:AI开始无情追问
比如你说"做一个订单取消功能":
- 取消的是订单还是订单项?
- 部分取消还是全量取消?
- 取消后库存怎么处理?
- 支付退还是自动还是需要审批?
- 取消有时间限制吗?
- 如果订单已经发货了呢?
每个分支都问到水落石出。
第三步:构建领域模型
在追问过程中,AI会:
挑战模糊术语
"你说的'账户'是指Customer还是User?这是两个东西。"提出精确术语
"不要说'用户取消订单',说'Customer initiates Order cancellation'"用具体场景stress-test
"如果用户在支付前取消、支付后取消、发货后取消,分别怎么处理?"检查代码一致性
"你的代码说整个Order取消,但你刚才说部分取消也可以——哪个对?"
第四步:更新文档
实时更新CONTEXT.md(词汇表):
# Context
## Terms
- **Order** — A customer's purchase, containing multiple OrderItems
- **OrderItem** — A single product line item within an Order
- **Cancellation** — Customer-initiated Order termination, can be partial or full
- **Materialization** — Allocating filesystem space for a Lesson选择性创建ADR(架构决策记录):
只有当三个条件都满足时才创建:
- 难以逆转 — 改变主意成本高
- 没上下文会奇怪 — 未来读者会问"为什么这样?"
- 真实权衡的结果 — 有明确替代方案,你选了这个有理由
和/grill-me的区别
| 特性 | /grill-me | /grill-with-docs |
|---|---|---|
| 用途 | 非代码场景的grilling | 工程场景的grilling |
| 领域建模 | ❌ | ✅ 使用/domain-modeling |
| 文档更新 | ❌ | ✅ 实时更新CONTEXT.md |
| ADR创建 | ❌ | ✅ 选择性创建ADR |
简单说: /grill-with-docs = /grill-me + 领域建模 + 文档沉淀
文件结构
单一上下文
/
├── CONTEXT.md # 词汇表
├── docs/
│ └── adr/ # 架构决策记录
│ ├── 0001-event-sourced-orders.md
│ └── 0002-postgres-for-write-model.md
└── src/多上下文
/
├── CONTEXT-MAP.md # 指向各上下文
├── docs/
│ └── adr/ # 系统级决策
├── src/
│ ├── ordering/
│ │ ├── CONTEXT.md # ordering上下文的词汇表
│ │ └── docs/adr/ # ordering特定决策
│ └── billing/
│ ├── CONTEXT.md
│ └── docs/adr/惰性创建: 只在有内容时才创建文件。
CONTEXT.md规则
DO(应该)
- 只存词汇表和概念定义
- 实时更新,别batch
- 用CONTEXT-FORMAT.md的格式
- 完全没有实现细节
DON'T(不应该)
- 把它当spec
- 把它当scratch pad
- 存实现决策
- 记录技术细节
CONTEXT.md是词汇表,别的什么都不是。
ADR创建原则
只有当三个条件全满足时才创建ADR:
- 难以逆转 — 改变主意成本有意义
- 没上下文会奇怪 — 未来读者会疑惑
- 真实权衡 — 有明确替代方案,你选了这个有理由
任何一个不满足,跳过ADR。
实战案例
场景:订单取消功能
你: "做一个订单取消功能"
AI开始追问:
AI: "取消的是什么?是整个Order还是单个OrderItem?"
你: "都可以,用户想取消啥就取消啥。"
AI: "那Inventory怎么处理?OrderItem取消退对应商品库存,Order取消退全部库存?"
你: "对。"
AI: "如果已经支付了呢?自动退款还是需要审批?"
你: "小于1000自动退,大于1000要财务审批。"
AI: "如果订单已经发货了呢?"
你: "那就不能取消了,要走退货流程。"
AI: "好的,我来更新CONTEXT.md并记录这些决策。"
AI更新CONTEXT.md:
## Terms
- **Order Cancellation** — Customer-initiated termination, can be at Order or OrderItem level
- **Refund Threshold** — Orders under 1000 auto-refund, over 1000 require finance approval
- **Shipping Cutoff** — Orders cannot be cancelled once shippedAI判断需要ADR:
# ADR 0003: Order Cancellation Rules
## Status
Accepted
## Context
Users need ability to cancel orders, but we need rules for inventory, refunds, and shipping cutoff.
## Decision
- Cancellation available at Order or OrderItem level
- Inventory restored atomically with cancellation
- Refunds under 1000 automatic, over 1000 require finance approval
- Shipping status acts as cancellation cutoff
## Consequences
- Users can partially cancel orders
- Finance team needs workflow for >1000 refunds
- Shipping service must emit status for cancellation check为什么这么强大
1. 强迫思考
不是"我有个想法",是"我把每个分支都想清楚了"。
2. 语言统一
从"课程在文件系统分配位置"到"materialization cascade",一个词搞定。
节省token: 每次5个词 vs 每次20个词,一天省几十万token。
3. 决策留痕
三个月后问"为什么订单取消要财务审批?"
看ADR就知道,不用猜。
4. 代码一致性
AI在grilling时会检查代码:
"你的代码说Order全量取消,但CONTEXT.md说部分取消也可以——矛盾了。"
怎么用
安装
npx skills@latest add mattpocock/skills选择你要的coding agents,确保选中/setup-matt-pocock-skills。
配置
/setup-matt-pocock-skills它会问:
- 用哪个issue tracker(GitHub/Linear/本地文件)
- triage时用什么labels
- docs保存哪里
使用
每次要改功能时:
/grill-with-docs然后准备被问到底。
核心价值
grill-with-docs解决的不是"AI会不会写代码"的问题——
它解决的是"你和AI是否真的理解彼此"的问题。
grilling session — 把每个决策分支都问到水落石出
领域建模 — 建立共享语言,节省token,提升一致性
文档沉淀 — CONTEXT.md词汇表 + ADR决策记录
让AI不是猜你想要什么,而是逼你把话说清楚。
项目地址:https://github.com/mattpocock/skills
作者:Matt Pocock
newsletter: https://www.aihero.dev/s/skills-newsletter(60,000+开发者订阅)
关注公众号 Fen9Pi,聊聊AI时代的工程实践。
