🐛 Fix: eule_tokens - Robuste Token-Log-Parsing
Problem: - eule_tokens produzierte jq-Fehler: "Cannot index array with string 'zeit'" "Cannot index array with string 'usage'" - Gleiche Ursache wie bei check_token_budget - Token-Logs haben [] als erste Zeile - usage kann String oder Objekt sein Lösung: - Skip [] und leere Zeilen mit continue - jq mit Fallback: '.zeit // "unknown"' - Unterstütze beide usage-Formate: * String: usage | fromjson | .total_tokens * Objekt: usage.total_tokens - Validiere Zahlen vor Addition Test: ✅ Keine jq-Fehler mehr ✅ Token werden korrekt summiert ✅ Funktioniert mit allen Log-Formaten Jetzt können Kinder ihre Token-Nutzung ohne Fehler sehen! 🌲 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -570,11 +570,21 @@ function eule_tokens() {
|
||||
echo -e "\${CYAN}📊 Token-Verbrauch:\${NC}"
|
||||
echo ""
|
||||
TOTAL=0
|
||||
# Filter leere Arrays und parse JSON robuster
|
||||
while IFS= read -r line; do
|
||||
zeit=\$(echo "\$line" | jq -r '.zeit')
|
||||
tokens=\$(echo "\$line" | jq -r '.usage.total_tokens')
|
||||
TOTAL=\$((TOTAL + tokens))
|
||||
echo " \$zeit: \$tokens Tokens"
|
||||
# Skip leere Zeilen und [] Arrays
|
||||
if [[ -z "\$line" ]] || [[ "\$line" == "[]" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
zeit=\$(echo "\$line" | jq -r '.zeit // "unknown"' 2>/dev/null)
|
||||
# Unterstütze usage als String oder Objekt
|
||||
tokens=\$(echo "\$line" | jq -r 'if .usage | type == "string" then .usage | fromjson | .total_tokens // 0 else .usage.total_tokens // 0 end' 2>/dev/null)
|
||||
|
||||
if [[ "\$tokens" =~ ^[0-9]+\$ ]]; then
|
||||
TOTAL=\$((TOTAL + tokens))
|
||||
echo " \$zeit: \$tokens Tokens"
|
||||
fi
|
||||
done < "\$LOGDIR/token_log.json"
|
||||
echo ""
|
||||
echo -e "\${GREEN}Gesamt: \$TOTAL Tokens\${NC}"
|
||||
|
||||
Reference in New Issue
Block a user