Team AI 整个建模流程怎么讲
先把“建模”和“Agent 编排”分开
- 建模回答的是:系统里有哪些稳定对象、关系、语义和约束。
- Agent 编排回答的是:目标怎么进入系统、怎么被路由、怎么执行、怎么回写、怎么治理。
- 在 Team AI 里两者相关,但面试时最好拆开讲;这篇只讲建模,编排单独看 Team AI 里 Agent 编排怎么讲。
先说结论
这类问题不要讲成:
我们先建表,再写接口,再做页面。
这样太流水线,也没有建模感。
更好的讲法是:
我们是先从真实业务对象和协作关系出发,先想清楚系统里有哪些核心对象、它们之间是什么关系、用户会围绕这些对象做什么动作,然后再把它们落成领域模型、API 资源模型,最后再落到前端的页面模型和交互模型。
这句话一出来,整个层次就对了。
一分钟版本
Team AI 的建模不是从页面开始的,也不是从数据库表开始的。结合当前项目,我会先找一级上下文,也就是 project,然后再往下拆 task、session、board、card、logical entity、diagram 这些稳定对象。logical entity 负责沉淀规范化业务节点,diagram 负责把节点和关系画成结构,发布以后再沉淀成 knowledge graph 给项目页和 AI 消费。后端把这些对象做成领域模型和 HATEOAS 资源,前端再沿着资源关系去组织页面、状态和导航,所以整个流程更像是业务模型 → 资源模型 → UI 模型,而不是反过来。
两到三分钟版本
1. 先从业务场景出发
我们做这个项目时,最开始不会先想页面长什么样,而是先想团队在这个系统里到底要协作什么。因为 Team AI 不只是聊天,而是项目协作型产品,所以最稳定的东西不是某个弹窗或者某张表,而是项目、任务、会话、看板、逻辑实体、图谱这些业务对象。
2. 再识别核心对象和关系
接下来会看这些对象之间的关系。比如项目是一个比较强的业务上下文,很多东西都挂在项目下面;会话、任务、看板都属于项目;逻辑实体属于项目语义层;diagram 会把这些实体和关系画出来;diagram 发布之后又会沉淀成 knowledge graph。这里其实已经不是在想 UI 了,而是在想系统的骨架。
3. 再定义对象上的动作
对象有了以后,还要想每个对象上到底发生什么动作。比如项目能不能创建任务、查看会话、进入看板;逻辑实体能不能新增、分类、维护 definition;diagram 能不能保存 draft、更新节点和边、发布成 graph;知识图谱能不能查看节点和关系。这一步很重要,因为业务系统不是“有什么数据”这么简单,更关键的是“这些数据允许发生什么动作”。
4. 再落到后端资源模型
后端这边不是简单把对象做成表和 DTO,而是把它们包装成资源模型,通过 HATEOAS 把关系和动作一起暴露出来。这样返回给前端的就不只是字段,还包括当前资源能跳到哪里、能做什么动作。这个设计对前端很关键,因为前端看到的不只是静态数据,而是可导航、可操作的资源。
5. 最后落到前端页面模型
前端这边再基于这些资源去做页面建模。比如当前项目里已经有 diagrams、logical entities、knowledge graph、conversations 这些独立工作面,本质上不是随便切几个 tab,而是在消费不同资源和不同关系。对前端来说,我关心的不是某个页面对应哪个接口,而是当前页面对应的核心资源是什么,它依赖哪些关系,页面上的动作来自哪些资源能力。这样页面结构会更稳定。
结合当前项目功能讲,会更像真项目
1. Project 是一级上下文,不是普通详情页
在当前项目里,project 下面已经明确挂了 diagrams、logical-entities、knowledge-graph、conversations 这些资源,所以 project 不是一个名字加描述的详情页,而是整个建模与协作的上下文容器。
2. Logical Entity 是建模基座
当前项目里逻辑实体不是一个随手写的 label,而是有 type、subType 和 definition 的规范化对象。你可以把它理解成“先把业务节点命名和分类做对”,这样后面 diagram 和 graph 才不会飘。像现在项目里就已经能区分 EVIDENCE、PARTICIPANT、ROLE、CONTEXT 这几类语义。
3. Diagram 是建模工作台
当前项目里 diagram 不是静态展示,而是真的可编辑、可保存 draft、可更新节点和边的工作面。也就是说,建模不是在文档里画个草图,而是在系统里把节点关系维护成一份可持续演进的结构。
4. Knowledge Graph 是发布后的消费层
这也是当前项目里最适合拿出来讲的地方:diagram 不是画完就结束,而是可以发布成 knowledge graph。项目首页已经直接消费 knowledge-graph 资源,把节点和边可视化出来。这样建模结果不是只给人看,也开始变成系统和 AI 可消费的上下文。
5. 前端不是建模的旁观者
当前项目里前端并不是等后端把对象都定完再来接页面,而是直接承接 diagrams、logical entities、knowledge graph 这些建模工作面。也就是说,前端参与的不只是展示,而是“模型如何进入系统、如何被编辑、如何被消费”的整条链路。
如果面试官问“你说的建模,具体是怎么一步步做的”
你可以直接按下面这 5 步说。
第一步:找稳定对象
我先不看页面,而是先找这个系统里相对稳定的业务对象。因为页面会变,交互会变,但像项目、任务、会话、消息这些东西是相对稳定的。只要对象找准了,后面很多设计都会顺。
第二步:找关系
对象找完之后,我会重点看它们之间怎么组织。比如谁是谁的上下文,谁依附于谁,谁会影响谁。因为复杂系统往往不是难在对象多,而是难在对象之间的关系多。
第三步:找动作
接着我会看每个对象上会发生哪些关键动作,而不是只看字段。比如任务不只是有标题、状态这些字段,更关键的是它会流转、阻塞、评审、完成。动作比字段更接近真实业务。
第四步:抽 API/资源
然后再把这些对象和动作映射成后端资源。这里不是单纯想“接口怎么命名”,而是想“客户端应该怎么理解这个对象、怎么发现它的下一步能力”。
第五步:落到前端页面和状态
最后前端再把资源组织成页面和交互。页面不是建模的起点,而是建模的落点。这样做出来的页面逻辑会更清楚,也更容易跟业务保持一致。
最适合口语表达的一段
你可以直接背这一段:
我们这个项目的建模流程,简单说不是从数据库或者页面开始,而是从业务对象开始。先看团队协作里最稳定的核心对象是什么,比如 project、task、session、logical entity、diagram、knowledge graph;再看这些对象之间的关系,比如 task 和 session 都挂在 project 下面,logical entity 提供规范化业务节点,diagram 负责表达节点关系,diagram 发布以后再沉淀成 knowledge graph;然后再看每个对象上有哪些关键动作。等这些想清楚以后,后端会把它们做成资源模型,把关系和动作暴露出来;前端再基于这些资源去做页面和交互。所以整个过程其实是业务建模先行,页面只是最后一层表达,不是起点。
如果面试官继续追问“那你前端参与建模了吗”
这题很关键,不要把自己说成纯消费方。
推荐回答
我觉得前端一定是参与建模的,只是参与的层次不完全一样。后端可能更偏领域对象和资源暴露,但前端会参与页面模型、交互动作和消费抽象的建模。比如一个页面到底围绕哪个核心资源组织,哪些能力应该做成独立资源关系,哪些状态应该在页面层收敛,这些其实都是前端建模的一部分。如果前端只是等接口来,那最后页面会很碎,也很难持续迭代。
如果面试官问“这个流程和普通 CRUD 项目有什么不同”
推荐回答
普通 CRUD 项目很多时候是从表单和列表反推接口,再从接口反推数据结构,建模相对会浅一些。Team AI 这种项目不太一样,因为它里面有项目协作、任务流转、会话上下文、知识图谱这些持续变化的业务关系,所以如果只按页面和接口去推,很容易做着做着就乱了。我们更强调先把业务对象、关系和动作想清楚,再落到资源和页面,这样系统骨架会更稳。
如果面试官问“为什么动作比字段重要”
推荐回答
因为字段只是对象的静态描述,但业务系统真正复杂的地方通常发生在动作上。比如一个任务的标题和优先级都不难建模,真正难的是它什么时候能进入开发、什么时候必须进入评审、被阻塞后怎么处理、和看板规则怎么对齐。所以如果只盯着字段,最后做出来的系统通常会偏静态,看起来数据很完整,但业务张力不够。
你可以举的例子
例子一:项目
项目不是一个名字加描述这么简单,它其实是很多东西的上下文容器。任务、会话、知识图谱、看板都可以挂在项目下面。所以项目是一个很强的一级对象。
例子二:任务
任务最关键的不是几个字段,而是状态流转和工作流语义。它在系统里不是孤立数据,而是会进入看板、被不同角色处理、产生痕迹和上下文。
例子三:会话
会话也不是简单消息列表。它背后有参与者、有消息流、有 AI 响应、可能还会和项目上下文产生关系。所以它更像一个持续互动的业务对象。
例子四:知识图谱
知识图谱其实是在给项目里的结构化知识建模,让系统不只是存文档,而是知道节点和边之间的关系。这个对后续 AI 消费和上下文组织都很重要。
例子五:图和图谱的关系
如果想结合当前项目讲得更具体,我会说 diagram 更像建模工作台,knowledge graph 更像发布后的消费结果。前者偏编辑,后者偏消费;这样一拆,系统就既有建模入口,也有稳定输出层。
如果你想把“建模流程”讲得更像高级前端
你可以加一句:
对我来说,前端建模不是画几个 TypeScript type,而是决定页面围绕什么资源组织、动作怎么表达、状态怎么收敛、哪些关系应该在页面层显式存在。
这句话很加分。
因为它说明你理解的建模,不是只停留在接口类型定义。
最容易踩的坑
1. 不要把建模讲成画 ER 图
面试官问建模流程,不一定真想听数据库。
他更想听你是不是有“从业务到系统”的思维。
2. 不要只讲后端
虽然领域建模听起来更像后端话题,但你是前端,最后一定要落回:
- 前端如何参与
- 前端如何消费
- 前端如何继续做页面模型抽象
3. 不要一上来就说 DDD
可以讲,但不要先讲。
先讲人话:
- 对象
- 关系
- 动作
- 资源
- 页面
讲到一半再说:
其实这套思路和 DDD 会比较接近。
这样更自然。
一个更完整、更自然的收口版本
所以如果让我总结 Team AI 的建模流程,我会说它是一个从业务对象出发的逐层映射过程。先识别 project、task、session、logical entity、diagram、knowledge graph 这些核心对象;再梳理对象之间的关系和动作;后端把它们沉淀成资源模型;前端再基于资源去组织页面、交互和状态。这样做的好处是系统不会被页面牵着走,而是先有稳定的业务骨架,再去长出 UI。对复杂项目来说,这个顺序很重要。
如果面试官追问“那 Agent 编排怎么讲”
我会明确把这个问题单独拆出去。建模回答的是“系统里有什么对象、关系和语义”,Agent 编排回答的是“目标怎么进入系统、怎么路由 specialist、怎么触发 workflow、怎么回写 trace 和治理规则”。在 Team AI 里我会单独用 Team AI 里 Agent 编排怎么讲 讲这条链,而不会和建模混成一件事。