news 2026/10/15 18:48:24

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI时代的领域驱动设计:DAD

当系统开始面对不确定输入、不确定协作对象、不确定业务演化速度时,
结构化消息 + 强耦合领域模型已经不再适合 AI 时代。

本文提出一种面向 AI 时代的领域驱动设计范式:DAD(Domain Actor Design),其核心系统单元是AI Actor。


一、从 Actor 模型说起:为什么领域需要 Actor

1️⃣ 经典 Actor 模型解决了什么

Actor 模型的基本原则很简单:

  • Actor 是独立执行单元

  • 只通过消息通信

  • 内部状态对外不可见

  • 消息进入邮箱(Mailbox),串行处理

它解决的是两个老问题:

  • 并发下的共享状态复杂性

  • 组件之间的直接方法调用耦合

Actor 不关心“谁调用我”,
只关心“我收到了什么消息”。


2️⃣ 传统 DDD + 消息的问题并没有真正消失

在现实系统中,即便你引入了消息:

  • 消息仍然是强结构化的 DTO

  • 接收方必须精确知道结构

  • 发送方必须知道对方能处理什么结构

结果是:

领域对象之间的耦合,从方法调用,转移成了消息结构耦合

这在系统规模变大后,会产生三个致命问题:

  1. 消息结构成了隐形契约

  2. 跨领域演化成本极高

  3. 系统无法容忍“不完美消息”


二、DAD 的核心单元:AI Actor

在 DAD 中,领域的最小自治单元不是 Aggregate,而是 AI Actor。

AI Actor =Agent + MCP 领域服务

这不是概念拆分,而是职责强制隔离。


三、AI Actor 的两个组成部分

1️⃣ Agent:语义层、边界层、对话层

Agent不做领域业务,只做三件事:

✅ 1. 语义解析与校验(前置)
  • 接收外部消息(通常是 JSON)

  • 判断:

    • 对方想干什么

    • 信息是否语义完整

    • 是否符合当前 Actor 的能力边界

消息“结构正确”≠“语义合法”

如果不合法:

  • 直接返回语义化错误

  • 不会进入邮箱

  • 不会污染领域状态

👉 这一步的意义非常关键:

Mailbox 里只能放“可以被处理的意图”


✅ 2. 意图映射为领域命令

通过 Agent:

  • 将模糊或多样的请求
    → 映射为Actor 内部可识别的领域命令

此时才进入 Actor 的Mailbox 排队处理。


✅ 3. 结果语义化与对外表达(后置)

当领域处理完成后:

  • MCP 只返回领域结果

  • Agent 负责:

    • 翻译结果

    • 解释状态变化

    • 构造对外的语义响应消息

MCP 不知道“对方是谁”
Agent 决定“如何把结果讲清楚”


2️⃣ MCP 领域服务:确定性、可追溯、可演化

MCP(Model Context Protocol)领域服务的特点是:

  • 只处理确定的领域命令

  • 不解析语义

  • 不做 IO 协议适配

  • 不关心消息来源

它只关注三件事:

  1. 当前状态

  2. 输入命令

  3. 状态如何变化


四、为什么 MCP 必须配合事件溯源存储

1️⃣ 传统 DDD 存储的问题

传统做法是:

  • 聚合根 → ORM → 表

  • 状态是“当前快照”

问题在 AI 时代被放大了:

  • 无法解释“为什么会变成现在这样”

  • 无法回放 Agent 决策上下文

  • 无法支持模型迭代后的再推演


2️⃣ 事件溯源是 AI Actor 的天然存储方式

在 DAD 中:

  • 状态 = 事件序列的结果

  • 每一次 MCP 执行:

    • 消费一个命令

    • 产生一组领域事件

事件记录的是:

  • 发生了什么

  • 在什么上下文下发生

  • Actor 的状态如何演进

👉 这带来三个直接收益:

  1. 完整决策可追溯

  2. 支持 AI 逻辑重放 / 校正

  3. 代码与数据逐步融合


五、AI Actor 的完整消息处理流程(重点)

下面是完整、闭环、不缺角色的流程。


🔁 AI Actor 消息处理生命周期

① 消息到达 Actor 边界
  • 来自用户 Actor

  • 来自其他领域 Actor

  • 来自外部系统

