<!-- title: 先问三句再开工：接单课开张 -->

# 先问三句再开工：接单课开张——第8轮设计模式提炼：写件课第五拍

## 概述

本期做三件事：其一，点账——写件课拍到第四拍，文字件、前台、带脚件、质检先后到岗，但四拍教的全是「答」侧的手艺：怎么把话说清、把队排好、把活分出去、把货验对；「问」侧——开工之前怎么把需求问全——四拍一字未提，而生态里最贵的事故恰恰发生在这段真空里。其二，提炼——从本周横评卷刚记过的 spec-kit clarify 工序闸、档案在册的 grill 系追问件、BMAD 的角色会商里，提炼出接单问诊的四式套路，每式配一个死法、一条判据。其三，交货——当场构造 `ask-first`：一件只管提问不管施工的接单窗口件，一轮问全、选择题优先、默认值显式、答案落盘。核心发现一句话：**Agent 时代的需求澄清不该散落在对话里碰运气，它该是件里的显式条款——问几轮、问什么、不问什么、答案落在哪，四件事写进正文，返工的一半源头就焊死在开工之前。**

## 一、空位从哪来：四拍都教答，没人教问

先把课线的账摊开。09-27 第一拍 minutes-fixer 教文字件，九条套路；09-29 第二拍 skill-dispatcher 教前台，六条套路；09-30 第三拍 catalog-drafter 教带脚件，六条接缝套路；同日第四拍 skill-lint 立起七道出厂闸。四拍连起来，工厂有了产线、前台、车间、质检——但门口没有接单窗口。用户一句话进来，直接就往车间里灌，需求里的歧义由施工的件现场猜，猜错了质检闸也拦不住：**闸验的是「做得对不对」，验不了「做的就不是那件事」。**

生态这一周的动静恰好都在给这个空位作证。今晨横评卷里，GitHub 官方的 spec-kit 把 `/speckit.clarify` 做成显式工序——**问题不问完，不许进规划**；这是把需求工程里最贵的返工源头焊死在流程上，也是本周唯一把「问」当成一级公民的大仓动作。另一头，追问式的件也一直在场：本栏 08-28 档案录得两段描述原文——「A relentless interview to sharpen a plan or design」，以及「Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick」——grill 系把「追问」做成产品，但它们是给**打磨已有方案**用的，管不到「开工前需求还没成形」的那一段。BMAD-METHOD 的角色会商里也藏着问，但问被埋在分析师与 PM 的剧本里，成本是整套编制的重量。

三个样本，三种形态：工序闸（spec-kit）、独立追问件（grill 系）、剧本内嵌（BMAD）。**「问」这件事有真实供给，但没有一件落在「任何任务开工前」这个最普惠的位置上。**这就是第五拍的空位。

```mermaid
flowchart TD
    A["接单窗口 ask-first<br/>开工前问全"] --> B["前台 dispatcher<br/>点对那件"]
    B --> C["车间 文字与带脚件<br/>真正干活"]
    C --> D["质检 skill-lint<br/>出厂闸"]
```

读图要点：接单窗口排在流水线最上游，它不生产任何东西，只保证流进前台的那句话**没有致命歧义**；四拍的老科目一个不动，本期只补门口这一间。

## 二、评测对比表：「问」派在场者地形图

权重沿用本栏固定口径：功能 25%、设计 25%、实战 20%、上手 15%、社区 15%。评分均为编辑纸面评价，未实测项按两星起评。

| 问派件 | 层位 | 功能 | 设计 | 实战 | 上手 | 社区 | 加权 |
|---|---|:---:|:---:|:---:|:---:|:---:|:---:|
| spec-kit clarify | 规格流水线内的显式关卡 | ★★★★ | ★★★★★ | ★★★★ | ★★★ | ★★★★★ | **4.25** |
| BMAD 角色会商 | 编制剧本内嵌的会商 | ★★★★★ | ★★★ | ★★ | ★★ | ★★★★ | **3.30** |
| grill 系追问件 | 方案打磨期的深挖 | ★★★ | ★★★★ | ★★ | ★★★★ | ★★ | **3.05** |
| ask-first（本件） | 任意任务开工前的接单窗口 | ★★★ | ★★★★ | ★★ | ★★★★ | ★★☆ | **2.98** |

