事件风暴遇上 MetaSkill:把企业「世界模型」变成可执行的 DAG
当 DDD 最猛的建模武器,撞上 .NET 生态最硬核的 Agent 运行时,会发生什么?

一、先讲两个故事
第一个故事,关于企业知识库。
大部分企业的知识库是什么样子?规章、文档、PPT,堆在服务器角落里。过期了没人删,没人看,没人管。几百个文件夹,几万份文件,全是死的。
说句不好听的,就是个数字停尸房。
怎么让它活过来?答案藏在 DDD 的事件风暴里:把企业所有规章、流程、日常事务用事件风暴格式化之后,你得到的不再是一本死板的手册,而是一个「全息企业运行世界模型」。
- 领域事件 = 世界模型的动力学转移函数(「合同已签署」「库存已耗尽」)
- 命令 Command = 智能体发出的动作
- 聚合根 = 维持规则、响应事件的隐状态容器
无事件,不计算。事件像脉冲一样激活对应的领域上下文,状态精准跳变,价值流动一目了然。
第二个故事,关于 AI Agent 的工程化。
OpenClaw.NET(github.com/clawdotnet/openclaw.net)是一个 NativeAOT 友好的 .NET Agent 运行时。它里面有一个很硬的机制,叫 MetaSkill:用有向无环图(DAG)编排多个 Skill,支持条件路由、动态扇出、人工暂停、失败降级,每一步执行都留下可回放的审计记录。
它的形式化定义干净利落:(V 技能节点, E 路由边, S 状态, P 策略) 四元组。
一个讲故事,一个讲工程。但你把这两件事放在一起看——
它们根本是同一张图。
二、一张映射表:事件风暴元素 → MetaSkill 构件
| 事件风暴产物 | MetaSkill / OpenClaw.NET 对应物 | 说明 |
|---|---|---|
| 领域事件(橙色便利贴) | triggers 触发器 + 事件总线输入 |
「合同已签署」不再贴在墙上,而是触发一次 DAG 实例化执行 |
| 命令 Command(蓝色) | tool_call / skill_exec 步骤 |
确定性动作,受 tool_allowlist 三步安全门禁约束 |
| 聚合根 / 实体 | Session 状态 S | 文章说的「隐状态容器」,就是沿 DAG 边流动、共读共写的状态对象 |
| 限界上下文 | 单个 MetaSkill 的边界 | 一个 MetaSkill 恰好是 3–12 步、单一上下文内的工作流 |
| 策略 Policy(紫色) | routes 条件路由 + on_failure 降级 |
「每当 X 就 Y」直接编译为路由边 |
| 热点 / 审批节点(红色) | user_input 暂停点 |
带 checkpoint 和超时机制的人工介入,正好是治理卡点 |
| 事件扇出 | fan_out 动态步骤展开 |
「订单已创建」扇出到库存、财务、物流并行分支,再 merge |
| 外部系统(粉色) | MCP 工具调用 | 对接 ERP / CRM / MES 的现实接口 |
注意最后一列的巧合程度:MetaSkill 的四元组 (V, E, S, P),和事件风暴的「事件—命令—聚合—策略」四要素,是同构的。
这不是牵强类比。这是两套独立演化的体系,在「如何描述一个复杂系统的动力学」这个问题上,收敛到了同一个答案。
三、核心架构洞察:反馈环放在 DAG 外面
结合时最容易踩的坑,也是最优雅的地方,在这里。
企业世界模型是事件溯源式的:状态 → 事件 → 新状态 → 新事件,天然带反馈环。
而 MetaSkill DAG 强制无环——解析时做环路检测,MetaSkill 也不能调用另一个 MetaSkill。
矛盾吗?不矛盾。分层解决:
DAG 内部 = 无环的状态转移函数。
一次领域事件,触发一个 MetaSkill 实例。DAG 在有限步内完成这次状态跃迁:校验 → 执行命令 → 更新聚合 → 产出下游事件。
这就是世界模型里的「动力学转移函数」——只不过它从纸面公式,变成了可执行的代码。
DAG 外部 = 事件总线上的反馈环。
DAG 最后一步把新的领域事件写回事件总线,新事件再触发下一个 MetaSkill 实例。
循环出现在时序维度,而不是图结构维度。
这一刀切下去,两边的好处全拿:
- 事件驱动世界模型的因果链,保住了;
- DAG 无环约束的工程红利——依赖单向、无循环债务、局部可重构而全局稳定——也保住了。
四、中间那层:JSON-LD 是「编译中间件」
光有映射还不够,两层之间需要一份契约。建议的三层结构:
第一层:建模层(事件风暴工作坊)。
业务和技术坐在一起,产出事件、命令、聚合、限界上下文。这是语义的源头。
第二层:本体层(JSON-LD Ontology)。
把每类事件和聚合状态定义为 JSON-LD context:ContractSigned 的 @type、必需属性、与 Contract 聚合的关系,全部用全局 IRI 显式化。
这一层干两件事:
- 事件 schema 的显式化和全局唯一标识;
- DAG 步骤间数据传递的契约——步骤的
outputs用 JSON-LD Framing 取形、Slicing 取子集。
第三层:执行层(MetaSkill DAG)。
每个限界上下文编译为一个 kind: meta 的 SKILL.md:
- 事件链的时序 → 推导
depends_on; - Policy 便利贴 → 推导
routes和on_failure; - 审批热点 → 插入
user_input暂停点。
关键在于:OpenClaw.NET 的 DAG 节点,只要输入/输出 Schema 不变,就能独立替换。JSON-LD context 就是这个「Schema 不变量」的载体——局部流程怎么演进,都不用推翻全局本体。
五、白捡的礼物:审计记录 ≈ 事件溯源日志
世界模型最值钱的能力是什么?天然捕获因果和价值流速。
MetaSkill 恰好自带这件事:每次执行落一条 RunRecord——每步耗时、失败码、执行证据,可回放、可重建。
把执行记录按事件 ID 串起来,你立刻得到三个传统 BI 给不了的东西:
1. 事件堆积 = 堵点。
同一 trigger 的 pending 实例在排队?那就是价值流堵塞的量化信号。不用开会吵,数据自己会说话。
2. 降级路径的触发频率 = 流程健康度。
on_failure 被频繁激活,说明这条流程在「震荡」。频繁的状态重置,就是组织治理该下刀的地方。
3. What-If 沙箱。
想调整组织架构、改一个流程?别去现实中折腾员工。向系统注入一个虚构的命令脉冲,让它走一遍 DAG,观察下游各上下文分支的碰撞反应和价值损耗。
反事实推理,用现有机制就能搭出原型。
六、落地路径:五条军规
军规一:先做轻。
Skill 是基本单元,只在真正需要多步协作时才上 MetaSkill。事件风暴产出的大量简单策略(事件 → 单动作),一个普通 Skill 就够了。别过度工程。
军规二:一个限界上下文,一个 MetaSkill。
3–12 步以内。超了?说明上下文划得太大,回去重划,而不是硬塞。
军规三:事件链形态对号入座。
线性事件链 → 顺序模式;事件扇出 → fan-out + merge;策略分支 → 条件门控模式。三种内置 DAG 模式,覆盖绝大多数事件风暴产出。
军规四:跨上下文用事件解耦,不用嵌套。
MetaSkill 不能调用 MetaSkill——这是特性不是缺陷。跨限界上下文的协作,走事件总线,保持 DAG 边界干净。
军规五:提案生命周期做治理。
事件风暴产出 → 生成 MetaSkill 提案 → 静态检查 → 冒烟测试 → 端到端验证 → 人工验收。这正好对应「工作坊建模 → 评审 → 上线」的企业治理节奏。
七、收个尾
回头看,这件事的本质是什么?
事件风暴负责回答:企业这台机器的状态,如何因事件而转移。
MetaSkill 负责回答:这个转移函数,如何变成可执行、可降级、可暂停、可审计的运行时。
前者是世界模型的语义层,后者是它的引擎层,JSON-LD 本体是两层之间的契约层。
具身智能的机器人需要世界模型才能在物理世界里行动。企业也一样——只不过企业的「物理世界」,是由合同、订单、库存、审批流组成的。
用事件风暴把这个世界的动力学抽出来,用 MetaSkill 让它跑起来。
死板的文档,就这样变成了会呼吸的企业 OS。
参考:OpenClaw.NET 项目(github.com/clawdotnet/openclaw.net);「用领域驱动设计,把企业知识库改造成活的世界模型」(老袁讲敏捷)
欢迎大家扫描下面二维码成为我的客户,扶你上云

浙公网安备 33010602011771号