49 lines
1.6 KiB
Bash
Executable File
49 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
STATE_DIR="${STATE_DIR:-/tmp}"
|
|
PID_FILE="$STATE_DIR/novelty_guard.pid"
|
|
GUARD_LOG="$STATE_DIR/novelty_guard.log"
|
|
LOOP_LOG="$STATE_DIR/novelty_churn_live.log"
|
|
|
|
if [[ -f "$PID_FILE" ]]; then
|
|
old_pid="$(cat "$PID_FILE" 2>/dev/null || true)"
|
|
if [[ -n "${old_pid:-}" ]] && kill -0 "$old_pid" 2>/dev/null; then
|
|
echo "guard already running: pid=$old_pid"
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
echo "$$" > "$PID_FILE"
|
|
trap 'rm -f "$PID_FILE"' EXIT
|
|
|
|
start_loop() {
|
|
nohup env \
|
|
OLLAMA_HOST="${OLLAMA_HOST:-127.0.0.1:11435}" \
|
|
OLLAMA_URL="${OLLAMA_URL:-http://127.0.0.1:11435/api/generate}" \
|
|
OLLAMA_TAGS_URL="${OLLAMA_TAGS_URL:-http://127.0.0.1:11435/api/tags}" \
|
|
CYCLES="${CYCLES:-200}" \
|
|
FAMILIES_PER_CYCLE="${FAMILIES_PER_CYCLE:-4}" \
|
|
RUN_SLM="${RUN_SLM:-1}" \
|
|
SYNTH_BAD="${SYNTH_BAD:-1}" \
|
|
BAD_PER_CATEGORY="${BAD_PER_CATEGORY:-400}" \
|
|
GOOD_TO_BAD_RATIO="${GOOD_TO_BAD_RATIO:-1.0}" \
|
|
BAD_MAX_PER_SIGNATURE="${BAD_MAX_PER_SIGNATURE:-20}" \
|
|
BAD_MIN_CATEGORY_COUNT="${BAD_MIN_CATEGORY_COUNT:-10}" \
|
|
ENABLE_INFRA_NOISE_FILTER="${ENABLE_INFRA_NOISE_FILTER:-1}" \
|
|
INCLUDE_EXAMPLE_PROJECT_SPECS="${INCLUDE_EXAMPLE_PROJECT_SPECS:-1}" \
|
|
./tools/mcp/run_novelty_churn_loop.sh >> "$LOOP_LOG" 2>&1 &
|
|
echo "$!"
|
|
}
|
|
|
|
while true; do
|
|
if ! pgrep -f "bash ./tools/mcp/run_novelty_churn_loop.sh" >/dev/null 2>&1; then
|
|
new_pid="$(start_loop)"
|
|
printf '%s started run_novelty_churn_loop pid=%s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$new_pid" >> "$GUARD_LOG"
|
|
fi
|
|
sleep 20
|
|
done
|