四行口径。spec-kit 的 clarify 设计五星，理由是今晨横评卷的原判：它把「向人提问补齐歧义」做成独立关卡，问题不问完不许进规划——这是四家里唯一把问写进**流程骨架**的；但它的问只服务于规格工程，你写周报、改配置用不上它。BMAD 功能五星靠编制覆盖面撑着，可问的成本也是编制级的——写个爬虫也要先过会商，上手两星。grill 系是问派里的「深挖型」，描述原文在场（见参考来源），但它默认你已经有一份方案可挖，开工前的真空段它不管。ask-first 是本栏刚造的演示件，实战未实测两星起评，社区刚出生不给满扣——纸面垫底不丢人，出厂时诚实的分才有复检的意义。

三件在册件的安装口径（以各自仓库 README 为准）：

```bash
uvx --from git+https://github.com/github/spec-kit.git specify init 项目名 --ai claude
npx bmad-method install
npx openspec init
```

grill 系的安装参数本期档案未录全，不凭记忆补写，以原仓 README 为最终口径。

## 三、正课：接单四式，每式一个死法

**式一 一轮问全，拦「挤牙膏死」。** 最败好感的问法是问一句做一半，做砸了再回来问第二句——用户每被点亮一次对话框，信任就掉一档。判据：接单件的提问**至多两轮**；第一轮把所有待决问题攒齐一次抛出，按「范围→格式→去向→验收」四栏清点；第二轮只许追问第一轮答案引出的新歧义。判断关。

**式二 选择题优先，拦「开放题死」。** 「你想要什么样的？」是把提问的成本转嫁给用户——他把话已经说完了才来找件。判据：每个问题必须带 2-4 个预设选项，外加一个「都不对，我另说」的出口；问「A 还是 B 还是 C」，不问「你想要什么」。宿主侧的选择题式提问工具已经把形态准备好了——本栏 08-31 档案录得一件社区件把 `AskUserQuestion` 与 Bash、Read 并列写进 `allowed-tools`，选项化提问是这个时代接单的默认形状。判断关。

**式三 默认值显式，拦「沉默认同死」。** 用户不答，不等于同意按你的偏好办——但绝大多数件就是这么干的：问一句没回音，就悄悄按作者口味做了。判据：每个问题的描述里**预先写死缺省值**，「未答即按 X 处理」白纸黑字；正文里的兜底句是验收的一部分。这抄的是官方内置件的成例——`run` 的描述里写着「If no project skill exists, falls back to built-in patterns」，兜底前置声明，不给模型现场发挥的空间；09-10 档案里那件提交信息件的「暂存区为空时不适用，禁止自行执行 git add」是同一条律的中文范本。脚本粗验在场性，语义归模型判。

**式四 答案落盘，拦「对话蒸发死」。** 问得再好，答案只活在对话里，第二天换个会话就全部蒸发，用户被迫重新答一遍。判据：澄清结束的当场，把「问题—答案—默认值」三栏写进任务目录的记录文件；后续任何件接手，先读这份记录再动手。这是记账件「先建文件记账再动手」的老规矩（09-19 档案口径）在问侧的延伸：**开工前的答案，就是最早入账的账。**判断关。

四式之外附一张分诊线，画清「问与不问」的边界，全文随件走：

| 该问人的 | 不该问人的（自己查） | 不必问的（自己定并声明） |
|---|---|---|
| 要不要做、给谁看、做到多狠 | 分支名、路径、版本号、目录里有什么 | 无关痛痒的小选择（文件名、注释风格） |
| 偏好、边界、验收标准 | git log、包管理器、现有测试能回答的一切 | 答案可逆且成本近零的选择 |

