Initial: Mesh-Skills, Configs, Scripts
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
---
|
||||
name: model-allocation
|
||||
description: >-
|
||||
Kostenkontrollierte, verhältnismäßige Modell-Auswahl für Hermes-Agents.
|
||||
Drei Ebenen: tägliche Ausrichtung, stündliches Feintuning, Task-bezogenes Matching.
|
||||
Lokaler Fallback über VPS-Ollama (deepseek-r1:7b) mit 64k+ Kontext und Thinking.
|
||||
Budget: 1€/Tag/Agent, bei Überschreitung → postpone + lokaler Fallback.
|
||||
related_skills: [multi-agent-mesh]
|
||||
---
|
||||
|
||||
# Model-Allocation-Skill
|
||||
|
||||
Automatisierte Entscheidungslogik für Modell-Wahl pro Agent und Task.
|
||||
|
||||
## Prinzipien
|
||||
|
||||
- **Kosten ~99% Gewicht**, Zeit spielt keine Rolle
|
||||
- **Kein Free-Only-Zwang**, aber proportionaler Aufstieg erlaubt
|
||||
- **Kein Ferrari-Sprung** (>5x Kosten) ohne manual_override
|
||||
- **Diversität** als Ziel (min 3 Modell-Familien)
|
||||
|
||||
## Die drei Ebenen
|
||||
|
||||
### Ebene 1 — Täglich (grobe Ausrichtung)
|
||||
- `scripts/daily_model_check.py`
|
||||
- Holt Modell-/Preisliste (Mock → OpenRouter-API)
|
||||
- Filtert ≥64k Kontext, baut Prioritätsliste pro Agent
|
||||
- Prüft Diversität, schreibt `state/model_priority.json`
|
||||
|
||||
### Ebene 2 — Stündlich (Feintuning)
|
||||
- `scripts/hourly_finetune_check.py`
|
||||
- Prüft Budget-Warnschwelle (1€/Tag/Agent), Verfügbarkeit, Rate-Limits
|
||||
- Bei Überschreitung: Tasks auf nächsten Tag verschieben
|
||||
- Einfache Anfragen → lokales VPS-Ollama (`deepseek-r1:7b`)
|
||||
|
||||
### Ebene 3 — Task-bezogen (Feinauswahl)
|
||||
- `scripts/task_agent_matcher.py`
|
||||
- Input: Capability-Tag → findet günstigste passende Kombination
|
||||
- Eskaliert max eine Stufe bei Fehlschlag
|
||||
- Fallback auf lokales Ollama wenn kein Agent verfügbar
|
||||
- Max 3 Retries pro Task
|
||||
|
||||
## Konfiguration
|
||||
|
||||
Siehe `config/agents.yaml` für die vollständige Config.
|
||||
Siehe `references/agents-config.md` für eine kompakte Übersicht.
|
||||
|
||||
Pro Agent: Modell, Eskalationsleiter, Tags, Budget
|
||||
Global: min_context=64000, max_escalation=5x, min_diversity=3
|
||||
`local_fallback.model: deepseek-r1:7b` (Thinking + 128k Kontext)
|
||||
|
||||
## Lokale Modelle auf dem VPS
|
||||
|
||||
| Modell | Größe | Kontext | Thinking | Status |
|
||||
|--------|-------|---------|----------|--------|
|
||||
| `deepseek-r1:7b` | 4.7 GB | 128k | ✅ | aktiv (Default) |
|
||||
| `deepseek-r1:14b` | 9.0 GB | 128k | ✅ | runtergeladen, ungetestet |
|
||||
|
||||
### ⚠️ WICHTIG: Ollama Bindungs-Address
|
||||
|
||||
Das Ollama-Installation auf dem VPS lauscht an `172.24.196.119:11434` (VPS-Externe IP), NICHT an `localhost:11434`.
|
||||
|
||||
**Konsequenz:** Das Config-`base_url` muss `http://172.24.196.119:11434/v1` lauten, damit das Modell von anderen Mesh-Agenten (oder demselben Agenten im Netzwerk) darauf zugreifen kann.
|
||||
|
||||
Fehlgeschlagene Verbindungssymptome:
|
||||
- `curl http://localhost:11434/api/tags` → Connection refused (wenn Ollama nicht localhost-bound)
|
||||
- Modell kann lokalen Ollama-Fallback nicht erreichen
|
||||
- Task fällt auf nächstes teureren OpenRouter-Modell aus
|
||||
|
||||
**Behebung:** Config-Key `ollama.base_url` auf `http://172.24.196.119:11434/v1` setzen. Siehe `references/ollama-bind-address.md` für Details.
|
||||
|
||||
**Warum deepseek-r1:7b?** Thinking + 128k Kontext in 4.7 GB — optimal für 16 GB RAM VPS.
|
||||
`deepseek-r1:14b` ist Upgrade-Option sobald RAM-Puffer bestätigt ist.
|
||||
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
pip install pyyaml --break-system-packages
|
||||
```
|
||||
|
||||
Detailierte Modell-Vergleiche: `references/local-model-comparison.md`
|
||||
|
||||
## Cron
|
||||
|
||||
### Lokal (auf Hub/Agent A via Hermes-Cron)
|
||||
|
||||
```bash
|
||||
hermes cron add --schedule '0 3 * * *' --name model-allocation-daily \
|
||||
--prompt 'cd ~/.hermes/skills/devops/model-allocation && python3 scripts/daily_model_check.py'
|
||||
hermes cron add --schedule '0 * * * *' --name model-allocation-hourly \
|
||||
--prompt 'cd ~/.hermes/skills/devops/model-allocation && python3 scripts/hourly_finetune_check.py'
|
||||
```
|
||||
|
||||
### Auf Remote-Agents per SSH (crontab)
|
||||
|
||||
Verwende ein Setup-Script für mehrere Agenten gleichzeitig:
|
||||
|
||||
```bash
|
||||
# setup_model_cron.sh
|
||||
mkdir -p $HOME/.hermes/logs
|
||||
if crontab -l 2>/dev/null | grep -q 'model-allocation'; then
|
||||
echo "Cron bereits da"; exit 0
|
||||
fi
|
||||
(crontab -l 2>/dev/null
|
||||
echo "# model-allocation: täglich 03:00"
|
||||
echo "0 3 * * * cd \$HOME/.hermes/skills/devops/model-allocation \\"
|
||||
echo " && python3 scripts/daily_model_check.py >> \$HOME/.hermes/logs/model-allocation-daily.log 2>&1"
|
||||
echo "# model-allocation: stündlich"
|
||||
echo "0 * * * * cd \$HOME/.hermes/skills/devops/model-allocation \\"
|
||||
echo " && python3 scripts/hourly_finetune_check.py >> \$HOME/.hermes/logs/model-allocation-hourly.log 2>&1"
|
||||
) | crontab -
|
||||
echo "Cron eingerichtet"
|
||||
|
||||
# Auf mehreren Remotes gleichzeitig:
|
||||
for ip in 172.24.20.26 172.24.34.142 172.24.178.202; do
|
||||
sshpass -p 'PW' scp setup_model_cron.sh user@$ip:/tmp/
|
||||
sshpass -p 'PW' ssh user@$ip 'bash /tmp/setup_model_cron.sh'
|
||||
done
|
||||
```
|
||||
Reference in New Issue
Block a user