形式可能是 JSON,但不是结构校验阶段


② Agent 进行语义解析与校验(前置关卡)

Agent 判断:

  • 意图是否明确

  • 参数是否语义完整

  • 是否在当前 Actor 的职责范围内

❌ 不合格:

  • 直接返回语义错误

  • 说明:

    • 缺什么

    • 错在哪里

    • 应该如何修正

✅ 合格:

  • 生成标准化领域命令


③ 命令进入 Mailbox 排队

此时进入的是:

“已被理解、已被验证的意图”

Mailbox 保证:

  • 串行

  • 可持久化

  • Actor 重启不丢失


④ MCP 领域服务执行命令
  • 读取当前状态(由事件还原)

  • 执行业务规则

  • 产生新的领域事件


⑤ 事件持久化(事件溯源)
  • 事件写入存储

  • Actor 状态更新


⑥ MCP 返回执行结果给 Agent

这里只是领域结果,不包含对外语义。


⑦ Agent 语义化结果并返回消息

Agent:

  • 将结果转换为对方能理解的语义消息

  • 可以是:

    • 成功解释

    • 状态变化说明

    • 后续建议操作


六、DAD 的本质变化

传统 DDDDAD
方法调用语义消息
DTO 耦合意图解耦
聚合根为中心Actor 为中心
状态快照事件溯源
应用层编排Actor 自治

七、总结一句话

AI Actor 并不是“加了 AI 的 Actor”,
而是让“理解”成为系统的一等公民。

  • Agent 负责理解、校验、表达

  • MCP 负责确定性领域演化

  • 事件溯源负责记忆与可追溯性

这,才是AI 时代的领域驱动设计:DAD。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/15 4:51:16

Sambert低成本部署方案:中小企业TTS系统构建实战指南

Sambert低成本部署方案:中小企业TTS系统构建实战指南 1. 开箱即用的中文语音合成体验 你是不是也遇到过这些情况? 做产品演示时,需要一段自然流畅的中文配音,但外包成本动辄上千元;运营团队每天要生成几十条短视频口…

作者头像 李华
网站建设 2026/10/14 22:07:52

2005-2024年上市公司信息透明度数据

数据简介 本数据参照Hutton等学者(2009)在其相关研究中所采用的做法,精心选取了特定指标来对上市公司信息透明度进行量化评估。具体而言,我们运用公司过去三年操控性应计项目绝对值之和这一指标,并将其命名为“Opaque…

作者头像 李华
网站建设 2026/10/14 21:01:50

FSMN-VAD输出结构化表格,数据分析省心多了

FSMN-VAD输出结构化表格,数据分析省心多了 语音处理流程中,最让人头疼的环节之一,往往不是模型推理本身,而是前期的数据清洗——尤其是面对几十分钟甚至数小时的会议录音、客服对话或教学音频时,手动剪掉大段静音、定…

作者头像 李华
网站建设 2026/10/14 14:25:17

Qwen-Image-Layered能否用于视频帧处理?可行性分析

Qwen-Image-Layered能否用于视频帧处理?可行性分析 Qwen-Image-Layered 是一个专为单张图像设计的图层分解模型,其核心能力是将输入的 RGB 图像解析为多个语义解耦、空间对齐的 RGBA 图层。这种表示天然支持独立编辑——调整某一层的位置、大小或颜色&a…

作者头像 李华
网站建设 2026/10/15 12:24:40

cv_unet_image-matting vs MODNet:边缘平滑度与处理效率全方位对比评测

cv_unet_image-matting vs MODNet:边缘平滑度与处理效率全方位对比评测 1. 为什么抠图效果差?不是模型不行,是参数没调对 很多人用AI抠图工具时遇到类似问题:人像边缘发白、毛边明显、头发丝糊成一团,或者换背景后总…

作者头像 李华
网站建设 2026/10/15 7:53:23

CAM++语音加密存储:安全合规性部署实战

CAM语音加密存储:安全合规性部署实战 1. 为什么说“语音识别”不等于“语音加密存储” 很多人第一次看到CAM系统时,第一反应是:“哦,这是个说话人识别工具”。确实,它能准确判断两段语音是否来自同一人,也…

作者头像 李华