Grill-with-Docs:让 AI Agent 在动手前先把你问倒

你让 AI Agent 建一个功能,它跑了一天,最后你一看——不是你要的。

不是 bug,不是性能问题,是根本理解错了。你以为 Agent 懂你的业务逻辑,它以为你在说另一件事。这种错位不是偶然的,它是 AI 编码的默认状态。

Matt Pocock 的 skills 仓库有 12 万星,但最核心的技能不是哪个代码生成器或测试框架,而是一个叫 grill-with-docs 的东西——它的工作很简单:在你动手之前,用一连串追问逼你把每个设计决策想清楚。

问题不在 Agent,在沟通

大多数 AI 编码失败源于一个基本问题:你和 Agent 之间缺少共享语言。

你脑子里有一个业务模型——“用户”指什么、“取消”意味着什么、“订单完成”的边界在哪。Agent 脑子里是另一套东西——它从代码里猜,从 README 里猜,从你的 prompt 里猜。两个模型对不上,代码自然跑偏。

grill-with-docs 的做法是反直觉的:它不让 Agent 写代码,反而让它问你问题。一个接一个,一次一个分支,直到整个设计树被走完。

它怎么工作

grill-with-docs 是 Matt Pocock 的 skills 仓库中的一个 engineering skill。安装后,你在会话中触发它,它会:

  1. 先探索你的代码库——如果答案能从现有代码中获取,它不会问你,自己去看
  2. 对照你的领域模型挑战你的方案——你用了某个术语,它翻出 CONTEXT.md 看你是否和已有定义冲突
  3. 用具体场景测试设计决策——不只是问”你觉得怎么处理边界情况”,而是直接说”用户 A 在订单 B 的状态 X 下执行操作 Y,会发生什么”
  4. 实时更新 CONTEXT.md 和 ADR——术语一旦澄清就立刻写进去,不做事后总结

CONTEXT.md 是一个纯术语表,不包含实现细节。它和代码无关,只记录你们对领域概念达成了什么共识。

/
├── CONTEXT.md          ← 领域术语表
├── docs/
│   └── adr/            ← 架构决策记录
│       ├── 0001-event-sourced-orders.md
│       └── 0002-postgres-for-write-model.md
└── src/

为什么要先问再做

这听起来很慢。但对比一下正常流程:

没有 grill-with-docs: 你描述需求 → Agent 理解(可能错了)→ Agent 写代码 → 你发现不对 → 你纠正 → Agent 重写 → 你发现又不对 → 再纠正 → 再重写。一个功能来回三四轮是常态。

有 grill-with-docs: Agent 问你 20-40 个问题 → 你逐一回答 → 术语和决策被记录 → Agent 开始写代码 → 一次做对。

前者看起来快,因为追问阶段不产出代码。但后者省掉了所有返工。

Matt Pocock 的原话说得很直接:

“The most common failure mode in software development is misalignment. You think the dev knows what you want. Then you see what they’ve built — and you realize it didn’t understand you at all.”

这套逻辑在 AI 编码时代同样成立,甚至更严重。人类开发者可以通过代码评审发现理解偏差,AI Agent 不会主动质疑你的需求。

什么时候用它

grill-with-docs 不是每次交互都需要,但在以下场景价值巨大:

  • 新功能设计:在写第一行代码前,用追问把边界条件、数据流向、异常处理全部理清
  • 重构现有模块:Agent 先读你的代码和文档,确认它理解现有行为后再动手
  • 多模块交互:当变更涉及多个模块时,追问能暴露模块间的依赖和契约
  • 团队共享上下文:如果多人用同一个 Agent 工作,CONTEXT.md 成为唯一事实来源

它不擅长的事

  • 小改动:改个变量名、调个参数,不需要 30 轮追问
  • 探索性原型:你本来就想让 Agent 试几个方向看看,追问反而拖慢节奏
  • 从零开始的空白项目:没有代码库可探索,没有现有术语可对照,grill-with-docs 的价值有限
  • 快速验证想法:5 分钟跑个 demo 的时候,你不需要 ADR

安装

一行命令,自动安装到 30+ agent:

npx skills@latest add mattpocock/skills --skill grill-with-docs

安装后运行 /setup-matt-pocock-skills 配置 issue tracker 和标签词汇。

实际效果

grill-with-docs 最强大的地方不在于它问了什么问题,而在于它产出了什么——一份不断进化的领域模型文档。

假设你在设计一个电商系统的取消流程。正常对话中你可能会说”用户应该能取消订单”,Agent 会按自己的理解实现。grill-with-docs 会追问:

  • “取消是部分取消还是整个订单取消?”
  • “已发货的订单能取消吗?”
  • “取消后库存怎么回滚?”
  • “退款是立即还是异步?”
  • “用户取消和商家取消的处理一样吗?”

每个答案都会更新到 CONTEXT.md。下次你或你的团队再提到”取消”,所有人(包括 Agent)用的都是同一个定义。

