Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
6324fe0
feat: Introduce Neo4j integration.
lusains Dec 20, 2025
4430085
Merge upstream/main into feature/support-neo4j
lusains Dec 22, 2025
4c8bdc2
chore:fmt pylint.
Aries-ckt Jan 11, 2026
50976ee
chore:fmt pylint.
Aries-ckt Jan 12, 2026
2df4fa3
feat:dbgpt skill
Aries-ckt Feb 12, 2026
bbf2706
Merge branch 'feature/support-neo4j' into feat/dbgpt_skill
Aries-ckt Feb 12, 2026
9842dcb
feat:dbgpt skill
Aries-ckt Feb 13, 2026
688c604
feat:dbgpt skill
Aries-ckt Feb 13, 2026
c3bf820
feat:dbgpt skill
Aries-ckt Feb 13, 2026
bcea616
feat:dbgpt skill
Aries-ckt Feb 13, 2026
97fde0a
feat:dbgpt skill template
Aries-ckt Feb 25, 2026
cc5a4bc
feat:dbgpt skill template
Aries-ckt Feb 25, 2026
70b76e0
feat:refact agentic data api
Aries-ckt Feb 25, 2026
169e493
feat:refact agentic data api
Aries-ckt Feb 25, 2026
f5ead26
feat:add database resource
Aries-ckt Feb 25, 2026
a97d1ab
fix:react add phase
Aries-ckt Feb 26, 2026
9fc6c92
feat: support chat share and playback
chenliang15405 Feb 26, 2026
250166f
Merge remote-tracking branch 'origin/feat/dbgpt_skill' into feat/dbgp…
chenliang15405 Feb 26, 2026
a49dd62
fix: 修复主页跳转
chenliang15405 Feb 26, 2026
48aa8af
feat:add skill creator
Aries-ckt Feb 27, 2026
11057f4
feat:create skill example
Aries-ckt Feb 28, 2026
1c51b7e
Merge remote-tracking branch 'origin/feat/dbgpt_skill' into feat/dbgp…
Aries-ckt Feb 28, 2026
bf5aa51
feat: internationalize homepage examples and update agentic data api …
Aries-ckt Feb 28, 2026
04df52f
fix: escape braces in f-string prompts in agentic_data_api.py to fix …
Aries-ckt Feb 28, 2026
348367a
feat:create database example
Aries-ckt Mar 2, 2026
56a530c
fix: fix duplicate image in html report
chenliang15405 Mar 2, 2026
e7245e7
fix: fix native app chat and update react agent scene value
chenliang15405 Mar 3, 2026
d19304a
fix: fix the left content to fill the entire page.
chenliang15405 Mar 3, 2026
1c65a6c
fix: optimize input comppotent
chenliang15405 Mar 4, 2026
df94994
feat: optimize page style
chenliang15405 Mar 4, 2026
8b5ad52
fix: fix i18n
chenliang15405 Mar 5, 2026
2433d4e
feat: multi round palyback
chenliang15405 Mar 5, 2026
d230753
fix: fix input box
chenliang15405 Mar 6, 2026
7c30669
feat: add csv analysis skill
chenliang15405 Mar 7, 2026
4258ad5
fix: optimize csv skill
chenliang15405 Mar 8, 2026
80f7b44
fix: react agent chat with selected LLM
chenliang15405 Mar 8, 2026
47d891b
fix:update dbgpt web component
Aries-ckt Mar 8, 2026
c72a2e6
feat(web): move view-all icon to sidebar header + add search to conve…
chenliang15405 Mar 9, 2026
aef86d2
feat: history conversation list
chenliang15405 Mar 9, 2026
57ff854
feat(sidebar): rename 应用管理, add 模型评测, optimize icons and highlights
chenliang15405 Mar 9, 2026
92bc15f
fix:i18n
Aries-ckt Mar 9, 2026
0800033
Merge remote-tracking branch 'origin/feat/dbgpt_skill' into feat/dbgp…
Aries-ckt Mar 9, 2026
7f19ffe
fix:i18n
Aries-ckt Mar 9, 2026
11f59b4
fix:i18n
Aries-ckt Mar 9, 2026
56db7ac
Merge remote-tracking branch 'origin/feat/dbgpt_skill' into feat/dbgp…
chenliang15405 Mar 10, 2026
3e3f221
feat: optimize index page and sidebar
chenliang15405 Mar 10, 2026
4f42161
fix: skill i18n
chenliang15405 Mar 10, 2026
746cdee
chore: build web file
chenliang15405 Mar 10, 2026
e4412af
fix:web side bug
Aries-ckt Mar 11, 2026
2f4d877
fix: fix share page web build visit
chenliang15405 Mar 11, 2026
f9311c8
optimize: optimize collapse panel button
chenliang15405 Mar 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 17 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ nltk_data
pilot/data/
pilot/nltk_data
pilot/mock_datas/db-gpt-test.db.wal
pilot/tmp/