分诊线的原理一句话：**机器能查的问人，是把人当数据库；人的偏好和边界机器查不到，那才是提问的全部合法领地。**

## 四、当场造：ask-first，只管问不管做的接单窗口

起名过纪律。`ask-first` 三个词把行为契约写在门牌上——先问，后做；本机在册清单逐字查过，未见同名（以当期名单为口径，市场撞名上架前必跑 `npx skills find ask-first`）。它是纯文字件，不带脚本——第五拍回到拍一的体裁，正好示范「不带脚的件照样能立规矩」。

SKILL.md 全文，可直接复制：

```markdown
name: ask-first
description: 开工前的需求问诊件。当用户下达的任务存在明显多解——新功能、
  改代码、写文档、做数据——且范围、格式、去向、验收标准尚未言明时使用。
  clarify requirements before starting work。一轮问全、选择题优先、默认值
  显式、答案落盘成记录文件；问完即交棒，自己不写一行生产代码。要写正式
  规格用 spec-kit 类工序件 instead；要验已完成的交付用 skill-lint instead；
  要在已装件里选件用 skill-dispatcher instead。Not a replacement for the
  skill that does the actual work.

# Ask First — 接单窗口

只做一件事：开工前把歧义问完，答案落盘，然后交棒。

## 何时接单
任务里同时缺「范围、格式、去向、验收」中的两项以上，且对话里找不出答案。

## 四式（正文即操作规程）
1. 攒题：按四栏清点待决项，一轮问全，至多两轮
2. 出选择题：每问带 2-4 个选项加「都不对」出口，禁问开放题
3. 报默认值：每问附「未答即按 X 处理」，缺省值先于提问写死
4. 落盘：问答默认值三栏写入任务目录 answers.md，交棒时随附

## 问与不问
分诊表在 references/triage.md：机器能查的自己查，偏好边界才问人，
无关痛痒的自己定并在答案里声明。

## 工作流程
1. 读用户指令，列待决项；四栏全有着落的，直接放行不提问
2. 有缺项：一轮抛出全部选择题，附默认值
3. 收答案（或超时取默认），写 answers.md
4. 交棒：点名真正干活的件或直接开工，把 answers.md 路径带在交棒句里

## 不要做
- 不写一行生产代码——窗口不进车间
- 不二次追问用户已经回答过的事——答案以 answers.md 为准
- 不问机器能查的问题——分诊表管着
- 不跳过落盘直接开工——对话会蒸发，文件不会

## 完成定义
- 待决项清零：每项恰有一个答案或一个被采用的默认值
- answers.md 三栏齐全，路径已在交棒句里
- 本件自身对生产文件的写盘数为零（answers.md 除外）
```

分诊表单独住 `references/triage.md`——数据管内容、正文管流程，这是第二拍教过的老套路，接单件照章办事。

逐段注记只挑要紧的。**描述**：触发词押在「多解」「范围、格式、去向、验收」「开工前」这几处用户真实会打的词上，顺带一枚英文钩子 clarify；三条让路句各有主——写规格归 spec-kit 系、验货归 skill-lint、选件归 dispatcher，末句给自己上紧箍：**接单件最大的职业病害就是抢班子的活**，门牌里先自断。**四式即章节**：正文不写散文，每式就是一条可执行的操作，模型照着走不需要发挥。**完成定义里藏着本件的自我约束**：写盘数为零（记录文件除外）——问诊窗口若顺手改了代码，四式就全成了走过场的仪式。

## 五、一次完整当班

```mermaid
flowchart TD
    A["用户一句话下单"] --> B["点亮 ask-first"]
    B --> C{"四栏缺项两以上"}
    C -->|不缺| H["直接放行交棒"]
    C -->|缺| D["一轮抛全部选择题<br/>每问附默认值"]
    D --> E{"用户作答"}
    E -->|答了| F["答案写入 answers.md"]
    E -->|没答| G["采用声明的默认值"]
    G --> F
    F --> I["点名干活的件<br/>交棒句带上 answers.md"]
    H --> I
```

