- Interactive mission selector with metadata-driven design - 5 educational missions (basics + advanced) - AI assistant roles (Deepbit, Bugsy, Schnippsi, Tobi) - SnakeCam gesture recognition system - Token tracking utilities - CLAUDE.md documentation - .gitignore for logs and secrets
38 lines
1.1 KiB
Bash
Executable File
38 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
||
echo "📊 Crumbforest Token Log Viewer V4"
|
||
echo "----------------------------------"
|
||
|
||
for logfile in /home/zero/.*/token_log.json; do
|
||
echo ""
|
||
echo "🔎 Viewing: $logfile"
|
||
echo "------------------------------------"
|
||
|
||
while IFS= read -r line; do
|
||
usage_raw=$(jq -r '.usage' <<< "$line" 2>/dev/null)
|
||
|
||
# überspringe leere oder ungültige usage-Felder
|
||
if [ -z "$usage_raw" ] || [ "$usage_raw" == "null" ]; then
|
||
continue
|
||
fi
|
||
|
||
# Versuche usage als Objekt zu lesen, wenn es ein String ist
|
||
if jq -e '.' <<< "$usage_raw" >/dev/null 2>&1; then
|
||
usage_parsed="$usage_raw"
|
||
else
|
||
usage_parsed=$(jq -r '.usage' <<< "$line" | jq . 2>/dev/null)
|
||
fi
|
||
|
||
# Wenn das Parsen klappt, extrahiere total_tokens
|
||
if [ -n "$usage_parsed" ]; then
|
||
tokens=$(jq -r '.total_tokens' <<< "$usage_parsed" 2>/dev/null)
|
||
else
|
||
tokens="–"
|
||
fi
|
||
|
||
zeit=$(jq -r '.zeit' <<< "$line" 2>/dev/null)
|
||
rolle=$(jq -r '.rolle' <<< "$line" 2>/dev/null)
|
||
|
||
printf "📅 %s | 🧠 %s | 🧮 %s Tokens\n" "$zeit" "$rolle" "$tokens"
|
||
done < "$logfile"
|
||
done
|