diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 00000000..dac39594 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,11 @@ +{ + "mcpServers": { + "github": { + "type": "http", + "url": "https://api.githubcopilot.com/mcp/", + "headers": { + "Authorization": "Bearer ${GITHUB_PAT}" + } + } + } +} diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..cd0d509d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,196 @@ +# 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 \ No newline at end of file