Add a one-shot diagnostic for the falling-behind case
The operator page turns red on two things — the app going quiet, or lagMs past 12 s with captionOnlyFinals above zero, which is the pipeline running slower than people talk. Neither says WHY from the outside, and the machine that is struggling is usually not the machine anyone is sitting at. tools/diag.sh reads the log and asks the running app for its status, and prints the four things that separate the causes: what hardware it is, whether it is swapping, which models it actually chose at startup (a GPU with no fp16 or no WebGPU at all changes that silently), and how long sentences are really taking. Read-only throughout. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
c9eef0672c
commit
5d8d3e3527
Executable
+39
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
# Church Translate — one-shot diagnostic for "it is behind / in the red".
|
||||
# Read-only: reads the log and asks the running app for its status. Changes nothing.
|
||||
L="$HOME/Library/Application Support/Church Translate/data/logs/app.log"
|
||||
C="$HOME/Library/Application Support/Church Translate/data/config.json"
|
||||
|
||||
echo "=== MACHINE ==="
|
||||
system_profiler SPHardwareDataType 2>/dev/null | grep -E "Model Name|Chip|Total Number of Cores|Memory:" | sed 's/^ */ /'
|
||||
echo " macOS $(sw_vers -productVersion)"
|
||||
|
||||
echo
|
||||
echo "=== MEMORY PRESSURE / SWAP ==="
|
||||
memory_pressure 2>/dev/null | grep -Ei "free percentage|pageouts" | sed 's/^/ /'
|
||||
sysctl -n vm.swapusage 2>/dev/null | sed 's/^/ swap: /'
|
||||
|
||||
echo
|
||||
echo "=== WHAT THE APP CHOSE AT STARTUP ==="
|
||||
grep -E "GPU features \(speech\)|no GPU acceleration|no fp16|loading the speech model|loading the translation model|speech model ready|translation model ready|models could not load" "$L" 2>/dev/null | tail -8 | sed 's/^/ /'
|
||||
|
||||
echo
|
||||
echo "=== THROUGHPUT — is it slower than people talk? ==="
|
||||
echo " slow-sentence events (>4s): $(grep -c 'slow sentence' "$L" 2>/dev/null)"
|
||||
grep "slow sentence" "$L" 2>/dev/null | tail -12 | sed 's/^/ /'
|
||||
grep -E "stepping down to a lighter" "$L" 2>/dev/null | tail -3 | sed 's/^/ /'
|
||||
|
||||
echo
|
||||
echo "=== THE RED CONDITION ==="
|
||||
echo " caption-only events: $(grep -c 'caption only' "$L" 2>/dev/null)"
|
||||
grep -E "caption only|stale — caption only" "$L" 2>/dev/null | tail -6 | sed 's/^/ /'
|
||||
|
||||
echo
|
||||
echo "=== LIVE STATUS ==="
|
||||
TOK=$(grep -o '"controlToken"[[:space:]]*:[[:space:]]*"[^"]*"' "$C" 2>/dev/null | sed 's/.*"\([^"]*\)"$/\1/')
|
||||
curl -s -m 5 "http://127.0.0.1:3100/api/control/status?key=$TOK" 2>/dev/null | head -c 1500
|
||||
echo
|
||||
|
||||
echo
|
||||
echo "=== RECENT ERRORS ==="
|
||||
grep "\[app\] err" "$L" 2>/dev/null | grep -v "natural voice fell back" | tail -12 | sed 's/^/ /'
|
||||
Reference in New Issue
Block a user