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.
196 lines
5.9 KiB
196 lines
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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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 entities
|
|
- `application/`: Application services and use cases
|
|
- `api/`: HTTP handlers and routing
|
|
- `infra/`: Infrastructure implementations
|
|
- `crossdomain/`: 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
|
|
```bash
|
|
# 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/`:
|
|
1. Copy template from `backend/conf/model/template/`
|
|
2. Set `id`, `meta.conn_config.api_key`, and `meta.conn_config.model`
|
|
3. 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 of `npm 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 |