Install
openclaw skills install bayesian-reasoningGuide users through Bayesian reasoning via multi-turn dialogue. Computes posterior probabilities P(H|E), Bayes factors, sensitivity analyses, and visualizes results with ASCII progress bars. Use when the user wants to: reason about probabilities, update beliefs with evidence, perform Bayesian analysis, or learn Bayesian thinking interactively.
openclaw skills install bayesian-reasoning通过多轮对话引导用户完成贝叶斯推理,将直觉转化为量化判断。
分工原则: LLM 负责对话引导、口语理解、结果解释;脚本负责数学计算。所有概率计算必须调用 scripts/bayes_calc.py,不要手算。
用户可能用口语表达概率,按下表转换为数值(取区间中点),转换后必须与用户确认:
| 口语表达 | 数值范围 |
|---|---|
| 几乎肯定 / 十拿九稳 / almost certain | 0.90 - 0.99 |
| 很可能 / highly probable | 0.75 - 0.90 |
| 可能 / 大概率 / likely | 0.55 - 0.75 |
| 五五开 / 差不多 / toss-up | 0.45 - 0.55 |
| 不太可能 / unlikely | 0.25 - 0.45 |
| 很不可能 / very unlikely | 0.10 - 0.25 |
| 几乎不可能 / almost impossible | 0.01 - 0.10 |
询问用户想评估什么假设、观察到了什么证据。提取关键信息后确认:
明白了。您想判断的是「[假设]」,观察到的证据是「[证据]」。对吗?
确认后存储假设文本,后续步骤中用 [假设] 和 [证据] 替换提示词。
在获取任何概率数字之前,主动分析 [假设] 和 [证据] 之间是否存在以下逻辑陷阱。如果检测到任何一个,暂停贝叶斯计算,先向用户解释问题。
| 陷阱 | 触发条件 | 解释模板 |
|---|---|---|
| 自我否定型证据 | 假设为真时,证据来源会消失、失效或无法验证 | 「如果 [假设] 为真,那么 [证据来源] 将 [死亡/消失/无法验证],这意味着该证据的"准确率"无法在假设为真的世界里得到验证。准确率实际上是幸存者偏差的产物。」 |
| 零先验悖论 | 假设与已知事实、逻辑定律或物理定律直接矛盾 | 「[假设] 在逻辑上/物理上不可能,先验应为严格0%。贝叶斯定理无法从0更新到非零——无论证据多强都无法证明逻辑上不可能的事。」 |
| 参考类误用 | 用聚合历史准确率套用到从未发生过的事件类型 | 「准确率X%是跨所有预测的历史平均值,直接套用到 [假设] 这类从未发生过的事件上是不准确的。应单独评估这类特殊事件的似然度。」 |
| 自证循环 | 证据的真实性依赖于假设本身为真 | 「[证据] 的可信度取决于 [假设] 是否为真,形成了循环论证。」 |
| 幸存者偏差 | 观察到证据本身就预设了假设为假(或为真) | 「我们之所以能讨论这条证据,恰恰是因为 [假设] [没有/已经] 发生——这使得证据本身带有系统性偏差。」 |
用户问题:「两个预言家准确率90%和70%,都预言明天世界末日,末日概率?」
检测结果:同时命中两个陷阱
修正建议:将似然度从"准确率"改为独立评估——「一个从未预测对过世界末日的预言家,这次突然预测末日,你认为他说对的概率是多少?」
重要:此步骤不需要用户输入概率数字,完全由 LLM 基于逻辑推理完成。
询问:在看到这条证据之前,您认为 [假设] 的可能性有多大?
用户回答后:
⚠️ 认知偏差提示 — 锚定效应: 确认前提示:「请注意:您的初始估计可能受到最近接触到的数字影响。这个概率是否反映了您看到证据前的真实判断?」
询问:假设 [假设] 是真的,出现 [证据] 的可能性有多大?
同样处理口语映射,确认后存储。
⚠️ 认知偏差提示 — 确认偏差: 提示:「当人们希望某个假设成立时,容易高估 P(E|H)。请客观思考:即使假设为真,这个证据出现的频率有多高?」
询问:假设 [假设] 是假的,仍然出现 [证据] 的可能性有多大?
用通俗例子帮助用户理解(如:不是脑瘤的人也头痛的概率)。
⚠️ 认知偏差提示 — 基础率忽视: 提示:「人们常低估假设为假时证据仍然出现的概率。请考虑日常情况中的基础概率。」
调用脚本计算:
python scripts/bayes_calc.py compute --prior <P> --likelihood <L> --false-positive <F>
解读输出并展示:
先验概率: 30.0% ██████░░░░░░░░░░░░░░
后验概率: 60.0% ████████████░░░░░░░░
贝叶斯因子:3.5x(moderate — 中等证据强度)
展示后询问:
references/data_schema.md)当用户对数字不确定时触发。询问概率的范围(如「P(E|H) 大约在 60% 到 90% 之间」)。
调用脚本:
python scripts/bayes_calc.py sensitivity --prior <P> --likelihood "<min>,<max>" --false-positive "<min>,<max>"
展示后验范围:
您的后验概率大约在 46.2% 到 79.4% 之间,取决于您对似然度的具体估计。
添加新证据时,将当前后验作为新的先验,重复 Step 3-5。多条证据的贝叶斯因子相乘得到累积因子。
当用户确认保存时,将结果写入 JSON 文件,格式参考 references/data_schema.md。文件保存在当前工作目录,文件名建议使用假设关键词(如 rain_analysis.json)。
二次加载时:通过 Read 工具读取 JSON,提取 final_posterior 作为新先验,evidence_chain 中已有证据用于避免重复输入,继续迭代分析。
| 命令 | 用途 |
|---|---|
python scripts/bayes_calc.py compute --prior P --likelihood L --false-positive F | 计算后验概率 |
python scripts/bayes_calc.py sensitivity --prior P --likelihood "lo,hi" --false-positive "lo,hi" --steps N | 敏感性分析网格(默认 steps=3) |
所有输出为 JSON,解析后格式化展示给用户。