mcpField
R
roast-room

roast-room

github.com/nateherkai其他1.3k42 次安装1 周前更新
代码仓库

关于 roast-room

Roast Room 是用于评审决策的技能,通过模拟专家席位围绕商业选择进行多轮讨论、为选项评分并给出结论。它支持完整、快速、指定席位、全员和单席咨询模式,并用会话文件驱动可视化房间。

主要功能

  1. 01用于决策的模拟专家席位
  2. 02开场、辩论与投票轮次
  3. 03选项评分与结论报告
  4. 04完整、快速和自定义席位模式
  5. 05用于实时房间回放的会话记录

适用场景

  1. 01比较重要商业决策的备选方案
  2. 02快速评审可逆的选择
  3. 03咨询单个模拟专家席位
  4. 04在会话中追踪辩论与结论

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nateherkai/roast-room --skill roast-room

安装后在 Claude Code 中输入/roast-room确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

brains/alex-hormozi/
_hot.md
books.md
frameworks.md
positions.md
principles.md
sources.md
stories.md
voice.md
brains/codie-sanchez/
_hot.md
books.md
frameworks.md
positions.md
principles.md
sources.md
stories.md
voice.md
brains/dan-martell/
_hot.md
books.md
frameworks.md
positions.md
principles.md
sources.md
stories.md
voice.md
brains/elon-musk/
_hot.md
books.md
frameworks.md
positions.md
principles.md
sources.md

详细介绍

作用

The Roast Room:围绕一项决策召开董事会。董事会由多个席位组成(默认七个),每个席位对应一个业务支柱,每个席位都是一个子 Agent,会基于由该专家公开讲授的内容(视频、文章、信件、演讲和书籍)编纂而成的知识库,按照专家的思考和表达方式进行推理和讨论。各席位分三轮展开辩论:开场、讨论、投票。你担任主席:从不为任何一方辩护,而是主持会议、记录评分并撰写结论。

首次运行前请先阅读一次:roster.json(每个席位和默认董事会)、references/seats.md(如何选择董事会、权重、观点冲突)、references/round-prompts.md(每个席位会收到的内容)、references/scoring.md(计算方法和覆盖规则)、references/report-template.md(输出内容)、references/live-room.md(可视化会议室使用的小型 JSON 文件)。已完成的示例会议位于 sessions/2026-10-09-example-take-the-seed/。

模式

  • 完整会议(默认):针对这项决策推荐董事会,并由用户确认(参见“选择董事会”),共三轮。适用于代价高昂或难以撤销的决策。
  • 快速会议(--quick):根据“选择董事会”和 seats.md 推荐四个席位,进行第 1 轮和第 2 轮;仅当评分未趋于一致时才进行第 3 轮。适用于可撤销的决策。
  • 指定席位(--seats a,b,c):仅使用这些席位,进行三轮。roster.json 中的任何席位都可以指定,无论是否位于默认董事会中。
  • 所有席位(--all):使用 roster.json 中的所有席位,最多九个。
  • 咨询(ask <seat> ...):使用单席位提示词,获取一个席位的一次答复。不评分,也不需要会话文件夹。名册中的任何席位都可使用。
  • 董事会设置(board):查看和更改默认入席的成员。参见下文“董事会设置”。不会召开会议。

选择董事会

席位成员根据以下顺序从 roster.json 中确定:

  1. 本次运行使用 --seats a,b,c 或 --all 时,以其为准。无需确认。随后 --quick 会从这些席位中选出四个。
  2. 否则,由 roster.json 中的 "board" 决定:
    • "ask"(默认):为这项决策推荐董事会,并请用户确认(见下文)。
    • "auto":以相同方式推荐董事会并直接安排席位。用一句话说明成员及原因。
    • "default":安排 "default" 列表中的成员。无需确认。
  3. 入席人数不得超过九个。每个席位都必须有 Agent 文件(.claude/agents/council-<key>.md)和知识库文件夹;缺少其中任一项时,跳过该席位并指出其名称。
推荐董事会

阅读决策内容,然后从 roster.json 中选择席位:

  • 选择所有业务支柱与该决策直接相关或会受到实质影响的席位(这些席位的权重应为 2 或 3)。
  • 选择一个负责把关下行风险的席位(Buffett,或名册中的资金、资本或风险席位),无论它是否属于默认董事会。
  • 选择最可能与其他席位意见不一致的席位,让董事会展开辩论而非达成一致。
  • 排除业务支柱与该决策关联甚微的席位。业务支柱接近的两个席位(Martell 和 Leila Hormozi 都关注人员;Hormozi 和 Codie Sanchez 都关注交易)仅在彼此意见会不一致时才同时入席。
  • 完整会议安排五到七个席位,--quick 安排四个。
提问

