그릴링 (Grilling)
通过提问将演讲者脑海中的演讲内容提取出来,形成演讲文件夹中的 brief.md(决策记录)和 outline.md(章节表格)。构建过程由新的子代理仅读取这两个文件和 sources/ 目录来完成。仅存在于对话中而未记录在文件中的决策,不会传递给构建流程。
演讲者最初提供的内容:$ARGUMENTS
会话在工具包根目录打开。./talk 命令在工具包根目录调用。下文中的 brief.md、talk.json 等名称均指演讲文件夹(talks/<文件夹>/)内的文件。
0. 确定演讲文件夹
- 使用
./talk profile查看演讲者信息。若无信息,则第一个问题询问英文名称和所属机构。如果演讲者要制作韩语幻灯片,还需询问韩文名称和所属机构。答案通过./talk profile --name "..." --affiliation "..."(如有需要,附加--name-ko、--affiliation-ko)保存。 - 查看
./talk brand。若显示“未设置”,则在创建新演讲前,用一个问题确定颜色和标志。具体方法见工具包根目录AGENTS.md中的“学校/实验室颜色与标志”。如果演讲者要求直接创建而不提问,则默认使用基本预设。 - 如果演讲者提到了要接续制作的演讲,则通过
./talk list找到对应文件夹。 - 如果是新演讲,则需要类型、日期、活动信息。仅针对演讲者未提及的部分,通过一个问题进行询问。然后使用
./talk new <类型> <YYYY-MM-DD> [活动] [--title "..."] [--lang ko]创建。类型包括lab、conf、seminar、class、jc。对于实验室会议,活动留空(封面显示为“Lab meeting, 日期”,当天主题写入--topic或talk.json的topic字段)。输出中显示的文件夹即为该演讲的文件夹。 - 如果出现缺少 node 工具的错误,则运行
./talk setup后重试。
1. 提问前阅读
- 读取演讲文件夹中的
talk.json、README.md、brief.md、outline.md。如果brief.md中包含 Grilling 记录,则从上次中断处继续。 - 阅读演讲者提供的所有内容以及
sources/目录下的所有文件。PDF 文件需分页读取。对于演讲者提到的外部文件或网页文档,将其复制到sources/目录下(网页需保存正文文本),并在brief.md的输入材料表中记录路径和确认状态(“仅摘要”、“正文确认”、“仅图表”)。使用cp复制外部文件时,会出现一次权限询问,演讲者应允许。文件使用 Write 和 Edit 工具写入,确认用的脚本放置在演讲文件夹的audit/tmp/中(如果写入工具包外部如/tmp会被拒绝)。 - 对于材料中已有答案的问题,不再提问。从材料中找到的答案,在
brief.md中标注“(来自材料)”后仅需确认。 - 使用
talk.json填充brief.md的任务部分。不同演讲类型的基本模板位于.claude/skills/talk-grill/references/talk-types.md(相对于工具包根目录)。 - 工具包文件夹外部(如主目录)仅在演讲者明确指定路径时才读取。读取外部文件时会出现权限询问,导致首次提问延迟。完成上述四个步骤后,立即开始第一个问题。
2. 提问方式
- 每次只问一个问题。提供 2-4 个选项。推荐选项置于首位,并附上一行理由。演讲者也可以直接输入答案。在 Claude Code 中使用 AskUserQuestion 工具提问。对于不支持该工具的代理,则采用相同格式(一行问题、编号选项、首位为推荐)通过聊天提问。
- 提问要简洁。不要冗长地重复之前的回答。
- 收到回答后,立即更新
brief.md。在 Grilling 记录中添加一行Qn 问题 → 回答,并更新该回答所影响的行(任务、一句话总结、框架)。不要同时保留旧决策和新决策。 - 如果演讲者回答“不知道”或“以后再说”,则在开放项中记录,不再重复提问该问题。
- 如果演讲者询问意见,先确认原文,然后推荐一个选项并附上一行理由。在
brief.md中标注为“推荐”。决策由演讲者做出。 - 如果演讲者的前提与原文不符,先指出哪些部分正确,再指出需要修正之处。
- 如果演讲者改变决策,以新信息为准。不要追问原因。
- 如果演讲者要求不提问直接构建,则根据材料和演讲类型的基本模板填充 brief 和 outline,仅需审批(第 5 节)。未确定的内容记录在开放项中。
3. 提问顺序
从对构建影响最大的要素开始提问。
- 场合:活动、演讲时长、问答时长、听众。此处确定章节数量预算(参见 talk-types.md)。如果幻灯片语言与
talk.json不同,则更新lang。 - 一句话总结:听众应该带走的那一句话。
- 框架:2-4 个部分及其顺序。以 talk-types.md 中的基本框架为起点提出建议。
- 每个部分的论点、依据(图表、数据、论文页码)、呈现方式(论文原图、重新绘制的概念图、每次点击逐步展示的流程图)。一个部分可以多次提问。
- 开头与结尾:第一张幻灯片要提出的问题,最后一张幻灯片(结论、讨论问题、如果是实验室会议则包括下一步计划和给导师的请求)。
- 整理开放项。
提问 6-10 个问题后结束。如果演讲者提出停止,则立即结束。
4. 原文确认
- 幻灯片中使用的数字和引用必须从原文(正文、表格、图表标题)中确认,并在
brief.md的“原文确认”中记录值、文件、页码。不得仅根据摘要或笔记的概括就写下数字。 - 数字必须附上条件(该值来自何种数据、设置、子集)。
- 如果原文未说明因果关系,不要为两个数字的差异赋予原因。
- 如果计划直接使用论文中的图表,需检查其许可证。如果禁止修改(如 CC BY-ND),则决定重新绘制。
- 对于未能获取的原文(如付费论文),在
brief.md的开放项中记录为“演讲者需获取的材料”,并将在 outline 中依赖该原文的章节标记为“待确认”。
5. 目录 (outline.md)
- 表的列:
#、sceneId、模板、标题(一行,10 词以内)、论点一句话、画面与点击顺序、依据(文件·页码)。 sceneId使用英文小写字母和数字(例如:motivation、setup、result2)。封面为title,目录为outline,章节开始页为sec01起,结束页为thanks。- 幻灯片数量控制在预算内。每张幻灯片一个想法。文字要少,图表要能说明问题。细节放入演讲者备注。
- “画面与点击顺序”列需写明图表展示什么内容,每次点击会显示什么。构建代理仅根据该列的内容进行制作。
- 确定的封面信息写入
talk.json:title(非实验室会议的演讲标题)、topic(实验室会议主题,封面强调色副标题)、event、authors(合著者:{"name": ..., "name_ko": ...})、length_min、lang。 - outline 顶部需写明演讲信息行(活动、日期、时长、幻灯片数量)。批准行留空。
6. 批准与移交
- 展示 outline.md 表格并询问。选项:“按此构建”(推荐)、“有需要修改的地方”。
- 如有需要修改的地方,修改后再次询问。
- 批准后,在 outline.md 的批准行写入当天日期,并在
README.md的当前状态中写入 Grilling 条目(已确定事项、开放项)。 - 移交构建。在 Claude Code 中,通过 Skill 工具调用
talk-build,并将演讲文件夹路径作为第一个参数传递(例如talks/2026-11-16-lab-meeting)。talk-build 在新的子代理中运行。对于不支持 Skill 工具的代理,则读取.claude/skills/talk-build/SKILL.md并直接按其指示执行。 - 构建过程根据幻灯片数量需要十几分钟到几十分钟不等。完成后,向演讲者简要报告结果。然后查看联系表(
talks/<文件夹>/audit/contact-sheet.png),并要求演讲者一次性指出需要修改的地方。