Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

what if · 反事实推演场 (Counterfactual Replay)

每天一道「如果 X,那么 Y?」,一千个 AI agent 重新推演替代历史,全网竞猜结果。 One "what if" a day. A thousand AI agents replay an alternate timeline. The crowd bets on the outcome.

Live demo: https://project-iota-two-45.vercel.app/


这是什么

一个以历史反事实为题、以多 agent LLM 推演为引擎的产品。给 AI 改变历史中的一个变量("给秦始皇一个无限算力 AI 助手"),让一个有人设、有记忆、有动机的 agent 社会自己演下去,直到题目的 Y 命题被判定。

两种姿态,共享同一引擎:

  • 观测下注 (/market) — AI 全自跑,玩家围观 + 在 LMSR 预测市场押注。Polymarket × Wordle × 历史频道。
  • 上帝沙盒 (/game) — 玩家用「干预 token」改写自己的私有推演。RimWorld × Crusader Kings × AI。(设计中)

核心信念:预测的反面不是「未来不可知」,是「过去也不只一种」。


为什么不是「AI 算出历史真相」

反事实没有 ground truth(史上根本没有"秦始皇+AI")。所以本产品不卖「准」,卖的是:

  • 一致性 — 同假设跑多次,Y 收敛到一个概率分布(可复现)
  • 透明性 — 全部 prompt / 规则 / 推演 trace 公开,玩家自己判断假设合不合理
  • 可解释 — 每个结果都能追到因果链,不是黑箱

实测:第一题「秦始皇有 Claude Code,秦会二世而亡吗」跑 10 次 → 6 YES / 4 NO(秦亡概率 60%),且因果干净:

结果 平均 AI 调用量
秦亡 (YES) 1.5 次
秦存 (NO) 5.8 次

秦廷越依赖 AI → 巨鹿之战军损越小 → 越能撑过武关。反事实条件真正影响结局,而单局走向由 agent 涌现决定,不由人操纵。


引擎架构 (P0)

if Parser → World Init → 推演主循环 → Y Detector
                              │
        Director (调度) ←→ Agents ←→ Resolver
                              │
              历史剧本节点 (史实骨架) + agent 涌现 (细节)

三层世界(spec 目标,P0 实现 A 层):

角色 实现 P0 现状
A 关键人物 完整斯坦福小镇套:记忆流 + 检索 + 反思 + 规划 + 行动 22 个秦末人物
B 二三线配角 状态机,偶发上场 P1
C 背景民众 聚合变量(民怨/军事/边境) 部分

历史剧本节点 (scripted_events.py):焚书坑儒 / 沙丘之变 / 大泽乡 / 定陶 / 巨鹿 / 望夷宫 / 子婴降 —— 定剧情骨架。其中巨鹿、武关是条件节点,结局取决于世界状态(这是反事实分歧的所在)。

LLM provider:可切换 Anthropic / MiniMax(LLM_PROVIDER 环境变量)。P0 用 MiniMax-Text-01,单局成本约 ¥0.3。


目录

if-engine/          # Python 推演引擎 (P0)
  if_engine/        #   核心代码
    world/          #     schema / 世界初始化 / 历史剧本节点
    agents/         #     tier-A agent / 工具 agent / 记忆流
    resolver/       #     行动解析 / 战斗 MC / 关系网 / belief / 事件触发
    director.py     #     活跃 agent 调度
    y_detector.py   #     Y 命题判定 (硬规则 + LLM 二验)
    main_loop.py    #     推演主循环 + checkpoint
    narrative.py    #     推演 log → markdown 叙事
  personas/         #   22 张秦末人设卡 (含史记出处)
  prompts/          #   agent / 工具 / 判定 prompt 模板
  tests/            #   48 pytest
  runs-sample/      #   一份完整推演样本 (秦+Claude Code, Y=YES)
web/                # 前端 (已部署 Vercel)
docs/
  SPEC.md           # 产品 spec v2
  P0-PLAN.md        # P0 实施计划 (23 任务)

跑起来

cd if-engine
cp .env.example .env          # 填入 ANTHROPIC_API_KEY 或 MINIMAX_API_KEY
uv venv && uv pip install -e ".[dev]"
uv run pytest -q               # 48 passed
uv run python -m if_engine --max-ticks 18 --max-cost 100   # 跑第一题

输出落 runs/qin-<时间戳>/narrative.md


状态

P0(内容验证)核心命题已验证通过:引擎能讲完整反事实历史,结果是涌现概率而非操纵定论。下一步 P3(上帝沙盒 + AI Town 可视化)。

详见 docs/P0-PLAN.md

About

反事实推演场 · 多 agent LLM 重演替代历史

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages