每天一道「如果 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。(设计中)
核心信念:预测的反面不是「未来不可知」,是「过去也不只一种」。
反事实没有 ground truth(史上根本没有"秦始皇+AI")。所以本产品不卖「准」,卖的是:
- 一致性 — 同假设跑多次,Y 收敛到一个概率分布(可复现)
- 透明性 — 全部 prompt / 规则 / 推演 trace 公开,玩家自己判断假设合不合理
- 可解释 — 每个结果都能追到因果链,不是黑箱
实测:第一题「秦始皇有 Claude Code,秦会二世而亡吗」跑 10 次 → 6 YES / 4 NO(秦亡概率 60%),且因果干净:
| 结果 | 平均 AI 调用量 |
|---|---|
| 秦亡 (YES) | 1.5 次 |
| 秦存 (NO) | 5.8 次 |
秦廷越依赖 AI → 巨鹿之战军损越小 → 越能撑过武关。反事实条件真正影响结局,而单局走向由 agent 涌现决定,不由人操纵。
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。