Coze Studio 技术架构与源码分析
2026/9/7 19:33:34 网站建设 项目流程

Coze Studio 技术架构与源码分析

一句话概括:Coze Studio 不是 Coze 平台的简单开源复刻,而是一套以“领域驱动设计(DDD)+ 整洁架构”为骨架、以“编译时-运行时双阶段工作流引擎”为心脏、以“可视化画布即源代码”为编程范式的生产级 AI Agent 开发平台——让复杂的 AI 工作流从“拖拽连线”变成“可编译、可中断、可恢复、可流式传输的确定性系统”。

一、引言

如果你用过 AI 工作流工具,你一定见过类似这样的界面:左侧是节点面板,中间是画布,右侧是配置栏——拖拽一个“大模型”节点、拖拽一个“知识库检索”节点、用线连起来、点击运行。

看起来很简单,对吧?

但当你的工作流需要等待用户输入才能继续执行时;当你的工作流运行到第 15 步突然崩溃,一切从头再来时;当你需要精确理解一个节点为什么输出了一个错误结果时——你发现画布背后的“黑盒”完全没有给你任何解释。

字节跳动的 Coze 平台在 2023 年推出后迅速成为国内最受欢迎的 AI Bot 开发平台之一。2025 年 7 月 25 日,字节跳动正式将 Coze 的两大核心项目开源。其中Coze Studio一站式 AI Agent 开发工具,提供从开发到部署的完整工具链。开源版本包含了完整的工作流引擎、Agent 系统、知识库管理和插件框架。

那么,这套“把可视化画布变成可执行系统”的架构到底是如何设计的?它的“编译时 + 运行时”双阶段工作流引擎背后是什么原理?为什么一个工作流能在等待用户输入时优雅暂停、在服务器重启后从断点恢复?我们从源码出发,一步步拆解。

二、整体架构与设计哲学

2.1 架构总览:DDD 分层 + 微服务

Coze Studio 建立在一个现代、可扩展的架构上,旨在支持大规模的 AI 代理开发。从高层次来看,系统分为前端和后端组件,通过明确定义的 API 进行通信。

