协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
devils-advocate【开发与工程】结构化压力测试一个论点(devil's advocate / 魔鬼代言人):把论点拆成显性断言与隐性假设(A1/A2 编号), 逐条在用户给定的证据材料里检索带出处的反方论证,标 High/Medium/Low 风险等级,补基础比率外部视角, 最后给出「可监测的证伪信号」清单;输出结构化 findings + 人读叙事双层结果。找不到反证时如实声明「未找到」, 绝不编造。复刻自 LinqAlpha(对冲基金 AI 产品)公开的 Devil's Advocate 架构,叠加 CIA 结构化分析技术与 RAND 假设规划。当用户要「压力测试 / 唱反调 / 找盲点 / 拆假设 / 挑战这个论点 / bear case / 红队这个方案 / 上投委会前过一遍 / pressure test my th…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
把「唱反调」从一种态度变成一道有出处、可审计、可持续监测的工序。
三个实证结论决定了本 skill 的形状:
投资论点的常规执行无需加载两个 references;需要解释设计依据、对某一步产生疑问,或压力测试工程机制时,读 方法论谱系与工程适用边界。工程机制先读其中「工程机制的反证边界」,再沿下文流程检验;被复刻产品的原始 prompt 与 schema 见 references/linqalpha_reference_implementation.md。
| 用户给了什么 | 走哪条路 |
|---|---|
| 论点 + 证据材料(文件/目录/URL 清单) | 完整六步流程(下文) |
| 只有论点,没有材料 | 先问用户要材料;用户说没有 → 请用户在两个选项里选:①先做检索把材料建起来再回来跑(若有检索类 skill 可先用)②只交付 Step 1 的假设拆解 + Step 5 的信号标(这两步不依赖材料;此时无 risk_flag 可筛,信号标覆盖全部负重假设),并明确说明反证检索未做 |
| 论点含混(一段散文、一个 IC memo) | 先按 Step 0 提炼出核心断言让用户确认,再继续 |
| 假设超过 8 条,或材料超大(总量超过约 20 万字 / 单文件读不完) | 主会话中用 fan-out 模式(见文末),全部负重假设进入检索;在子代理里运行本 skill 时只能单上下文,按负重排序取前 8 条 |
三样东西,缺一样就先补齐:
把论点分解为两类,统一编号 A1、A2、A3……:
每条假设标两个属性:
枚举不设上限,照实列全;「8 条」约束的是进入反证检索的条数。一条假设里若藏着结论可能相反的两个子命题(例如「壁垒存在」与「壁垒的收益归属某一家」——前者可能幸存、后者可能被反转),拆成两条分别检索,再一起参加负重排序。单上下文模式下超过 8 条进入检索时按负重取前 8,其余明确列为「未检索」——宁可深挖 6 条也不要浅扫 15 条;主会话 fan-out 模式不受此限,全部负重假设进入检索。
对每条假设做两问(第二问是最容易漏的):
检索时按信源可信度排序采信(改编自 LinqAlpha 的 SEC > 专家访谈 > 券商报告):
官方申报/公告/一手数据 → 专家访谈与电话会转录 → 券商/分析师报告 → 权威媒体报道 → 聚合转述/社媒(只能作线索,不能作反证锚点)
硬规则:
默认写入当前工作目录的 da_findings.json(用户指定了位置则用用户的;供程序处理与复核)。顶层是一个对象而不是裸数组——覆盖面声明要有处安放(原厂 prompt 用裸数组,本 skill 为此改为对象):
{
"run_metadata": { "thesis_normalized": "<规范化论点(无用户确认时标「未经确认」)>",
"materials": ["<材料清单与各自偏性>"],
"coverage": "<枚举 N 条 / 检索 M 条 / 未检索 K 条 / 降级 J 条>" },
"findings": [ "<每条假设一个条目,结构见下>" ],
"deferred_assumptions": [ "<降级与未检索的假设及理由>" ]
}
findings 里每条假设一个条目:
{
"assumption_id": "A1",
"assumption": "<该假设的一句话精炼复述>",
"type": "事实性 | 预测性 | 机制性",
"counter_argument": "<证据支撑的反方论证,分析师文风,2-3 句>",
"citations": [ { "doc": "<文件名或URL>", "loc": "<页/行/节>", "excerpt": "<逐字摘录>" } ],
"rebuttal": "<材料中削弱本条反证的反-反证(如「打断者自己也延期了」),有则填;无则 null>",
"missing_evidence": "<若假设为真本应看到却没看到的证据;无则 null>",
"base_rate": "<外部视角:这类断言的历史成立率,有数据才写,无则 null>",
"risk_flag": "High | Medium | Low",
"signpost": "<可观测的证伪信号:什么事件/阈值出现说明这条假设正在失效,到哪里看>"
}
risk_flag 衡量的是这条反证对论点的杀伤力,不是发生概率。三档锚定:High = 该反证若成立,论点的核心结论不再成立;Medium = 结论仍立,但幅度或时间表显著折损;Low = 边际修正。防膨胀约束:若超过半数条目被判 High,先把全部条目按杀伤力互相排序再重新定档——全是 High 等于没有分级(首次实测第一版就判出了 6/8 个 High)。citations 至少一条(例外见 Step 2 的置空规则);强反证常由多条独立事实叠加而成,全部列入而不是只挑一条。base_rate 是 Mauboussin 外部视角(LinqAlpha 没有的一层):把假设放进参考类问「别人处在同样处境时结果如何」——只在给定材料内能构建参考类时填写(例如用材料自身记录的历史预测修正幅度),撑不起来就诚实置空。禁止编一个基础比率,也不为此另起检索:另查会破坏「论点 vs 给定材料」的检验边界,确需外部基础比率时明示使用者补充材料。
结构化条目不直接给人看(原厂的实际产品也是渲染成叙事层交付的)。人读层默认写入工作目录的 da_report.md 并同时在对话中交付。渲染规则:
报告的最后一节:每条 High/Medium 假设一行——「盯什么、到哪看、什么读数算警报」(无材料模式下无 risk_flag 可筛,覆盖全部负重假设)。假设的脆弱性随时间变化,这一步把一次性批判延伸成可持续监测,是本 skill 长期价值所在——建议使用者把它并入自己的监测例程。
材料量大或假设多时,主会话按此并行:
da_findings_A<编号>.json),要求先落盘再返回摘要。da_findings.json:去重(同一证据被多条假设引用时,归属给 risk_flag 更高的那条,其余条目改为指向同一引用编号)、按三档锚定复核 risk_flag,再做 Step 4-5 的渲染与信号标。| 设计元素 | 来源 |
|---|---|
| 四步流程、显性/隐性假设分类、citation 强制、风险分级、双层输出 | LinqAlpha Devil's Advocate(AWS 官方技术博客 2026-02 公开的生产 prompt 与 schema) |
| 「未说明但必须为真」的假设定义、逐条追问「为什么必须成立」 | CIA Key Assumptions Check(Tradecraft Primer, 2009) |
| 证伪优先、「该看到而没看到的证据」 | Analysis of Competing Hypotheses(Heuer / CIA Primer) |
| 负重假设、信号标(signpost) | RAND Assumption-Based Planning(1993/2002) |
| 外部视角 / 基础比率层 | Mauboussin & Callahan, The Base Rate Book(2016) |
| 证据锚定的必要性(角色扮演式异议无效) | Nemeth et al.(2001) |
| 显式反方人设优于中立多 agent | DEBATE(ACL Findings 2024);Du et al. 多智能体辩论(2023) |