AI时代的领域驱动设计:DAD

引言

在 AI 被引入业务系统之后,传统领域驱动设计(DDD)面临三个现实问题:

  1. 领域之间通过结构化消息交互,语义被固化在代码中

  2. 领域执行过程缺乏可解释、可回放的能力

  3. AI 的不确定性无法与领域规则的确定性共存

DAD(Domain Actor Design)是一种面向 AI 时代的领域驱动设计模型,用于解决上述问题。

它以 Actor 模型 作为领域执行单元,并在其内部引入 AI Actor 结构。


一、Actor 模型的基本思想

Actor 模型是一种并发与状态管理模型,其核心思想包括:

  • 每个 Actor 拥有独立的私有状态

  • Actor 只通过消息与外界交互

  • Actor 顺序处理消息,不存在并发写状态

  • Actor 可以发送消息、创建新的 Actor

在 DAD 中,Actor 的价值并不在"并发",而在于:

它天然提供了领域状态隔离、行为顺序化和因果边界。

因此,Actor 被用作 领域行为的最小执行与一致性单元


二、Domain Actor:领域的执行边界

在 DAD 中,每一个 Domain Actor 表示一个:

  • 领域概念

  • 或一个长期存在的业务主体(如订单、账户、流程实例)

Domain Actor 负责:

  • 持有领域状态

  • 顺序接收领域消息

  • 驱动状态演化

  • 生成领域事件

它取代了传统 DDD 中:

  • 聚合根 + 应用服务 + 部分领域服务的混合职责

三、AI Actor 的定义

AI Actor 是 Domain Actor 的一种实现形式,用于承载 AI 参与决策的领域行为

AI Actor 不是一个"会思考的 Actor",而是一个具有双层结构的领域执行体。

AI Actor 由两个明确分工的部分组成:
AI Actor ├── Agent(语义与推理层) └── MCP 领域服务(确定性执行层)

这两个部分分别解决不同类型的问题。


四、Agent:语义理解与意图协调层

Agent 是 AI Actor 中负责理解语义的部分

Agent 承担的职责

Agent 负责:

  • 解析来自外部的消息

  • 理解消息所表达的业务意图

  • 补全上下文信息

  • 校验语义合理性

  • 将意图转化为可执行请求

  • 在不合法或不完整时,明确反馈问题

Agent 解决的问题

Agent 的引入,解决了传统 Actor 与 DDD 中的一个核心问题:

消息是结构化的,但语义是隐式的,导致领域之间在设计期高度耦合。

在 AI Actor 中:

  • 消息可以是 JSON

  • 但 JSON 不再是固定结构的命令

  • 而是携带"意图"的语义输入

领域之间不再依赖共享 DTO 或固定 Schema,

而是通过 语义理解与协商 进行交互。


五、MCP 领域服务:确定性执行层

MCP(Model / Capability / Process)领域服务是 AI Actor 中负责执行的部分

MCP 的职责

MCP 领域服务负责:

  • 定义领域可执行能力

  • 执行严格受控的领域操作

  • 校验领域规则与约束

  • 产生确定性的执行结果

  • 生成可持久化的领域事件

Agent 不能直接操作领域状态,只能通过 MCP 调用这些能力。

MCP 解决的问题

MCP 的存在,解决的是:

AI 的不确定性与领域规则确定性之间的冲突。

通过 MCP:

  • AI 的推理被限制在能力边界之外

  • 领域模型保持稳定、可测试

  • AI 升级不会破坏领域一致性


六、事件溯源:Domain Actor 的记忆模型

在 DAD 中,Domain Actor 采用 事件溯源 作为核心存储方式。

事件溯源的角色

事件溯源用于:

  • 记录收到的消息

  • 记录 Agent 的语义理解结果

  • 记录 MCP 的执行行为

  • 重建 Actor 的历史状态

Domain Actor 的当前状态不是直接存储的,而是通过事件重放得到的。

事件溯源解决的问题

这种存储方式解决了传统状态存储无法解决的问题:

  • 领域行为不可解释

  • AI 决策不可回放

  • 系统演化不可修正

事件溯源为 AI Actor 提供了:

  • 可解释性

  • 可审计性

  • 可演化性


七、AI Actor 的整体运行结构

综合上述设计,AI Actor 的运行结构如下:
外部消息 ↓ Agent(语义理解与校验) ↓ MCP 领域服务(确定性执行) ↓ 领域事件(事件溯源存储) ↓ Actor 状态演化

每一层职责清晰,边界明确。


结语

DAD 并不是对 DDD 的否定,而是对其执行模型、交互模型和存储模型的系统性升级。

通过:

  • Actor 模型作为领域执行单元

  • Agent 提供语义解耦

  • MCP 保证领域确定性

  • 事件溯源提供系统记忆

DAD 为 AI 时代的复杂业务系统,提供了一种可落地、可演化、可解释的领域设计方式。

相关推荐
Coder_Boy_1 天前
基于SpringAI的在线考试系统-考试管理功能布局+交互优化方案
java·数据库·人工智能·spring boot·交互·ddd·tdd
七夜zippoe1 天前
微服务架构演进实战 从单体到微服务的拆分原则与DDD入门
java·spring cloud·微服务·架构·ddd·绞杀者策略
Coder_Boy_2 天前
基于SpringAI的在线考试系统-0到1全流程研发:DDD、TDD与CICD协同实践
java·人工智能·spring boot·架构·ddd·tdd
rolt2 天前
[pdf]《软件方法》全流程引领AI-电子书共435页202601更新
产品经理·ddd·架构师·uml·领域驱动设计
Coder_Boy_4 天前
基于SpringAI的在线考试系统-DDD业务领域模块设计思路
java·数据库·人工智能·spring boot·ddd
Coder_Boy_5 天前
基于SpringAI的在线考试系统-DDD(领域驱动设计)核心概念及落地架构全总结 (2)
java·人工智能·spring boot·架构·serverless·ddd·服务网格
Coder_Boy_5 天前
基于SpringAI的在线考试系统-DDD(领域驱动设计)核心概念及落地架构全总结
java·大数据·人工智能·spring boot·架构·ddd·tdd
七夜zippoe12 天前
领域驱动设计在Python中的实现:从理论到生产级实践
数据库·python·sqlite·ddd·pydantic