You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.9 KiB
5.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Coze Studio is an all-in-one AI agent development platform with both frontend (React + TypeScript) and backend (Go) components. The project uses a sophisticated monorepo architecture managed by Rush.js with 135+ frontend packages organized in a hierarchical dependency system.
Development Commands
Environment Setup
# Clone and setup
git clone https://github.com/coze-dev/coze-studio.git
cd coze-studio
# Install frontend dependencies
rush update
# For Docker-based development
cd docker
cp .env.example .env
# Configure model settings in backend/conf/model/
docker compose up -d
# Access at http://localhost:8888
Development Workflow
# Start middleware services (MySQL, Redis, Elasticsearch, etc.)
make middleware
# Start Go backend in development mode
make server
# Start frontend development server
cd frontend/apps/coze-studio
npm run dev
# Full development environment
make debug
Build Commands
# Build frontend only
make fe
# Build Go server
make build_server
# Build everything with Docker
make web
# Rush monorepo commands
rush build # Build all packages
rush rebuild -o @coze-studio/app # Build specific package
rush test # Run all tests
rush lint # Lint all packages
Testing
# Run tests (Vitest-based)
rush test
npm run test # In specific package
npm run test:cov # With coverage
# Backend tests
cd backend && go test ./...
Architecture Overview
Frontend Architecture
- Monorepo: Rush.js with 135+ packages across 4 dependency levels
- Build System: Rsbuild (Rspack-based) for fast builds
- UI Framework: React 18 + TypeScript + Semi Design + Tailwind CSS
- State Management: Zustand for global state
- Package Organization:
arch/
: Core infrastructure (level-1)common/
: Shared components and utilities (level-2)agent-ide/
,workflow/
,studio/
: Feature domains (level-3)apps/coze-studio
: Main application (level-4)
Backend Architecture (Go)
- Framework: Hertz HTTP framework
- Architecture: Domain-Driven Design (DDD) with microservices
- Structure:
domain/
: Business logic and entitiesapplication/
: Application services and use casesapi/
: HTTP handlers and routinginfra/
: Infrastructure implementationscrossdomain/
: Cross-cutting concerns
Key Architectural Patterns
- Adapter Pattern: Extensive use for loose coupling between layers
- Interface Segregation: Clear contracts between domains
- Event-Driven: NSQ message queue for async communication
- API-First: Comprehensive OpenAPI specifications
Database & Infrastructure
Docker Services Stack
- Database: MySQL 8.4.5
- Cache: Redis 8.0
- Search: Elasticsearch 8.18.0 with SmartCN analyzer
- Vector DB: Milvus v2.5.10 for embeddings
- Storage: MinIO for object storage
- Message Queue: NSQ (nsqlookupd, nsqd, nsqadmin)
- Configuration: etcd 3.5
Database Management
# Sync database schema
make sync_db
# Dump database schema
make dump_db
# Initialize SQL data
make sql_init
# Atlas migration management
make atlas-hash
Key Development Patterns
Frontend Package Development
- Each package follows consistent structure with
README.md
,package.json
,tsconfig.json
,eslint.config.js
- Adapter pattern extensively used for decoupling (e.g.,
-adapter
suffix packages) - Base/Core pattern for shared functionality (e.g.,
-base
suffix packages) - Use workspace references (
workspace:*
) for internal dependencies
Backend Development
- Follow DDD principles with clear domain boundaries
- Use dependency injection via interfaces
- Implement proper error handling with custom error types
- Write comprehensive tests for domain logic
Model Configuration
Before deployment, configure AI models in backend/conf/model/
:
- Copy template from
backend/conf/model/template/
- Set
id
,meta.conn_config.api_key
, andmeta.conn_config.model
- Supported providers: OpenAI, Volcengine Ark, Claude, Gemini, Qwen, DeepSeek, Ollama
Testing Strategy
Coverage Requirements by Package Level
- Level 1: 80% coverage, 90% increment
- Level 2: 30% coverage, 60% increment
- Level 3-4: 0% coverage (flexible)
Testing Framework
- Frontend: Vitest for unit/integration tests
- Backend: Go's built-in testing framework
- E2E: Separate e2e subspace configuration
Common Issues & Solutions
Frontend Development
- Use
rush update
instead ofnpm install
at root level - Build packages in dependency order using
rush build
- For hot reload issues, check Rsbuild configuration in specific package
Backend Development
- Ensure middleware services are running (
make middleware
) - Check database connectivity and schema sync
- Verify model configurations are properly set
Docker Issues
- Ensure sufficient resources (minimum 2 Core, 4GB RAM)
- Check port conflicts (8888 for frontend, various for services)
- Use
make clean
to reset Docker volumes if needed
IDL and Code Generation
The project uses Interface Definition Language (IDL) for API contract management:
- IDL files in
idl/
directory (Thrift format) - Frontend code generation via
@coze-arch/idl2ts-*
packages - Backend uses generated Go structs
Plugin Development
For custom plugin development:
- Reference templates in
backend/conf/plugin/pluginproduct/
- Follow OAuth schema in
backend/conf/plugin/common/oauth_schema.json
- Configure authentication keys for third-party services
Contributing
- Use conventional commits via
rush commit
- Run linting with
rush lint-staged
(pre-commit hook) - Ensure tests pass before submitting PRs
- Follow team-based package organization and tagging conventions