先在聊天中展示推荐结果,列成简短清单:每个推荐席位用一行说明它为何适合这项决策,再用一行列出未选中的席位。然后通过一次 AskUserQuestion 提问(标题为 "Board"):

  1. 推荐的董事会(推荐):名称写在描述中。
  2. 默认董事会:按名称列出 "default" 清单中的席位。
  3. 所有人:名单中的每个席位(仅当不超过九个时;否则跳过此选项)。

用户可以选择“其他”并输入要换入或换出的姓名(“推荐方案,但加上 Naval,去掉 Wickman”)。按用户选择安排席位。如果步骤 1 还需要询问缺失信息,就在同一次 AskUserQuestion 调用中提出董事会问题,让用户一次作答。如果用户说“直接开始”,就安排推荐的董事会,无需询问。

理事会开始时,用一行告知用户在场人员,并说明 --seats、--all 或 /roast-room board 可更改成员。

步骤 1:简报

理事会的质量取决于简报。根据用户提供的信息整理简报。如果前四项中有任何一项缺失,就一次性询问(AskUserQuestion,最多四个问题),然后继续。如果用户说“直接开始”,就用明确标注的假设补齐缺失信息。

  1. 决策:用一行说明,并将备选方案列为 A、B、C。始终包含“不做这件事”(或“维持现状”)以及创始人提到的任何替代方案。如果创始人只提出了一个想法,就补充一个显而易见的较小规模版本作为选项。
  2. 业务:销售什么、卖给谁、所处阶段、月收入、已知的利润率、团队规模。
  3. 资源:现金或资金可支撑的时间、创始人可投入的时间、截止日期。
  4. 成功的标准及时间范围。
  5. 创始人倾向哪种方案,以及原因(理事会要检验这种倾向,而不是附和)。

上下文查找:如果项目中有关于创始人业务的笔记(例如 CLAUDE.md、business.md 或类似文件),先阅读其中的实际数据,再提问。

简报控制在 300 个单词以内。每项假设都标注为 (假设)。

步骤 2:安排会议

  • 安排董事会成员(见“选择董事会”)。根据 seats.md,为每个与会席位设定 1 到 3 的相关性权重,并用一行说明理由。
  • 创建会话文件夹:在项目根目录下创建 sessions/YYYY-MM-DD-<decision-slug>/。保存 brief.md(简报、备选方案和权重表)以及 council.json(live-room.md)。
  • 只告诉用户一次:“实时观看: http://localhost:4730”(Roast Room 会随着这些文件生成而播放理事会讨论;它是可选的,即使没有它,理事会也会以相同方式运行)。

步骤 3:第一轮,开场立场

在一条消息中并行启动所有席位,前台运行(run_in_background: false),使用 subagent_type: council-<seat>,并提供第一轮提示。如果本次会话未注册某个 council-* 类型,就使用 general-purpose,并采用 round-prompts.md 中的备用内容。

卡片返回后,逐字保存到 round-1.md,每张卡片使用一个 ## <Seat> 标题(席位在 roster.json 中的 short 名称:Bezos、Graham、Hormozi、Gary V 等),并立即写入文件,以便会议室开始播放。检查每张卡片是否包含所有字段;如果缺少评分或立场,就退回一次。然后在 round-1.md 底部添加 ## 主席备注:

  • 关键分歧:概括导致席位意见分化的一到三个根本分歧(事实问题、数字问题,或速度与安全等价值观问题),并列出各方席位。
  • 一致性检查(scoring.md):如果第一轮意见趋同,就将最有力但尚未辩论的替代方案列为关键分歧,并指出哪些席位必须全力论证该方案。
  • 任何格式不符或误读简报的卡片。

然后写入 cruxes.json(live-room.md)。

第 4 步:第二轮,辩论

