521 lines
28 KiB
Markdown
521 lines
28 KiB
Markdown
# Qiming Backend
|
|
|
|
[](https://openjdk.java.net/)
|
|
[](https://spring.io/projects/spring-boot)
|
|
[](LICENSE)
|
|
|
|
**Enterprise-grade AI Agent Development and Operation Platform** - Providing a complete solution for agent creation and distribution, knowledge base management, model proxy, memory system, and plugin ecosystem.
|
|
|
|
English | [简体中文](README.zh-CN.md)
|
|
|
|
---
|
|
|
|
## Table of Contents
|
|
|
|
- [Core Features](#core-features)
|
|
- [Architecture](#architecture)
|
|
- [Quick Start](#quick-start)
|
|
- [Configuration](#configuration) ⚠️ **Important**
|
|
- [Module Description](#module-description)
|
|
- [Development Guide](#development-guide)
|
|
- [Contributing](#contributing)
|
|
- [License](#license)
|
|
- [Commercial License](#commercial-license)
|
|
|
|
---
|
|
|
|
## Core Features
|
|
|
|
### Agent Engine
|
|
- **Visual Orchestration**: Drag-and-drop workflow design, zero-code agent creation
|
|
- **Code-based Development**: Support for Java/Python plugin development, flexible extension
|
|
- **Multi-model Support**: OpenAI, Claude, Ollama, Qwen, and other mainstream models
|
|
- **Streaming Output**: SSE real-time response, smooth user experience
|
|
- **Multi-turn Conversations**: Complete session context management
|
|
|
|
### Knowledge Base Management
|
|
- **Document Parsing**: PDF, Word, Excel, Markdown, and other formats
|
|
- **Vector Storage**: Milvus vector database, efficient similarity search
|
|
- **Intelligent Chunking**: Automatic document segmentation and overlap processing
|
|
- **Hybrid Retrieval**: Vector search + Full-text search + QA search
|
|
|
|
### Memory System
|
|
- **Long-term Memory**: Persistent user data and preferences
|
|
- **Short-term Memory**: Session context management
|
|
- **Classification System**: 12 main categories, 50+ sub-categories
|
|
- **Sensitive Information Filtering**: Automatic desensitization
|
|
|
|
### Model Proxy (In Development)
|
|
- **Unified Interface**: Shield differences between different model APIs
|
|
- **Intelligent Routing**: Select the optimal model based on scenarios
|
|
- **Quota Management**: Token billing and rate limiting
|
|
- **Failover**: Automatic fault tolerance switching
|
|
|
|
### Plugin Ecosystem
|
|
- **Plugin Market**: Publish and discover plugins
|
|
- **MCP Protocol**: Model Context Protocol support
|
|
- **Page Applications**: No-code page builder
|
|
|
|
---
|
|
|
|
## Architecture
|
|
|
|
### Tech Stack
|
|
|
|
| Category | Technology | Version |
|
|
|----------|-----------|---------|
|
|
| Language | Java | 17 |
|
|
| Framework | Spring Boot | 3.3.8 |
|
|
| Database | MySQL | 8.0+ |
|
|
| Vector Database | Milvus | 2.5.4 |
|
|
| Cache | Redis | 7.0+ |
|
|
| ORM | MyBatis Plus | 3.5+ |
|
|
| API Documentation | Knife4j | 4.0+ |
|
|
| Container | Docker | - |
|
|
| Orchestration | Kubernetes | - |
|
|
|
|
### Architecture Diagram
|
|
|
|
```
|
|
┌────────────────────────────────────────────────────────────────────────────┐
|
|
│ Frontend Layer │
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────────────────┐ │
|
|
│ │ PC Web │ │ H5 │ │ Mini App │ │ IM (Feishu/DingTalk/ │ │
|
|
│ │ │ │ │ │ │ │ WeCom/Slack) │ │
|
|
│ └──────────┘ └──────────┘ └──────────┘ └─────────────────────────┘ │
|
|
└────────────────────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌────────────────────────────────────────────────────────────────────────────┐
|
|
│ Access Layer │
|
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────────┐ │
|
|
│ │ REST API │ │ Long │ │ WebSocket │ │
|
|
│ │ │ │ Connection │ │ │ │
|
|
│ └──────────────┘ └──────────────┘ └──────────────────────────────┘ │
|
|
└────────────────────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌────────────────────────────────────────────────────────────────────────────┐
|
|
│ Application Layer │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
|
│ │ Component Library │ │
|
|
│ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │
|
|
│ │ │ Model│ │Know- │ │ Data │ │Plugin│ │ Work-│ │ MCP │ │ Skill│ │ │
|
|
│ │ │ │ │ ledge│ │ Table│ │ │ │ flow │ │ │ │ │ │ │
|
|
│ │ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ └──────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
|
│ │ Management Portal │ │
|
|
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
|
|
│ │ │ User │ │ Audit │ │ Public │ │ Content │ │ Task │ │ │
|
|
│ │ │Management│ │Management│ │ Model │ │Management│ │Management│ │ │
|
|
│ │ ├──────────┤ ├──────────┤ ├──────────┤ ├──────────┤ ├──────────┤ │ │
|
|
│ │ │ Log │ │ Menu │ │ System │ │ │ │ │ │ │
|
|
│ │ │ Query │ │Permission│ │ Config │ │ │ │ │ │ │
|
|
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
|
│ │ Product Applications │ │
|
|
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │ │
|
|
│ │ │ Web App │ │ Q&A │ │ General Agent │ │ │
|
|
│ │ │ │ │ Agent │ │ │ │ │
|
|
│ │ └──────────────┘ └──────────────┘ └──────────────────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────────────┘ │
|
|
└────────────────────────────────────────────────────────────────────────────┘
|
|
│
|
|
▼
|
|
┌────────────────────────────────────────────────────────────────────────────┐
|
|
│ Infrastructure Layer │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
|
│ │ Lower-level Components │ │
|
|
│ │ │ │
|
|
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────────┐ │ │
|
|
│ │ │ Cloud │ │ qimingclaw │ │ General Agent Engine │ │ │
|
|
│ │ │ Sandbox │ │ PC Client │ │ │ │ │
|
|
│ │ │ │ │ (mac/win/ │ │ ┌───────────────────────┐ │ │
|
|
│ │ │ │ │ docker) │ │ │ MCP Integration │ │ │
|
|
│ │ │ │ │ │ │ ├───────────────────────┤ │ │
|
|
│ │ │ │ │ │ │ │ File Management │ │ │
|
|
│ │ │ │ │ │ │ │ Skill Management │ │ │
|
|
│ │ │ │ │ │ │ │ ACP Adapter Layer │ │ │
|
|
│ │ │ │ │ │ │ │ ┌─────────────────┐ │ │ │
|
|
│ │ │ │ │ │ │ │ │ Supported Agent:│ │ │ │
|
|
│ │ │ │ │ │ │ │ │ claudecode │ │ │ │
|
|
│ │ │ │ │ │ │ │ │ opencode │ │ │ │
|
|
│ │ │ │ │ │ │ │ │ codex │ │ │ │
|
|
│ │ │ │ │ │ │ │ │ openclaw │ │ │ │
|
|
│ │ │ │ │ │ │ │ │ kimicli │ │ │ │
|
|
│ │ │ │ │ │ │ │ └─────────────────┘ │ │ │
|
|
│ │ │ │ │ │ │ ├───────────────────────┤ │ │
|
|
│ │ │ │ │ │ │ │ Browser │ │ │
|
|
│ │ │ │ │ │ │ │ Automation │ │ │
|
|
│ │ │ │ │ │ │ │ GUI Automation │ │ │
|
|
│ │ │ │ │ │ │ │ Network Channel │ │ │
|
|
│ │ │ │ │ │ │ │ Runtime Integration │ │ │
|
|
│ │ │ │ │ │ │ └───────────────────────┘ │ │
|
|
│ │ │ │ │ │ └─────────────────────────────┘ │ │
|
|
│ │ └─────────────┘ └─────────────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────────────┘ │
|
|
│ │
|
|
│ ┌─────────────────────────────────────────────────────────────────────┐ │
|
|
│ │ Core Infrastructure │ │
|
|
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────┐ │ │
|
|
│ │ │ Database │ │ Cache │ │ Vector │ │ Search │ │ Model │ │ │
|
|
│ │ │ MySQL │ │ Redis │ │ Milvus │ │ Elastic │ │ Proxy│ │ │
|
|
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────┘ │ │
|
|
│ └─────────────────────────────────────────────────────────────────────┘ │
|
|
└────────────────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
### Project Repository Overview
|
|
|
|
The Qiming AI Agent Platform consists of multiple interconnected repositories:
|
|
|
|
#### **Frontend & Mobile**
|
|
| Repository | Description | URL |
|
|
|-----------|-------------|-----|
|
|
| **qiming** | Frontend Web | [https://github.com/qiming-ai/qiming](https://github.com/qiming-ai/qiming) |
|
|
| **qiming-mobile** | Mobile Application | [https://github.com/qiming-ai/qiming-mobile](https://github.com/qiming-ai/qiming-mobile) |
|
|
| **noVNC** | Web-based VNC Client | [https://github.com/qiming-ai/noVNC](https://github.com/qiming-ai/noVNC) |
|
|
|
|
#### **Backend & Application Layer**
|
|
| Repository | Description | URL |
|
|
|-----------|-------------|-----|
|
|
| **qiming-backend** | Application Layer (Backend) - **This Repository** | [https://github.com/qiming-ai/qiming-backend](https://github.com/qiming-ai/qiming-backend) |
|
|
|
|
#### **Agent Engine & Clients**
|
|
| Repository | Description | URL |
|
|
|-----------|-------------|-----|
|
|
| **qimingclaw** | Agent PC Client (mac/win/docker) | [https://github.com/qiming-ai/qimingclaw](https://github.com/qiming-ai/qimingclaw) |
|
|
| **qimingcode** | Qiming Agent Engine (based on open-source opencode) | [https://github.com/qiming-ai/qimingcode](https://github.com/qiming-ai/qimingcode) |
|
|
| **claude-code-acp-ts** | Claude Code ACP based on Zed | [https://github.com/qiming-ai/claude-code-acp-ts](https://github.com/qiming-ai/claude-code-acp-ts) |
|
|
|
|
#### **Infrastructure & Services**
|
|
| Repository | Description | URL |
|
|
|-----------|-------------|-----|
|
|
| **rcoder** | Sandbox & Container Scheduling (includes General Agent Engine) | [https://github.com/qiming-ai/rcoder](https://github.com/qiming-ai/rcoder) |
|
|
| **mcp-proxy** | MCP Service (used by qimingclaw and sandbox) | [https://github.com/qiming-ai/mcp-proxy](https://github.com/qiming-ai/mcp-proxy) |
|
|
| **qiming-file-server** | File Service (used by sandbox and qimingclaw, includes skill sync) | [https://github.com/qiming-ai/qiming-file-server](https://github.com/qiming-ai/qiming-file-server) |
|
|
|
|
#### **Web Application Development**
|
|
| Repository | Description | URL |
|
|
|-----------|-------------|-----|
|
|
| **xagi-frontend-templates** | Web Application Development Templates | [https://github.com/qiming-ai/xagi-frontend-templates](https://github.com/qiming-ai/xagi-frontend-templates) |
|
|
| **vite-plugin-design-mode** | Visual Editor Vite Plugin | [https://github.com/qiming-ai/vite-plugin-design-mode](https://github.com/qiming-ai/vite-plugin-design-mode) |
|
|
| **dev-inject** | Web Application Smart Script Injection | [https://github.com/qiming-ai/dev-inject](https://github.com/qiming-ai/dev-inject) |
|
|
|
|
#### **Plugin & Script Execution**
|
|
| Repository | Description | URL |
|
|
|-----------|-------------|-----|
|
|
| **run_code_rmcp** | Plugin Script Execution (TypeScript/JavaScript/Python) | [https://github.com/qiming-ai/run_code_rmcp](https://github.com/qiming-ai/run_code_rmcp) |
|
|
|
|
#### **Network & Utilities**
|
|
| Repository | Description | URL |
|
|
|-----------|-------------|-----|
|
|
| **lanproxy-go-client** | Network Tunnel Client (used by qimingclaw) | [https://github.com/ffay/lanproxy-go-client](https://github.com/ffay/lanproxy-go-client) |
|
|
|
|
---
|
|
|
|
### Design Patterns
|
|
|
|
- **DDD (Domain-Driven Design)**: Clear layer separation
|
|
- **CQRS**: Command Query Responsibility Segregation
|
|
- **Strategy Pattern**: Model selection, plugin invocation
|
|
- **Observer Pattern**: Message broadcasting
|
|
- **Repository Pattern**: Data access abstraction
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
| Component | Minimum | Recommended |
|
|
|-----------|---------|-------------|
|
|
| Java | JDK 17 | OpenJDK 17 |
|
|
| MySQL | 8.0+ | 8.0+ |
|
|
| Redis | 6.0+ | 7.0+ |
|
|
| Milvus | 2.5+ | 2.5+ |
|
|
| Elasticsearch | 9.2.1 | 9.2.1 |
|
|
| Memory | 4GB | 8GB+ |
|
|
| CPU | 2 cores | 4 cores+ |
|
|
|
|
### 1. Clone the Repository
|
|
|
|
```bash
|
|
git clone https://github.com/qiming-ai/qiming-backend.git
|
|
cd qiming-backend
|
|
```
|
|
|
|
### 2. Start Basic Services
|
|
|
|
- **Milvus Vector Database**: https://github.com/milvus-io/milvus
|
|
- **MySQL**: Install and configure MySQL, create database `agent_platform`, import `sql/init.sql`
|
|
- **Elasticsearch**: Install and configure Elasticsearch 9.2.1, configure Chinese word segmentation plugin for Chinese environment
|
|
- **mcp-proxy**: https://github.com/qiming-ai/mcp-proxy
|
|
- **Web development scheduling and agent sandbox service**: https://github.com/qiming-ai/rcoder
|
|
|
|
> For development and testing, you can use the official deployment package to run all basic services directly.
|
|
|
|
### 3. Add Configuration File
|
|
|
|
Copy `application-${env}.sample.yml` to `application-${env}.yml`:
|
|
|
|
### 4. Start the Application
|
|
|
|
**Option 1: Using IDE (IntelliJ IDEA, etc.)**
|
|
- Open `app-platform-bootstrap/app-platform-web-bootstrap/src/main/java/com/xspaceagi/PlatformApiApplication.java`
|
|
- Click the run button to start
|
|
|
|
**Option 2: Using Maven Commands**
|
|
```bash
|
|
# Build the project
|
|
mvn clean package -DskipTests
|
|
|
|
# Start the application
|
|
cd app-platform-bootstrap/app-platform-web-bootstrap
|
|
java -jar target/app-platform-web-bootstrap-*.jar
|
|
|
|
# Or run directly with Maven
|
|
mvn spring-boot:run -pl app-platform-bootstrap/app-platform-web-bootstrap -Pdev
|
|
```
|
|
|
|
**Option 3: Using IDEA Maven Panel**
|
|
- Open the Maven panel
|
|
- Find the `app-platform-web-bootstrap` module
|
|
- Right-click and select `Run` -> `spring-boot:run`
|
|
|
|
### 5. Access the Application
|
|
|
|
After starting, access the application (default port 8081):
|
|
|
|
- **API Documentation**: http://localhost:8081/doc.html
|
|
- **Health Check**: http://localhost:8081/health
|
|
|
|
---
|
|
|
|
## Module Description
|
|
|
|
### Project Structure
|
|
|
|
```
|
|
agent-platform/
|
|
├── app-platform-bootstrap/ # Bootstrap module
|
|
│ └── app-platform-web-bootstrap/ # Web application entry point
|
|
├── app-platform-foundation/ # Foundation module
|
|
│ ├── system-spec/ # System specification
|
|
│ ├── system-sdk/ # System SDK
|
|
│ └── system-domain/ # System domain models
|
|
├── app-platform-modules/ # Business modules
|
|
│ ├── app-platform-agent/ # Agent core module
|
|
│ ├── app-platform-knowledge/ # Knowledge base module
|
|
│ ├── app-platform-memory/ # Memory module
|
|
│ ├── app-platform-model-proxy/ # Model proxy module
|
|
│ ├── app-platform-mcp/ # MCP protocol module
|
|
│ ├── app-platform-compose/ # Custom table module
|
|
│ ├── app-platform-custom-page/ # Custom page module
|
|
│ ├── app-platform-eco-market/ # Ecosystem market module
|
|
│ ├── app-platform-sandbox/ # Sandbox module
|
|
│ ├── app-platform-log/ # Logging module
|
|
│ └── platform-system/ # Platform system module
|
|
├── fast-boot-dependencies/ # Dependency management
|
|
└── specs/ # Specification documents
|
|
```
|
|
|
|
### Core Modules
|
|
|
|
| Module | Description |
|
|
|--------|-------------|
|
|
| **Agent** | Agent creation, session management, message processing |
|
|
| **Knowledge** | Knowledge base management, document upload, vector search |
|
|
| **Memory** | Long-term memory storage and retrieval |
|
|
| **Model Proxy** | Unified model proxy interface |
|
|
| **MCP** | Model Context Protocol implementation |
|
|
| **Eco Market** | Plugin market and template management |
|
|
| **Compose** | Custom table functionality |
|
|
| **Custom Page** | No-code page builder |
|
|
|
|
---
|
|
|
|
## Configuration
|
|
|
|
### Configuration File Structure
|
|
|
|
```
|
|
app-platform-web-bootstrap/src/main/resources/
|
|
├── application.yml # Main configuration file (common settings)
|
|
├── application-dev.yml # Development environment configuration (local use, not committed)
|
|
├── application-test.yml # Test environment configuration (optional)
|
|
└── application-prod.yml # Production environment configuration (optional)
|
|
```
|
|
|
|
### Complete Environment Variable List
|
|
|
|
#### Database Configuration
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `DB_HOST` | MySQL database host | ✅ | localhost |
|
|
| `DB_PORT` | MySQL port | ✅ | 3306 |
|
|
| `DB_NAME` | Database name | ✅ | agent_platform |
|
|
| `DB_USERNAME` | Database username | ✅ | root |
|
|
| `DB_PASSWORD` | Database password | ✅ | - |
|
|
|
|
#### Custom Table Component Database (Doris not tested, supports MySQL)
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `DORIS_HOST` | Doris host | ✅ | localhost |
|
|
| `DORIS_DB_NAME` | Doris database name | ✅ | agent_custom_table |
|
|
| `DORIS_USERNAME` | Doris username | ✅ | root |
|
|
| `DORIS_PASSWORD` | Doris password | ✅ | - |
|
|
|
|
#### Redis Configuration
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `REDIS_HOST` | Redis host | ✅ | localhost |
|
|
| `REDIS_PORT` | Redis port | ✅ | 6379 |
|
|
| `REDIS_PASSWORD` | Redis password | ✅ | - |
|
|
| `REDIS_DB` | Redis database number | ✅ | 1 |
|
|
|
|
#### Milvus Vector Database
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `MILVUS_URI` | Milvus connection URI | ✅ | http://localhost:19530 |
|
|
| `MILVUS_USER` | Milvus username | ✅ | root |
|
|
| `MILVUS_PASSWORD` | Milvus password | ✅ | - |
|
|
|
|
#### Elasticsearch (Optional)
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `ES_URL` | Elasticsearch URL | ✅ | http://localhost:9200 |
|
|
| `ES_USERNAME` | Elasticsearch username | ✅ | elastic |
|
|
| `ES_PASSWORD` | Elasticsearch password | ✅ | - |
|
|
| `ES_API_KEY` | Elasticsearch API Key | ✅ | - |
|
|
|
|
#### Security Configuration
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `JWT_SECRET_KEY` | JWT signing key | ✅ | - (at least 32 characters) |
|
|
|
|
#### Tencent Cloud COS (Optional)
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `COS_SECRET_ID` | Tencent Cloud COS secret ID | ✅ | - |
|
|
| `COS_SECRET_KEY` | Tencent Cloud COS secret key | ✅ | - |
|
|
| `COS_BASE_URL` | COS access domain | ✅ | https://... |
|
|
|
|
#### File Storage
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `FILE_UPLOAD_FOLDER` | File upload directory | ✅ | /tmp/uploads |
|
|
| `FILE_BASE_URL` | File access URL | ✅ | https://yourdomain/api/file |
|
|
| `STORAGE_TYPE` | Storage type, currently supports Tencent Cloud COS and local file storage | ✅ | file |
|
|
|
|
#### External Services (Optional)
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `CODE_EXECUTE_URL` | Code execution service | ✅ | http://localhost:8020/... |
|
|
| `LOG_SERVICE_URL` | Log service URL, can be omitted, deprecated | ✅ | http://localhost:8097 |
|
|
| `MCP_PROXY_URL` | MCP proxy URL | ✅ | http://localhost:8020 |
|
|
|
|
#### Page Application Development Services (Optional)
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `DEV_SERVER_HOST` | Development server host | ✅ | http://localhost |
|
|
| `PROD_SERVER_HOST` | Production server host | ✅ | http://localhost:8099 |
|
|
| `BUILD_SERVER_URL` | Build server URL | ✅ | http://localhost:60000/api |
|
|
| `AI_AGENT_URL` | AI agent URL | ✅ | http://localhost:8086 |
|
|
| `DOCKER_PROXY_URL` | Docker proxy URL | ✅ | http://localhost:8088 |
|
|
|
|
#### Internal Network Tunnel Proxy Configuration (Optional)
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `SERVICE_HOST` | Internal service address | ❌ | 127.0.0.1 |
|
|
| `BIND_HOST` | Bind address | ❌ | 0.0.0.0 |
|
|
| `REVERSE_PORTS` | Port range | ❌ | 30000-40000 |
|
|
| `OUTER_HOST` | Client connection IP address | ❌ | - |
|
|
| `OUTER_PORT` | Client connection port | ❌ | 6443 |
|
|
|
|
#### Model Proxy (Optional)
|
|
|
|
| Variable | Description | Required | Default |
|
|
|----------|-------------|----------|---------|
|
|
| `MODEL_API_BASE_URL` | Model API URL, corresponding to accessible MODEL_PROXY_PORT | ❌ | - |
|
|
| `MODEL_PROXY_ENABLE` | Whether to enable proxy | ❌ | true |
|
|
| `MODEL_PROXY_PORT` | Proxy port | ❌ | 18086 |
|
|
| `MODEL_PROXY_SAVE_LOG` | Whether to save logs, depends on Elasticsearch | ❌ | true |
|
|
|
|
---
|
|
|
|
## Development Guide
|
|
|
|
### Code Standards
|
|
|
|
The project follows DDD layered architecture:
|
|
|
|
```
|
|
UI Layer → Adapter Layer → Application Layer → Domain Layer → Infrastructure Layer
|
|
```
|
|
|
|
---
|
|
|
|
## Contributing
|
|
|
|
Contributions of code, documentation, and bug reports are welcome!
|
|
|
|
1. Fork this repository
|
|
2. Create a feature branch (`git checkout -b feature/AmazingFeature`)
|
|
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
5. Open a Pull Request
|
|
|
|
### Contributors
|
|
|
|
Thanks to all developers who have contributed to this project!
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
This project is licensed under the **Apache License 2.0**.
|
|
|
|
See [LICENSE](LICENSE) file for details.
|
|
|
|
---
|
|
|
|
## Commercial License
|
|
|
|
### Open Source Use (Free)
|
|
|
|
This software can be used, modified, and distributed for free, but you must:
|
|
|
|
- ✅ Retain original copyright notices
|
|
- ✅ Include the Apache 2.0 license text
|
|
- ✅ State that your product is based on this software
|
|
|
|
### Commercial License (Paid)
|
|
|
|
If you need:
|
|
|
|
- 🏢 **Remove copyright notices** (white-label products)
|
|
- 🔄 **OEM partnership** (integrate into your products for resale)
|
|
- 🎨 **Custom branding** (use your own brand)
|
|
- 🚀 **Priority support** (enterprise-level technical support)
|
|
|
|
You can apply for a commercial license to obtain additional rights.
|
|
|
|
For details, see: [COMMERCIAL_LICENSE.md](COMMERCIAL_LICENSE.md) |