AeThex-Engine-Core/docs/AI_MODULE_ARCHITECTURE.md
2026-02-23 04:47:38 +00:00

425 lines
10 KiB
Markdown

# AeThex Engine - AI Assistant Module Architecture
## Vision
An AI-powered coding assistant built directly into the AeThex Engine editor, providing
realtime code completion, bug detection, documentation generation, and intelligent suggestions.
---
## Core Features
### 1. Smart Code Completion
- Context-aware GDScript suggestions
- Function parameter hints with AI explanations
- Auto-completion that understands your project
- Natural language to code generation
### 2. Intelligent Error Detection
- Real-time bug detection
- AI-powered fix suggestions
- Performance optimization hints
- Security vulnerability scanning
### 3. Documentation AI
- Auto-generate function documentation
- Explain complex code blocks
- Generate tutorials from your code
- API reference creator
### 4. Asset Intelligence
- Texture optimization suggestions
- Mesh LOD recommendations
- Shader performance analysis
- Asset naming conventions
### 5. Natural Language Commands
- "Create a player controller"
- "Add jump physics to this character"
- "Generate a main menu UI"
- "Debug why my player isn't moving"
---
## Technical Architecture
### Module Structure
```
engine/modules/aethex_ai/
├── SCsub # Build configuration
├── config.py # Module setup
├── register_types.h/cpp # Godot module registration
├── ai_assistant.h/cpp # Main AI assistant class
├── ai_code_completion.h/cpp # Code completion engine
├── ai_error_analyzer.h/cpp # Error detection & fixes
├── ai_doc_generator.h/cpp # Documentation generation
├── ai_asset_optimizer.h/cpp # Asset optimization
├── api/
│ ├── ai_api_client.h/cpp # API communication
│ ├── claude_client.h/cpp # Claude API integration
│ ├── rate_limiter.h/cpp # API rate limiting
│ └── cache_manager.h/cpp # Response caching
├── ui/
│ ├── ai_panel.h/cpp # Main AI panel UI
│ ├── ai_chat_widget.h/cpp # Chat interface
│ └── ai_suggestions_panel.h/cpp # Suggestions display
└── tests/
└── test_ai_assistant.h # Unit tests
```
### Core Classes
#### 1. AIAssistant (Singleton)
```cpp
class AIAssistant : public Object {
GDCLASS(AIAssistant, Object);
private:
static AIAssistant *singleton;
AIAPIClient *api_client;
CacheManager *cache;
RateLimiter *rate_limiter;
public:
// Code assistance
String get_code_completion(const String &context, const Vector<String> &recent_code);
String explain_code(const String &code_block);
String fix_error(const String &error_message, const String &code_context);
// Documentation
String generate_function_docs(const String &function_signature);
String generate_class_docs(const String &class_code);
// Natural language
String natural_language_to_code(const String &description, const String &context);
// Asset optimization
Dictionary analyze_asset(const String &asset_path);
String suggest_optimization(const String &asset_path);
static AIAssistant *get_singleton();
};
```
#### 2. AIAPIClient
```cpp
class AIAPIClient : public RefCounted {
GDCLASS(AIAPIClient, RefCounted);
private:
String api_key;
String api_endpoint;
HTTPClient *http_client;
struct PendingRequest {
Callable callback;
String request_id;
uint64_t timestamp;
};
HashMap<String, PendingRequest> pending_requests;
public:
// Async API calls
String send_completion_request(const String &prompt, const Callable &callback);
String send_chat_request(const Vector<String> &messages, const Callable &callback);
// Sync API calls (with timeout)
String send_completion_sync(const String &prompt, float timeout = 10.0);
// Configuration
void set_api_key(const String &p_key);
void set_endpoint(const String &p_endpoint);
Error initialize();
};
```
#### 3. AICodeCompletion (Editor Plugin)
```cpp
class AICodeCompletion : public EditorPlugin {
GDCLASS(AICodeCompletion, EditorPlugin);
private:
CodeEdit *current_editor;
PopupMenu *suggestion_popup;
Timer *completion_timer;
String current_context;
void _on_text_changed();
void _on_completion_timer_timeout();
void _show_ai_suggestions(const Vector<String> &suggestions);
public:
virtual String get_name() const override { return "AICodeCompletion"; }
virtual void edit(Object *p_object) override;
virtual bool handles(Object *p_object) const override;
};
```
#### 4. AIPanel (Editor Dock)
```cpp
class AIPanel : public VBoxContainer {
GDCLASS(AIPanel, VBoxContainer);
private:
TabContainer *tab_container;
// Tabs
Control *chat_tab;
Control *suggestions_tab;
Control *docs_tab;
// Chat interface
RichTextLabel *chat_history;
LineEdit *chat_input;
Button *send_button;
// Suggestions
Tree *suggestions_tree;
Button *apply_suggestion_button;
void _on_send_chat();
void _on_apply_suggestion();
void _update_suggestions();
public:
void add_chat_message(const String &message, bool is_user);
void show_suggestion(const String &title, const String &description, const String &code);
};
```
---
## API Integration
### Claude API (Anthropic)
**Endpoint:** `https://api.anthropic.com/v1/messages`
**Request Format:**
```json
{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Generate a GDScript player controller with WASD movement"
}
],
"system": "You are an expert game developer assistant for the AeThex Engine..."
}
```
### Rate Limiting
- Free tier: 10 requests/minute
- Pro tier: 100 requests/minute
- Cache responses for 1 hour
- Queue requests when rate limited
### Error Handling
```cpp
enum APIErrorCode {
API_ERROR_NONE,
API_ERROR_NETWORK,
API_ERROR_AUTH,
API_ERROR_RATE_LIMIT,
API_ERROR_TIMEOUT,
API_ERROR_INVALID_RESPONSE
};
```
---
## User Interface
### 1. AI Panel (Dock)
- Bottom dock by default
- Resizable, collapsible
- Three tabs: Chat, Suggestions, Docs
### 2. Inline Suggestions
- Ghost text in code editor
- Accept with Tab, reject with Esc
- Multiple suggestions with Alt+N
### 3. Context Menu Integration
- Right-click → "Ask AI about this"
- Right-click → "Generate docs"
- Right-click → "Fix this error"
### 4. Command Palette
- Ctrl+Shift+A → AI Command Palette
- Type natural language commands
- See AI-powered results instantly
---
## Configuration & Settings
### Editor Settings
```cpp
// In editor_settings.cpp
EDITOR_SETTING(Variant::STRING, PROPERTY_HINT_NONE,
"ai/api_key", "", "")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE,
"ai/enable_code_completion", true, "")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE,
"ai/enable_error_detection", true, "")
EDITOR_SETTING(Variant::INT, PROPERTY_HINT_RANGE,
"ai/suggestion_delay_ms", 500, "100,2000,10")
EDITOR_SETTING(Variant::BOOL, PROPERTY_HINT_NONE,
"ai/cache_responses", true, "")
```
### User Preferences
- API key (encrypted storage)
- Enable/disable features
- Suggestion delay
- Privacy settings (opt-in telemetry)
---
## Privacy & Security
### Data Handling
- **Never** send full project code
- Only send relevant context (20 lines max)
- Strip sensitive data (passwords, keys)
- User explicitly opts-in
### API Key Storage
```cpp
// Encrypted storage using EditorSettings
String encrypted_key = EditorSettings::get_singleton()
->get_setting("ai/api_key_encrypted");
String api_key = Crypto::decrypt_aes256(encrypted_key, machine_id);
```
### Usage Tracking (Opt-in Only)
- Number of requests
- Popular features
- Error rates
- Anonymous metrics only
---
## Implementation Phases
### Phase 1: Foundation (Week 1-2)
- [ ] Module structure & registration
- [ ] API client implementation
- [ ] Basic UI panel
- [ ] Settings integration
- [ ] Simple code completion
### Phase 2: Core Features (Week 3-4)
- [ ] Enhanced code completion
- [ ] Error detection & fixes
- [ ] Documentation generation
- [ ] Chat interface
### Phase 3: Advanced Features (Week 5-8)
- [ ] Natural language commands
- [ ] Asset optimization
- [ ] Performance analysis
- [ ] Multi-file context
### Phase 4: Polish & Optimization (Week 9-12)
- [ ] Response caching
- [ ] Rate limiting
- [ ] Error handling
- [ ] User testing & feedback
---
## Testing Strategy
### Unit Tests
```cpp
// test_ai_assistant.h
TEST_CASE("[AIAssistant] Code completion") {
AIAssistant *ai = AIAssistant::get_singleton();
String result = ai->get_code_completion(
"func _ready():\n\t",
Vector<String>()
);
CHECK(result.contains("extends"));
}
```
### Integration Tests
- Test with real API (sandboxed)
- Mock API for CI/CD
- Rate limiting behavior
- Error recovery
### User Acceptance Testing
- Beta testers from community
- Collect feedback
- Iterate quickly
---
## Metrics & Success Criteria
### Technical Metrics
- Response time < 2 seconds
- Cache hit rate > 60%
- Error rate < 1%
- API cost < $0.01/user/day
### User Metrics
- Daily active users
- Feature usage rates
- User satisfaction (surveys)
- Productivity improvement
---
## Future Enhancements
### Advanced AI Features
- Multi-language support (C#, C++)
- Voice commands
- Visual scripting AI
- Game design suggestions
### Model Improvements
- Fine-tuned models on game dev code
- Local AI models (privacy-first)
- Specialized models for different tasks
### Ecosystem Integration
- AI-generated assets
- Procedural content generation
- Game balancing suggestions
- Playtesting AI
---
## Getting Started (Developer)
### 1. Get API Key
```bash
# Sign up at https://console.anthropic.com
# Create API key
# Add to AeThex settings
```
### 2. Enable Module
```bash
# Build with AI module
scons modules=aethex_ai
```
### 3. Test in Editor
```
Editor → Settings → AI Assistant
Enter API key
Enable code completion
Test with simple script
```
---
**Next Steps:** Implement Phase 1 foundation (API client + basic UI)