今日重点:🗣️ 口语——邮件列表是异步的评审会,写下的每句话,开会时都要能说出口。 今天用 x86 内核影子栈 RFC 里的一段真实交锋,拆五种说「不行」的说法: 硬拒、划范围、软硬搭配、给出路、玩笑收尾。最后给你一个现场场景,逼你在三句话里把话说完。
🗣️ 现场:一条 Future Work 引发的反对
/ section背景:Dave Hansen 发出 RFC 系列 [RFC][PATCH 00/24] x86 Kernel Shadow Stacks(2026-10-21,24 个补丁), 让内核在 FRED(2026 年 CPU 上的新事件交付机制,取代古老的 IDT)之上维护自己的影子栈。 封面信里他写死了前提 FRED is a required prerequisite,但语气留了口子——「要回去做 IDT 实现,我完全支持,只是 FRED 简单得多,应该从这里起步」。 同信的 Future Work 里还留了一条待办:Work with IDT-based systems (without FRED)。 几个小时后,Peter Zijlstra 两封回复,把这条路划掉。 下面五段引用全部是真实邮件原句,每段末尾给出来源邮件,点开可逐字对照。
Work with IDT-based systems (without FRED)
来源:Dave Hansen 封面信的 Future Work 段, 2026-10-22 03:51 北京。 注意用词是 Work with——这是一个「待办」,不是路线图上的「承诺」。 口语里也一样:先说「以后可以试试」的人,往往心里清楚对方会反对;真正要留意的,是别让一句待办被当成已排期的功能。
🗣️ 五个动作
/ section① 判断句先落地,理由跟在后头。
原句:This simply cannot work -- IDT relies on that horrific NMI nesting stuff, and shadow stacks hate on that something fierce.
语境翻译:这根本行不通——IDT 依赖那套糟糕透顶的 NMI 嵌套机制,影子栈又极其不适应这种东西。
要点:This simply cannot work 是结论前置,破折号之后才补理由;simply 把「不行」钉死,不留讨价还价的缝。 口头表达时先给判断、再补理由,听众不用等你说完才知道立场。 something fierce 是口语里的强度说法(非常、猛烈),正式文档里少用,会议里说出来很自然。
复述引导:合上原文,用 15 秒说「判断 + 两个理由」——第一个理由讲对方方案依赖了什么东西,第二个理由讲你的机制为什么受不了它。
来源:Peter Zijlstra,2026-10-22 05:36 北京
② 用 we 把「你不对」换成「我们不这么走」。
原句:We're not going to contemplate doing IDT; its an absolute trainwreck.
语境翻译:我们不会考虑去做 IDT;那东西完全是一团糟。
要点:主语是 We,不是 You。反对的对象从「你的方案」移到「我们共同要走的路线」,人就不在靶子上。 not going to contemplate 比 won't do 更冷一档:连考虑都不考虑,但语气不带火气。分号后用一个名词性判断收尾,短、硬、好记。
顺带一个细节:原文的 its 是 it's 的笔误,邮件列表里很常见。引用保留原样,自己写作时别照抄。
复述引导:把你的反对意见重说一遍,主语不许用 you,改用 we,并且让后半句落在一个名词或名词短语上。
来源:Peter Zijlstra,2026-10-22 05:53 北京
③ 软硬搭配:概率软化判断,句子照样决断。
原句:Trying to support non-ss tasks looks like a complete nightmare, lets not do that.
语境翻译:想支持没有影子栈的任务,看起来完全是场噩梦,还是别做了。
要点:前半句 looks like 留了余地——也许你有办法,也许我判断错了;后半句 lets not do that 立刻给出结论——但还是别做。 软化的是判断,不是决定。会议里这一对最好用:先给对方面子,再给团队方向。 (non-ss 是邮件里的简写,指没有影子栈的任务。)
复述引导:用「looks like …,let's not …」的结构,先说风险,再说不做;两句之间不要停顿太久,否则软化成犹豫。
来源:Peter Zijlstra,同一封邮件,2026-10-22 05:53 北京
④ 反对之外,给出路。
原句:This; I'm thinking we should simply unwind our own stack and write the return frames in the shadow-stack and switch. We have all the infrastructure for this to be 'trivial'.
语境翻译:关于这一点,我在想我们干脆把自己的栈展开,把返回帧写进影子栈里再切换。该有的基础设施我们都有,这事应该「不难」。
要点:This; I'm thinking we should … 是口语里认领话题的起手式——「这一点上,我在想……」。 simply 表示方案本身简单,'trivial' 加引号是自嘲式留余量:真做起来未必轻松。 只否决不给路,等于把球踢回给对方;给一条路,讨论才能往下走。
复述引导:用 I'm thinking we should … 给你的反对配一条替代方案,一句话说完,别在句子里展开实现细节。
来源:Peter Zijlstra,同一封邮件,2026-10-22 05:53 北京
⑤ 玩笑收尾,把决定权交回去。
原句:Heh. I'll leave this one as an exercise to the reader if folks really care.
语境翻译:嘿。要是真有人在意这一点,那我就留作读者的练习题了。
要点:场景是补丁 12 的 Future Work——为了省掉动态映射的复杂度,直接用静态映射(KISS),代价是在编译了影子栈支持、运行时却没启用的情况下,每个 CPU 浪费三个页。 Peter 打趣说有人在想办法缩小栈,Dave 用 Heh. 接住玩笑,再用 if folks really care 把优先级交回给提意见的人。 这不是敷衍:他紧接着仍给了两条可选实现路径。Heh 是轻笑,不是嘲讽;写进文字里别滥用,一条线程一次就够。
复述引导:别人对你的设计挑了一根不痛不痒的刺,用一句玩笑加一句「真有人要就再说」接住,不承诺改动,但把下一步的门留着。
来源:Dave Hansen,2026-10-22 06:59 北京(其中 Peter 的原话 People were trying to *shrink* stacks 😉 由 Dave 引用)
✨ 辅助彩蛋:三个能搬进会议的语气词
/ section★ 程度、结果、代价——三个形容词各就各位
✍️ 今日练习
/ column💡 显示答案
每日一句:Say the verdict, give the reason, leave a way forward.
仿写示范