
Grill Skill:让AI持续追问,直到你真的想清楚
Grill Skill:让AI持续追问,直到你真的想清楚
不是直接执行,而是先通过激烈提问对齐理解。解决沟通鸿沟,构建领域模型。
痛点
你给AI一个任务: " "帮我实现用户登录功能"
AI直接开始写代码——
但你想要的是:邮箱+密码登录,还要支持Google OAuth,要有重置密码功能,登录失败要记录日志,要有防暴力破解机制……
AI没做你想要的。
为什么会这样?
- ❌ 没有对齐理解(你以为说清楚了,AI以为理解了)
- ❌ 没有构建共享语言(你说"用户"和AI理解的"用户"不一样)
- ❌ 没有遍历所有分支(只考虑了快乐路径,没想异常情况)
- ❌ 没有解决依赖关系(A决策影响B决策,但没先定A)
结果:做了半天,发现不是你要的。
Grill Skill
Matt Pocock开源的生产力技能——
让AI无情地质问你计划的每个方面,直到达成共同理解。
核心理念
不是直接执行,而是先通过激烈提问对齐理解。
工作流程
用户:帮我实现用户登录功能
AI:(不是直接写代码)
"登录方式有哪些?"
用户:邮箱+密码,还有Google OAuth
AI:"邮箱登录需要验证码吗?"
用户:要,6位数字验证码
AI:"Google OAuth失败时要回退到邮箱登录吗?"
用户:要
AI:"密码重置流程是什么?"
用户:用户点击忘记密码,收到邮件链接,设置新密码
AI:(继续追问...)
...(遍历所有分支,解决所有依赖)
AI:"现在我们达成共识了吗?"
用户:是的
AI:(开始执行)核心原则
原则1:无情地采访
对计划的每个方面都问一遍。
走遍设计树的每个分支,一个接一个地解决决策之间的依赖关系。
示例:
- 登录方式?→ 验证码?→ OAuth失败回退?→ 密码重置?→ 日志记录?→ 防暴力破解?
- 每个分支都要走到,每个决策都要定下来。
原则2:提供推荐答案
对于每个问题,提供你的推荐答案。
AI不是只问问题,而是给出专业建议。
示例:
AI:"登录方式有哪些?"
"我的推荐:邮箱+密码(必选)、Google OAuth(可选)"
用户:就邮箱+密码为什么?
- AI有经验,知道常见做法
- 用户可以参考,也可以拒绝
- 提问变成了双向对话
原则3:一次一个问题
一次问一个问题,等待反馈后再继续。
为什么?
多个问题一起问会让人困惑:
❌ "登录方式有哪些?要不要验证码?OAuth失败要回退吗?" ✅ "登录方式有哪些?"(等待回答)→ "要不要验证码?"(等待回答)
认知过载:
- 人类工作记忆有限(4±1个信息单元)
- 一次多个问题超出处理能力
- 一个一个来,保持在心流中
原则4:事实查,决策问
如果事实可以通过探索代码库找到,查阅它而不是问用户。
示例:
❌ AI:"你们项目用什么数据库?"
✅ AI:(查阅代码库)"看到你们用的是PostgreSQL"但决策必须问用户:
✅ AI:"密码要用bcrypt还是Argon2?"
"我的推荐:Argon2,更安全"为什么?
- 事实是客观的,可以直接查
- 决策是主观的,必须用户决定
- 避免问一些本该自己查的蠢问题
原则5:达成共识再执行
不要执行计划,直到确认达成共同理解。
示例:
AI:(追问完所有问题)
"现在我们达成共识了吗?"
用户:是的
AI:(开始执行)为什么?
- 执行前对齐,避免返工
- 用户确认后,AI有信心做对
- 双方都有明确的预期
解决的问题
问题1:沟通鸿沟
Agent没做用户想要的。
原因:
- 用户以为说清楚了
- AI以为理解了
- 但实际上没对齐
Grill Skill的解法: 通过激烈提问,强迫双方在每个细节上达成共识。
示例:
用户:"实现用户登录"
AI:"登录方式有哪些?"
"要支持哪些邮箱提供商?"
"密码强度要求?"
"验证码过期时间?"
"OAuth失败回退策略?"
"密码重置链接有效期?"
...每个细节都问到,每个决策都确认。
问题2:缺少共享语言
AI太啰嗦,缺少共享语言。
原因:
- 没有构建领域模型
- 没有定义术语
- 同一个词,理解不一样
Grill Skill的解法: 通过提问构建领域模型,建立共享语言。
示例:
AI:"你说的'用户'是指什么?"
"是注册用户,还是访客也算?"
用户:"注册用户"
AI:"'登录成功'是指什么?"
"是只验证密码,还是要检查账号状态?"
用户:"验证密码+检查账号状态(未封禁、已激活)"结果:
- 双方对"用户"、"登录成功"有了共同理解
- 后续对话更高效
- 减少误解
问题3:代码不work
写了半天,发现代码不work。
原因:
- 只考虑了快乐路径
- 没想异常情况
- 没处理边界条件
Grill Skill的解法: 走遍设计树的每个分支,强迫思考所有情况。
示例:
AI:"登录失败有哪些情况?"
用户:密码错误、账号不存在、账号被封禁
AI:"密码错误要显示具体提示吗?"
用户:不要,就显示"用户名或密码错误"
AI:"账号被封禁要显示原因吗?"
用户:要,显示"请联系管理员"
AI:"OAuth失败要回退到邮箱登录吗?"
用户:要结果:
- 异常路径也考虑了
- 边界条件也处理了
- 代码更健壮
使用场景
场景1:功能开发
用户: "帮我实现用户登录功能"
AI(触发Grill Skill):
- 登录方式?
- 验证码机制?
- OAuth集成?
- 密码重置流程?
- 防暴力破解?
- 日志记录?
- ...
结果:
- 所有细节都确认
- 所有分支都覆盖
- 开始写代码时信心满满
场景2:技术方案评审
用户: "我们要重构支付系统"
AI(触发Grill Skill):
- 当前支付系统的痛点是什么?
- 新系统要支持哪些支付方式?
- 要保持向后兼容吗?
- 数据迁移策略是什么?
- 灰度发布计划?
- 回滚方案?
- ...
结果:
- 技术方案更完整
- 风险点都识别了
- 执行计划更清晰
场景3:系统设计
用户: "设计一个秒杀系统"
AI(触发Grill Skill):
- 预期QPS是多少?
- 库存扣减策略?
- 防超卖机制?
- 限流策略?
- 降级方案?
- 数据一致性保证?
- 监控告警?
- ...
结果:
- 系统设计更全面
- 关键问题都覆盖
- 实施路径更明确
场景4:产品需求
用户: "我们要做一个新的用户成长系统"
AI(触发Grill Skill):
- 业务目标是什么?
- 用户分几级?
- 升级条件是什么?
- 权益有哪些?
- 如何防刷?
- 数据埋点需求?
- A/B测试计划?
- ...
结果:
- 需求更清晰
- 边界情况都考虑了
- 开发更有方向
触发方式
方式1:明确指令
Grill我的这个计划:[你的计划]方式2:关键词触发
使用任何包含'grill'的触发短语:
- "grill this plan"
- "grill my idea"
- "帮我grill一下这个方案"
- "我想让这个计划被grill一遍"
方式3:隐式触发
某些场景下,AI会自动触发Grill Skill:
- "我想实现XXX功能"(涉及多个决策)
- "我要重构XXX系统"(复杂技术方案)
- "设计一个XXX系统"(系统设计)
- "评估这个方案"(方案评审)
核心价值
1. 对齐理解
不是你以为的,而是我确认的。
通过激烈提问,强迫双方在每个细节上达成共识。
2. 构建共享语言
不是你说你的,我说我的,而是我们有共同语言。
通过提问构建领域模型,定义术语,消除歧义。
3. 覆盖所有分支
不是只考虑快乐路径,而是遍历所有情况。
走遍设计树的每个分支,强迫思考异常路径、边界条件。
4. 解决依赖关系
不是东一榔头西一棒子,而是有序决策。
一个接一个地解决决策之间的依赖关系,避免返工。
5. 提供专业建议
不是只问问题,而是给出推荐答案。
AI基于经验,在每个问题上给出专业建议,用户可以参考或拒绝。
6. 认知友好
不是一次问一堆问题,而是一个一个来。
一次一个问题,保持在用户的心流中,避免认知过载。
7. 事实查,决策问
不是什么都问,而是该查的查,该问的问。
事实可以直接查代码库,决策必须问用户。
8. 确认再执行
不是想当然执行,而是达成共识后再动手。
执行前确认双方理解一致,避免返工。
与其他技能的配合
配合1:Grill + Teach
Grill先通过激烈提问对齐理解,Teach再基于理解进行教学。
场景:
- Grill:确定要学什么、为什么学、当前水平、目标
- Teach:基于Grill的结果,设计课程、互动练习
配合2:Grill + Domain Modeling
Grill通过激烈提问构建领域模型,Domain Modeling实时更新模型文档。
场景:
- Grill:追问业务细节,定义术语,识别关系
- Domain Modeling:更新CONTEXT.md、ADR(Architecture Decision Records)
配合3:Grill + Grill-with-docs
Grill是原始技能,Grill-with-docs是集成版(结合Domain Modeling)。
区别:
- Grill:纯粹提问
- Grill-with-docs:提问+实时更新文档
实战案例
案例:用户登录功能
用户: "帮我实现用户登录功能"
AI(Grill Skill):
第一轮:登录方式
AI:"登录方式有哪些?"
"我的推荐:邮箱+密码(必选)、Google OAuth(可选)"
用户:"邮箱+密码,加上Google OAuth"第二轮:验证码
AI:"邮箱登录需要验证码吗?"
"我的推荐:要,6位数字验证码,5分钟过期"
用户:"要"第三轮:OAuth失败
AI:"Google OAuth失败时要回退到邮箱登录吗?"
"我的推荐:要,提供备选方案"
用户:"要"第四轮:密码重置
AI:"密码重置流程是什么?"
"我的推荐:用户点击忘记密码,收到邮件链接,设置新密码"
用户:"对,链接要1小时过期"第五轮:防暴力破解
AI:"需要防暴力破解机制吗?"
"我的推荐:要,5次失败后锁定15分钟"
用户:"要"第六轮:日志记录
AI:"需要记录登录日志吗?"
"我的推荐:要,记录登录时间、IP、设备"
用户:"要"第七轮:确认共识
AI:"总结一下我们的共识:
1. 登录方式:邮箱+密码、Google OAuth
2. 验证码:6位数字,5分钟过期
3. OAuth失败回退到邮箱登录
4. 密码重置:邮件链接,1小时过期
5. 防暴力破解:5次失败锁定15分钟
6. 日志记录:时间、IP、设备
这样对吗?"
用户:"对"第八轮:开始执行
AI:"好的,我现在开始实现。"
(开始写代码)结果:
- 所有细节都确认
- 所有分支都覆盖
- 开始写代码时信心满满
- 一次写对,没有返工
最后
传统AI工作方式:
用户说任务 → AI直接执行 → 发现不是要的 → 返工
Grill Skill:
用户说任务 → AI激烈提问 → 达成共识 → AI执行 → 一次做对
不是直接执行,而是先通过激烈提问对齐理解。
让AI持续追问,直到你真的想清楚。
项目地址:https://github.com/mattpocock/skills/tree/main/skills/productivity/grilling
作者:Matt Pocock
License:MIT
关注公众号 Fen9Pi,聊聊AI时代的Agent能力。
