Skip to content

v3.3.0 — Dual-Threshold Compression & Memory Ranking

Choose a tag to compare

@iPythoning iPythoning released this 31 Mar 14:01
· 489 commits to main since this release

What's New

Cherry-picked 3 ideas from OpenViking Memory Plugin (no new dependencies, no new services).

1. Dual-Threshold Compression

  • 50% (BACKGROUND_SAVE): Non-blocking extraction of key facts to ChromaDB — protects critical data early
  • 65% (COMPRESS): Full L2 compression via haiku-class model (existing behavior, unchanged)
  • Backward-compatible: TOKEN_THRESHOLD export still works

2. Recency-Weighted Search Ranking

Replaced simple word-count scoring with 3-factor ranking:

  • Lexical overlap (normalized 0-1) × 0.5
  • Recency decay (30-day half-life, floor 0.5) × 0.3
  • Tag boost (order +0.12, quote +0.10, commitment +0.10, objection +0.08)

Also fixed bug: score + 0.5 was a no-op (not assigned back).

3. Archive Expand Command

chroma:expand <turn_id>

View full original text of any compressed/archived turn by ID.

Config Change

  • softThresholdTokens: 12000 → 10000 (earlier flush hook trigger for dual-threshold)

Files Changed

File Change
scripts/proactive-summary.mjs Dual-threshold logic
skills/chroma-memory/chroma.mjs Ranking + expand + bugfix
workspace/MEMORY.md Updated architecture docs