规则为世界之大法:万物由规则定义,演变由规则推衍,历史由规则还原。 《尚书·洪范》:「天乃锡禹洪范九畴,彝伦攸叙。」
洪范是一个可编程的世界推衍引擎:世界的一切——物质、资源、人物、行为、环境、乃至时间与引擎自身和世界之间的联系——都表达为规则;引擎沿规则正向推衍世界演化,也能在任意观测切面之间补全合法的演变轨迹(还原历史、解释现状、规划未来),多解情况下按可插拔策略选取。世界不必整体推衍:它在作用域中分区运行,随注意力展开或压缩。
它不直接提供"人物系统""经济系统",而是提供生成这些系统的机制——人物发展是行为规则的推衍结果,资源流转是转化规则的推衍结果,性格可以是被规则描述的事实。
用规则集定义世界的物理法则,引擎是"世界之心":同一种子必长出同一个世界,同一废墟可还原出多种历史。
- 一切皆规则:定义/约束/转化/行为/演变/联系六种 kind 共用一条匹配-调度-补全-叙事管线
- 统一补全原语
complete():正向推衍、目标规划、界间还原(布朗桥式内插)、单事实溯源,皆为边界条件变体 - 确定性内核:Run 四元组(规则集哈希, 状态哈希, 策略, 种子)→ 逐字节重放;黄金文件回归锁定
- 解空间三态:唯一解=计算,多解=策略选取,矛盾=松弛求解(可信度加权,输出违背报告)
- 切面一等类型:部分事实 + 时刻 + 可信度——观测本就部分且可错
- 求解器层(v0.4,M3 已落地):规则=问题 / 求解器=怎么搜 / 策略=选哪个;前向枚举与束搜索只提案,内核统一正向重放验证
- 观测落盘与世界线(v0.4,M3 已落地):坍缩即写入史册层,重观测读档幂等;fork(k) 一次观测分叉 k 条独立世界线
- 作用域与注意力(v0.3 概念,M6 落地中):包含域树与辐射域场、分区并行 + 消息定序因果偏序;展开/压缩对偶,延迟还原与惰性坍缩(M6.1 作用域运行时、M6.2 辐射域已落地)
- 编年史:推衍即叙事——每步带叙事模板,按刻渲染中文编年史
| 系统 | 洪范取用 | 差异 |
|---|---|---|
| 产生式系统(CLIPS/Drools, RETE) | 匹配-消解-执行循环 | 增加时态图、切面补全、叙事输出 |
| 规划器(PDDL/SATPlan) | 反向搜索、目标回归 | 规划只是 complete() 的前向边界形态 |
| 溯因推理 | 多解释、择优 | 显式策略接口 + 正向重放验证 + 矛盾松弛 |
| 离散事件仿真 / Actor 模型 | 事件驱动时间、消息定序 | 时间模型可换;消息是带可信度的切面 |
| 随机过程 / 布朗桥 | P(轨迹|观测) 的数学原型 | 离散、规则驱动、可叙事 |
完整对照见 00-design.md 附录 B。
版本 0.1.0(见 VERSION)。路线图七里程碑,M1 已完成:
| 里程碑 | 内容 | 状态 |
|---|---|---|
| M1 骨架 | 确定性在线补全 + 界间补全 + CLI + 两个样例世界 | ✅ 已完成(GCC/Clang 双编译器 6/6 测试) |
| M2 言语 | DSL 全量校验、叙事渲染完善 | ⏳ |
| M3 稽疑 | 求解器接口(枚举/束搜索,提案-验证分离)+ 重放验证 + 策略族 + 矛盾松弛 + 观测落盘/世界线 | ✅ 已完成(邻村谜案三幕样例,双编译器 8/8 测试) |
| M4 通衢 | API/REPL、快照分支、explain 溯源 | ⏳ |
| M5 分层 | 分层补全(宏观骨架 + 微观细节) | ⏳ |
| M6 域界 | 作用域树、分区并行、ScopeProfile | ⏳(M6.1 作用域运行时+性能基座、M6.2 辐射域+空间索引、M6.3 消息+局部时钟+作用域流已落地;M6.4 并行待做) |
| M7 注视 | 注意力展开/压缩、个体规则、LLM 接缝原型 | ⏳ |
要求:CMake ≥ 3.25、Ninja、GCC ≥ 13 或 Clang ≥ 17(本仓库以 GCC 15 基准、Clang 22 移植门禁验证)。
# 构建(预设见 CMakePresets.json:dev / release / asan / ubsan)
cmake --preset release && cmake --build --preset release
# Demo 1:村落生息——在线补全(正向推衍 8 刻,编年史 + 终态快照)
./build/release/hongfan derive \
--rules examples/village/rules.yaml --state examples/village/initial.yaml \
--ticks 8 --strategy random --seed 42
# Demo 2:旅人稽疑——界间补全(160 条合法历史,按策略选出一条)
./build/release/hongfan complete \
--rules examples/traveler/rules.yaml --state examples/traveler/initial.yaml \
--goal examples/traveler/goal.yaml --depth 6 --strategy min-cost --seed 7 --list 3
# Demo 3:邻村谜案——多解/矛盾松弛/fork 多元观测(M3 求解器层 + 观测落盘)
./build/release/hongfan complete \
--rules examples/mystery/rules.yaml --state examples/mystery/initial.yaml \
--evidence examples/mystery/evidence.yaml --depth 4 --strategy prefer:murder --seed 7
./build/release/hongfan complete \
--rules examples/mystery/rules.yaml --state examples/mystery/initial.yaml \
--evidence examples/mystery/evidence-conflict.yaml --depth 4 --strategy min-cost --seed 7 --relax
./build/release/hongfan observe \
--rules examples/mystery/rules.yaml --state examples/mystery/initial.yaml \
--evidence examples/mystery/evidence-fork.yaml --mode fork --k 3 \
--strategy min-cost --seed 7 --depth 4
# Demo 4:山雨客栈——完整剧情推衍(五幕故事:投宿→夜盗→惊觉→查证→天明)
./build/release/hongfan derive \
--rules examples/inn/rules.yaml --state examples/inn/initial.yaml \
--ticks 21 --strategy first --seed 42
# 测试(7 个单测 + e2e:确定性双跑比对 + 黄金文件回归 + 观测幂等)
ctest --test-dir build/release --output-on-failure同一命令跑两遍输出逐字节一致——这就是确定性契约。换 --strategy min-cost 或 --seed 看同一世界的不同命运。
| 入口 | 内容 |
|---|---|
| docs/README.md | 文档导览(三条阅读路径) |
| docs/00-design.md | 概念设计 v0.5(补全原语/切面/作用域/个体规则/注意力/观测落盘/求解器层/辐射域) |
| docs/01-implementation.md | 落地实现设计(M1 数据结构/确定性契约/任务分解) |
| docs/adr/ | 架构决策记录 ADR-0001…0022 |
| CHANGELOG.md | 变更日志 |
模块借用《尚书·洪范》九畴命名,中文取意写进各模块文档首行:
| 模块 | 取意 | 职责 |
|---|---|---|
wuxing 五行 |
物质与转化 | transformation 语义、守恒校验 |
bazheng 八政 |
行为与施为 | behavior 语义、actor 调度 |
shuzheng 庶征 |
环境征候 | evolution 语义、时间驱动 |
wuji 五纪 |
时间与历法 | TimeModel、作用域局部时钟、惰性跳步 |
wushi 五事 |
观与注视 | 注意力(焦点/展开/压缩) |
huangji 皇极 |
内核 | 在线补全、事务性状态转移 |
sande 三德 |
裁决 | 冲突消解、策略组合 |
jiyi 稽疑 |
溯因求解 | 离线补全、松弛、重放验证 |
chronicle 编年史 |
(增畴) | 推衍日志→叙事渲染 |
Pride Leong