Files
microdao-daarion/docs/hardcode_vs_config.md
Apple 0c8bef82f4 feat: Add Alateya, Clan, Eonarch agents + fix gateway-router connection
## Agents Added
- Alateya: R&D, biotech, innovations
- Clan (Spirit): Community spirit agent
- Eonarch: Consciousness evolution agent

## Changes
- docker-compose.node1.yml: Added tokens for all 3 new agents
- gateway-bot/http_api.py: Added configs and webhook endpoints
- gateway-bot/clan_prompt.txt: New prompt file
- gateway-bot/eonarch_prompt.txt: New prompt file

## Fixes
- Fixed ROUTER_URL from :9102 to :8000 (internal container port)
- All 9 Telegram agents now working

## Documentation
- Created PROJECT-MASTER-INDEX.md - single entry point
- Added various status documents and scripts

Tokens configured:
- Helion, NUTRA, Agromatrix (existing)
- Alateya, Clan, Eonarch (new)
- Druid, GreenFood, DAARWIZZ (configured)
2026-01-28 06:40:34 -08:00

124 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Хардкод vs Конфігурація
## 🔴 ХАРДКОД (Hardcode) - Що це?
**Хардкод** = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду.
### Приклад хардкоду:
```python
# ❌ ХАРДКОД - значення прямо в коді
local_model = "qwen3-8b" # Якщо треба змінити модель, треба редагувати код!
```
### Проблеми хардкоду:
1. **Треба редагувати код** для зміни значення
2. **Не можна змінити без перезапуску** сервісу
3. **Важко тестувати** різні конфігурації
4. **Не гнучко** - однаковий код для всіх середовищ (dev/prod)
---
## ✅ КОНФІГУРАЦІЯ (Config) - Що це?
**Конфігурація** = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду.
### Приклад конфігурації:
```yaml
# ✅ КОНФІГ - значення в окремому файлі router-config.yml
llm_profiles:
qwen3_science_8b:
provider: ollama
model: qwen3:8b
max_tokens: 2048
```
```python
# ✅ КОД читає з конфігу
llm_profile = router_config.get("llm_profiles", {}).get("qwen3_science_8b")
model = llm_profile.get("model") # Беремо з конфігу, не хардкодимо!
```
### Переваги конфігурації:
1. **Зміна без редагування коду** - просто змінити YAML файл
2. **Різні конфіги для різних середовищ** (dev/prod/staging)
3. **Легко тестувати** - можна створити test-config.yml
4. **Гнучко** - один код, багато конфігурацій
---
## 📊 ПОРІВНЯННЯ
| Аспект | Хардкод | Конфігурація |
|--------|---------|--------------|
| **Де зберігається?** | В коді | В окремих файлах |
| **Як змінити?** | Редагувати код | Редагувати конфіг |
| **Потрібен рестарт?** | Так (перекомпіляція) | Так (перезапуск) |
| **Гнучкість** | Низька | Висока |
| **Тестування** | Важко | Легко |
---
## 🔧 ЩО МИ ВИПРАВИЛИ?
### БУЛО (хардкод):
```python
# ❌ Хардкод - модель завжди "qwen3-8b"
local_model = "qwen3-8b"
```
### СТАЛО (з конфігу):
```python
# ✅ Читаємо з конфігу
if llm_profile.get("provider") == "ollama":
ollama_model = llm_profile.get("model", "qwen3:8b")
local_model = ollama_model.replace(":", "-") # qwen3:8b → qwen3-8b
```
### Результат:
- ✅ Модель береться з `router-config.yml`
- ✅ Якщо змінити конфіг → зміниться поведінка
-Не треба редагувати код для зміни моделі
- ✅ Різні агенти можуть мати різні локальні моделі
---
## 💡 КОЛИ ВИКОРИСТОВУВАТИ?
### Хардкод - тільки для:
- Константи (π = 3.14, версія API)
- Значення, які ніколи не зміняться
- Технічні деталі (timeout = 5.0 сек)
### Конфігурація - для:
- Моделі LLM
- API ключі
- URL сервісів
- Параметри (temperature, max_tokens)
- Налаштування агентів
---
## 📝 ПРИКЛАД З НАШОГО ПРОЄКТУ
### router-config.yml (конфігурація):
```yaml
agents:
helion:
default_llm: qwen3_science_8b # ← Можна змінити тут
llm_profiles:
qwen3_science_8b:
provider: ollama
model: qwen3:8b # ← Можна змінити модель тут
```
### main.py (код):
```python
# Читаємо з конфігу
default_llm = agent_config.get("default_llm", "qwen3-8b")
llm_profile = llm_profiles.get(default_llm, {})
model = llm_profile.get("model") # ← Беремо з конфігу!
```
**Тепер можна змінити модель просто редагуванням YAML файлу!** 🎉