news 2026/8/2 21:49:41

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/8/1 12:42:54

概念项目快筛:如何通过智能系统提升项目评估效率与科学性

引言随着创新创业浪潮的不断推进,项目方、投资方以及科技管理部门面临着海量项目信息的筛选与评估挑战。如何从众多概念项目中精准定位高潜力标的,从而提升筛选效率与决策科学性,成为当前行业亟待解决的问题。科易网推出的概念项目快筛系统&a…

作者头像 李华
网站建设 2026/8/1 0:38:59

BERT、ERNIE、NEZHA谁更适合中文填空?镜像测评推荐

BERT、ERNIE、NEZHA谁更适合中文填空?镜像测评推荐 1. 中文填空任务到底在考什么? 你有没有试过这样一句话:“他做事一向很____,从不拖泥带水。” 空格里填“干脆”?“利落”?还是“爽快”? 表…

作者头像 李华
网站建设 2026/7/31 13:57:05

从0到1:用预装镜像轻松实现Qwen2.5-7B自我认知修改

从0到1:用预装镜像轻松实现Qwen2.5-7B自我认知修改 你有没有想过,让一个大模型“认”你是它的开发者?听起来像是科幻桥段,但今天,我们只需要一台带NVIDIA显卡的机器和一个预装好的AI镜像,就能在十分钟内完…

作者头像 李华
网站建设 2026/7/31 19:49:14

最大批量50张,建议每次不超过20张

最大批量50张,建议每次不超过20张:UNet人像卡通化镜像实测指南 在AI图像处理领域,“把真人照片变成动漫风格”早已不是新鲜事,但真正能落地、好用、不折腾的工具却不多。今天要聊的这个镜像——unet person image cartoon compou…

作者头像 李华
网站建设 2026/8/1 8:59:22

Sambert实时监控看板:Prometheus集成部署指南

Sambert实时监控看板:Prometheus集成部署指南 1. 引言与学习目标 你是否正在为AI语音服务的稳定性发愁?尤其是像Sambert这类对资源敏感的中文语音合成系统,一旦出现延迟或崩溃,用户体验会大打折扣。本文将手把手带你搭建一套专为…

作者头像 李华
网站建设 2026/7/31 21:57:37

SenseVoiceSmall避坑指南:新手常见问题全解答

SenseVoiceSmall避坑指南&#xff1a;新手常见问题全解答 还在为语音识别结果里一堆奇怪符号而困惑&#xff1f;上传一段粤语录音&#xff0c;结果情感标签全是“<|SILENCE|>”&#xff1f;点开WebUI界面&#xff0c;点击“开始AI识别”后页面卡住不动&#xff0c;控制台…

作者头像 李华