来源:互联网 更新时间:2026-07-24 07:54
第一课完成安装和项目初始化后,Agent已经知道该从哪里读工单、标签怎么用、领域文档在哪儿找。接下来,终于可以谈需求了。
但别急着让它写规格,更别急着生成代码。
“给用户加一个取消订阅入口”“后台支持批量导出”“订单失败后自动重试”——这些话听起来都像需求,其实只说了一个方向。业务术语是什么?状态会怎么变?异常路径有哪些?验收边界在哪里?这些都没讲清楚。这时候Agent写得越快,往往只是把猜测更快地变成了代码。
第二课只解决一个问题:
/grill-with-docs 让Agent一次问清一个关键决定,并把已经达成共识的术语和架构选择,立即写进项目文档。
/grill-with-docs 到底在做什么这个skill不是普通的需求问卷,也不是帮你生成PRD。它把两种能力组合在一起:
复制代码/grilling 负责沿着决策树追问,一次只问一个问题
/domain-modeling 负责校准术语,并把结论写入 CONTEXT.md 或 ADR
前者让需求变得清楚,后者让共识不会随着对话窗口一起消失。
完整的工程链路是这样的:
复制代码grill-with-docs -> to-spec -> to-tickets -> implement -> code-review
/grill-with-docs 位于最前面,负责把模糊的需求问清楚;下一课的 /to-spec 才负责把已经谈清楚的内容整理成规格。顺序不能反过来,否则规格只是把模糊的表达排版得更正式。
不是每个改动都需要开一场长访谈。下面这几类需求最值得使用:
如果需求已经非常明确,只需要把当前对话整理成规格,直接用 /to-spec。如果只想把一个术语或ADR补进文档,用 /domain-modeling 更直接。如果只想接受追问,但不需要写项目文档,用 /grilling 即可。
第一课生成的 docs/agents/domain.md 应该已经存在,它告诉skill当前项目采用单上下文还是多上下文,以及领域文档应该放在哪里。
然后,准备一个真实需求。最好是正在排期、团队还存在分歧的,不要拿“新增一个按钮”这种已经没有决策空间的例子。给Agent的初始材料不需要很长,一段背景、一个目标、几条已知限制就够了。
例如:
复制代码/grill-with-docs我们准备在账户页增加“取消订阅”。用户提交后不再续费,
客服后台也要看到取消状态。希望本周确认方案,下个迭代开发。
注意,这条命令是在Agent对话框里运行,不是在终端执行。运行后先让它读取仓库。代码、配置和现有文档能回答的事实,应该由Agent自己查,不应再抛回给人。
很多Agent喜欢一次抛十几个问题,看起来覆盖很全,实际回答质量很差。范围、术语、状态和异常混在一起,人只能给出一串不完整的答案,后面还得重新对齐。
/grilling 的规则是一次只问一个,等用户回答后再进入下一步。因为后一个问题往往依赖前一个答案。
举个例子,连“取消订阅”是什么意思都没确认,就开始问退款通知发什么模板,这个顺序已经错了。
Agent不能只做会议记录员。它应该根据代码、现有领域文档和常见风险,提出推荐答案,让人可以直接确认,也可以指出为什么不适用。
一个合格的问题应该接近这样:
复制代码这里的“取消订阅”,是关闭下个周期的自动续费,
还是立即终止当前权益?建议:默认关闭自动续费,权益保留到当前计费周期结束。
原因:这与现有 paid_until 字段和账单逻辑一致,也能减少退款分支。
推荐答案不是替业务拍板。事实由Agent从环境中查,决定仍然由需求负责人确认。
高质量追问不是问题越多越好,而是先解决上游决定,再展开下游分支。一般可以按这个顺序推进:
复制代码目标和范围
-> 核心术语
-> 状态与状态迁移
-> 权限和触发者
-> 异常与边界场景
-> 验收结果
这不是固定模板。重点是,不要在前提还没确定时,提前讨论依赖它的实现细节。
如果Agent想知道项目有没有 Subscription 状态、取消接口目前放在哪个模块、是否已有退款流程,它应该先读代码和文档。
只有真正需要人做取舍的问题才值得问。把搜索仓库也伪装成“需求澄清”,只是在浪费产品和工程师的时间。
初始需求只有一句:“给用户加一个取消订阅入口。”一次合理的grill不会马上讨论按钮颜色或接口路径,而会逐层推进。
Agent发现 CONTEXT.md 里没有定义“取消”,代码中却同时存在 cancel_at_period_end 和 terminated_at。它应该先指出这个冲突:
复制代码你说的“取消”可能对应两个不同动作:
1. 停止下个周期续费,当前权益保留;
2. 立即终止订阅和当前权益。建议把前者统一叫“停止续订”,后者叫“立即终止”。
本次需求默认做“停止续订”,是否确认?
用户确认后,skill应立即更新 CONTEXT.md,而不是等会话结束再批量整理。
复制代码**停止续订**:
关闭订阅的自动续费,当前权益保留到已支付周期结束。
_A void_: 取消订阅、关闭账号**立即终止**:
在当前时刻结束订阅权益,通常伴随退款或人工处置。
_A void_: 停止续订
这里记录的是业务词汇,不是接口字段、数据库结构或实现方案。
术语确定后,才能继续问:“停止续订是否同时适用于付费用户、试用用户和企业套餐?”
假设团队确认第一版只支持个人付费套餐,试用和企业套餐维持原流程,这就是明确的范围边界。它会进入后续规格,但通常不需要单独写ADR。
不要只问“还有异常情况吗”,这种问题几乎得不到有效答案。Agent应该制造具体场景:
复制代码用户在扣款请求已发出、支付结果尚未返回时点击“停止续订”,
本次扣款应该继续完成,还是尝试撤销?建议:本次已开始的扣款继续完成,停止续订从下个周期生效,
避免在支付处理中引入新的竞态。
具体场景会逼出状态边界,也能直接变成后续测试用例的来源。
假设团队最终决定:Billing 是订阅状态的唯一所有者,Account 模块只能通过领域事件申请停止续订,不能同步修改状态。
这个决定难以逆转,未来读代码的人可能不理解为什么不用同步HTTP,而且它来自一致性与可用性的真实取舍。三个条件同时满足,这时候才值得建立ADR。
相反,“按钮放在设置页”“接口返回204”“变量名叫cancellationReason”都不应该建ADR。它们容易修改,也不需要未来团队反复理解当年的架构取舍。
CONTEXT.md 应该写什么,不应该写什么CONTEXT.md 是领域词汇表,不是需求文档,也不是技术方案。
应该写:
_A void_ 中;不应该写:
如果仓库没有 CONTEXT.md,它会在第一个术语真正确定时再创建。没有术语需要记录,就不应该为了“流程完整”生成一个空文件。
/grill-with-docs 不追求每场讨论都生成ADR。一个决定只有同时满足下面三个条件,才值得记录:
满足条件后,ADR也不需要写成论文。最小版本只要讲清楚背景、最终决定和为什么。项目已有 docs/adr/ 时继续编号;没有时,在第一份ADR真正需要落地时再创建。
课堂上不要统计“它问了多少题”。问题多不代表需求清楚。建议用下面这张检查表逐题评分:
| 检查项 | 合格表现 | 不合格表现 |
|---|---|---|
| 单问题 | 一次只要求确认一个决定 | 一次抛出十几个问题 |
| 有依据 | 先读代码和文档,再提出问题 | 把仓库里能查到的事实问给用户 |
| 有建议 | 给出推荐答案和简短理由 | 只问“你想怎么做” |
| 有顺序 | 先术语和上游决定,再问下游边界 | 前提未定就讨论实现细节 |
| 有场景 | 用具体角色、状态和时间点压边界 | 只问“异常怎么处理” |
| 有沉淀 | 术语确认后立即更新glossary | 所有结论只停留在聊天记录 |
| 克制写 ADR | 同时满足三个门槛才建议记录 | 每个小决定都生成ADR |
七项中,只要“有依据”“有顺序”或“有沉淀”明显不合格,这次grill就应该继续修正,不能直接进入 /to-spec。
/grilling 的规则:一次只问一个,等待回答后再继续。
CONTEXT.md 变成了需求说明书。为何比特币BTC价格跌破7.3万美元?一文拆解影响近期比特币行情的五大原因
摩托车活塞环性能如何
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
GPT5.6惨遭切脑,Fable 5回归要变弱鸡版?
Ondo将于今日上线股票永续合约
电视剧《罗曼诺夫后裔》剧情介绍
暗黑4S14野蛮人终局BD攻略
《三角洲行动》S10赛季卡邮件技巧详解-三种方法及风险提示
如何在火狐浏览器中彻底禁用自动更新功能?
区块链OTC交易所有哪几家比较正规?
手机qq浏览器误删文件如何找回-手机qq浏览器误删除文件怎样恢复
360浏览器如何设置网页缩放比例
《三角洲行动》GTI超人成就解锁攻略-满辐射状态击杀技巧详解
全链网:戴蒙或继续担任摩根大通首席执行官三年
什么是山寨币?山寨币指数如何查看?全球前10大山寨币盘点
Binance新增15种bStocks代币化证券为杠杆抵押资产
Sophon正在关闭其Layer2区块链并迁移到Base
全球十大加密货币APP v3.11.5正版下载
异环1.2前瞻什么时候
《三角洲行动》ASh-12战斗步枪改装攻略-省钱与击杀方案详解
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc