找回密码
 立即注册
首页 业界区 业界 AI时代的领域驱动设计:DAD

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

诈知 2026-1-23 16:15:00
在 AI 开始直接参与系统交互之后,传统领域驱动设计(DDD)暴露出一个根本性局限:
系统长期只理解“结构”,却不真正理解“意图”。
无论是方法调用、DTO、RPC 还是事件消息,本质上都是结构化协议
而在真实世界中,尤其是 AI 参与的场景里,交互首先出现的是语义意图,而不是稳定结构。
DAD(Domain Actor Design),是一种面向 AI 时代的领域建模方式,其核心系统单元是 AI Actor

一、Actor 模型:不是并发技巧,而是领域单元

Actor 模型的本质是:

  • Actor 是独立运行的实体
  • Actor 之间只通过消息交互
  • Actor 内部状态不可被外部直接访问
  • Actor 自行决定如何处理收到的消息
Actor 模型真正解决的是:
如何在不共享状态、不直接调用的前提下,让复杂系统保持自治。
在 DAD 中,Actor 不再只是并发模型,而是领域的最小自治单元

二、传统 DDD 消息化后的真实问题

即便系统已经采用“消息驱动”:

  • 消息依然是固定结构
  • 接收方必须提前知道结构
  • 发送方必须知道对方能处理什么结构
结果是:
领域之间的耦合,从方法签名,转移成了消息结构。
在 AI 时代,这种问题被进一步放大:

  • AI 产生的输入天然不稳定
  • 表达可能正确,但结构不完整
  • 系统无法容忍“语义正确但结构不完美”的请求

三、DAD 的核心单元:AI Actor

在 DAD 中,领域的最小自治单元是 AI Actor
AI Actor 由三个部分组成:

Agent + Mailbox + 领域服务程序
这是一个职责清晰、边界严格的结构。

四、AI Actor 的三个组成部分(最终定义)

1️⃣ Agent:AI Actor 的唯一边界

Agent 才是 AI Actor 的物理与逻辑边界。
所有进入 Actor 的信息,必须先经过 Agent
Agent 的职责是:
(1)语义解析与校验(入口关卡)


  • 接收外部消息(JSON / 文本 / 混合)
  • 判断:

    • 对方想做什么
    • 信息是否语义完整
    • 是否属于当前 Actor 的职责范围

❌ 不合格的消息:

  • 直接返回语义化错误
  • 告知问题在哪里、缺什么
  • 不会进入领域执行路径
结构正确 ≠ 语义合法

(2)意图 → 结构化任务

当语义被确认后,Agent 会:

  • 将“意图”转换为结构化任务
  • 明确:

    • 任务类型
    • 已确认的数据
    • 执行前置条件

Agent 不决定如何执行,只负责:
把“我理解了”变成“你可以执行了”。

(3)执行结果的语义化输出(出口)

领域服务程序执行完成后:

  • 返回的是结构化执行结果
  • Agent 负责:

    • 解释执行结果
    • 组织语义响应
    • 返回给原消息发送方

Agent 是唯一的语义入口,也是唯一的语义出口。

2️⃣ Mailbox:领域服务的任务串行化机制

Mailbox 不是 AI Actor 的边界,也不承担语义职责。
Mailbox 的唯一目的:
保证领域服务任务的顺序性与一致性。
它的特点是:

  • FIFO
  • 可持久化
  • 只存结构化任务
  • 不理解任务含义
  • 不参与任何业务决策
Mailbox 的存在意味着:

  • 领域服务程序只面对确定、可执行的任务
  • Actor 内部状态不会被并发破坏
  • Actor 可以安全重启并恢复执行

3️⃣ 领域服务程序:Actor 的执行体

领域服务程序是:
一个持续运行、由 Mailbox 驱动的 Actor 执行体。
它内部包含:

  • 执行循环
  • 状态机
  • 领域对象代码
  • 业务规则
  • 状态 / 事件持久化逻辑
领域服务程序的特征非常明确:

  • 只接收结构化任务
  • 串行执行
  • 不解析语义
  • 不暴露方法
  • 不直接与外部通信
领域对象代码全部存在于领域服务程序内部。

五、AI Actor 的完整消息处理流程(最终闭环)

这是 完整且不可省略的 AI Actor 消息生命周期

① 外部消息到达 Agent(Actor 边界)


  • 来自用户 Actor
  • 来自其他领域 Actor
  • 或外部系统

② Agent 进行语义解析与校验

Agent 判断:

  • 意图是否明确
  • 数据是否语义完整
  • 是否在 Actor 职责范围内
❌ 不合格 → 立即语义反馈
✅ 合格 → 生成结构化任务

③ 结构化任务进入 Mailbox 排队

此时进入 Mailbox 的是:
已被理解、已被确认、可执行的任务

④ 领域服务程序从 Mailbox 取任务


  • 顺序取出
  • 加载当前状态
  • 进入状态机执行

⑤ 领域对象代码执行任务


  • 执行业务规则
  • 推进状态
  • 产生状态变化 / 领域事件

⑥ 状态 / 事件持久化


  • 记录任务
  • 记录执行结果
  • 记录状态演进

⑦ 领域服务程序返回结构化执行结果给 Agent

结果是:

  • 无语义包装
  • 无协议假设
  • 完全确定性的

⑧ Agent 将结果转为语义消息并返回对方


  • 解释发生了什么
  • 描述当前状态
  • 告知后续可执行意图

六、DAD 相比传统 DDD 的本质变化

传统 DDDDAD方法调用语义消息DTO 契约意图驱动聚合根AI Actor应用层编排Actor 自治状态快照状态演进结构耦合语义解耦
七、总结

DAD 不是给 DDD 加 AI,
而是承认:在 AI 时代,系统必须先“理解”,再“执行”。

AI Actor 用清晰的三段结构保证这一点:

  • Agent:唯一边界,负责理解与表达
  • Mailbox:串行化机制,保障一致性
  • 领域服务程序:确定性执行体
没有直接调用,没有结构耦合,只有被理解后的意图驱动执行。
这,才是 AI 时代的领域驱动设计:DAD

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册