Problem:
- check_token_budget() hatte Probleme mit inkonsistenten Log-Formaten
- Manche Logs haben usage als String (escaped JSON)
- Andere haben usage als Objekt
- grep-Pattern war zu strikt (\\"$today\\" fand nichts)
Lösung:
- Grep ohne escaped quotes (grep "$today" statt grep \"\\"$today\\"\")
- jq-Abfrage unterstützt BEIDE Formate:
* usage als String → fromjson → total_tokens
* usage als Objekt → .total_tokens
- Validierung: Nur valide Zahlen werden addiert
- awk summiert alle Tokens pro Log-Datei
Test-Ergebnis:
✅ Budget = 0 (unbegrenzt) → Erlaubt
✅ Budget = 100, Verbrauch = 150 → Blockiert mit Nachricht
✅ Budget = 1000, Verbrauch = 50 → Erlaubt
Kinderfreundliche Blockierungs-Nachricht:
"Liebes Kind, heute hast du schon X Tokens verwendet.
💚 Jede Frage ist wertvoll - aber auch Pausen sind wichtig."
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Zwei kritische Bugs behoben:
1. Kaputtes Glob-Pattern in Zeile 212
- Vorher: verwendete ${history_file} bevor Variable definiert war
- Nachher: sauberes /*/*_history.json Pattern
2. Falsche JSON-Verarbeitung in Zeile 217
- Vorher: grep auf Rohtext → jq Parse-Fehler
- Nachher: jq durchsucht direkt die JSON-Struktur (case-insensitive)
Ergebnis: crew_memory findet jetzt alle Treffer in den Logs! 🌲🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Problem: 'bad substitution' bei crew_doctor
→ ${!var} funktioniert nur in bash, nicht in zsh
Lösung:
- if BASH_VERSION → ${!loaded_check_var}
- elif ZSH_VERSION → ${(P)loaded_check_var}
Jetzt funktioniert crew_doctor in beiden Shells! ✅🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Problem: export -f funktioniert nicht in zsh, nur in bash
→ crew_doctor und crew_syntax wurden nicht geladen in zsh
Lösung:
- Prüfe BASH_VERSION
- export -f nur in bash
- In zsh sind Funktionen automatisch verfügbar
Jetzt funktioniert waldwaechter.sh in beiden Shells:
✅ bash (export -f wird verwendet)
✅ zsh (Funktionen direkt verfügbar)
macOS Standard ist zsh → kritischer Fix!
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
"Systeme die sich selbst überprüfen" - Selbstdiagnose implementiert!
✅ crew_doctor - System-Diagnose:
📋 waldwaechter.sh Version Check (erkennt veraltete Versionen!)
📂 CRUMB_LOGS_DIR Pfad-Validierung
🌲 Alle 17 Waldwächter Scripts vorhanden?
🔧 Dependencies Check (jq, bc, curl)
📊 Token-Logging in allen Scripts?
🔑 API Key konfiguriert?
→ Warnt wenn "source lib/waldwaechter.sh" nötig ist!
→ Löst das Problem von vorhin automatisch
✅ crew_syntax - Syntax Check:
🔍 bash -n für alle Scripts
📝 lib/waldwaechter.sh + 17 Character Scripts
📋 Alle Mission Scripts
📊 Detaillierte Fehler-Ausgabe bei Problemen
🔧 Technische Details:
- Version-Marker via mtime (modification time)
- Export WALDWAECHTER_LOADED_${mtime}=1
- crew_doctor erkennt ob Version aktuell ist
- LC-independent (stat -f macOS, stat -c Linux)
🔍 OZMAI-Prinzip: "Ich schau drauf, nicht drüber hinweg"
→ Präventive Diagnose statt reaktive Fehlersuche
Neue Befehle in crew_help dokumentiert.
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Problem: Deutsche Locale (Komma als Dezimaltrenner) vs.
JSON/bc output (Punkt als Dezimaltrenner) → printf Fehler
✅ Lösung:
- LC_NUMERIC=C für gesamte crew_tokens Funktion
- Konsistente Zahlenformatierung (Punkt als Dezimaltrenner)
- Keine printf "invalid number" Fehler mehr
📊 Ergebnis:
- Alle 12 aktiven Waldwächter korrekt angezeigt
- Token-Zahlen akkurat: 20021 Tokens total
- Kosten transparent: ~$0.017558
- "Was kostet die Frage eines Kindes?" → Jetzt mit Antwort! ✓
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Bug gefunden: Schnecki zeigte 671 Tokens, aber crew_tokens zeigte 0.
Grund: Die 4 Crew-Befehle existierten noch nicht!
✅ Implementiert:
1. **crew_tokens** - Token-Tracking funktioniert jetzt!
- Liest alle logs/*/token_log.json
- Summiert total_tokens und cost
- Zeigt Pro-Character und Gesamt-Übersicht
- "Was kostet die Frage eines Kindes?" ✓
2. **crew_status** - Status aller 17 Waldwächter
- Zeigt welche Waldwächter genutzt wurden
- Wann zuletzt verwendet
- ✅ aktiv / ⚪ noch nicht genutzt
3. **crew_memory** - Log-basierte Suche
- Durchsucht alle history.json Dateien
- crew_memory "LED" findet alle Erwähnungen
- Ehrlich: "Log-basiertes Gedächtnis"
4. **crew_help** - Übersicht aller Befehle
- Alle 17 Waldwächter aufgelistet
- Nach Teams gruppiert
- Beispiele enthalten
📊 Token-Transparenz jetzt funktionsfähig!
OZMAI würde nicken. 🔍🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>