interview

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
Interview the user relentlessly until every load-bearing decision is settled, then emit a decision record and stop.
Map the subject as a design tree: every decision branches into the decisions that hang off it. The frontier is every decision whose prerequisites are already settled. A round asks the whole frontier at once. When unsure whether two questions are independent, they are not: put the second in a later round.
持续追问用户,直到所有关键决策都已敲定,然后输出决策记录并停止。
将主题映射为 design tree(设计树):每个决策都分支出依赖它的后续决策。 **frontier(决策前沿)**是所有前置决策均已敲定的问题。 一轮(round)一次性询问整个决策前沿。 如果无法确定两个问题是否相互独立,就不要把它们视为独立:将第二个问题放到后续轮次。

1. Recon

1. 勘察(recon)

Read
spec/vision.md
and
spec/glossary.md
if they exist, then the code, docs, and whatever the user pointed at, enough to ground every question in what exists. Report it in three or four lines, then go straight to round zero.
先读取
spec/vision.md
和
spec/glossary.md
(如果存在),再查看代码、文档以及用户指定的任何内容,以充分了解现状,并让每个问题都立足于已有内容。 用三到四行汇报勘察结果,然后直接进入第零轮。

2. Round zero

2. 第零轮

Three fixed questions, asked once, never revisited:
  1. The pain: what observably goes wrong today, who hits it, how often, and how you know.
  2. The wedge: the smallest version still worth shipping.
  3. The kill condition: the claim this rests on that could be false. If it were false, would you still build this?
If the kill condition is already false or the wedge collapses to nothing, the session ends in a cut, which is a success. Write up the premise, why it fails, and what would have to change, without shrinking it into a smaller version of the same idea. After round zero, everything is how, not whether.
提出三个固定问题,只问一次,绝不重新讨论:
  1. 痛点(pain):当前有什么可观察的问题,谁会遇到,发生频率如何,以及你如何得知。
  2. 切入点(wedge):仍值得交付的最小版本。
  3. 终止条件(kill condition):整个方案所依赖、但可能不成立的主张。如果它不成立,是否仍要构建?
如果终止条件已经不成立,或切入点缩减后什么都不是,则本次会话以 砍掉(cut) 结束,这同样是一种成功。 说明前提、它为何失败,以及需要发生什么改变;不要把同一个想法缩小后继续推进。 第零轮结束后,所有问题都只关于如何做,而不再讨论是否要做。

3. Rounds

3. 轮次

Ask the whole frontier, numbered, each with your recommended answer:
❓ **Q1** - **<title>**: <the question, as long as it needs to be, options included>

➡️ <your recommended answer, and why>

---

❓ **Q2** - **<title>**: <the question>

➡️ <your recommended answer, and why>
Then wait for answers, recompute the frontier, and ask the next round.
Facts are yours to find: dispatch a sub-agent per fact if your harness can, otherwise look yourself, and only questions downstream of a fact in flight wait. Decisions are the user's: a recommendation is never an answer. For a number the user cannot feel, ask for the sensation or a reference and propose the number yourself.
Once the tree holds eight or more decisions, or the user asks to see it, read references/tree.md and keep a picture of it.
每次询问整个决策前沿,编号,并为每个问题给出你的推荐答案:
❓ **Q1** - **<标题>**:<问题,长度以完整表达为准,并包含选项>

➡️ <你的推荐答案,以及理由>

---

❓ **Q2** - **<标题>**:<问题>

➡️ <你的推荐答案,以及理由>
然后等待回答,重新计算决策前沿,并提出下一轮问题。
事实由你负责查证:如果 harness 支持,为每项事实分派一个 sub-agent;否则自行查找。只有依赖某项正在查证事实的下游问题才需要等待。 决策由用户作出:推荐答案永远不能视为答案。 如果用户无法直观感受某个数字,应询问期望感受或参照物,并由你提出具体数字。
一旦设计树包含八项或更多决策,或用户要求查看,就读取 references/tree.md 并维护其图示。

4. The sweep

4. 清扫(sweep)

Before declaring the frontier empty, check these four:
  • Not doing: named, so it cannot creep back in.
  • Accepted breakage: every plan has some.
  • Done means: what a machine can check, and what a person has to look at.
  • Reversibility: the cost to undo, and the signal that would trigger it.
Anything it surfaces goes back on the frontier, then sweep again.
在宣布决策前沿为空之前,检查以下四项:
  • 不做的事(not doing):明确列出,防止其重新混入。
  • 已接受的破坏(accepted breakage):每个计划都会有一些。
  • 完成标准(done means):机器可以检查什么,以及人必须查看什么。
  • 可逆性(reversibility):撤销成本,以及会触发撤销的信号。
检查中发现的任何遗漏都重新加入决策前沿,然后再次执行清扫。

5. The decision record

5. 决策记录

The session ends when the frontier is empty, the sweep is clean, and the user confirms a shared understanding. Emit it into the conversation and write it to
spec/features/<slug>/decisions.md
, where
<slug>
is a short kebab-case name for the subject that you confirm with the user. A cut is written there too, so the reason survives. If you kept a picture, render it once more with every node settled, not doing, or cut, and give its path under the record.
markdown
undefined
当前沿为空、清扫无遗留,且用户确认已形成共识时,本次会话结束。 将其输出到对话中,并写入
spec/features/<slug>/decisions.md
,其中
<slug>
是经用户确认的、用于表示主题的简短 kebab-case 名称。 砍掉(cut)的结果也要写入其中,以保留原因。 如果此前保留了图示,则再次渲染,其中每个节点均标记为已敲定、不做或已砍掉,并在决策记录下方给出其路径。
markdown
undefined

Decision record: <subject>

决策记录:<主题>

Pain: <from round zero> Wedge: <from round zero> Premise: <the kill condition, and the fact it survived>
痛点:<来自第零轮> 切入点:<来自第零轮> 前提:<终止条件,以及它经受住验证所依据的事实>

Settled

已敲定

  • <decision>: <what was chosen>. Rejected: <alternative> because <reason>.
  • <决策>:<选择了什么>。已拒绝:<替代方案>,因为 <原因>。

Found during recon

勘察期间发现

  • <fact, with file:line or source>
  • <事实,附 file:line 或来源>

Not doing

不做的事

  • <item>
  • <项目>

Accepted breakage

已接受的破坏

  • <what breaks, and why that is fine>
  • <会破坏什么,以及为何可以接受>

Done means

完成标准

  • Automated: <checkable>
  • Manual: <someone has to look>
  • 自动化:<可检查的内容>
  • 人工:<需要人工查看的内容>

Reversibility

可逆性

<cost to undo, and the signal that would trigger it>

Act on none of it until the user confirms.
<撤销成本,以及触发撤销的信号>

在用户确认之前,不执行其中的任何内容。