08元序实现路线图
元序 WorldScript 实现路线图
从概念到可运行解释器的技术路线与里程碑规划。
一、总体策略
元序的实现遵循「先内核后生态、先单后多、先精确后性能」的原则:
- 先内核后生态:先实现五大引擎的最小可用内核,再扩展标准库、域模型、工具链
- 先单后多:先单机单进程,再分布式多机
- 先精确后性能:先保证语义正确与可回放,再做向量化/分布式/性能优化
二、技术选型
2.1 实现语言
| 阶段 | 语言 | 理由 |
|---|---|---|
| MVP(v0.1-v0.3) | Python | 开发速度快,丰富的科学计算库(numpy/scipy),适合快速验证语义 |
| 性能版(v0.4+) | Rust 或 Go | 高性能、并发安全,适合生产级运行时 |
| 嵌入式(v1.0+) | C | 资源受限环境 |
MVP 阶段用 Python 实现,语义验证稳定后用 Rust/Go 重写性能关键路径。
2.2 核心依赖(MVP 阶段)
| 依赖 | 用途 |
|---|---|
| numpy | 状态场向量化存储与计算 |
| scipy | 趋势拟合、曲线插值 |
| networkx | 域拓扑图、因果链溯源 |
| simpy | 离散事件模拟(可选,用于 Tick 调度参考) |
| pydantic | 配置与数据结构校验 |
| rich | CLI 可视化与调试输出 |
三、里程碑规划
M0:语言规范冻结(已完成)
交付物:《元序规则》《运行时架构》《演示案例》
M1:MVP 解释器内核(预计 4 周)
目标:能加载元序程序并执行基本的 Tick 循环,支持 State + When + 基础状态修改。
任务清单:
| 编号 | 任务 | 预估工时 | 优先级 |
|---|---|---|---|
| 1.1 | 词法分析器(Lexer) | 2天 | P0 |
| 1.2 | 语法分析器(Parser),生成 AST | 3天 | P0 |
| 1.3 | 状态场存储(列式 + 历史环形缓冲) | 2天 | P0 |
| 1.4 | Tick 调度器框架(8阶段骨架) | 2天 | P0 |
| 1.5 | 因果匹配引擎(条件满足度 + 因果强度) | 3天 | P0 |
| 1.6 | 涌现执行(状态修改 + 平滑过渡) | 2天 | P0 |
| 1.7 | 基础偏差记录与查询 | 1天 | P1 |
| 1.8 | CLI 运行器(加载 .ws 文件,输出快照) | 2天 | P0 |
| 1.9 | 用演示案例1(交通系统)验证 | 2天 | P0 |
验收标准:
- 能运行《演示案例》中的案例一(城市交通)的简化版
- 每个 Tick 输出状态场快照
- 因果规则能正确触发,状态修改平滑过渡
- 无崩溃、无除零、无空引用
不包含:Track、Link、Evolve、延迟因果、反馈回路
M2:完整五大句式(预计 6 周)
目标:支持全部五种核心句式,能运行所有演示案例。
任务清单:
| 编号 | 任务 | 预估工时 | 优先级 |
|---|---|---|---|
| 2.1 | Track 趋势跟踪引擎(滑动窗口 + 拟合 + 预测) | 4天 | P0 |
| 2.2 | Link 层级耦合引擎(聚合 + 约束 + 域拓扑) | 4天 | P0 |
| 2.3 | 延迟因果队列(延迟→ + 区间延迟) | 2天 | P0 |
| 2.4 | 反馈回路检测与执行 | 2天 | P0 |
| 2.5 | 偏差收敛引擎(4级策略 + 溯源) | 4天 | P0 |
| 2.6 | Evolve 演化引擎(参数修正 + 影子验证 + 回滚) | 5天 | P0 |
| 2.7 | 经验库(沉淀 + 查询 + 导入导出) | 3天 | P1 |
| 2.8 | 连续融合函数 | 2天 | P0 |
| 2.9 | 全部5个演示案例验证通过 | 3天 | P0 |
验收标准:
- 5个演示案例全部能运行并产生合理输出
- 偏差不导致崩溃,能自动收敛
- 演化能在运行中修改参数,无需重启
- 趋势预测能提前触发预判规则
M3:工具链与可观测性(预计 4 周)
目标:完善开发体验,提供调试、可视化、回放能力。
任务清单:
| 编号 | 任务 | 预估工时 | 优先级 |
|---|---|---|---|
| 3.1 | 运行时探针 API(状态/规则/偏差/演化查询) | 3天 | P0 |
| 3.2 | 快照保存与加载(序列化/反序列化) | 2天 | P0 |
| 3.3 | 回放调试器(步进 + 单步执行 + 断点) | 4天 | P1 |
| 3.4 | 分支推演(从快照分叉并行推演) | 3天 | P1 |
| 3.5 | 因果链可视化(输出 Mermaid/Graphviz) | 2天 | P1 |
| 3.6 | 状态场时间序列可视化(matplotlib 输出) | 2天 | P1 |
| 3.7 | 语法高亮(VS Code 扩展基础版) | 3天 | P2 |
| 3.8 | 配置文件支持(JSON/YAML) | 1天 | P0 |
验收标准:
- 可保存/加载快照,回放结果与原运行一致
- 可步进调试,查看每个 Tick 的规则评估详情
- 可生成因果链图与状态趋势图
M4:性能优化与分布式(预计 8 周)
目标:支持大规模状态场(百万级微域节点),具备生产级性能。
任务清单:
| 编号 | 任务 | 预估工时 | 优先级 |
|---|---|---|---|
| 4.1 | 状态场向量化计算(numpy 全量改造) | 5天 | P0 |
| 4.2 | 因果匹配并行化(多进程/多线程) | 5天 | P0 |
| 4.3 | 规则倒排索引(按状态维度快速定位规则) | 3天 | P0 |
| 4.4 | 增量计算(只更新变化的状态,不重算全域) | 4天 | P1 |
| 4.5 | Rust 重写性能关键路径(状态场 + 匹配引擎) | 10天 | P1 |
| 4.6 | 分布式运行时(状态分片 + 引擎节点) | 10天 | P2 |
| 4.7 | 性能基准测试套件 | 3天 | P0 |
性能目标:
- 10万微域节点 + 1000规则:< 100ms/Tick(单机8核)
- 100万微域节点 + 1万规则:< 1秒/Tick(分布式4节点)
- 内存占用:每维度约 8 字节(当前值)+ 历史窗口 × 8 字节
M5:生态与标准化(预计持续)
目标:建立元序生态,包括域模型库、教程、社区、标准化。
| 任务 | 说明 |
|---|---|
| 标准域模型库 | 城市交通/生态/经济/气候/舆情等预置模型 |
| 教程与文档站 | 入门教程、最佳实践、案例集 |
| 在线 Playground | 浏览器中运行元序程序 |
| 互操作桥接 | 与 Python/Go 程序互调用,与 MQTT/Kafka 数据流对接 |
| 语言标准化 | 提交正式语言规范(类似 RFC 流程) |
| 社区治理 | 开源协议、贡献指南、行为准则 |
四、核心模块内部设计概要
4.1 模块划分
worldscript/
├── lexer.py # 词法分析
├── parser.py # 语法分析 → AST
├── ast.py # AST 节点定义
├── runtime/
│ ├── scheduler.py # Tick 调度器
│ ├── state_field.py # 状态场引擎
│ ├── causality.py # 因果匹配引擎
│ ├── scale.py # 层级耦合引擎
│ ├── deviation.py # 偏差收敛引擎
│ ├── evolution.py # 演化引擎
│ └── shared.py # 共享状态层
├── stdlib/
│ ├── functions.py # 内置函数
│ ├── domains/ # 标准域模型
│ └── config.py # 配置参数
├── cli.py # 命令行入口
├── debugger/ # 调试与回放工具
└── examples/ # 演示案例
4.2 关键数据结构(Python 伪代码)
@dataclass
class StateField:
name: str
domain: Domain
dimensions: Dict[str, Dimension]
@dataclass
class Dimension:
current: float
history: np.ndarray # 环形缓冲
target: Optional[float]
transition_rate: float
@dataclass
class Rule:
id: str
conditions: List[Condition]
weights: List[float]
threshold: float
actions: List[Action]
@dataclass
class TickContext:
tick: int
snapshot: StateSnapshot # 本 Tick 开始时的状态快照
staging: StagingArea # 暂存区,所有引擎写入这里
triggered_rules: List[Rule] # 本 Tick 触发的规则
deviations: List[Deviation] # 本 Tick 产生/更新的偏差
4.3 Tick 执行主循环(伪代码)
def run(program, config, max_ticks=None):
state = init_state(program, config)
while max_ticks is None or state.tick < max_ticks:
ctx = TickContext(tick=state.tick, snapshot=state.snapshot(), staging=StagingArea())
# PHASE 1: 状态更新
state_field_engine.update(ctx, program)
process_delay_queue(ctx)
# PHASE 2: 因果匹配
causality_engine.match(ctx, program.rules)
# PHASE 3: 涌现执行
causality_engine.execute(ctx)
# PHASE 4: 层级耦合
scale_engine.aggregate(ctx)
scale_engine.constrain(ctx)
# PHASE 5: 趋势分析
track_engine.analyze(ctx, program.tracks)
# PHASE 6: 偏差收敛
deviation_engine.observe(ctx)
deviation_engine.converge(ctx)
# PHASE 7: 演化
evolution_engine.evolve(ctx, program.evolves)
# PHASE 8: 输出与持久化
output_snapshot(ctx)
maybe_persist(ctx)
# COMMIT: 原子提交
state.commit(ctx.staging)
state.tick += 1
五、风险与应对
| 风险 | 影响 | 应对策略 |
|---|---|---|
| 因果权重自动分配效果不佳 | 规则触发不符合预期 | 先实现手动指定权重,自动分配作为可选项;用演示案例校准 |
| 演化引擎导致系统震荡 | 系统不稳定 | 严格的影子验证 + 自动回滚 + εmax 约束 |
| 大规模状态场性能瓶颈 | 无法模拟真实规模 | M4 阶段向量化 + 分布式;MVP 阶段限制规模 |
| 语言语义歧义 | 不同实现行为不一致 | 以 BNF + 演示案例为权威规范,建立一致性测试套件 |
| 学习曲线陡峭 | 用户难以上手 | 提供域模型(开箱即用)+ 在线 Playground + 教程 |
六、当前进度
M0: 语言规范冻结 ████████████████████ 100%
M1: MVP 内核 ░░░░░░░░░░░░░░░░░░░░ 0% (待启动)
M2: 五大句式 ░░░░░░░░░░░░░░░░░░░░ 0%
M3: 工具链 ░░░░░░░░░░░░░░░░░░░░ 0%
M4: 性能优化 ░░░░░░░░░░░░░░░░░░░░ 0%
M5: 生态 ░░░░░░░░░░░░░░░░░░░░ 0%
下一步:启动 M1,实现词法分析器 + 语法分析器 + 状态场存储。
文档版本: WorldScript Implementation Roadmap v1.0

浙公网安备 33010602011771号