本文主要介绍了通过源码方式部署Coze Studio前端和后端,其它依赖中间件通过Docker方式部署。源码使用main分支,因为main分支随时都在更新代码,所以本文仅仅作为参考操作,可能由于版本会遇到其它的问题,但基本原理都是一样的。其中,前端在Windows11+WSL2+Ubuntu22.04+Node22.15.1环境运行,后端在Windows11+Go1.24.5环境运行。
一.Coze Studio介绍
1.Coze Studio定位
按照Coze官方说法,Coze Studio 是一站式 AI Agent 开发工具。提供各类最新大模型和工具、多种开发模式和框架,从开发到部署,为你提供最便捷的 AI Agent 开发环境。
-
提供 AI Agent 开发所需的全部核心技术:Prompt、RAG、Plugin、Workflow,使得开发者可以聚焦创造 AI 核心价值。
-
开箱即用,用最低的成本开发最专业的 AI Agent:Coze Studio 为开发者提供了健全的应用模板和编排框架,可基于它们快速构建各种 AI Agent ,将创意变为现实。
2.Coze Studio技术栈
Coze Studio 的后端采用 Golang 开发,前端使用 React + TypeScript,整体基于微服务架构并遵循领域驱动设计(DDD)原则构建。为开发者提供一个高性能、高扩展性、易于二次开发的底层框架,助力开发者应对复杂的业务需求。
DDD貌似在.NET Core相关开源项目中用的很多,比如ABP框架,它是一种以领域建模为核心的软件开发方法论,适用于复杂业务系统的设计与开发。DDD 的核心目标是:通过聚焦于业务领域本身及其逻辑,构建一个高度符合业务需求的系统模型,而不仅仅是技术驱动,即要有业务专家的参与。DDD涉及的核心概念也很多,如下所示:
层级 | 概念 | 说明 |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
虽然DDD看上去很复杂,但是典型架构主要是:基础设置层,领域层,应用层,[表现层]。
3.功能清单
功能模块 | 功能点 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
二.Coze Studio依赖中间件
启动Coze Studio依赖中间件,主要是修改相关端口,以防止端口冲突。
cd docker
docker compose -f docker-compose-debug.yml --profile middleware -p "coze-studio" up -d
在最新的main
分支代码中,coze-studio/docker
目录中包含docker-compose.yml
和docker-compose-debug.yml
两种yml
文件类型(docker-compose-debug.yml
是最早版本的docker-compose.yml
)。如下所示:

1.防止端口冲突

主要修改了常用的mysql、redis、minio、etcd的宿主机映射端口,可根据实际情况修改即可。

2.coze-studio
Coze Studio依赖中间件容器启动后,带setup名字的容器启动后会退出,属于正常情况,主要是为了完成初始化工作。可通过Docker Desktop查看它们对应的容器日志。

(1)coze-mysql-setup-init-sql

(2)coze-mysql-setup-schema

(3)coze-minio-setup

三.Coze Studio前端(Windows11+WSL2+Node22.15.1)
Coze Studio前端环境需要node(>=22) 、npm、rush等。作为前端小白,第一次听说rush。Rush 是由 Microsoft 开发的 JavaScript/TypeScript monorepo 管理工具,适用于管理包含多个包(package)的大型项目。它支持依赖安装、构建、发布、版本管理等流程,常用于企业级项目,提升多包协作和 CI/CD 效率。常见于需要统一依赖和自动化流程的前端/全栈项目。
1.Node安装
因为本地开发环境可能会有多个Node版本,因此需要通过nvm进行切换。
(1)安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
(2)安装 Node.js v22.15.1
nvm install 22.15.1
(3)切换和验证版本
nvm use 22.15.1
node -v
2.启动前端项目(开发模式)
在开发模式下,独立启动前端项目,如下所示:
bash scripts/setup_fe.sh
cd frontend/apps/coze-studio
npm run dev

通过http://localhost:8080/访问前端页面,如下所示:

这里的http://localhost:8888/是后端API的地址。
3.打包前端工程(生产模式)
在生产模式下,通常直接把前端项目打包为静态文件,如下所示:
bash scripts/build_fe.sh
根据scripts/build_fe.sh
脚本可知,生成的static
文件夹有2个地方,如下所示:

如果源码启动Coze Studio
后端,默认conf
和static
文件夹在resources
目录下面。为了不修改后端源码,新建resources
目录,然后把conf
和static
文件夹拷贝到resources
目录下面,同时把backend/resources/*
添加到coze-studio\.gitignore
文件中。如下所示:



四.Coze Studio后端(Windows11+Go1.24.5)
1.GoLand 2024.2.5配置
(1)GOROOT

(2)GOPATH

(3)Go Modules

(4)Build Tags

2.配置文件
(1).env文件

同时修改mysql
、redis
、minio
、etcd
服务对应的端口,与coze-studio\docker\docker-compose.yml
服务中的端口保持一致。
(2)qwen.yaml
拷贝coze-studio\backend\resources\conf\model\template\model_template_qwen.yaml
为coze-studio\backend\resources\conf\model\qwen.yaml,同时修改对应配置,如下所示:

3.运行main.go文件


五.工作流简单示例
1.创建智能体
项目开发中创建智能体,适用于快速搭建对话式智能体。

2.创建应用
项目开发中创建应用,适用于搭建多工作流协同的完整应用。

六.可能遇到的问题
1.IS_OPEN_SOURCE不识别问题
当执行命令F:\Coze\coze-studio\frontend\apps\coze-studio> npx rushx dev
时,报错’IS_OPEN_SOURCE’ 不是内部或外部命令,也不是可运行的程序或批处理文件。
报错是因为在 Windows 下,IS_OPEN_SOURCE=true CUSTOM_VERSION=release rsbuild dev
这种写法(设置环境变量)只适用于 Linux/macOS,不适用于 Windows。
PS F:\Coze\coze-studio\frontend\apps\coze-studio> npx rushx dev
Found configuration in F:\Coze\coze-studio\rush.json
Rush Multi-Project Build Tool 5.147.1 - Node.js 22.15.1 (LTS)
> "IS_OPEN_SOURCE=true CUSTOM_VERSION=release rsbuild dev"
'IS_OPEN_SOURCE' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
Error: Failed calling IS_OPEN_SOURCE=true CUSTOM_VERSION=release rsbuild dev. Exit code: 1
用 cross-env
工具在 package.json
的 dev
脚本里,把
IS_OPEN_SOURCE=true CUSTOM_VERSION=release rsbuild dev
改成
cross-env IS_OPEN_SOURCE=true CUSTOM_VERSION=release rsbuild dev
然后在根目录或当前包下执行
npm install cross-env --save-dev
2.Unable to determine your Git configuration using this command
当执行命令duomiagi@DuoMiAGI:/mnt/f/Coze/coze-studio$ bash scripts/setup_fe.sh
时,可能报错:
duomiagi@DuoMiAGI:/mnt/f/Coze/coze-studio$ bash scripts/setup_fe.sh
+ RED='\033[0;31m'
+ GREEN='\033[0;32m'
+ YELLOW='\033[0;33m'
+ NC='\033[0m'
+ pushd /mnt/f/Coze/coze-studio/scripts/../frontend
/mnt/f/Coze/coze-studio/frontend /mnt/f/Coze/coze-studio
+ echo'正在进入前端目录: /mnt/f/Coze/coze-studio/scripts/../frontend'
正在进入前端目录: /mnt/f/Coze/coze-studio/scripts/../frontend
+ echo -e '正在检查 Node.js 是否已安装...'
正在检查 Node.js 是否已安装...
+ command -v node
++ node -v
+ NODE_VERSION=v22.15.1
+ echo -e '\033[0;32mNode.js 已安装: v22.15.1\033[0m'
Node.js 已安装: v22.15.1
+ echo -e '正在检查 Rush 是否已安装...'
正在检查 Rush 是否已安装...
+ command -v rush
++ rush version
+ RUSH_VERSION='Found configuration in /mnt/f/Coze/coze-studio/rush.json
Rush Multi-Project Build Tool 5.147.1 - https://rushjs.io
Node.js version is 22.15.1 (LTS)
Found configuration in /mnt/f/Coze/coze-studio/rush.json
Trying to acquire lock for pnpm-8.15.8
Acquired lock for pnpm-8.15.8
Found pnpm version 8.15.8 in /home/duomiagi/.rush/node-v22.15.1/pnpm-8.15.8
Symlinking "/mnt/f/Coze/coze-studio/common/temp/pnpm-local"
--> "/home/duomiagi/.rush/node-v22.15.1/pnpm-8.15.8"
Acquiring lock for "common/autoinstallers/plugins" folder...
Autoinstaller folder is already up to date
Starting "rush version"
Validating package manager shrinkwrap file.
Validating package manager shrinkwrap file.
Validating package manager shrinkwrap file.
Error: Process exited with code 1
Unable to determine your Git configuration using this command:
git config user.email'


解决方案是配置email
和name
,如下所示:
git config --global user.email "your.email@example.com"
git config --global user.name "Your Name"
3.Go依赖库版本问题
(1)milvus版本

问题描述,如下所示:
GOROOT=D:\go-1.24.5 #gosetup
GOPATH=D:\go;C:\Users\wangs\go #gosetup
GOPROXY=https://goproxy.cn,direct #gosetup
D:\go-1.24.5\bin\go.exe build -o C:\Users\wangs\AppData\Local\JetBrains\GoLand2024.2\tmp\GoLand\___main.exe -gcflags "all=-N -l" F:\Coze\coze-studio\backend\main.go #gosetup
# github.com/milvus-io/milvus/pkg/v2/util/hardware
D:\go\pkg\mod\github.com\milvus-io\milvus\pkg\v2@v2.0.0-20250319085209-5a6b4e56d59e\util\hardware\mem_info.go:52:17: memInfo.RSS undefined (type *process.MemoryInfoExStat has no field or method RSS)
D:\go\pkg\mod\github.com\milvus-io\milvus\pkg\v2@v2.0.0-20250319085209-5a6b4e56d59e\util\hardware\mem_info.go:52:31: memInfo.Shared undefined (type *process.MemoryInfoExStat has no field or method Shared)
Compilation finished with exit code 1
解决方案,如下所示:
go get -u github.com/milvus-io/milvus/pkg/v2@latest
go get -u github.com/milvus-io/milvus/client/v2@latest
(2)eino-ext版本

问题描述,如下所示:
GOROOT=D:\go-1.24.5 #gosetup
GOPATH=D:\go;C:\Users\wangs\go #gosetup
GOPROXY=https://goproxy.cn,direct #gosetup
D:\go-1.24.5\bin\go.exe build -o C:\Users\wangs\AppData\Local\JetBrains\GoLand2024.2\tmp\GoLand\___1main.exe F:\Coze\coze-studio\backend\main.go #gosetup
# github.com/cloudwego/eino-ext/components/model/ollama
D:\go\pkg\mod\github.com\cloudwego\eino-ext\components\model\ollama@v0.0.0-20250610035057-2c4e7c8488a5\chatmodel.go:431:17: cannot use struct{Type string`json:"type"`; Required []string`json:"required"`; Properties map[string]struct{Type string`json:"type"`; Description string`json:"description"`; Enum []string`json:"enum,omitempty"`} `json:"properties"`}{…} (value of typestruct{Type string"json:\"type\""; Required []string"json:\"required\""; Properties map[string]struct{Type string"json:\"type\""; Description string"json:\"description\""; Enum []string"json:\"enum,omitempty\""} "json:\"properties\""}) as struct{Type string"json:\"type\""; Defs any "json:\"$defs,omitempty\""; Items any "json:\"items,omitempty\""; Required []string"json:\"required\""; Properties map[string]struct{Type "github.com/ollama/ollama/api".PropertyType "json:\"type\""; Items any "json:\"items,omitempty\""; Description string"json:\"description\""; Enum []any "json:\"enum,omitempty\""} "json:\"properties\""} value in struct literal
Compilation finished with exit code 1
解决方案,如下所示:
修改:github.com/cloudwego/eino-ext/components/model/ollama v0.0.0-20250610035057-2c4e7c8488a5
成为:github.com/cloudwego/eino-ext/components/model/ollama v0.1.0
然后:go mod tidy
(3)依赖库版本变化
特别说明:最新main
分支已经发生了变化,这里的依赖库版本变化仅供参考。


4.无法查看智能体
在生产模式下不存在该问题,主要是在开发模式下,当点击项目开发中创建的智能体或者应用时,就会大概率出现”无法查看智能体”页面。

参考文献
[1] Coze Studio说明文档:https://github.com/coze-dev/coze-studio/blob/main/README.zh_CN.md
[2] Go All releases:https://golang.google.cn/dl/
[3] https://github.com/coze-dev/coze-studio/wiki/7.-开发规范
知识星球:Dify源码剖析及答疑,Dify扩展系统源码,Coze答疑,AI书籍课程|AI报告论文,公众号付费资料。加微信buxingtianxia21
进NLP工程化资料群,以及Dify和Coze交流群。

(文:NLP工程化)