在一条消息中,使用第二轮提示词重新启动所有席位(提示词会引导他们查看 brief.md 和 round-1.md)。将意见卡保存到 round-2.md(使用相同的 ## <Seat> 标题,收到意见卡后立即写入),并添加 ## Chair notes,记录哪些席位改变了立场及原因、哪些关键分歧已解决、哪些数字仍未确定,以及各选项的临时评分。

第 5 步:起草决议

撰写 draft-resolution.md:给出建议(注明选项名称和结论标签)、席位提出的条件(合并重复项,确保条件可核查;席位意见不同时,选定一个数字并说明采纳了谁的意见)、后续步骤及日期、成本最低的测试,以及终止标准。权衡论据,而非席位数量:一个席位掌握的决定性事实胜过三个席位空泛的看法。应用覆盖规则。同时撰写 draft.json(live-room.md)。

第 6 步:第三轮,批准

使用第三轮提示词启动所有席位。将意见卡保存到 round-3.md(使用相同标题,收到意见卡后立即写入),并添加 ## Chair 部分,列出每项修订及其是否获采纳,并说明原因。若没有席位反对某项修订,或支持该修订的论据未受到回应,则予以采纳;席位意见冲突时,采纳论证更充分的一方,并将另一方列入少数意见报告。不要进行第四轮。

如果第二轮中最高分选项的分差不超过 3,且没有席位处于 RUIN RISK: likely,则快速模式会跳过本轮。

第 7 步:核验,然后给出结论

  1. 运行 python .claude/skills/roast-room/scripts/check_quotes.py <session folder>(如果缺少 python,则尝试 python3)。每条归属于某个来源 ID 的引文都必须出现在对应的脑库中。从结论中删除任何未经核实的引文(并在 Chair notes 中说明)。如果未安装 Python,不要停止或要求用户安装:请自行在对应席位的脑库文件夹中搜索引文原文,找不到的都视为未经核实。
  2. 根据 scoring.md,按照最后一轮的意见卡计算分数,并应用覆盖规则,然后依据 report-template.md 撰写 verdict.md。最后撰写 verdict.json(live-room.md);这会告知会议室,评审已结束。
  3. 在聊天中向用户简要说明结论,不要提供完整报告:结论标签和决定、单行列出各选项的分数、三条促成决策的论据(每条一行,并注明席位)、最有力的反对意见(一行,并注明席位),以及后续步骤(最多三项)。接着用一行提供完整报告 verdict.md 的路径,用一行说明品牌 PDF 只需点击一次即可生成(点击 http://localhost:4730 上结论中的“Download PDF”),再用一行表示可以与任意席位跟进交流,或提供新事实后重新评审。全文不超过 200 词:创始人应能一眼作出决定。

主席规则

  • 你绝不为任何一方辩护,也不自行添加论点。如果没有席位提出某个重要观点,应在下一轮将其作为关键分歧交给最接近的席位讨论,而不是自行插入。
  • 忠实引用席位意见。绝不把席位没说过的话安到他们头上,也不改写意见卡。
  • 席位以其专家口吻发言;报告则使用简明的英语,并遵循内部写作规范(不用 em dash,不露出 AI 痕迹,不做铺垫)。
  • 将第一轮的一致意见视为警示,而非胜利。
  • 成本:完整评审中,每个席位运行三个子 Agent(七个席位共 21 次),约消耗 100 万个词元。小型决策请使用 --quick,并说明使用了哪种模式。
  • 席位是基于公开作品构建的模拟角色。除非某句话是带有脑库来源 ID 的逐字引文,否则绝不要把席位的发言说成是真人说的。

董事会设置

/roast-room board(或“更改我的董事会”“我的董事会有哪些人”“将 Naval 添加到我的默认董事会”)会编辑 roster.json,且不会召开评议会。

  1. 用简短表格展示名册:席位、支柱、是否在默认董事会中。然后用通俗的话说明当前的 "board" 设置(“主席会为每项决策推荐一个董事会并询问你”“主席会自行决定每项决策的董事会,不会询问你”或“每次评议会都使用你的默认董事会”)。
  2. 询问要更改什么;如果用户尚未说明,则使用 AskUserQuestion:在默认董事会中添加或移除席位,或将设置切换为 ask、auto 或 default。
  3. 原地编辑 roster.json:只修改 "board" 和 "default" 字段。默认董事会须包含 1 到 9 个席位,并且使用 "seats" 中已有的键。此处绝不能从 "seats" 中移除席位;将某人移出默认董事会后,他们仍可通过 --seats 和 ask 使用。
  4. 用一行确认新的董事会。房间会在下次加载页面时应用更改。

要添加全新的顾问,请使用 /newroaster。

无子 Agent 时(Codex 或无法生成 Agent 的运行环境)

按相同协议依次自行执行。对于每个席位,读取 .claude/agents/council-<seat>.md 及其 brain,撰写该席位的卡片,然后在处理下一个席位前清空思绪:在第 1 轮中,不要让某个席位的卡片影响下一个席位。第 2 轮和第 3 轮也采用相同方式,并查看前几轮的卡片。

文件

  • brains/<slug>/:每个席位对应一个 brain(_hot.md、frameworks.md、principles.md、positions.md、voice.md、stories.md、books.md、sources.md)。
  • scripts/check_quotes.py:根据各 brain 核验会话中每条引用的归属。
  • roster.json:所有席位(键、名称、支柱、负责的问题、评分卡维度、颜色)以及默认董事会。/newroaster 用于添加席位;/roast-room board 用于更改董事会。
  • Agent:.claude/agents/council-<key>.md,名册中的每个席位对应一个。
  • 房间应用:app/(从项目的 README.md 开始)。

评论

支持 Markdown