跳转到主要内容 / Skip to main content
C.P. CYBERPSYCHOSIS
GITHUB
CHAPTER 04 // META-PROGRAMMING

规则即实体与受限 DSL 编译器

将模拟规则本身作为 ECS 中的一等公民实体,打通 Baba 式空间规则改写与 LLM 语义规则生成。

4.1 Baba 式空间词块实时重编译

在传统引擎中,'水能灭火'是写死在代码里的分支;而在 Cyberpsychosis 中,地图上带有 word_block 标签的实体本身就是规则编译器的数据源。

每个 Tick 开始时,RuleEngine.syncGridWordBlockRules 会扫描 2D 网格上所有横排或竖排相邻的 [word_noun] + [word_verb:IS] + [word_prop] 三元组:

// TYPESCRIPT CYBERPSYCHOSIS SDK
// 当玩家推动 [WORD:HOT] 到 (5,2),与 (3,2) 的 [WATER] 和 (4,2) 的 [IS] 连成一线:
kernel.pushEntity(wordHotId, 0, -1, "Player pushed [WORD:HOT] into rule slot");

// 内核立即重编译规则:
// 1. 撤销旧规则 [WATER IS COOL]
// 2. 激活新规则 [WATER IS HOT],自动为所有带 'water' 标签的实体赋予 'hot' 标签并将温度提升至 95°C+
// 3. 在 CausalTracker 中记录 user:entity_pushed -> logic:rule_compiled 因果边

4.2 受限涌现 DSL (Restricted Emergence DSL)

为了同时支持配置文件热重载与大模型(LLM)运行时生成规则,内核内置了零 eval、严格白名单校验的受限 DSL 解析器(RuleEngine.injectDsl)。支持两类核心语句:

// TEXT CYBERPSYCHOSIS SDK
# 1. 全局属性重定义语句 (Global Tag/Property Override)
OVERRIDE water IS hot
OVERRIDE smoke IS calm

# 2. 邻接交互反应语句 (Declarative Interaction Rule)
RULE agent_auto_repair WHEN adjacent(agent, broken) DO set_prop(target.integrity, 100); remove_tag(target, broken); emit("Agent repaired structure")