读图要点：E 的两个出口殊途同归地汇进 F——**答与不答都必须落账**，沉默走默认值，这是式三的图上形态；C 的「不缺」出口是接单件的自律，四栏全有着落时还硬问三句，问诊就成了添堵。

## 六、安装与自测

```bash
# 两件套：正文、分诊表
mkdir -p ~/.claude/skills/ask-first/references
# 将上文 SKILL.md 存为 ~/.claude/skills/ask-first/SKILL.md
# 将分诊表     存为 ~/.claude/skills/ask-first/references/triage.md

# 自测第一式：点火三句
#   「我要给这个脚本加个导出功能，先别写，先问我」
#   「需求不太明确，帮我问清楚再开工」
#   「这个任务有什么要先确认的吗」
# 自测第二式：灭火三句
#   「直接按 README 跑一遍」（四栏全有着落，应放行不问）
#   「帮我验一件写没写对」（归 skill-lint）
#   「帮我挑个处理 PDF 的件」（归 dispatcher）
# 自测第三式：问诊中途断开会话，新会话里查 answers.md 是否还在

# 市场撞名复查（上架日用）
npx skills find ask-first
```

## 七、推荐排行榜

- **最值钱的一式：式三默认值显式。** 四式里只有它是「写了就立刻回本」的——用户一句不答，件也能体面地开工；而且它是唯一有官方成例可直接抄的（run 的兜底句、提交信息件的反向条款，档案原文都在）。
- **最被低估的一式：式四答案落盘。** 问诊的价值有一半在第二天才结算——账不在文件里，前三次问得再漂亮也是白问。
- **最省钱的起步法：不装本件，把分诊表抄进你现有件的开头。** 五行表堵住的误提问，比十句「请谨慎提问」都多。
- **挂账更新：** 上期挂的「点闸席」（实跑 skill-lint 验自 家退出码）本期仍不销——执行通道本期依旧未开，不为销账而销账；新挂一席「问诊席」：留待回访 ask-first 在真实任务里的两轮纪律守不守得住。
- **新手行动清单：** 还没写第一件的，先回拍一交 minutes-fixer 的作业；写完件的，把式三的默认值句补进你的描述里，五分钟的事；已经开工总是返工的，**先装窗口再谈手艺——车间里省下的每一场返工，都是门口问出来的。**

## 结语

写件课拍到第五拍，工厂的编制终于齐了：门口有接单的，屋里有点名的，车间有干活的，出厂有验货的。前四拍教的都是「答」的手艺，本期补上「问」的规矩——而这一拍的 Deep 之处在于它的分工观：**问不是性格，是条款。** spec-kit 把问写进工序，grill 系把问做成产品，本栏把问写进门牌背面——三个动作说的是同一句话：Agent 越能干，开工前的三句问就越贵。把这三句变成件里的白纸黑字，让沉默有默认、答案有去处、交棒有凭证，写件人手里才算真正握住了返工的阀门。

## 参考来源

1. [github/spec-kit](https://github.com/github/spec-kit) — clarify 显式工序与「问完才许进规划」的口径出处
2. [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec) — 提案制变更澄清的对照样本
3. [anthropics/skills](https://github.com/anthropics/skills) — 官方示例仓；run 件兜底句等内置件描述生态的原始出处
4. 本刊存档：规格驱动四件横评（2026-10-03）—— spec-kit clarify 工序引文与四件安装参数
5. 本刊存档：出厂闸 skill-lint（2026-09-30）—— 写件课四拍课程线、让路句与两星起评纪律
6. 本刊存档：grill 系描述原文快照（2026-08-28）—— 「relentless interview」与「grill through whichever one you pick」两句原文的录得记录

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
