chore(dev): add v0.4.1 sampling artifacts (live-eval + samples log)
Pre-cleanup snapshot before local removal.
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
# Live-eval sampler for pepa-pi-bot. Runs ONE chunk then exits (so the agent is
|
||||
# re-invoked between chunks to checkpoint + decide intervention).
|
||||
# Args: $1=chunk-number $2=duration-seconds(default 300) $3=sample-interval-seconds(default 30)
|
||||
# READ-ONLY: only reads bot state/logs; never writes into the bot's state dir.
|
||||
set -u
|
||||
D=/Users/timmy/Projects/pepa-pi-bot/state/play.xmatic.team_25565
|
||||
OUT=/Users/timmy/Projects/pepa-pi-bot/dev/v0.4.1/samples-2026-05-29.log
|
||||
CHUNK="${1:-0}"
|
||||
DUR="${2:-300}"
|
||||
INT="${3:-30}"
|
||||
LOG="$D/logs/$(date -u +%F).log"
|
||||
WJ="$D/world-journal.jsonl"
|
||||
|
||||
wjcount() { wc -l < "$WJ" 2>/dev/null | tr -d ' '; }
|
||||
WJ_BASE="$(wjcount)"; WJ_BASE="${WJ_BASE:-0}"
|
||||
|
||||
task_line() {
|
||||
node -e '
|
||||
const fs=require("fs");
|
||||
try{
|
||||
const t=JSON.parse(fs.readFileSync(process.argv[1],"utf8"));
|
||||
const p=t.position? [t.position.x,t.position.y,t.position.z].map(n=>Math.round(n)).join(","):"?";
|
||||
process.stdout.write(`label=${t.label||"?"} status=${t.status||"?"} pos=(${p}) ts=${t.ts||"?"}`);
|
||||
}catch(e){ process.stdout.write("label=? (no current-task)"); }
|
||||
' "$D/current-task.json" 2>/dev/null
|
||||
}
|
||||
|
||||
end=$(( $(date +%s) + DUR ))
|
||||
{
|
||||
echo ""
|
||||
echo "########## CHUNK ${CHUNK} START $(date -u +%FT%TZ) (dur=${DUR}s int=${INT}s wj_base=${WJ_BASE}) ##########"
|
||||
} >> "$OUT"
|
||||
|
||||
while :; do
|
||||
now=$(date +%s); [ "$now" -ge "$end" ] && break
|
||||
TS=$(date -u +%FT%TZ)
|
||||
CT="$(task_line)"
|
||||
HB=$(grep -aE 'reflex: idle: hp=' "$LOG" 2>/dev/null | tail -1 | sed -E 's/.*reflex: idle: //')
|
||||
DISP=$(grep -aE 'dispatch: (\xe2\x86\x92|\xe2\x86\x90|->|<-)|skill: .* (\xe2\x86\x92|->) ' "$LOG" 2>/dev/null | tail -1 | sed -E 's/^([0-9T:.-]+Z) \[[a-z]+\] //')
|
||||
STK=$(grep -aE 'pathfinder: stuck|wedged:|Digging aborted|stuck_in_place|no_progress|Took to long|silent_dig' "$LOG" 2>/dev/null | tail -1 | sed -E 's/^([0-9T:.-]+Z) \[[a-z]+\] //')
|
||||
CONN=$(grep -aE 'mc: kicked|mc: connection ended|mc: spawned at|runtime: pepa runtime starting|child exited|died|respawn|disabled via PEPA_AUTO_IMPROVE|auto-improve: watching' "$LOG" 2>/dev/null | tail -1 | sed -E 's/^([0-9T:.-]+Z) \[[a-z]+\] //')
|
||||
WJN="$(wjcount)"; WJN="${WJN:-0}"
|
||||
WJL=$(tail -1 "$WJ" 2>/dev/null)
|
||||
{
|
||||
echo "--- ${TS} (chunk ${CHUNK}) ---"
|
||||
echo " task : ${CT}"
|
||||
echo " hb : ${HB:-<none>}"
|
||||
echo " disp : ${DISP:-<none>}"
|
||||
echo " stuck: ${STK:-<none>}"
|
||||
echo " wj : lines=${WJN} delta=$(( WJN - WJ_BASE )) last=${WJL:-<none>}"
|
||||
echo " conn : ${CONN:-<none>}"
|
||||
} >> "$OUT"
|
||||
now=$(date +%s); rem=$(( end - now ))
|
||||
[ "$rem" -le 0 ] && break
|
||||
if [ "$rem" -lt "$INT" ]; then sleep "$rem"; else sleep "$INT"; fi
|
||||
done
|
||||
|
||||
echo "########## CHUNK ${CHUNK} DONE $(date -u +%FT%TZ) (wj_now=$(wjcount)) ##########" >> "$OUT"
|
||||
Reference in New Issue
Block a user