资讯详情

掌握 DDD:开发可维护、可扩展的大模型 Agent,小白程序员必备(收藏版)

📅 2026/10/29 10:59:36 | 华诺云谱 👁 阅读
掌握 DDD:开发可维护、可扩展的大模型 Agent,小白程序员必备(收藏版)
本文探讨了使用领域驱动设计DDD开发大模型 Agent 的必要性指出了传统 Agent 开发方式在工程化中遇到的问题。文章详细阐述了如何划定 Agent 领域边界区分聚合根、实体和值对象并给出了具体的领域模型拆解示例。此外还介绍了模型之间的协作流程和工程落地的实操建议最后总结了该模型能支撑的高级能力为开发生产级 Agent 提供了实用指导。一、先回答一个核心问题为什么 Agent 需要 DDD传统写 Agent 的方式是过程式思维 接收用户消息 → 交给 LLM 思考 → 选择工具 → 执行工具 → 拼接结果返回。这套思路跑 Demo 没问题但一旦进入工程化会遇到一堆典型问题会话只是一串消息数组没有区分 “用户输入、模型思考、工具入参、工具返回、系统通知”Agent 状态是零散变量存 Redis 的时候不知道哪些要持久、哪些是临时计算值工具只是一个个函数没有统一描述、权限、限流、版本、超时定义任务指令没有生命周期没有待执行、执行中、成功、失败、取消这些状态流转多 Agent 委派场景下主管 Agent 下发任务Worker 接收任务没有统一的领域契约。DDD 的核心价值就是把 Agent 的业务能力和底层执行逻辑分开。 我们先定义领域里有什么 “东西”这些东西有什么属性、能发生什么行为、互相怎么关联再去写框架代码、做存储、做通信。一句话总结LLM 只是领域里的一个 “能力组件”而不是整个系统的中心。二、划定 Agent 领域边界限界上下文做 DDD 第一步先划限界上下文避免无限膨胀。 我们这里聚焦独立执行单元 Agent 上下文单 Agent后续多 Agent 委派、A2A 通信属于另外一个限界上下文不要混在一起。✅ 当前上下文包含的内容用户发起的指令任务Agent 会话所有交互消息记录Agent 自身运行时状态工具定义、工具调用请求与结果记忆快照短期记忆、摘要记忆校验规则、权限标签❌ 不属于这个上下文要剥离出去消息总线、A2A 跨 Agent 通信多 Agent 上下文向量库检索底层实现RAG 基础设施上下文日志链路追踪、计费统计可观测上下文用户账号、租户权限主数据用户中心上下文边界划清楚建模才不会越写越杂。很多项目翻车就是把跨上下文逻辑揉在一起Agent 里面直接写 MQ 发送逻辑、直接写向量库连接代码领域模型和基础设施耦合死。三、领域模型拆解区分聚合根、实体、值对象DDD 里有两个基础概念这里简单说清楚不用晦涩术语聚合根整个聚合的入口是外部唯一可以直接引用的对象拥有独立全局 ID实体有唯一标识会持续变化值对象没有独立 ID只描述属性不可变依附于实体。我们直接落地 Agent 领域的模型清单。1 聚合根AgentSession 会话聚合根聚合根会话 Session所有本次任务相关的消息、状态、子指令、工具调用记录都归属在这个会话下。外部只能通过 Session ID 访问这一组数据。核心属性sessionId全局唯一 ID聚合根标识tenantId租户标识多租户场景必备agentCodeAgent 类型编码不同业务 Agent 区分status会话状态枚举CREATED / RUNNING / PAUSED / COMPLETED / FAILED / CANCELLEDcreatedAt、updatedAt、expireAt时间戳parentSessionId父会话 ID用于支持任务委派A2A 场景主管 Agent 会话关联 Worker 会话metadata扩展标签比如触发渠道、优先级内部包含子实体 / 值对象消息实体 Message运行状态实体 AgentState指令实体 Instruction工具调用记录 ToolCallRecord规则约束聚合内不变性 会话一旦标记完成 / 失败不允许新增消息和工具调用 所有子对象不能脱离 Session 单独存在。2 实体 1Instruction 指令任务指令就是 Agent 要完成的目标是用户或者上级 Agent 下发的任务这是 Agent 领域里非常核心的实体。 很多 Demo 直接把指令塞在 prompt 里工程上必须抽成独立实体管理生命周期。属性instructionId指令唯一标识sessionId归属会话content原始指令文本goal结构化目标拆解后的目标方便校验是否完成status指令状态PENDING / PLANNING / EXECUTING / VERIFYING / DONE / REJECTEDplan执行计划LLM 输出的分步方案值对象deadline截止时间retryCount重试次数assignee执行 Agent 标识A2A 委派时使用行为生成执行计划校验目标是否达成标记失败 / 重派取消任务区分用户输入的一句话只是指令的来源Instruction 实体承载的是这个任务完整生命周期。3 实体 2Message 交互消息消息是会话里每一轮交互记录不要简单存纯字符串数组这是最常见的坏习惯。属性messageId消息 IDsessionIdsenderType发送方枚举 USER / LLM / TOOL / SYSTEM / AGENT_PEERsenderId发送方标识工具 ID、AgentID、用户 IDmessageType消息类型 TEXT / TOOL_CALL_REQUEST / TOOL_CALL_RESULT / ERROR / NOTICEpayload结构化内容jsonrawContent原始文本tokenUsage本次消耗 token值对象createdAt重点好处 后续做检索、过滤、可观测、成本统计不需要去解析文本直接按类型筛选。4 实体 3Tool 工具定义 ToolCallRecord 调用记录这里分成两块工具定义领域实体和单次调用记录会话内实体。Tool工具定义全局实体跨会话复用toolId、toolCode、name、descriptioninputSchema、outputSchemaauthRule权限标签timeout、rateLimit、retryPolicyprovider工具提供者MCP 服务地址、本地函数标识ToolCallRecord单次调用记录归属会话聚合recordId、sessionId、instructionIdtoolIdinputArgs入参output返回结果statusINIT / RUNNING / SUCCESS / ERROR / TIMEOUTcost、costTime划重点Tool 是 “能力定义”ToolCallRecord 是 “这一次的执行流水”。 对接 MCP 的时候MCP 服务就是 Tool 的一个 provider 实现模型完全不用改动这也是之前 A2AMCP 链路能顺畅打通的底层原因。5 实体 4AgentState 运行状态AgentState就是大家常说的 Agent 状态属于会话内实体保存 Agent 思考过程中的中间变量。区分临时状态和持久化状态是做断点续传的关键。属性stateIdsessionIdmemorySnapshot摘要记忆快照值对象variableMap业务中间变量结构化 KV比如查询出来的数据、临时计算结果nextStepHint下一步要执行的动作标记checkpointVersion快照版本号断点续传用⚠️ 重要原则 不要把大模型的完整思考日志塞进 StateState 只存结构化、机器可读的数据用来恢复执行。大模型思考文本放在 Message 里面。6 值对象清单无独立 ID不可变TokenUsage输入 token、输出 token、花费PlanStep计划单步内容、顺序、依赖项MemorySummary摘要内容、摘要范围、生成时间ErrorInfo错误码、错误信息、根因标签PermissionTag权限标签集合四、模型之间的协作流程一条完整链路我们用一个简单场景串一遍用户下发一条指令Agent 调用 MCP 工具查询数据库。用户提交需求系统创建Session聚合根同时生成一条Instruction指令实体状态 PENDINGAgent 读取 Instruction生成执行 Plan值对象指令状态变为 PLANNING写入 MessageLLM 类型消息内容是执行方案更新 AgentState 快照生成 ToolCallRecord关联对应 Tool 定义通过 MCP 协议发起工具调用MCP 返回结果写入新的 Message 和 ToolCallRecord状态更新 SUCCESSAgent 校验指令目标是否达成达成后 Instruction 标记 DONESession 标记 COMPLETED每一步都可以打 Checkpoint保存 AgentState支持暂停、断点恢复。如果是 A2A 委派场景 主管 Agent 创建新的子 Session下发子 Instruction通过 A2A 协议把指令发给 Worker AgentWorker 内部复用同一套领域模型。通信协议A2A只是传输层两边 Agent 的领域模型保持统一。这就是这套模型强大的地方单 Agent、多 Agent 委派一套领域模型复用。五、工程落地的实操建议 避坑点坑 1不要把领域模型和框架数据结构绑定LangGraph 有 StateSpring AI 有 ChatMemory。这些是框架运行载体不是领域模型。 正确做法领域模型是独立 POJO / 数据类框架 state 只负责映射领域模型框架换了领域模型不动。坑 2状态里面塞满非结构化文本很多开发者直接把历史消息字符串全部塞状态导致快照巨大、恢复慢、难以检索。 遵循我们的模型Message 存交互文本AgentState 只存结构化变量和摘要快照。坑 3指令没有生命周期无法做任务管控没有 Instruction 实体你就没法做任务超时提醒、任务取消、任务重分配、委派失败回滚。 这也是生产 Agent 和 Demo Agent 最核心分界线。坑 4工具和调用记录混在一起Tool 定义全局统一管理方便权限、限流、版本管理调用记录归属会话用来审计、重试、回放。对接 MCP 的时候只需要新增一类 Tool Provider不用改动指令、会话逻辑。存储落地建议Session、Instruction、ToolCallRecord、Message数据库持久化PostgreSQL、MySQLAgentState 快照Redis配合版本号做断点Tool 定义配置中心或者数据库支持动态注册 MCP 工具六、这套模型能支撑哪些高级能力建好这套领域模型之后后面很多高级功能是自然而然生长出来的而不是硬编码✅ 会话断点续传、暂停恢复✅ 指令超时、失败重试、人工介入✅ 工具调用审计、回放测试✅ A2A 跨 Agent 任务委派主管→Worker✅ Agent 评测基于 Instruction 的目标结果做自动化校验✅ 记忆分层会话绑定记忆快照长期记忆单独领域模块✅ 多租户隔离tenantId 作为顶层过滤条件七、本篇小结DDD 不是玄学放到 Agent 开发里本质就是一句话把模糊的智能行为拆成有身份、有生命周期、有明确行为的对象。我们这一篇划定了 Agent 单执行单元的限界上下文定义了聚合根 Session以及指令、消息、工具、运行状态四大核心实体区分了实体和值对象打通了从用户任务下发到工具执行的模型流转。LLM 负责思考和生成方案但是任务是谁、进度到哪、有哪些交互记录、工具怎么调用、能不能断点恢复全部由领域模型接管。 这是从写 Demo走向可维护、可扩展生产级 Agent 架构非常关键的一步。大模型的知识又多又杂到底怎么学做这行久了被问最多的问题就一个大模型的知识又多又杂我到底先学啥翻了一堆资料看啥都像重点结果啥都没学进去。今天把我自己一路摸出来的顺序捋一遍零基础、应届生、转行的都适用。跟着走至少方向不乱、不瞎忙学完拿得出手。第一阶段10天初阶应用这一阶段就一个目标把大模型真正玩明白不是只会聊天那种而是能调教它、能用代码把大模型和业务接起来。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用这阶段正式进实战目标很实在做出两个能拿出手的东西——一个私有知识库一个 agent 对话机器人。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…走完这 30 天Python 或 JavaScript 背景的基本能独立做一套 RAG 应用简历上也敢写大模型应用开发了。第三阶段约20天动手微调学到这你已经开始 “造” 模型了 —— 通过微调搞出垂直领域的专用小模型。为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你从 “只会用” 变成 “能造” 的 AI 小子。那么你还想往下探索吗想要入局AI大模型赛道、抢占行业红利的朋友微信扫描下方CSDN官方认证二维码即可100%免费领取全套学习资料第四阶段20天商业闭环部署落地技术学完落地才算数。这阶段带你搞明白大模型怎么真正跑起来、用起来。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…想要入坑大模型的朋友给大家准备了一份2026 年最新 AI 大模型全套学习资料1、大模型系统化学习路线2、大模型学习视频教程3、大模型学习书籍电子文档4、AI大模型最新行业报告5、大模型项目实战配套源码6、2026大模型大厂面试真题7、为什么要学习大模型我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年人才缺口已超百万凸显培养不足。随着AI技术飞速发展预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。8、适合谁学传统后端 / Java / 前端开发想转型 AI 应用大学生、应届生想拿更好的 offer产品经理、运营想武装职业竞争力技术负责人想给团队落地提效学习是反人性的但回报是真金白银。技术会更新赛道会切换但只要你先动手机会就永远站在你这边。9、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。想要入局AI大模型赛道、抢占行业红利的朋友微信扫描下方CSDN官方认证二维码即可100%免费领取全套学习资料好了就写到这。路线是死的人是活的卡住了随时来问我。觉得有用就点个收藏别让它进收藏夹吃灰——动起来比啥都强。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