┌──────────────────────────────────────────────────────────────────────┐ │ 前端层(Frontend) │ │ React 18 + TypeScript + Semi Design │ │ 可视化画布 · 节点拖拽 · 实时预览 │ │ Rush.js Monorepo(135+ 前端包) │ └───────────────────────────────┬──────────────────────────────────────┘ │ API(Hertz HTTP) ▼ ┌──────────────────────────────────────────────────────────────────────┐ │ API 层(API Layer) │ │ 路由 · 认证 · 中间件 · 请求/响应序列化 │ │ /api/* · /v1/*(OpenAPI)· /v3/* │ └───────────────────────────────┬──────────────────────────────────────┘ │ ┌───────────────────────────────▼──────────────────────────────────────┐ │ 应用层(Application Layer) │ │ 用例编排 · 事务管理 · 跨领域协调 │ │ 应用服务(协调各领域) │ └───────────────────────────────┬──────────────────────────────────────┘ │ ┌───────────────────────────────▼──────────────────────────────────────┐ │ 领域层(Domain Layer) │ │ Agent · Workflow · Knowledge · Plugin · Conversation · Memory │ │ 核心业务模型与规则 · 领域服务 │ └───────────────────────────────┬──────────────────────────────────────┘ │ ┌───────────────────────────────▼──────────────────────────────────────┐ │ 基础设施层(Infrastructure Layer) │ │ MySQL · ElasticSearch · Redis · 消息队列 · RPC Client │ └──────────────────────────────────────────────────────────────────────┘

图:Coze Studio 的四层架构。前端负责可视化编排,API 层处理 HTTP 请求,应用层协调用例,领域层承载核心业务逻辑,基础设施层提供技术支撑。

各层职责

层级职责关键目录
API 层处理 HTTP 请求、路由、认证以及请求/响应序列化backend/api/
应用层编排领域对象以执行特定用例,管理事务backend/application/{domain}
领域层包含核心业务模型和规则backend/domain/{domain}
基础设施层提供技术能力,如数据库访问backend/infra/

看到这里,你可能会问:为什么 Coze Studio 要用 DDD 分层架构,而不是简单的 MVC?

因为 Coze Studio 不是一个简单的 CRUD 应用——它需要处理 Agent 创建、工作流编排、知识库检索、插件集成等多个复杂领域。DDD 的分层架构让每个领域可以独立演进,核心业务逻辑不依赖技术细节。应用层作为“协调器”编排领域对象,领域层作为“承重墙”承载核心规则,基础设施层作为“可插拔的适配器”提供技术能力。

技术架构特点

层次技术选型说明
后端语言Golang高性能、高并发
微服务框架CloudWeGo字节跳动开源微服务治理框架
HTTP 框架Hertz字节开源的高性能 HTTP 框架
LLM 接入层Eino字节开源的 LLM 应用框架
前端框架React 18 + TypeScript现代化组件化 UI
前端包管理Rush.js135+ 前端包 Monorepo 管理
UI 组件库Semi Design字节开源的企业级设计系统

2.2 设计哲学:DDD 是骨架,工作流是心脏

Coze Studio 的设计围绕几个核心哲学展开:

哲学一:领域驱动设计(DDD)是骨架。后端使用 Golang 开发,并遵循微服务架构中的领域驱动设计方法。代码围绕业务领域组织,并将不同关注点分离到不同的层次中。每个业务领域都遵循 API → 应用 → 领域 → 基础设施的分层架构。

哲学二:工作流引擎是心脏。Coze Studio 开源的核心是完整的工作流引擎——这是扣子团队投入最大精力构建的核心组件。工作流引擎基于 DAG 的编排运行时,它将可视化画布设计转化为可执行、可恢复且可流式传输的计算图。

哲学三:编译时 + 运行时双阶段执行。工作流引擎遵循清晰的编译时(Compile Time)和运行时(Runtime)阶段划分。编译时将画布 JSON 编译为可执行的 Runnable,运行时由 WorkflowRunner 驱动执行。

2.3 包结构与代码规模

Coze Studio 整体采用 Monorepo 架构,项目结构如下:

coze-studio/ ├── backend/ # 后端服务(Go) │ ├── api/ # API 路由与处理器 │ ├── application/ # 应用服务层 │ │ ├── agent/ # Agent 应用服务 │ │ ├── conversation/ # 对话应用服务 │ │ ├── knowledge/ # 知识库应用服务 │ │ └── workflow/ # 工作流应用服务 │ ├── domain/ # 领域层 │ │ ├── agent/ # Agent 领域 │ │ ├── workflow/ # 工作流领域 │ │ │ ├── internal/ # 内部实现 │ │ │ │ ├── canvas/ # 画布解析与适配 │ │ │ │ └── compose/ # 编译与执行引擎 │ │ ├── knowledge/ # 知识库领域 │ │ ├── plugin/ # 插件领域 │ │ └── conversation/ # 对话领域 │ └── infra/ # 基础设施层 ├── web/ # 前端应用(React + TypeScript) └── docker/ # Docker 部署配置

三、核心抽象与编程模型

3.1 领域层——DDD 的“承重墙”

Coze Studio 的架构围绕几个核心领域组织:

领域职责源码位置
代理系统(Agent)创建能够理解自然语言、执行任务并与用户互动的智能 AI 代理backend/domain/agent
工作流引擎(Workflow)通过可视化工作流设计实现复杂业务逻辑的编排backend/domain/workflow
知识管理(Knowledge)通过 RAG 技术将外部知识与 LLMs 集成backend/domain/knowledge
插件架构(Plugin)通过外部服务和 API 集成扩展代理能力backend/domain/plugin
对话系统(Conversation)管理用户与 AI 代理之间的互动backend/domain/conversation
内存系统(Memory)为代理提供持久化能力backend/domain/memory

每个领域内部都遵循 DDD 的分层结构:

  • 领域服务:位于backend/domain/{domain}/service,实现核心业务逻辑和领域规则
  • 应用服务:位于backend/application/{domain},协调各领域并向 API 层暴露功能

3.2 工作流引擎——从可视化画布到可执行代码

Coze 工作流引擎是整个平台最核心的模块。它回答了三个关键问题:

  1. 一个可视化的画布定义(JSON),是如何被翻译成机器可以理解和执行的代码的?
  2. 当一个需要用户输入的节点出现时,工作流是如何优雅地暂停、等待,然后从断点处无缝恢复的?
  3. 复杂的循环、分支和嵌套逻辑,又是如何在后端被精确调度和执行的?

工作流的生命周期分为两个核心阶段

┌─────────────────────────────────────────────────────────────────────┐ │ 编译时(Compile Time) │ │ │ │ vo.Canvas(前端画布 JSON) │ │ ↓ CanvasToWorkflowSchema() │ │ compose.WorkflowSchema(纯净逻辑结构) │ │ ↓ 实例化节点、解析依赖 │ │ compose.Workflow(中间状态“装配台”) │ │ ↓ 构建 DAG │ │ compose.Runnable(可执行实例,无状态、可复用) │ ├─────────────────────────────────────────────────────────────────────┤ │ 运行时(Runtime) │ │ │ │ compose.WorkflowRunner(“总指挥”) │ │ ↓ 注入上下文、事件回调、中断恢复状态 │ │ 执行 → 产生输出/事件(节点开始/结束、等待用户输入等) │ └─────────────────────────────────────────────────────────────────────┘

图:Coze 工作流的双阶段生命周期。编译时将画布 JSON 转化为无状态可复用的 Runnable,运行时由 WorkflowRunner 注入上下文驱动执行。

核心数据结构

数据结构职责
vo.Canvas前端画布的原始 JSON 定义,包含节点、边、位置等可视化信息
compose.WorkflowSchema剥离可视化细节后的纯净逻辑结构
compose.NodeSchema单个节点的详细定义,InputSources字段精确定义每个输入参数的来源
compose.Workflow中间状态的“装配台”,负责实例化节点、解析依赖
compose.Runnable编译的最终产物——真正“可执行”的实例,无状态、可复用
compose.WorkflowRunner运行时的“总指挥”,为 Runnable 注入本次运行的上下文

3.3 API 架构——Hertz 驱动的分层路由

Coze Studio 的 API 基于分层架构,使用Hertz网络框架构建。

API 路由组织

API 基础路径描述版本状态
/api/*核心内部 API 端点当前
/v1/*OpenAPI 兼容的 RESTful 端点稳定
/v3/*最新一代端点最新

核心 API 组

API 组职责
/api/conversation管理聊天交互、消息和对话历史
/api/knowledge处理知识库、文档和数据检索
/api/memory管理数据库连接和变量存储
/api/plugin_api集成和管理外部插件和 API
/api/workflow_api创建、执行和管理代理工作流

认证机制

  • 基于会话的认证(网页界面用户)
  • 个人访问令牌(PAT,用于 API 集成)
  • OAuth(用于第三方集成)

四、核心模块源码解析

4.1 服务层——三层服务架构

Coze Studio 采用分层服务架构,将服务组织成三个层级:

层级职责依赖
基础服务仅依赖于基础设施组件(数据库、缓存、外部客户端)基础设施层
主要服务基于基础服务构建,提供更复杂功能基础服务
复杂服务协调主要服务以实现最终用户功能主要服务

每个服务使用ServiceComponents结构体来清晰管理依赖,使依赖关系明确,通过依赖注入实现清晰的测试。

领域服务与应用服务的区分

服务类型位置职责
领域服务/backend/domain/{domain}/service实现核心业务逻辑和领域规则
应用服务/backend/application/{domain}协调各领域并向 API 层暴露功能

跨领域服务通信通过跨领域服务注册表实现:

  • 跨领域契约定义在/backend/crossdomain/contract
  • 跨领域实现位于/backend/crossdomain/impl
  • 全局注册表在初始化期间注册默认实现

4.2 工作流编译引擎——从 Canvas 到 Runnable

编译阶段的核心任务,是将一份静态的、描述性的WorkflowSchema转变为一个动态的、包含了所有执行逻辑的Runnable对象。

第一步:从 Canvas 到 Schema

// 文件路径:backend/domain/workflow/internal/canvas/adaptor/to_schema.gofuncCanvasToWorkflowSchema(ctx context.Context,s*vo.Canvas)(sc*compose.WorkflowSchema,errerror,){// 1. 裁剪孤立节点,移除任何没有连接的节点connectedNodes,_:=...// 2. 构建节点列表和连接关系// 3. 解析层级关系(用于循环等复合节点)// 4. 返回纯净的 WorkflowSchema}

InputSourcesNodeSchema中最重要的字段。它精确定义了当前节点的每个输入参数分别来自哪里(上游节点的哪个输出、一个固定的静态值、还是全局变量),是后续依赖解析的基石。

设计模式解读CanvasToWorkflowSchema适配器模式(Adapter Pattern)的应用——它将前端画布的“可视化格式”适配为后端引擎的“逻辑格式”,剥离了所有与执行无关的 UI 信息。

4.3 工作流运行时引擎——可中断、可恢复的执行

Coze 工作流引擎最令人着迷的特性之一是可中断、可恢复的执行能力

当一个需要用户输入的节点(如“问答”节点)出现时,工作流会:

  1. 优雅地暂停:保存当前执行状态
  2. 等待用户输入:释放计算资源
  3. 从断点无缝恢复:用户输入到达后,从保存的状态继续执行

工作流引擎构建于Eino 组合框架之上,支持35 种以上的节点类型。执行引擎基于DAG 的编排运行时,支持流式传输。

设计模式解读:这种机制是状态模式(State Pattern)备忘录模式(Memento Pattern)的结合——工作流执行状态被保存为“备忘录”,恢复时从备忘录重建状态机。

4.4 插件架构——OpenAPI 3.0 驱动的可扩展系统

Coze Studio 的插件架构提供了一个灵活且可扩展的框架,用于将外部工具和服务集成到代理和工作流程中。

核心组件

  • 插件注册表:插件的集中存储和管理
  • 插件执行引擎:处理插件操作的调用
  • 插件开发框架:用于创建新插件的工具和 API
  • 集成点:插件如何与代理和工作流程连接

每个插件都遵循OpenAPI 3.0 规范,使其与标准 API 文档和工具兼容。

五、核心执行流程与运行时机制

5.1 完整执行流程——从画布点击到结果返回

当用户在 Coze Studio 画布上点击“运行”时,底层发生了什么?

┌─────────────────────────────────────────────────────────────────────┐ │ 1. 用户在前端画布拖拽节点,定义数据流向 │ │ ↓ │ │ 2. 前端将画布状态序列化为 Canvas JSON │ │ ↓ │ │ 3. 前端通过 HTTP API 将 Canvas 提交到后端 │ │ ↓ │ │ 4. API 层(Hertz)接收请求 → 认证 → 路由到工作流处理器 │ │ ↓ │ │ 5. 编译阶段 │ │ ├── CanvasToWorkflowSchema():裁剪孤立节点、构建 Schema │ │ ├── 构建 Workflow(装配台):实例化节点、解析依赖 │ │ └── 编译为 Runnable(可执行实例,无状态) │ │ ↓ │ │ 6. 运行时:创建 WorkflowRunner │ │ ├── 注入本次运行的上下文(输入参数、事件回调) │ │ └── 按拓扑序调度节点执行 │ │ ↓ │ │ 7. 节点执行 │ │ ├── 遇到需要用户输入的节点 → 暂停 → 保存状态 → 等待恢复 │ │ ├── 普通节点 → 执行 → 产生事件(节点开始/结束) │ │ └── 所有节点完成 → 返回结果 │ │ ↓ │ │ 8. 结果通过流式方式返回前端 │ └─────────────────────────────────────────────────────────────────────┘

图:Coze Studio 工作流的完整执行流程。从画布拖拽到结果返回,经历前端序列化、API 路由、编译阶段(Canvas → Schema → Workflow → Runnable)和运行时阶段(Runner 执行)的全链路。

关键设计:编译时与运行时分离,使得工作流定义可以提前验证和优化,Runnable 无状态可复用,支持高并发执行。

5.2 请求流转——Handler → Application → Domain

请求在Handler → Application → Domain三层之间清晰流转:

  1. API 处理程序接收 HTTP 请求,调用应用服务方法
  2. 应用服务使用多个领域服务实现功能
  3. 领域服务操作领域实体

CreateConversation方法的实现路径展示了清晰的分层——API 层收到请求后调用应用服务,应用服务协调多个领域服务完成创建,领域服务操作各自的领域实体。

5.3 运行时关键决策的权衡分析

决策方案收益代价
后端语言Golang vs Python高并发、低内存、静态类型、性能优异AI/ML 生态不如 Python 丰富
架构风格微服务 vs 单体灵活扩展、模块替换部署运维复杂度高
工作流引擎自研(基于 Eino)vs 使用开源引擎轻量、低延迟、支持流式需要自行维护引擎演进
执行模型编译时 + 运行时分离提前验证、可复用 Runnable首次执行有编译延迟
中断恢复状态持久化 + 断点续传长运行任务可恢复存储和序列化开销

六、工程化实践

6.1 快速接入

环境要求

  • 2 Core、4 GB 最低配置
  • Docker 和 Docker Compose

部署步骤

# 1. 克隆代码gitclone https://github.com/coze-dev/coze-studio.git# 2. 配置模型# 从模板目录复制模型配置文件# 3. 启动服务docker-composeup-d

6.2 自定义插件开发

Coze Studio 的插件遵循 OpenAPI 3.0 规范。开发一个新插件的核心步骤:

  1. 定义 OpenAPI 3.0 规范的 API 文档
  2. 通过插件注册表注册插件
  3. 插件执行引擎处理调用

6.3 可观测性与调试

Coze Studio 提供了多层次的可观测性能力:

  • API 中间件:认证、日志、追踪
  • 事件系统:工作流执行过程中的节点开始/结束事件
  • OpenAPI 兼容端点:标准化的 API 访问

6.4 常见工程陷阱与解决方案

陷阱 1:工作流循环导致无限执行

现象:工作流在循环节点中无限执行,永不停止。

原因:循环节点缺少正确的退出条件配置。

解决方案:Coze 工作流引擎通过Hierarchy(层级关系)来表达循环等复合节点的父子结构。在循环节点中配置最大迭代次数或条件退出表达式。

陷阱 2:编译阶段失败导致工作流无法运行

现象:画布保存成功,但运行时提示“工作流编译失败”。

原因:画布中存在孤立节点或循环依赖。

解决方案CanvasToWorkflowSchema函数会自动裁剪孤立节点,但循环依赖需要通过 DAG 环检测在编译阶段捕获。

七、总结与展望

7.1 关键版本里程碑

版本/事件时间核心变化
Coze 平台发布2023 年字节跳动推出 AI Bot 开发平台
Coze Studio 开源2025 年 7 月 25 日字节跳动将核心项目开源
v0.2.52026 年 6 月开源版本持续迭代

7.2 横向对比:Coze Studio vs Dify vs Flowise

7.2.1 可比性说明

Coze Studio、Dify、Flowise 均定位于LLM 应用开发平台或工具,都提供可视化工作流编排能力。三者在功能定位上有重叠,但各自的技术栈、设计哲学和部署方式不同。

7.2.2 横向对比表
对比维度Coze StudioDifyFlowise
核心定位字节跳动开源 AI Agent 开发平台开源 LLM 应用开发平台开源低代码 LLM 工具
后端语言GolangPython(Flask)TypeScript(Node.js)
架构风格微服务 + DDD模块化单体单体
工作流引擎自研 DAG + Eino自研 DAG + Worker Pool基础 DAG
前端技术React + TypeScript + Semi DesignNext.js + ReactReact
部署方式Docker ComposeDocker Compose(7+ 容器)Docker
开源协议待确认Apache 2.0MIT
商业版本Coze 平台(SaaS)Dify Cloud
7.2.3 差异来源分析
框架/平台核心判断架构推论
Coze StudioAI 应用平台需要高性能、高并发的底层支撑用 Golang + 微服务 + DDD 构建企业级平台
DifyLLM 应用开发需要完整平台——不只是代码库用 Python + 模块化单体构建完整产品
Flowise非开发者需要低代码构建 AI 应用用 Node.js + 可视化拖拽降低门槛
7.2.4 结论性建议
场景推荐选择核心理由
需要高性能、高并发的工作流引擎Coze StudioGolang + 微服务 + Eino 框架
需要 Python 技术栈的完整平台DifyPython 生态最丰富
需要轻量级、快速原型验证FlowiseNode.js 生态,部署简单

7.3 设计哲学提炼

Coze Studio 的设计哲学可以提炼为三个关键词:

  1. DDD 是骨架:围绕业务领域组织代码,将复杂系统拆解为可独立演进的领域模块

  2. 工作流是心脏:编译时 + 运行时双阶段引擎,让可视化画布变成可执行、可恢复的系统

  3. 微服务是血脉:基于 CloudWeGo 技术栈的微服务架构,提供高性能和高扩展性

7.4 核心架构亮点

亮点说明
DDD 分层架构API → 应用 → 领域 → 基础设施,四层清晰分离
编译时 + 运行时双阶段引擎Canvas → Schema → Workflow → Runnable → Runner
可中断可恢复执行工作流可在用户交互节点暂停,从断点无缝恢复
Eino 框架集成字节开源 LLM 应用框架,支持 35+ 节点类型
Hertz HTTP 框架字节开源高性能 HTTP 框架
OpenAPI 3.0 插件标准任何符合 OpenAPI 规范的外部服务都可接入

7.5 对开发者的启示与适用场景

Coze Studio 的本质不是 Coze 平台的简单开源复刻,而是一套以“领域驱动设计(DDD)+ 整洁架构”为骨架、以“编译时-运行时双阶段工作流引擎”为心脏、以“可视化画布即源代码”为编程范式的生产级 AI Agent 开发平台——让复杂的 AI 工作流从“拖拽连线”变成“可编译、可中断、可恢复、可流式传输的确定性系统”。

适用场景

  • 需要可视化编排复杂 AI 工作流的团队
  • 需要工作流可中断、可恢复的长运行任务场景
  • 采用Go 技术栈、追求高并发高性能的企业
  • 需要Agent 全生命周期管理(开发 → 部署)的系统
  • 希望基于 OpenAPI 3.0 标准接入外部工具的集成场景

不适用场景

  • 简单的单次 LLM 调用(直接用模型 SDK 即可)
  • Python 技术栈为主、对 Go 不熟悉的团队
  • 部署运维复杂度敏感的小型团队
  • 需要深度定制工作流引擎的场景

本文数据来源:Coze Studio 官方 GitHub 仓库、开源 Coze 源码分析系列文章、CSDN 技术博客、53AI 技术文章、掘金技术文章(截至 2026 年 8 月)

如您所在的企业正面临数字化难题,或有 AI 落地、系统集成相关需求,欢迎进一步沟通。我们可提供针对贵企业具体场景的定制化方案和现场调研服务。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询