事件风暴遇上 MetaSkill:把企业「世界模型」变成可执行的 DAG

当 DDD 最猛的建模武器,撞上 .NET 生态最硬核的 Agent 运行时,会发生什么?


image

一、先讲两个故事

第一个故事,关于企业知识库。

大部分企业的知识库是什么样子?规章、文档、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 显式化。

这一层干两件事:

  1. 事件 schema 的显式化和全局唯一标识;
  2. DAG 步骤间数据传递的契约——步骤的 outputs 用 JSON-LD Framing 取形、Slicing 取子集。

第三层:执行层(MetaSkill DAG)。

每个限界上下文编译为一个 kind: meta 的 SKILL.md:

  • 事件链的时序 → 推导 depends_on
  • Policy 便利贴 → 推导 routeson_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);「用领域驱动设计,把企业知识库改造成活的世界模型」(老袁讲敏捷)

posted @ 2026-09-21 07:01  张善友  阅读(27)  评论(0)    收藏  举报