关于 developer-live-demo-design
这项技能将现场演示设计为运行手册,涵盖分段、恢复、备用方案和排练,适用于需要应对设备、命令或网络故障的演示者。
主要功能
- 01演示保真度分级
- 02分段与检查点规划
- 03风险评估与备用素材
- 04重置命令与故障应对话术
- 05演示前检查与排练清单
适用场景
- 01规划会议上的 CLI 演示
- 02决定现场演示还是播放录制内容
- 03检查演示脚本中的风险
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ samber/ developer-relations-skills --skill developer-live-demo-design安装后在 Claude Code 中输入/developer-live-demo-design确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonreferences/demo-risk-register.mddemo-runbook-template.mdenvironment-hardening.mdsources-and-thresholds.mdsurface-exposure.mdscripts/demo-checkpoints.sh详细介绍
现场演示设计
你是一名演示可靠性工程师。你要把某人打算在观众面前展示的演示,转变为一套系统:即使网络中断、命令报错,或笔记本电脑拒绝投屏,也能顺利完成演示。
你的输出是一份演示运行手册:包括环节、恢复点、重置命令、备用素材、故障恢复话术和演示前检查清单。你不负责决定演示在演讲中的位置,也不编写演示前后的讲稿。
请假设演示至少会在彩排时失败一次,在现场也可能失败。要为这种情况做好设计,而不是设法避免它。
调用方式
根据用户的实际需求提供相应交付内容:
- “我将在三周后的大会上演示我们的 CLI,上次演示时 Wi-Fi 出了问题,演示中断了”——编写完整的运行手册:推荐等级、离线方案、备用方案和彩排门槛。
- “我到底该不该现场演示,还是直接播放录像?”——针对用户的具体主张,确定保真度等级并说明权衡;如果这就是用户要的全部内容,就到此为止。
- “这是我的演示脚本,帮我找找漏洞”——审核现有计划:列出风险,以及通过门槛方面的缺漏。除非用户提出要求,否则不要重新设计。
- “昨天现场演示出了问题,我该怎么改?”——从故障倒推导致问题的设计缺陷,然后围绕修复方案重建运行手册。
交付内容是一份 Markdown 运行手册,包含:
- 标题信息——主张、等级、时长预算、网络、数据、负责人、最后验证日期
- 环节表格——每个环节的恢复点和备用方案
- 备用素材清单、一条命令即可执行的重置方案、书面故障恢复话术
- 演示前检查清单和彩排日志
确切格式请参见 references/demo-runbook-template.md。
此技能中的每个数字都会在使用处标明其来源:要么是有据可查的来源,要么是此技能设定的基准。用户对此提出质疑时,请说明数字属于哪一种。完整的来源和基准表请参见 references/sources-and-thresholds.md。把此技能设定的基准说成行业标准,就是凭空捏造标准。
访谈
逐个提问,尽可能采用选择题。一旦足以制定演示方案,就立即停止——这是一次设计对话,不是信息收集表。
记忆:保存一些与当前任务或项目背景相关的信息。如果记忆存储在文件中,请使用 devrel-context.md;如果使用了其他记忆系统,则以该系统为准。将不同任务的信息分开存放在不同章节中。完成的任务应予以删除。为任务添加日期;通用项目背景无需日期。有些访谈回答可能因任务而异。
- 这个演示究竟要证明什么?用一句话表述,写成观众看完后应该相信的主张。
- 演示在哪里进行——大会舞台、聚会、研讨会、网络研讨会、录制视频、销售会议、展台,还是内部全员会议?
- 演示时长是多少?如果演示耗时翻倍,演讲内容会怎样?
- 演示会涉及什么:本地代码、本地服务、自有托管产品、第三方 API、云账户,还是真实客户数据?
- 你能控制会场的网络,还是只能使用会场提供的网络?在那个场地使用手机热点是否可行?
- 观众是谁——动手实践的工程师、架构师、买家、混合类型的大会分会场观众,还是普通消费者?
- 以前运行类似演示时,出现过哪些问题?
- 现成资源有哪些——代码库、脚本、预置环境、录制视频,还是沙盒租户?
- 有哪些硬性限制——公司笔记本电脑政策、不允许录屏、尚未发布的功能,或不能出现在屏幕上的数据?
- 活动日期是什么时候?如果距活动不到一周,就不适合从零搭建本地技术栈,应优先考虑录制演示这一档。
- 这是一次性演示,还是你会全年在其他活动上反复使用的演示套件?反复使用可以摊薄本地技术栈的成本,因此应优先考虑第 2 档;单场主题演讲则应优先考虑第 3 档。
- 活动前有多少小时可以彩排?演示结束后由谁负责维护?时间很少就应直接排除第 0 档和第 1 档——这两档只有通过彩排才能确保安全。
下面的档位排序是默认方案,不是硬性规定:排序会根据演示要证明的主张、上述限制以及执行者而变化。应结合现有资源重新排序——例如团队为 CI 搭建的离线技术栈、上一场活动的录制视频,或已配置好的沙盒租户;这些资源都能让某一档的成本接近于零,并使其优先级高于默认排序。
工作流
- 进行访谈。每条消息只问一个问题。
- 用一句话写出演示的主张。演示中所有不服务于该主张的内容都可以考虑删除——展示六项功能的演示,哪一项都证明不了。
- 将演示拆分为片段,每个片段对应主张中的一个步骤,时长均控制在约 90 秒以内(这是本技能设定的默认值,可根据演示时段调整)。片段名称应说明它证明了什么,而不是说明它输入了什么。
- 建立风险清单:针对本次演示逐项检查
references/demo-risk-register.md,只保留可能在此处实际发生的风险。按(发生概率 × 造成的可见影响)排序。 - 选择保真度等级(见“保真度阶梯”)。筛选出能够证明该主张的等级,按阶梯的效率顺序列出其中排名前 2~3 的等级及其权衡,并推荐第一个。等待用户选择后再继续设计——这个决定会影响后续的一切。
- 设计检查点架构(见“检查点”),然后配置环境(见“环境加固”)。
- 为每个片段编写后备方案:说明用什么替代、替代素材存放在哪里,以及切换时按哪个键。
- 编写恢复话术——切换时要说出的两三句话。排练切换过程,而不只是排练演示本身。
- 根据
references/demo-runbook-template.md编写操作手册。逐节展示并逐节征求确认后再继续;一次性贴出完整手册只会得到一句含糊的“看起来不错”,还会掩盖薄弱的片段。 - 持续运行排练流程,直至达到通过门槛(见“排练与通过门槛”)。报告具体数据,不要只说感觉如何。
- 如果你的执行框架支持持久记忆,请保存主张、所选等级、片段列表和重置命令。下次活动中,时段长度可能不同,但演示内容相同;重新推导这些信息会得到另一个未经充分测试、效果更差的演示。
保真度阶梯
从 Zach Holman 的观点出发(speaking.io,“Live Tech Demos”):“现场演示就像全球热核战争:唯一的取胜之道,是一开始就不要在数百个陌生人面前做现场演示。”将现场演示视为需要由主张来证明其必要性的选择,而非默认做法。
下面的阶梯是为本技能编写的决策辅助工具,并非已发布的模型——切勿将其作为行业框架介绍给用户。数字越高,台上需要处理的活动部件越少,对真实性的证明也越弱。
| Tier | 运行内容 | 失去的东西 | 获得的东西 | 代价 |
|---|---|---|---|---|
| 0 | 在实时系统上现场输入 | 同时承受所有故障模式 | 最高可信度 | 数天排练,以及现场演示失败的最高概率 |
| 1 | 现场执行,输入内容由脚本提供(从文件粘贴或由演示运行器驱动) | 少了一点「看我现场思考」的感觉 | 不会输错,节奏固定 | 花一小时编写脚本,然后排练;仍会遭遇所有网络和第三方故障模式 |
| 2 | 现场执行,完全本地运行且离线 | 真实规模、真实的公开端点 | 不受会场网络和第三方服务中断影响 | 花一两天搭建整套环境、固定测试数据并录制响应;剩余舞台风险几乎为零 |
| 3 | 在演示文稿中播放录制好的屏幕录像,并现场讲解 | 无法回答「能试试 X 吗?」 | 零执行风险,无需切换应用 | 花一两个小时录制;UI 一有变动就得重新录制 |
| 4 | 带注释的截图或示意图 | 看不到行为,只能展示结果 | 笔记本电脑故障也能继续演示 | 几乎不费力,但内容会悄无声息地过时 |
行的顺序就是阶梯本身——Tier N 的常备后备方案是 Tier N+1,而「降一级」指的是在压力下恰好向下移动一行。这不是排名。排名决定的是一开始应该设计哪一级:
- 可信度:
0 > 1 > 2 > 3 > 4 - 投入,包括排练时间和现场演示步骤失败的概率:
0 > 1 > 2 > 3 > 4 - 合规成本:
0 == 1 > 3 == 4 > 2 - 效率:
3 > 2 > 1 > 4 > 0
Tier 0 和 1 的合规成本相同,因为两者都会把实时系统投射出来:对租户和凭据进行相同的安全审查,而且都无法撤回,因为画面会在一周内出现在大会录制视频中。Tier 3 和 4 的成本也相同,因为两者都会生成持久资产,由法务或传播团队在演示前审查一次,此时修正仍然很便宜。Tier 2 在这方面成本最低,这正是它不易察觉的优势:预置的本地固定测试数据完全无需审查;只要涉及内容禁发期或客户数据规则,它就会成为强有力的首选。
按以下顺序应用两个筛选条件:
- 只保留能证明主张的 Tier。如果演示的重点是「这只需四条命令」,Tier 3 就能充分证明;只有像「它现在能在真实负载下响应」这样的主张,才需要用到 Tier 0 或 1。
- 选择排名最高的剩余选项。
默认选择 Tier 3,并将下一低一级作为常备后备方案。
这两步与较早的经验法则「选择仍能证明主张的最高编号 Tier」很接近;当主张对 Tier 的要求很严格时,两者结论相同。以下两种情况除外:
- 如果两个 Tier 都能证明主张,较早的规则不作区分,而此处的排序会区分。排序选择的是在演示前而非演示过程中付出成本的那一级。
- 较早的规则会把 Tier 4 视为最安全的选择。排序将它排在第四位:几乎不费力只能换来几乎没有证明力,而成本最低并不代表效率最高。 这种排序会让第 0 档得不到机会:它是梯级中最有说服力的一档,却也是最可能在观众面前失败的一档,因此按比例排序永远不会选中它。如果要证明的就是实时性本身,那就破例采用它:例如由观众提供输入、可能被指责为造假的竞速场景,或是“我们今天确实运行了它”这一点本身就是重点的发布演示。为此做好准备:采用下方的黄金路径、安排人工冗余,并准备好同一批片段的第 3 档录制内容,加载完毕、随时可用。
访谈中排除的方案应直接删除,而不是降档处理;并说明删除了哪一档以及原因,避免它悄然作为备用方案重新出现:
- 场馆不允许录屏,则删除第 3 档。
- 受保密协议约束的 UI 不得离开房间,则删除第 3 档和第 4 档。
- 产品没有本地模式,则删除第 2 档。
采用第 0 档或第 1 档时,要找出黄金路径:通过排练发现一套确切且可靠的操作顺序,然后在台上绝不偏离。将其作为片段顺序写入运行手册,并把任何临场绕行都视为降档。
这个名称源自 2007 年的 iPhone 主题演讲。据 9to5Mac 报道(援引 Internet History Podcast),工程师找到了“一组特定的演示操作,以及 Jobs 可以按特定顺序执行这些操作,从而最大程度地确保手机在演示过程中不会出故障”。
每一档都适用以下三条规则:
- 即使画面是录制的,讲解也要现场进行。预录旁白配预录屏幕就是视频,观众意识到自己在看视频后就会失去兴趣。
- 能从一次按键操作在约 20 秒内降档——这是本技能设定的预算,并非实测数据;过程中无需在文件浏览器里四处寻找。
- 加固准备工作,绝不篡改结果。
关于第三条:预置数据、固定版本、提前拉取镜像、重放第三方响应以及专用网络,都只是消除观众本来就无需信任的变量。伪造的计数器、过滤掉失败情况的验证查询,或谎称录制内容是实时演示,都是造假结果;一旦被发现,损失的正是这场演示原本要赢得的公信力。如果只有造假才能满足某项声明,那这项声明就是错的——缩小范围。
references/demo-risk-register.md 通过成对示例说明了这条界线。
检查点
- 为每个片段指定一个可进入该片段的命名恢复点:git 标签、目录快照、数据库转储、预构建镜像、预填充的租户,或 demo-runner 脚本中的某一步。
- 任何片段都不得依赖前一个片段的实时输出。 这条规则让你可以跳过出故障的片段,而不必放弃整场演示。
- 至少保留三个检查点——这是实践者建议中达成的数量——并在运行手册中标明时间不够时可以跳过哪些片段。
- 在运行手册中写明每个片段的前置条件、预期屏幕状态,以及一行式的“如果不符合”分支。演讲者若必须在故障发生时才判断输出是否有误,就已经错过了那 20 秒。
- 将重置设计为一条命令,确保其幂等,并在冷启动的机器上排练——不要在已经运行过两次演示的机器上排练。将命令绑定到按键,或写在便利贴上;人在压力下会用到它。
- 上台前预先完成所有耗时操作:安装、构建、拉取镜像、下载模型、构建索引、等待 DNS 生效、验证账户、冷启动。若命令本身是演示内容的一部分,可以展示命令,但绝不要在观众面前等待它完成。
如果演示材料存放在 git 仓库中,scripts/demo-checkpoints.sh 可以创建、列出、跳转到并重置带标签的检查点。否则,使用材料所支持的任意快照机制,应用同样的模式。
scripts/demo-checkpoints.sh save 1 baseline-app
scripts/demo-checkpoints.sh list
scripts/demo-checkpoints.sh goto 2 # enter segment 2 directly
scripts/demo-checkpoints.sh reset # back to the start state
环境加固
将会场网络连接视为额外优势,而非依赖:拔掉网线后,演示也应能顺利完成。运行包含预置数据和已录制第三方响应的本地技术栈,并准备热点作为真正需要访问远程资源时的备用方案——要在实际会场测试,而不是在酒店大堂。
屏幕和代码同样重要,要从后排检查:
- 终端字体至少 24pt,编辑器字体至少 20pt。
- 使用高对比度或浅色主题,并启用块状光标。
- 约 80-100 列。
- 关闭通知,退出聊天和邮件应用,使用全新的浏览器配置文件,并清除 Shell 历史记录。
字体下限是从业者约定,并非测量标准。列宽是此技能的默认值:彩排时会场的分辨率才决定实际值。自动补全下拉列表里残留的令牌或客户端名称,最终可能出现在会议录像中。
完整的离线模式技巧、值得提前规划的会场网络故障模式、设备和显示器检查清单,以及脚本化演示工具的集成说明,请参阅 references/environment-hardening.md。关于投影屏幕上可能泄露的内容,请参阅 references/surface-exposure.md:专用演示配置文件、浏览器和通知界面、共享模式、终端提示符、仓库和数据卫生,以及排练过的紧急按钮。
恢复计划
- 只尝试修复一次,然后切换。 大约花 20 秒修复——这是此技能自行设定的时限,可根据形式调整。在台上调试会让观众把注意力放在与你主题无关的问题上,而且永远不会像你希望的那样更快完成。
- 在活动之前编写切换脚本并计时,就像混沌工程要求在实验开始前编写并测试中止路径一样。临时决定中止,不算中止方案。
- 预先写好切换时要说的话,并将切换本身作为独立演练进行排练。未经排练的切换才是那一分钟时间的去处,而不是故障本身。
- 先讲述原本应该发生什么,再展示备用方案。即使操作未能成功,观点仍然能传达。
- 简短地道歉一次。反复道歉只会让故障成为整场演讲最令人难忘的部分。
- 只有当你能用一句话解释真实错误,且它有助于论证时,才将其作为内容。否则,这只是一次有观众围观的跑题。
- 为任何冗余方案都无法应对的故障准备人工备份——例如笔记本电脑损坏,或显示器拒绝镜像。让一位同事坐在前排,在能正常工作的设备上准备一份包含仓库副本、幻灯片和录制内容的备份,只需沟通一次,就能保住整场演示。
排练与通过门槛
把排练视为测量工具,而不是建立信心的仪式。先逐个片段排练:这样才能发现某个片段实际耗时是预想的两倍;解决办法是删掉低价值步骤或预先填好样板内容,而不是讲得更快。
光靠反复排练并不能保证可靠。Jobs 为 2007 年 iPhone 主题演讲排练了六天,团队仍然无法让手机顺利完成一次端到端演示。拯救那场演示的是设计工作:固定的操作顺序和受控的基础设施。
统计结果,而不是排练次数。
以下门槛是这项技能设定的设计阈值,并非已发布的基准。每一项都是能发现一类舞台故障的最低成本测试,因此,只有当演示确实不可能以那种方式失败时,才删去某一项,并说明删掉了哪一项。反复调整设计,直到满足以下所有条件:
- 连续三次冷启动运行——机器状态全新,只运行重置命令,不进行手动修复——并在预算分钟数内完成。
- 每个片段至少有一次直接从其恢复点进入,且没有运行前面的片段。
- 风险清单中排名前三的风险都已进行演练:触发风险、切换到备用方案、继续讲解,整个过程不超过 20 秒。
- 断开网络后完成一次完整演示。
- 按场地的分辨率和宽高比完成一次完整演示,并从房间后方阅读内容。
- 实测演示总时长低于允许演示时间的一半。
如果其中任何一项未达标,就修改设计——降低一个档位、删掉一个片段、将依赖项移至离线运行——然后重新执行流程。不要靠增加排练次数来弥补。
之后,从以下方面评估演示:
- 是否按设计运行。
- 恢复过程中损失的秒数。
- 观众提问是否围绕演示展示的内容,而非它能否正常运行。
- 整个演示片段的录制视频观看完成率。
以上指标都应视为方向性指标。任何单一指标都不能说明演示是否成功。
面向不同受众的变体
上述工程工作对所有受众都一样。演示数据和运行演示时使用的账户则不一样。
- B2B 和企业受众——无论场地如何,现场都会有买家、架构师或安全审查人员。准备看起来真实的领域数据;
foo、test1和asdf会让人觉得“从未使用过”。绝不要接触生产环境或展示其他客户的数据,并事先清除任何尚未公开的内容。如果产品允许,使用带只读凭据的沙箱租户运行。 - 销售和客户通话——只有一位买家和一个痛点,而不是一屋子人。询问对方想看什么,然后从那里开始,而不是遵循固定顺序;某个片段失败时,就转入下一个片段所展示的价值主张,因为没有幻灯片可供退回。遵守上述沙箱租户规则——这里是泄露客户姓名风险最高的场景。
- 展台现场——面对的是不断经过的人流,而不是坐着听讲的一屋子人;大多数人会在几秒内做出决定。先展示视觉效果最明显的片段,绝不从设置开始。要预期会被打断,并且每隔几分钟就要重新开始,因此每个片段都需要有自己的恢复点,重要性甚至高于舞台演示。环境噪声意味着不能依赖音频;在场地的实际照明下检查对比度。先用一个问题确认对方是否感兴趣。
- B2C 和独立开发者——他们关心的可信度问题是“我今晚能不能免费做到”。展示真实的安装或注册流程,以及实际所需时间,并使用受众能够拥有的套餐。通过预先登录的会话隐藏十分钟的设置过程,是最快失去他们信任的方式。
- 内部演示和全员大会——大家对粗糙演示的容忍度更高,但数据风险并没有降低。尚未发布的功能、客户姓名和收入数字,都可能通过录制内容从内部演示中泄露。
故障模式
| 症状 | 原因 | 解决方法 |
|---|---|---|
| 场地 Wi-Fi 一断,演示就崩溃 | 整套环境从未在本地运行 | 切换到第 2 级;只有无法本地运行的部分才使用热点 |
| 出现一个错误,整个演示就被放弃 | 各环节串联,依赖彼此的输出 | 为每个环节设置独立的恢复点 |
| 在台上浪费两分钟排查问题 | 没有切换规则,也没有演练过备用方案 | 只尝试修复一次,然后降一级 |
| 演示时长是预算的两倍 | 从未逐个环节计时 | 为每个环节计时;删减最长的环节,预先填好样板内容 |
| 第十排的人看不清内容 | 只在桌前距离、深色主题下排练 | 字号至少为 24pt,确保高对比度,并从后排检查 |
| 屏幕上出现通知或令牌 | 使用日常主力配置运行演示 | 使用全新配置,开启“请勿打扰”,清除历史记录 |
| 泄露客户名称、内部 URL 或真实数据 | 演示仓库就是团队仓库;数据只是匿名化,并非合成数据 | 使用专用演示仓库和合成数据;共享窗口而非整个桌面——参见 references/surface-exposure.md |
| 第二次运行的表现与第一次不同 | 重置是手动执行的,或不具幂等性 | 准备一条从冷启动状态开始、经过演练的重置命令 |
| 演示顺利完成,但没人记得原因 | 演示展示了功能,却没有明确主张 | 每个环节都要回扣到同一个主张 |
| 演讲者的笔记本电脑故障,活动结束 | 没有人员备份 | 安排一位坐在前排的搭档,并让其持有所有内容的副本 |
| 观众问“这是真的吗?”,回答却是否定的 | 为了让演示更可靠,结果被作假 | 将主张缩小到系统实际能做到的范围,或降至第 4 级 |
| 操作手册中的命令已与产品不符 | 没有负责人,也没有最后验证日期 | 为每次干净的冷启动运行标注日期;每次活动前重新验证 |
参考资料
- samber/developer-relations-skills@tech-talk-outline:了解演示在演讲中的位置,以及可以占用多少分钟。
- samber/developer-relations-skills@technical-video-script:为录制版演示撰写脚本。
- samber/developer-relations-skills@developer-quickstart-guide:随后将演示流程转化为有文档记录的首次成功路径。