v3.3.0 — Dual-Threshold Compression & Memory Ranking
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_THRESHOLDexport 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 |