ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

batch-grill-me:一轮问完,而不是问得更多

batch-grill-me:一轮问完,而不是问得更多 你让 Agent 帮你设计一个组件库它立刻开始写代码。改完你发现它假设了 React你要的是 Vue它假设了 CSS Modules你要的是 Tailwind它假设了暗色主题你根本没想过主题这件事。三轮纠正下来每一轮都推翻前一轮的一半。于是你让它先问。它就真的一个一个问起来——二十个决策问了二十轮问到第十五个的时候它已经忘了第三轮你否掉的那个假设正拿着它往下推。为了消除猜测而增加的轮次最后把猜测请了回来。所以问题从来不是问得够不够多。提问本身有成本要定的是两件事用几轮问完以及一轮问几条。这两件事归两个不同的约束管。哪些能放进同一轮由依赖决定去哪个国家决定签证怎么办签证决定时间够不够时间决定能去几个城市。这三个必须分三轮先问城市纯属白问上层一变它就作废。而预算多少和偏好自然还是城市互不影响分两轮问就是白花一轮。所以每一轮该问的不是接下来问什么而是此刻前置条件已经满足、现在就能答的那一批。它们之间没有依赖回答顺序不影响结果。这一批答完下一批才浮出来。只看这个约束轮数被压到决策树的深度而不是决策的数量二十个决策如果只有三层依赖三轮就该问完。一轮实际问几条由注意力决定但能同一轮问不等于该同一轮问。一次抛八条问题给你你会认真答前两条剩下六条随手划过——那不是省了轮次是把轮次换成六个敷衍答案而它们照样会被当成你的决定用下去。所以还有个上限一轮最多三条超了按答错代价降序留前三其余下轮再说。排序用代价而不用逻辑顺序是因为砍掉的那些下轮还会回来而代价最高的那条如果被推到下轮你已经拿着它的默认值往下走了一轮。轮次的成本是真的但它没有大到值得用六个敷衍答案去换。上限是三条不是要凑到三条。这个区别看着无所谓实际很要紧写成取前三个三就从天花板变成了目标真正的高代价决策只有一条时Agent 会把本该滤掉的小事捞回来填满额度。三类问题根本不该问比怎么问更省轮次的是不问。第一类是环境里能查到的。路径、现有代码用了什么框架、配置文件里写了什么、上一轮的文档说了什么——这些是可观测的事实不是需要你决策的东西。把你们项目用的是 Vue 还是 React问出口说明它没打开过 package.json。问一个能查到的事实比猜错更糟猜错至少快问错既慢又暴露它没做功课。第二类是答错代价低的。改一版很便宜的事做出来给你看比问你更快。你看着实物说不对往这边比对着一个抽象选项做选择更容易。第三类是那些你大概不会反对的子决定。Agent 判断这个自己定了你也不会有意见就不再往下展开——决策树在这里截止否则它可以一直分叉下去。三条合起来圈出该问的范围环境里查不到而且答错了要推翻一大片。剩下的做了再说。该问的里面还分两种问法这是我觉得最容易做错的一处不是所有问题都该带推荐选项。技术和执行类的问题要带推荐还要带上代价。用 JSON 还是 YAML这种Agent 比你更清楚两者的差别直接给建议和它的风险你点个头就行。让你去权衡一件它更懂的事是把它的活推给你。偏好和判断类的不给推荐。“读者是谁”“这篇最想表达什么”“要极简还是信息密集”——答案取决于你的审美、动机和价值观Agent 一给推荐你很可能就顺着它的框子走了。不管哪种都问封闭式。选 A 还是 B为什么能答你怎么看答不了后者把整理思路的活又扔回给你。还有一种回答要接住你说你定或者随便。这时候不追问。交付的不是聊天记录问完之后还有个隐性成本决策散落在二十条消息里。下一步要执行得回聊天记录里考古拼错了又是一轮纠正。所以最后要落成一份决策清单每条标出它是怎么定的你选的、你授权它代定的、它默认的。第三态对应前面第三类不该问的问题——它判断你不会反对于是没有展开。三态里最有用的就是第三态。前两态你都在场第三态是它自己填的空。不标出来这些默认会和你的决定混在一起看上去像是你都同意过。事后出问题你翻这份清单就知道该找谁是你当时选错了还是它替你定的地方偏了。停的标准也在这份清单上没有悬而未决的分支就停。不是我觉得差不多了是所有决策都有归属。开源链接SKILL.md 全文batch-grill-mebatch-grill-medescription: Use when 请求含多个未定决策、直接执行要靠猜。典型触发“帮我设计/规划/选型/写/做 X”、“我想做 X”或其他 skill 需要按依赖逐轮收敛决策。不触发指令明确、无歧义。把请求里的隐含决策按依赖分层暴露一轮问一批、逐轮推进最后交一份带归属的决策清单。Hard Gate决策清单未产出、或用户未确认前不执行请求本身不写实现、不出方案、不改文件。一轮只发一条消息本轮批次一次抛完不一问一答。概念Design Tree决策成树上层是下层的前提。Frontier前置已定、此刻就能答的候选问题集。集内互不依赖回答顺序不影响结果所以可以同一轮问。本轮批次Frontier 按答错代价排序后本轮实际发出的 ≤3 条。Frontier 决定哪些可以同轮问批次决定这轮实际问几条。步骤1. 收窄问题集先读环境文件、代码、配置、历史对话、上轮文档再决定问什么。不问的三类环境能查到的事实路径、现有技术栈、配置值、已有文档结论→ 直接读作为已知前提列出禁止问用户。答错代价低改一版就够或做出来给用户看比问更快 → 记为「默认」继续。用户大概不会反对的子决定→ 不向下展开记为「默认」继续。该问的只剩一类环境里查不到且答错要推翻一大片。Done when已知前提已列出剩余未定决策点已列出且每条都通过上面三类过滤。2. 计算 Frontier从未定决策点中取出前置已满足的依赖未解问题的子问题归入下一轮。给每条写出答错会推翻什么——这是排序判据也是留下的资格写不出具体后果的说明它属于步骤 1 的低代价项删掉。按后果严重度降序。取最前 3 条作为本轮批次其余留下轮。3 条是上限不是目标Frontier 只剩 1 条就问 1 条禁止从已过滤掉的低代价项里补齐。Done when本轮批次已定每条都写出了答错会推翻什么条数 ≤ 3。3. 批量提问一条消息列完本轮批次编号。问封闭式选 A 还是 B为什么“不问你怎么看”带不带推荐按问题类型分技术/执行类“用 JSON 还是 YAML”→ 给推荐选项并写明该选项的代价或风险。偏好/判断类“读者是谁”“最想表达什么”→ 不给推荐。判据答案取决于用户的审美、动机或价值观。Done when问题清单已发出每条标明了推荐选项或明确开放。4. 消解并推进收到回答后更新 Design Tree已定 → 推进 Frontier。回答使某些问题失效“其实我不需要 X”→ 该问题及其子树标 void不再追踪。用户拒绝推荐 → 追问具体的限制是什么挖出隐藏约束。用户说你定“随便” → 记为「代定」不在此处再追问。回步骤 1新回答可能带出新的可查事实先查再问。Frontier 为空则进入 Done When。Done WhenFrontier 为空无悬而未决的分支。已输出决策清单每条标出归属1. [决定] — 用户选择 2. [决定] — 代定用户授权 3. [决定] — 默认代价低 / 判断用户不关心未问 已知前提[从环境读到的事实] 未决[无 / 列出]用户回复确认。
返回列表