Coze Studio概览(一)

发布于:2025-07-28 ⋅ 阅读:(19) ⋅ 点赞:(0)

字节的Coze刚开源,我先给大家来一波简要分析。

Coze Studio 技术栈详情

后端技术栈

核心技术

  • Go版本: 1.24.0
  • Web框架: Cloudwego Hertz (高性能HTTP框架)
  • 架构模式: 微服务架构 + DDD(领域驱动设计)

主要依赖库

  • AI引擎: Cloudwego Eino (AI智能体和工作流运行时)
  • 模型支持:
    • OpenAI、Claude、DeepSeek、Gemini
    • 火山方舟(Ark)、通义千问等
  • 数据库: GORM (MySQL/SQLite驱动)
  • 缓存: Redis (go-redis/v9)
  • 消息队列: Kafka (IBM/sarama)、RocketMQ
  • 搜索引擎: Elasticsearch
  • 向量数据库: Milvus
  • 对象存储: 火山引擎TOS、MinIO
  • 配置管理: Viper、YAML
  • 测试框架: Testify、GoMock

项目结构

backend/
├── api/           # API层 (Handler, Router, Middleware)
├── application/   # 应用层 (Application Services)
├── domain/        # 领域层 (Domain Models, Entities)
├── infra/         # 基础设施层 (Repository实现)
├── crossdomain/   # 跨域服务
├── pkg/           # 通用工具包
├── conf/          # 配置文件
└── types/         # 类型定义

前端技术栈

核心技术

  • 包管理: Rush.js (Microsoft的monorepo管理工具)
  • Node版本: >=16.13.0
  • 包管理器: pnpm 8.15.8
  • 构建工具: Rsbuild (基于Rspack的构建工具)
  • UI框架: React + TypeScript
  • 工作流编辑器: FlowGram (字节跳动开源的流程搭建引擎)

主要依赖

  • UI组件库: Semi Design (@coze-arch/bot-semi)
  • 状态管理: 自研Store系统
  • 国际化: @coze-arch/i18n
  • HTTP客户端: @coze-arch/bot-http
  • 代码编辑器: Monaco Editor
  • 工作流渲染: FlowGram + Fabric.js

项目结构

frontend/
├── apps/          # 应用入口
├── packages/      # 功能包
│   ├── arch/      # 架构层基础包
│   ├── common/    # 通用组件和工具
│   ├── workflow/  # 工作流相关
│   ├── agent-ide/ # 智能体IDE
│   └── studio/    # Studio核心功能
├── config/        # 配置文件
└── infra/         # 基础设施工具

数据存储

主要存储

  • 关系数据库: MySQL 8.4.5
  • 缓存数据库: Redis 8.0
  • 搜索引擎: Elasticsearch
  • 向量数据库: Milvus (用于知识库检索)

对象存储

  • 火山引擎TOS (主要)
  • MinIO (可选)

部署方案

容器化

  • 容器: Docker + Docker Compose
  • 最低配置: 2 Core、4 GB内存
  • 服务编排: 支持多Profile部署
    • middleware: 中间件服务
    • mysql-setup: 数据库初始化
    • web: 完整Web服务

Coze Studio 命令清单

开发环境搭建

前置要求

# 确保系统满足最低要求:2 Core、4 GB内存
# 安装Docker和Docker Compose并启动Docker服务
docker --version
docker-compose --version

快速开始

# 1. 克隆代码
git clone https://github.com/coze-dev/coze-studio.git
cd coze-studio

# 2. 配置模型 (必须步骤)
# 复制模型配置模板
cp backend/conf/model/template/model_template_ark_doubao-seed-1.6.yaml backend/conf/model/ark_doubao-seed-1.6.yaml
# 编辑配置文件,设置id、meta.conn_config.api_key、meta.conn_config.model字段

# 3. 部署并启动服务
cd docker
cp .env.example .env
docker compose --profile "*" up -d

# 4. 访问应用
# 浏览器打开 http://localhost:8888/

开发模式命令

使用Makefile (推荐)

# 启动完整开发环境 (中间件 + Python + 服务器)
make debug

# 单独构建前端
make fe

# 单独构建并运行服务器
make server

# 仅构建服务器(不运行)
make build_server

# 启动中间件服务 (MySQL + Redis + Elasticsearch等)
make middleware

# 启动完整Web服务
make web

# 同步数据库
make sync_db

# 导出数据库结构
make dump_db

# 停止所有服务
make down

# 清理所有数据(危险操作)
make clean

# 设置Python环境
make python

# 查看帮助
make help

直接使用脚本

# 前端相关
./scripts/setup_fe.sh    # 设置前端环境
./scripts/build_fe.sh    # 构建前端
./scripts/start_fe.sh    # 启动前端开发服务器

# 后端相关
./scripts/setup/server.sh        # 构建服务器
./scripts/setup/db_migrate_apply.sh  # 数据库迁移
./scripts/setup/python.sh       # 设置Python环境

前端开发命令

使用Rush.js

cd frontend

# 安装依赖
rush install

# 构建所有包
rush rebuild

# 构建特定应用
rush rebuild -o @coze-studio/app

# 运行开发服务器
rush start -p @coze-studio/app

# 运行测试
rush test

# 代码检查
rush lint

# 代码格式化
rush prettier

后端开发命令

Go开发

cd backend

# 安装依赖
go mod download

# 构建
go build -o bin/coze-server .

# 运行
./bin/coze-server

# 测试
go test ./...

# 代码格式化
go fmt ./...

# 代码检查
go vet ./...

Docker命令

开发环境

# 启动所有服务
docker compose --profile "*" up -d

# 启动特定Profile
docker compose --profile middleware up -d    # 仅中间件
docker compose --profile mysql-setup up -d  # 仅MySQL设置

# 查看服务状态
docker compose ps

# 查看日志
docker compose logs -f

# 停止服务
docker compose down

# 清理数据卷
docker compose down -v

数据库操作

# 数据库迁移
docker compose --profile mysql-setup up -d

# 查看MySQL日志
docker logs coze-mysql

# 连接MySQL
docker exec -it coze-mysql mysql -ucoze -pcoze123 opencoze

Git工作流

# 标准工作流
git checkout -b feature/your-feature
git add .
git commit -m "feat: your feature description"
git push origin feature/your-feature

# 提交前检查
rush lint          # 代码检查
rush test          # 运行测试
go test ./...      # 后端测试

网站公告

今日签到

点亮在社区的每一天
去签到