这种共享语言的效果是复利的。每一次对话都在完善领域模型,下一次对话的起点就比上一次高。

真实使用示例

假设你在为一个 SaaS 项目添加”团队邀请”功能。你触发 grill-with-docs,对话大致是这样的:

你: 我想加一个团队邀请功能,用户可以邀请别人加入自己的团队。

Agent: 先看一下你的代码库。你已经有 Team 和 Member 的概念了。“邀请”是指发送一个链接让陌生人注册后自动加入,还是先发送邀请,对方接受后才成为 Member?

你: 先发送邀请,对方接受后成为 Member。

Agent: 好。邀请的有效期多长?

你: 7 天。

Agent: 一个团队最多能有多少个待处理邀请?

你: 没限制,但超过 50 个以后我会警告团队管理员。

Agent: 记录一下。如果团队已经有 5 个待处理邀请,再发第 6 个,是拒绝还是覆盖最早的?

你: 允许同时存在,不需要覆盖。

Agent: 接受邀请后,新成员的角色是什么?

你: 默认是 member。团队管理员在发邀请时可以指定角色。

Agent: 如果邀请链接被泄露,别人拿到链接后在 7 天内没接受,第 8 天来用会怎样?

你: 过期了,应该拒绝。

Agent: 好。还有几个边界情况:如果邀请发送者的团队权限被回收了,已发送的邀请还有效吗?

你: 有效。邀请一旦发出就独立于发送者了。

Agent: 最后一个:如果两个人同时邀请了同一个邮箱,会怎样?

你: 合并成一条邀请记录,不要重复。

对话结束。整个过程 Agent 问了 9 个问题,没有写一行代码。但 CONTEXT.md 已经更新了:

## 邀请 (Invitation)

- **定义**:发送给未注册用户的加入团队的凭证,接受后才成为 Member
- **有效期**:7 天,过期后不可接受
- **角色**:发送时可指定,默认 member
- **独立性**:邀请发出后独立于发送者,发送者权限变更不影响已有邀请
- **去重**:同一邮箱的重复邀请自动合并

然后你让 Agent 开始写代码。它基于 CONTEXT.md 里的定义实现,不会出现”过期处理不对”或”重复邀请没合并”这种漏网之鱼。

一句话

代码写错了可以重写,理解错了重写的代价是前者的十倍。

先问再做不是慢,是省时间。下次让 Agent 动手之前,试试先让它把你问倒。

GitHub: https://github.com/mattpocock/skills | skills.sh: https://skills.sh/mattpocock/skills/grill-with-docs

相关文章

22 个 Claude Code 技能打通内容创作全链路:从生成到发布的一条龙工作流

22 个 Claude Code 技能打通内容创作全链路:从生成到发布的一条龙工作流

你写完一篇技术博客,接下来要做的事情让人头疼:生成封面图、画配图、做信息图、转 HTML 适配微信公众号、发到 X 和微博。这些工作以前需要切换四五个工具,现在在 Claude Code 里打一条命令 ...

Caveman:砍掉 AI 输出 75% 的 Token,一个都不少

Caveman:砍掉 AI 输出 75% 的 Token,一个都不少

你的 AI Agent 话太多了。每句"当然!我很乐意帮你解决这个问题"都是一个浪费的 token —— 它在烧钱、拖慢响应速度、把真正的答案埋在客套话里。如果你每天都在用 AI 编码 agent — ...

风格 × 布局:baoyu-skills 的视觉设计系统如何让 AI 画得比你设计得还好

你让 AI 画张图,它给你一堆过饱和塑料感的玩意儿。你让 AI 做信息图,它把文字堆在一张不透明的背景上。你让 AI 设计幻灯片,它给你五颜六色、毫无一致的灾难。 问题的根源不在 AI 不会画画—— ...

DESIGN.md:纯文本设计系统,让 AI 编码 Agent 生成像素级匹配的 UI

DESIGN.md:纯文本设计系统,让 AI 编码 Agent 生成像素级匹配的 UI

你告诉 AI agent "做一个登录页",它给你一个蓝底白字的 Bootstrap 默认样式。你让它在现有项目里加一个弹窗,它写出来的按钮和你的设计稿差了三个色号。agent 不蠢 —— 它只是不知 ...

当 AI 输出从 10 行暴涨到 1000 行,Claude 团队为什么正在抛弃 Markdown

当 AI 输出从 10 行暴涨到 1000 行,Claude 团队为什么正在抛弃 Markdown

你的 AI 能一次性输出 1000 行计划、画复杂流程图、做完整代码审查。但你还在用 Markdown 读它。 Claude Code 团队工程师 Thariq 最近在 X 上发了一条很直接的推文: ...

Anthropic frontend-design Skill:让 AI 生成的界面不再千篇一律

你让 AI agent 搭一个登录页,看着还行。再让它做一个仪表盘,长得和登录页一模一样。又一个设置页,还是那个调调。三个页面,一套风格,而你说不出这风格叫什么,因为它什么都不是。Inter 字体、紫 ...