@@ -11401,11 +11401,33 @@ def setup_daemon(dry_run=False, uninstall=False):
1140111401 "agent_efficiency": 0.20,
1140211402}
1140311403
11404+ def _int_env(key: str, default: int) -> int:
11405+ raw = os.environ.get(key, "").strip()
11406+ if not raw:
11407+ return default
11408+ try:
11409+ return int(raw)
11410+ except ValueError:
11411+ print(f"[Token Optimizer] Warning: invalid {key}={raw!r}, using default {default}", file=sys.stderr)
11412+ return default
11413+
11414+
11415+ def _float_env(key: str, default: float) -> float:
11416+ raw = os.environ.get(key, "").strip()
11417+ if not raw:
11418+ return default
11419+ try:
11420+ return float(raw)
11421+ except ValueError:
11422+ print(f"[Token Optimizer] Warning: invalid {key}={raw!r}, using default {default}", file=sys.stderr)
11423+ return default
11424+
11425+
1140411426# Rolling window size for ratio-based signals.
1140511427# Ratio signals (stale_reads, bloated_results, decision_density, agent_efficiency)
1140611428# use only the last N operations to prevent denominator-expansion bias where
1140711429# scores climb as the session progresses even though context health is degrading.
11408- _QUALITY_ROLLING_WINDOW = int(os.environ.get( "TOKEN_OPTIMIZER_QUALITY_WINDOW", "20") )
11430+ _QUALITY_ROLLING_WINDOW = _int_env( "TOKEN_OPTIMIZER_QUALITY_WINDOW", 20 )
1140911431
1141011432# Fill-based warning thresholds that fire independently of the composite score.
1141111433# These cannot be masked by improving ratio signals.
@@ -11419,27 +11441,27 @@ def setup_daemon(dry_run=False, uninstall=False):
1141911441# Configurable via TOKEN_OPTIMIZER_TOOL_CALL_WARN / _CRITICAL env vars to suit
1142011442# longer-context models (e.g. Claude Opus 4.7 1M). Defaults are unchanged from the
1142111443# original literal — opt-in override only.
11422- _TOOL_CALL_WARN = int(os.environ.get( "TOKEN_OPTIMIZER_TOOL_CALL_WARN", "25") )
11423- _TOOL_CALL_CRITICAL = int(os.environ.get( "TOKEN_OPTIMIZER_TOOL_CALL_CRITICAL", "40") )
11444+ _TOOL_CALL_WARN = _int_env( "TOKEN_OPTIMIZER_TOOL_CALL_WARN", 25 )
11445+ _TOOL_CALL_CRITICAL = _int_env( "TOKEN_OPTIMIZER_TOOL_CALL_CRITICAL", 40 )
1142411446_TOOL_CALL_WARN_THRESHOLDS = [
1142511447 (_TOOL_CALL_CRITICAL, "CRITICAL", f"{_TOOL_CALL_CRITICAL}+ tool calls, instruction adherence severely degraded"),
1142611448 (_TOOL_CALL_WARN, "WARNING", f"{_TOOL_CALL_WARN}+ tool calls, consider a fresh session"),
1142711449]
1142811450
1142911451# Configurable via env vars
11430- _CHECKPOINT_MAX_FILES = int(os.environ.get( "TOKEN_OPTIMIZER_CHECKPOINT_FILES", "10") )
11431- _CHECKPOINT_TTL_SECONDS = int(os.environ.get( "TOKEN_OPTIMIZER_CHECKPOINT_TTL", " 300") )
11432- _CHECKPOINT_RETENTION_DAYS = int(os.environ.get( "TOKEN_OPTIMIZER_CHECKPOINT_RETENTION_DAYS", "7") )
11433- _CHECKPOINT_RETENTION_MAX = int(os.environ.get( "TOKEN_OPTIMIZER_CHECKPOINT_RETENTION_MAX", "50") )
11434- _RELEVANCE_THRESHOLD = float(os.environ.get( "TOKEN_OPTIMIZER_RELEVANCE_THRESHOLD", " 0.3") )
11452+ _CHECKPOINT_MAX_FILES = _int_env( "TOKEN_OPTIMIZER_CHECKPOINT_FILES", 10 )
11453+ _CHECKPOINT_TTL_SECONDS = _int_env( "TOKEN_OPTIMIZER_CHECKPOINT_TTL", 300)
11454+ _CHECKPOINT_RETENTION_DAYS = _int_env( "TOKEN_OPTIMIZER_CHECKPOINT_RETENTION_DAYS", 7 )
11455+ _CHECKPOINT_RETENTION_MAX = _int_env( "TOKEN_OPTIMIZER_CHECKPOINT_RETENTION_MAX", 50 )
11456+ _RELEVANCE_THRESHOLD = _float_env( "TOKEN_OPTIMIZER_RELEVANCE_THRESHOLD", 0.3)
1143511457
1143611458# Progressive checkpoint thresholds (% fill, fires once each per session)
1143711459_PROGRESSIVE_BANDS = [20, 35, 50, 65, 80]
1143811460_PROGRESSIVE_ENABLED = os.environ.get("TOKEN_OPTIMIZER_PROGRESSIVE_CHECKPOINTS", "1") not in ("0", "false", "no", "off")
1143911461_QUALITY_CHECKPOINT_THRESHOLDS = [80, 70, 50, 40]
11440- _CHECKPOINT_COOLDOWN_SECONDS = int(os.environ.get( "TOKEN_OPTIMIZER_CHECKPOINT_COOLDOWN_SECONDS", "90") )
11441- _EDIT_BATCH_WRITE_THRESHOLD = int(os.environ.get( "TOKEN_OPTIMIZER_EDIT_BATCH_WRITE_THRESHOLD", "4") )
11442- _EDIT_BATCH_FILE_THRESHOLD = int(os.environ.get( "TOKEN_OPTIMIZER_EDIT_BATCH_FILE_THRESHOLD", "3") )
11462+ _CHECKPOINT_COOLDOWN_SECONDS = _int_env( "TOKEN_OPTIMIZER_CHECKPOINT_COOLDOWN_SECONDS", 90 )
11463+ _EDIT_BATCH_WRITE_THRESHOLD = _int_env( "TOKEN_OPTIMIZER_EDIT_BATCH_WRITE_THRESHOLD", 4 )
11464+ _EDIT_BATCH_FILE_THRESHOLD = _int_env( "TOKEN_OPTIMIZER_EDIT_BATCH_FILE_THRESHOLD", 3 )
1144311465_CHECKPOINT_TELEMETRY_ENABLED = os.environ.get("TOKEN_OPTIMIZER_CHECKPOINT_TELEMETRY", "0").lower() in ("1", "true", "yes", "on")
1144411466
1144511467# Shared decision-detection regex (used by both quality analyzer and state extractor)
0 commit comments