logswebserver.log.*
.history/*
Expand Down Expand Up @@ -190,4 +191,19 @@ thirdparty
/i18n/locales/**/**/*~
configs/my
.devcontainer/dev.toml
test_docs
test_docs

# AI coding assistant configs
.opencode/
.cursor/
.aone_copilot/
.windsurf/
.continue/
.codeium/
.github/copilot-instructions.md
.claude/
.codex/
.trade/
.qoder/
.qwencode/
.sisyphus/
Empty file added .opencode/init
Empty file.
362 changes: 362 additions & 0 deletions DB-GPT-Core-Code-Design-Analysis.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,362 @@

# DB-GPT Core Code Design Analysis

## Overview

This document provides a comprehensive analysis of DB-GPT's core code design, examining the packages directory structure and understanding the architectural decisions, purposes, and problems solved by each component.

## Package Architecture Overview

DB-GPT follows a modular, layered architecture consisting of 6 main packages:

```
packages/
├── dbgpt-core/ # Core abstractions and interfaces
├── dbgpt-serve/ # Service layer with REST APIs
├── dbgpt-app/ # Application layer and business logic
├── dbgpt-client/ # Client SDK and API interfaces
├── dbgpt-ext/ # Extensions and integrations
└── dbgpt-accelerator/ # Performance acceleration modules
```

## 1. dbgpt-core: The Foundation Layer

### Design Purpose
The `dbgpt-core` package serves as the foundational layer that defines all core abstractions, interfaces, and utilities used throughout the entire DB-GPT ecosystem.

### Key Design Decisions

#### 1.1 Component System (`component.py`)
```python
class SystemApp(LifeCycle):
"""Main System Application class that manages the lifecycle and registration of components."""
```

**Why this design:**
- **Dependency Injection**: Provides a centralized component registry for service discovery
- **Lifecycle Management**: Standardizes component initialization, startup, and shutdown phases
- **Modularity**: Enables loose coupling between different system components

**Problems solved:**
- Eliminates circular dependencies between modules
- Provides consistent component lifecycle management
- Enables dynamic component registration and discovery

#### 1.2 Core Interfaces (`core/interface/`)
The core package defines essential interfaces:

- **LLM Interface**: `llm.py` - Abstracts different language model providers
- **Storage Interface**: `storage.py` - Unified storage abstraction for various backends
- **Message Interface**: `message.py` - Standardizes conversation and message handling
- **Embedding Interface**: `embeddings.py` - Abstracts embedding model implementations

**Why this design:**
- **Provider Agnostic**: Allows switching between different LLM providers without code changes
- **Extensibility**: New implementations can be added without modifying existing code
- **Type Safety**: Provides strong typing for all core operations

#### 1.3 AWEL (Agentic Workflow Expression Language) (`core/awel/`)
```python
# AWEL provides declarative workflow orchestration
dag/ # Directed Acyclic Graph management
operators/ # Workflow operators
trigger/ # Event triggers
flow/ # Workflow execution flows
```

**Why this design:**
- **Declarative Workflows**: Enables complex AI workflows to be defined as code
- **Visual Programming**: Supports UI-based workflow creation
- **Scalability**: DAG-based execution ensures proper dependency management

**Problems solved:**
- Complex AI pipeline orchestration
- Visual workflow design requirements
- Parallel and sequential task execution

### Dependencies and Extras
```toml
# Core dependencies are minimal
dependencies = [
"aiohttp==3.8.4",
"pydantic>=2.6.0",
"typeguard",
"snowflake-id",
]

# Rich optional dependencies for different use cases
[project.optional-dependencies]
agent = ["termcolor", "pandas", "mcp>=1.4.1"]
framework = ["SQLAlchemy", "alembic", "transformers"]
```

**Design Rationale:**
- **Minimal Core**: Keeps the core lightweight with only essential dependencies
- **Optional Features**: Allows users to install only what they need
- **Conflict Resolution**: Handles version conflicts between different model providers

## 2. dbgpt-serve: The Service Layer

### Design Purpose
Provides RESTful APIs and service endpoints for all core functionalities, implementing the service-oriented architecture pattern.

### Key Components Structure
```
dbgpt_serve/
├── agent/ # Agent lifecycle and management services
├── conversation/ # Chat and conversation management
├── datasource/ # Data source connectivity services
├── flow/ # AWEL workflow services
├── model/ # Model serving and management
├── rag/ # RAG pipeline services
├── prompt/ # Prompt management services
└── core/ # Common service utilities
```

### Design Decisions

#### 2.1 Service-Oriented Architecture
**Why this design:**
- **Microservices Ready**: Each service can be independently deployed
- **API Standardization**: Consistent REST API patterns across all services
- **Horizontal Scaling**: Services can be scaled independently based on load

#### 2.2 Minimal Dependencies
```toml
dependencies = ["dbgpt-ext"]
```

**Why this design:**
- **Separation of Concerns**: Service layer focuses only on API exposure
- **Dependency Inversion**: Depends on abstractions rather than implementations
- **Modularity**: Can be deployed with different extension combinations

**Problems solved:**
- API standardization across different functionalities
- Service discovery and registry
- Independent service deployment and scaling

## 3. dbgpt-app: The Application Layer

### Design Purpose
Serves as the main application server that orchestrates all services and provides the complete DB-GPT application experience.

### Key Components
```
dbgpt_app/
├── dbgpt_server.py # Main FastAPI application
├── component_configs.py # Component configuration and registration
├── base.py # Database and initialization logic
├── scene/ # Business scenario implementations
├── openapi/ # OpenAPI endpoint definitions
└── initialization/ # Startup and migration logic
```

### Design Decisions

#### 3.1 Application Orchestration (`dbgpt_server.py`)
```python
system_app = SystemApp(app)
mount_routers(app)
initialize_components(param, system_app)
```

**Why this design:**
- **Centralized Orchestration**: Single entry point for the entire application
- **Component Integration**: Brings together all packages into a cohesive application
- **Configuration Management**: Centralizes all configuration concerns

#### 3.2 Business Scene Management (`scene/`)
**Why this design:**
- **Business Logic Separation**: Isolates business scenarios from technical infrastructure
- **Extensible Scenarios**: New business scenarios can be added without modifying core logic
- **Domain-Driven Design**: Organizes code around business concepts

#### 3.3 Full Dependency Integration
```toml
dependencies = [
"dbgpt-acc-auto",
"dbgpt",
"dbgpt-ext",
"dbgpt-serve",
"dbgpt-client"
]
```

**Problems solved:**
- Integration of all system components
- Business scenario implementation
- Complete application lifecycle management
- Database migration and initialization

## 4. dbgpt-client: The Client SDK Layer

### Design Purpose
Provides a unified Python SDK for external applications to interact with DB-GPT services.

### Key Components
```
dbgpt_client/
├── client.py # Main client implementation
├── schema.py # Request/response schemas
├── app.py # Application management client
├── flow.py # Workflow management client
├── knowledge.py # Knowledge base management client
└── datasource.py # Data source management client
```

### Design Decisions

#### 4.1 Unified Client Interface
```python
class Client:
async def chat(self, model: str, messages: Union[str, List[str]], ...)
async def chat_stream(self, model: str, messages: Union[str, List[str]], ...)
```

**Why this design:**
- **Ease of Use**: Single client handles all DB-GPT functionality
- **Type Safety**: Strongly typed interfaces for all operations
- **Async Support**: Modern async/await patterns for better performance

#### 4.2 OpenAI-Compatible Interface
**Why this design:**
- **Compatibility**: Allows existing OpenAI-based applications to integrate easily
- **Standard Patterns**: Follows established AI API conventions
- **Migration Path**: Provides smooth migration from OpenAI to DB-GPT

**Problems solved:**
- External system integration
- SDK standardization
- API client management and authentication

## 5. dbgpt-ext: The Extension Layer

### Design Purpose
Implements concrete extensions for data sources, storage backends, LLM providers, and other integrations.

### Key Components
```
dbgpt_ext/
├── datasource/ # Database and data source connectors
├── storage/ # Vector stores and storage backends
├── rag/ # RAG implementation extensions
├── llms/ # LLM provider implementations
└── vis/ # Visualization extensions
```

### Design Decisions

#### 5.1 Plugin Architecture
```toml
[project.optional-dependencies]
storage_milvus = ["pymilvus"]
storage_chromadb = ["chromadb>=0.4.22"]
datasource_mysql = ["mysqlclient==2.1.0"]
```

**Why this design:**
- **Modular Extensions**: Users install only needed integrations
- **Version Isolation**: Prevents dependency conflicts between different backends
- **Easy Integration**: New providers can be added without core changes

#### 5.2 Provider Abstractions
**Why this design:**
- **Vendor Independence**: Switch between providers without code changes
- **Consistent Interfaces**: Same API regardless of underlying implementation
- **Performance Optimization**: Provider-specific optimizations while maintaining compatibility

**Problems solved:**
- Multi-provider support
- Dependency management complexity
- Integration with external systems

## 6. dbgpt-accelerator: The Performance Layer

### Design Purpose
Provides performance optimization modules for model inference and computation acceleration.

### Key Components
```
dbgpt-accelerator/
├── dbgpt-acc-auto/ # Automatic acceleration detection
└── dbgpt-acc-flash-attn/ # Flash Attention acceleration
```

### Design Decisions

#### 6.1 Modular Acceleration
**Why this design:**
- **Optional Performance**: Acceleration is opt-in based on hardware capabilities
- **Hardware Specific**: Different optimizations for different hardware configurations
- **Fallback Support**: Graceful degradation when acceleration is unavailable

**Problems solved:**
- Model inference performance
- Hardware-specific optimizations
- Memory efficiency improvements

## Architectural Design Principles

### 1. Separation of Concerns
Each package has a distinct responsibility:
- **Core**: Abstractions and interfaces
- **Serve**: API endpoints and services
- **App**: Business logic and orchestration
- **Client**: External integration
- **Ext**: Concrete implementations
- **Accelerator**: Performance optimizations

### 2. Dependency Inversion
Higher-level modules (app, serve) depend on abstractions (core) rather than concrete implementations (ext).

### 3. Open/Closed Principle
The system is open for extension (new providers, storage backends) but closed for modification (core interfaces remain stable).

### 4. Interface Segregation
Interfaces are focused and cohesive, allowing clients to depend only on methods they use.

## Problems Solved by This Design

### 1. **Complexity Management**
- Modular architecture breaks down complexity into manageable pieces
- Clear separation of concerns reduces cognitive load
- Standardized interfaces reduce integration complexity

### 2. **Scalability Requirements**
- Service-oriented architecture enables horizontal scaling
- Component-based design allows selective optimization
- Microservices-ready architecture supports distributed deployment

### 3. **Extensibility Needs**
- Plugin architecture enables easy addition of new providers
- Interface-based design allows swapping implementations
- Optional dependencies support different deployment scenarios

### 4. **Integration Challenges**
- Unified client SDK simplifies external integration
- OpenAI-compatible APIs reduce migration barriers
- Standardized schemas ensure interoperability

### 5. **Performance Optimization**
- Separate acceleration packages for hardware-specific optimizations
- Optional performance modules prevent dependency bloat
- Modular design enables selective performance tuning

### 6. **Development Productivity**
- Component lifecycle management reduces boilerplate code
- Dependency injection simplifies testing and development
- Clear architectural boundaries improve team productivity

## Conclusion

DB-GPT's package architecture demonstrates sophisticated software engineering principles:

1. **Layered Architecture**: Clear separation between core abstractions, services, applications, and extensions
2. **Modular Design**: Each package serves a specific purpose with minimal overlap
3. **Dependency Management**: Careful dependency design prevents circular dependencies and version conflicts
4. **Extensibility**: Plugin architecture enables easy addition of new capabilities
5. **Performance**: Separate acceleration packages provide hardware-specific optimizations
6. **Developer Experience**: Unified APIs and strong typing improve development productivity

This design enables DB-GPT to serve as a robust, scalable foundation for AI-native data applications while maintaining flexibility for diverse deployment scenarios and integration requirements.
Loading
Loading