mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-27 04:31:27 +08:00
* refactor: add QuickPanelReservedSymbol * refactor: pass assistant id instead of assistant object * refactor: simplify InputbarTools props * refactor: add root symbol * refactor: merge file panel to attachment button * refactor: extract ActionButton for reuse * chore: update CLAUDE.md * fix: colors * refactor: add more reserved symbols * fix: keep updateAssistant stable * refactor(components): replace styled-components with cn utility in ActionIconButton - Replace styled-components with cn utility from @heroui/react for better maintainability - Add new --icon and --color-icon CSS variables for consistent icon coloring - Simplify button styling using Tailwind CSS classes --------- Co-authored-by: icarus <eurfelux@gmail.com>
128 lines
4.6 KiB
Markdown
128 lines
4.6 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Development Commands
|
|
|
|
### Environment Setup
|
|
|
|
- **Prerequisites**: Node.js v22.x.x or higher, Yarn 4.9.1
|
|
- **Setup Yarn**: `corepack enable && corepack prepare yarn@4.9.1 --activate`
|
|
- **Install Dependencies**: `yarn install`
|
|
- **Add New Dependencies**: `yarn add -D` for renderer-specific dependencies, `yarn add` for others.
|
|
|
|
### Development
|
|
|
|
- **Start Development**: `yarn dev` - Runs Electron app in development mode
|
|
- **Debug Mode**: `yarn debug` - Starts with debugging enabled, use chrome://inspect
|
|
|
|
### Testing & Quality
|
|
|
|
- **Run Tests**: `yarn test` - Runs all tests (Vitest)
|
|
- **Run E2E Tests**: `yarn test:e2e` - Playwright end-to-end tests
|
|
- **Type Check**: `yarn typecheck` - Checks TypeScript for both node and web
|
|
- **Lint**: `yarn lint` - ESLint with auto-fix
|
|
- **Format**: `yarn format` - Biome formatting
|
|
|
|
### Build & Release
|
|
|
|
- **Build**: `yarn build` - Builds for production (includes typecheck)
|
|
- **Platform-specific builds**:
|
|
- Windows: `yarn build:win`
|
|
- macOS: `yarn build:mac`
|
|
- Linux: `yarn build:linux`
|
|
|
|
## Architecture Overview
|
|
|
|
### Electron Multi-Process Architecture
|
|
|
|
- **Main Process** (`src/main/`): Node.js backend handling system integration, file operations, and services
|
|
- **Renderer Process** (`src/renderer/`): React-based UI running in Chromium
|
|
- **Preload Scripts** (`src/preload/`): Secure bridge between main and renderer processes
|
|
|
|
### Key Architectural Components
|
|
|
|
#### Main Process Services (`src/main/services/`)
|
|
|
|
- **MCPService**: Model Context Protocol server management
|
|
- **KnowledgeService**: Document processing and knowledge base management
|
|
- **FileStorage/S3Storage/WebDav**: Multiple storage backends
|
|
- **WindowService**: Multi-window management (main, mini, selection windows)
|
|
- **ProxyManager**: Network proxy handling
|
|
- **SearchService**: Full-text search capabilities
|
|
|
|
#### AI Core (`src/renderer/src/aiCore/`)
|
|
|
|
- **Middleware System**: Composable pipeline for AI request processing
|
|
- **Client Factory**: Supports multiple AI providers (OpenAI, Anthropic, Gemini, etc.)
|
|
- **Stream Processing**: Real-time response handling
|
|
|
|
#### State Management (`src/renderer/src/store/`)
|
|
|
|
- **Redux Toolkit**: Centralized state management
|
|
- **Persistent Storage**: Redux-persist for data persistence
|
|
- **Thunks**: Async actions for complex operations
|
|
|
|
#### Knowledge Management
|
|
|
|
- **Embeddings**: Vector search with multiple providers (OpenAI, Voyage, etc.)
|
|
- **OCR**: Document text extraction (system OCR, Doc2x, Mineru)
|
|
- **Preprocessing**: Document preparation pipeline
|
|
- **Loaders**: Support for various file formats (PDF, DOCX, EPUB, etc.)
|
|
|
|
### Build System
|
|
|
|
- **Electron-Vite**: Development and build tooling (v4.0.0)
|
|
- **Rolldown-Vite**: Using experimental rolldown-vite instead of standard vite
|
|
- **Workspaces**: Monorepo structure with `packages/` directory
|
|
- **Multiple Entry Points**: Main app, mini window, selection toolbar
|
|
- **Styled Components**: CSS-in-JS styling with SWC optimization
|
|
|
|
### Testing Strategy
|
|
|
|
- **Vitest**: Unit and integration testing
|
|
- **Playwright**: End-to-end testing
|
|
- **Component Testing**: React Testing Library
|
|
- **Coverage**: Available via `yarn test:coverage`
|
|
|
|
### Key Patterns
|
|
|
|
- **IPC Communication**: Secure main-renderer communication via preload scripts
|
|
- **Service Layer**: Clear separation between UI and business logic
|
|
- **Plugin Architecture**: Extensible via MCP servers and middleware
|
|
- **Multi-language Support**: i18n with dynamic loading
|
|
- **Theme System**: Light/dark themes with custom CSS variables
|
|
|
|
### UI Design
|
|
|
|
The project is in the process of migrating from antd & styled-components to HeroUI. Please use HeroUI to build UI components. The use of antd and styled-components is prohibited.
|
|
|
|
HeroUI Docs: https://www.heroui.com/docs/guide/introduction
|
|
|
|
## Logging Standards
|
|
|
|
### Usage
|
|
|
|
```typescript
|
|
// Main process
|
|
import { loggerService } from '@logger'
|
|
const logger = loggerService.withContext('moduleName')
|
|
|
|
// Renderer process (set window source first)
|
|
loggerService.initWindowSource('windowName')
|
|
const logger = loggerService.withContext('moduleName')
|
|
|
|
// Logging
|
|
logger.info('message', CONTEXT)
|
|
logger.error('message', new Error('error'), CONTEXT)
|
|
```
|
|
|
|
### Log Levels (highest to lowest)
|
|
|
|
- `error` - Critical errors causing crash/unusable functionality
|
|
- `warn` - Potential issues that don't affect core functionality
|
|
- `info` - Application lifecycle and key user actions
|
|
- `verbose` - Detailed flow information for feature tracing
|
|
- `debug` - Development diagnostic info (not for production)
|
|
- `silly` - Extreme debugging, low-level information
|