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

4.4 KiB
Raw Blame History

Хардкод vs Конфігурація

🔴 ХАРДКОД (Hardcode) - Що це?

Хардкод = значення, які "зашиті" прямо в коді і не можуть змінюватись без редагування коду.

Приклад хардкоду:

# ❌ ХАРДКОД - значення прямо в коді
local_model = "qwen3-8b"  # Якщо треба змінити модель, треба редагувати код!

Проблеми хардкоду:

  1. Треба редагувати код для зміни значення
  2. Не можна змінити без перезапуску сервісу
  3. Важко тестувати різні конфігурації
  4. Не гнучко - однаковий код для всіх середовищ (dev/prod)

КОНФІГУРАЦІЯ (Config) - Що це?

Конфігурація = значення, які зберігаються окремо від коду (в файлах, змінних середовища, БД) і можуть змінюватись без редагування коду.

Приклад конфігурації:

# ✅ КОНФІГ - значення в окремому файлі router-config.yml
llm_profiles:
  qwen3_science_8b:
    provider: ollama
    model: qwen3:8b
    max_tokens: 2048
# ✅ КОД читає з конфігу
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. Гнучко - один код, багато конфігурацій

📊 ПОРІВНЯННЯ

Аспект Хардкод Конфігурація
Де зберігається? В коді В окремих файлах
Як змінити? Редагувати код Редагувати конфіг
Потрібен рестарт? Так (перекомпіляція) Так (перезапуск)
Гнучкість Низька Висока
Тестування Важко Легко

🔧 ЩО МИ ВИПРАВИЛИ?

БУЛО (хардкод):

# ❌ Хардкод - модель завжди "qwen3-8b"
local_model = "qwen3-8b"

СТАЛО (з конфігу):

# ✅ Читаємо з конфігу
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 (конфігурація):

agents:
  helion:
    default_llm: qwen3_science_8b  # ← Можна змінити тут

llm_profiles:
  qwen3_science_8b:
    provider: ollama
    model: qwen3:8b  # ← Можна змінити модель тут

main.py (код):

# Читаємо з конфігу
default_llm = agent_config.get("default_llm", "qwen3-8b")
llm_profile = llm_profiles.get(default_llm, {})
model = llm_profile.get("model")  # ← Беремо з конфігу!

Тепер можна змінити модель просто редагуванням YAML файлу! 🎉