reorganize: consolidate all documentation into readmes/

- Moved 20 root-level markdown files to readmes/
- Includes COMMANDS.md, CONFIG_README.md, all UNO docs, all completion reports
- Added new: MEMORY_EDITOR_FEATURE.md, MEMORY_EDITOR_ESCAPING_FIX.md,
  CONFIG_SOURCES_ANALYSIS.md, MCP_TOOL_CALLING_ANALYSIS.md, and others
- Root directory is now clean of documentation clutter
This commit is contained in:
2026-03-04 00:19:49 +02:00
parent fdde12c03d
commit c708770266
22 changed files with 4573 additions and 0 deletions

View File

@@ -0,0 +1,244 @@
# 📊 Configuration Sources Analysis
## 🎯 Configuration Sources Identified
### **Bot Web UI (bot/static/index.html)**
Settings that can be changed via the web UI:
| Setting | API Endpoint | Storage | Runtime Variable |
|----------|--------------|----------|------------------|
| **DM Mood** | `GET/POST /mood` | globals.DM_MOOD | Runtime only |
| **Language Mode** | `GET/POST /language/toggle` | globals.LANGUAGE_MODE | Runtime only |
| **Evil Mode** | `GET/POST /evil-mode` | globals.EVIL_MODE | Runtime only |
| **GPU Selection** | `GET/POST /gpu-select` | memory/gpu_state.json | JSON file |
| **Server Mood** | `GET/POST /servers/{guild_id}/mood` | server_manager.servers | servers_config.json |
| **Autonomous Channel** | `POST /servers/{guild_id}/autonomous-channel` | server_manager.servers | servers_config.json |
| **Bedtime Range** | `POST /servers/{guild_id}/bedtime-range` | server_manager.servers | servers_config.json |
| **Bipolar Mode** | `POST /bipolar-mode/toggle` | globals.BIPOLAR_MODE | Runtime only |
| **Log Configuration** | `GET/POST /api/log/config` | memory/log_config.json | JSON file |
### **config.yaml (Static Configuration)**
Settings that SHOULD be in config.yaml:
| Setting | Current Location | Should Be |
|----------|------------------|-----------|
| Service URLs | config.yaml ✓ | config.yaml ✓ |
| Model Names | config.yaml ✓ | config.yaml ✓ |
| Language Mode | config.yaml | **Both!** (config default, UI override) |
| GPU Preference | config.yaml | **Both!** (config default, UI override) |
| Debug Modes | config.yaml | config.yaml ✓ |
| Timeouts | config.yaml | config.yaml ✓ |
| Port Numbers | config.yaml | config.yaml ✓ |
### **Cheshire Cat UI (Port 1865)**
Settings managed via Cheshire Cat web interface:
- Personality prompts
- Plugin configurations
- Memory settings
- Tool settings
---
## 🔄 Priority Hierarchy
```
1. Web UI Changes (highest priority)
2. Runtime State (globals.py)
3. JSON Files (memory/*)
4. config.yaml (default values)
5. Hardcoded defaults (fallback)
```
---
## ⚠️ Problem Identified
### **Current Issues:**
1. **Runtime-only changes** - Web UI changes don't persist across restarts (except GPU state)
2. **No sync between sources** - config.yaml and web UI are disconnected
3. **Inconsistent storage** - Some in JSON, some in memory, some hardcoded
4. **No configuration versioning** - Can't tell if config is out of sync
### **What We Need:**
1. **Unified config manager** - Single source of truth
2. **Persistence layer** - Web UI changes saved to config
3. **Priority system** - Web UI > config > defaults
4. **Sync mechanism** - Reload config when changed
5. **API for config management** - Read/write config from anywhere
---
## 🎯 Solution Design
### **Hybrid Configuration System**
```
┌─────────────────────────────────────────────┐
│ config.yaml (Defaults) │
│ - Static configuration values │
│ - Default settings │
│ - Safe to commit to git │
└──────────────┬──────────────────────────┘
│ Loaded at startup
┌─────────────────────────────────────────────┐
│ Runtime Configuration (Active) │
│ - Can be modified via Web UI │
│ - Can be modified via API │
│ - Can be modified via CLI │
└──────┬────────────────────┬─────────────┘
│ │
│ │
↓ ↓
┌─────────────┐ ┌─────────────┐
│ Web UI │ │ CLI/API │
│ Changes │ │ Changes │
└──────┬──────┘ └──────┬──────┘
│ │
│ │
↓ ↓
┌─────────────────────────────────────────────┐
│ config_runtime.yaml (Optional) │
│ - Overrides config.yaml │
│ - Only contains changed values │
│ - Auto-generated │
│ - DO NOT commit to git │
└──────────────┬──────────────────────────┘
│ Optional persistence
┌─────────────────────────────────────────────┐
│ Reverted to config.yaml │
│ (on next restart if no overrides) │
└─────────────────────────────────────────────┘
```
---
## 📝 Implementation Plan
### **Phase 1: Create Config Manager**
- [ ] Create `bot/config_manager.py`
- [ ] Implement unified loading (config.yaml + overrides)
- [ ] Implement persistence (save runtime changes)
- [ ] Implement priority system
### **Phase 2: Update API Endpoints**
- [ ] Add GET/POST `/config` endpoint
- [ ] Update existing endpoints to use config_manager
- [ ] Save runtime changes to config_runtime.yaml
### **Phase 3: Update Web UI**
- [ ] Add "System Settings" tab
- [ ] Display current config values
- [ ] Allow editing of config.yaml values
- [ ] Add "Reset to Defaults" button
### **Phase 4: Testing**
- [ ] Test config loading
- [ ] Test Web UI changes
- [ ] Test persistence
- [ ] Test config reload
---
## 🔧 Configuration Categories
### **Static (config.yaml only)**
- Service URLs
- Port numbers
- Timeout values
- File paths
- GPU device IDs
### **Hybrid (config default + UI override)**
- Language mode
- GPU preference
- Debug modes
- Model names (some)
### **Dynamic (Web UI only)**
- Mood (DM and per-server)
- Evil mode
- Bipolar mode
- Server-specific settings (autonomous channel, bedtime)
- Autonomous features
### **External (Cheshire Cat UI)**
- Personality settings
- Plugin configurations
- Memory settings
---
## 📊 Configuration File Structure
### **config.yaml** (Defaults, committed)
```yaml
discord:
language_mode: english # Default, can be overridden by UI
api_port: 3939
gpu:
prefer_amd: false # Default, can be overridden by UI
amd_models_enabled: true
models:
text: llama3.1
vision: vision
evil: darkidol
japanese: swallow
# ... etc
```
### **config_runtime.yaml** (Overrides, not committed)
```yaml
# Auto-generated file - do not edit manually
# Contains values changed via Web UI that should persist across restarts
discord:
language_mode: japanese # Overridden by Web UI
gpu:
prefer_amd: true # Overridden by Web UI
# ... only changed values
```
### **memory/gpu_state.json** (Current GPU)
```json
{
"current_gpu": "amd",
"last_updated": "2026-02-15T10:30:00"
}
```
### **memory/servers_config.json** (Per-server settings)
```json
{
"123456789": {
"mood": "bubbly",
"autonomous_channel_id": 987654321,
"bedtime_hour": 22,
"bedtime_minute": 0
}
// ... per-server settings
}
```
---
## 🎯 Next Steps
1. **Create `bot/config_manager.py`** - Unified configuration manager
2. **Update `bot/config.py`** - Integrate config_manager
3. **Add `/config` API endpoints** - Read/write config
4. **Update Web UI** - Add config management tab
5. **Test** - Verify all configuration paths work correctly