---
task_slug: kar-80-hook-memory-injection
doc_type: implementation-plan
kar_issue: KAR-80
date: 2026-05-12
status: done
---

# Implementation Plan — KAR-80 Hook-Memory-Injection (Spike)

## Why

Aria sieht Brain-Notes nur wenn sie aktiv `aria-brain-search` aufruft. Bei vielen Turns macht sie das nicht — und entscheidet ohne relevanten Brain-Kontext. Hook-basierte Auto-Injection erzwingt Kontext, ist deterministisch.

## Acceptance Criteria

- [ ] Hook-Skript `auto-memory-inject.sh` läuft <2s bei UserPromptSubmit
- [ ] Token-Cap: ≤2000 Tokens (≈8KB) injected text pro Turn
- [ ] Smoke-Test: 5 Beispiel-Queries vorher/nachher Brain-Hit-Rate gemessen
- [ ] Decision-Record: rollout / pilot-only / defer mit Begründung
- [ ] settings.json Hook-Konfig dokumentiert (Pfad zu Backup)

## Schritte

1. **Spike-Hypothese formulieren** (S, 5 min)
   - Hook-Output landet im Aria-Context bei UserPromptSubmit — VERIFY this assumption first

2. **Hook-Verhalten verstehen** (S, 15 min)
   - Read Claude Code docs/conventions zu UserPromptSubmit-Hook-stdout-injection
   - Wenn stdout direkt prompt prepended wird → einfaches Pattern
   - Wenn nicht → muss anderer Mechanismus her (z.B. PreToolUse mit context-modify)

3. **Hook-Skript schreiben** (M, 30 min)
   - `auto-memory-inject.sh`: parsed prompt aus stdin (`.prompt` field)
   - Skipped wenn prompt < 30 chars (Trigger-Antworten wie "A", "1", "ok")
   - Ruft `aria-active-memory.sh "$prompt"` mit 2s timeout
   - Begrenzt output auf 8000 Bytes
   - Schreibt strukturiert: `=== ARIA BRAIN CONTEXT ===\n<output>\n=== END BRAIN CONTEXT ===`

4. **settings.json patch** (S, 10 min)
   - Backup `/root/.claude/settings.json`
   - Add hook entry in `UserPromptSubmit` array NACH telegram-log-in (Reihenfolge: log first, dann inject)
   - Test mit `ARIA_HOOK_TEST=1` Mode

5. **Smoke-Test mit echten Queries** (M, 30 min)
   - 5 Aria-Queries vorbereiten (aus letzten 7 Tagen Chat-History)
   - Vor Hook: was würde Aria mit Brain-Suche finden?
   - Mit Hook: was bekommt sie automatisch?
   - Token-Budget einhalten verifizieren

6. **Eval mit eval-driven-agent-dev (KAR-75)** (M, 30 min)
   - Golden-Dataset `hook-memory-injection/golden-dataset.yaml` mit 5 cases
   - Judge-Prompt: "wurde der relevante Brain-Context injiziert"
   - Run `aria-eval-judge.py` für Precision/Recall

7. **Decision-Record + Cleanup** (S, 20 min)
   - Decision: rollout, pilot-only, defer
   - Begründung mit Token-Overhead-Measure, Latency-Measure, Hit-Rate
   - settings.json rollback wenn defer

## Verifikation

- `journalctl -u aria` zeigt Hook-Triggers
- `bash /root/.claude/hooks/auto-memory-inject.sh` bei manuellem Test gibt Output <2s
- Smoke-Test 5 Cases: Brain-Hits vorhanden in Hook-Output

## Roll-Back-Plan

- settings.json Backup vor Patch (Pfad in Diary notiert)
- Bei Spike-Fail: settings.json restore, Hook-Skript bleibt für später (kein Aria-Restart nötig wenn Hook fehlt)

## Pause-Points

- Nach Schritt 2 (Hook-Mechanismus geklärt): hier kann pausiert werden
- Nach Schritt 4 (Hook live): hier ist ein guter Stop-Punkt für User-Feedback
- Nach Schritt 7: Spike done

## User-Action für Kais

- Nach Schritt 4 (Hook live, vor Smoke-Test): Kais kann manuell mit Test-Query antworten und sehen ob Hook spürbar reagiert
- Nach Schritt 7: Kais reviewt Decision-Record, entscheidet ob rollout
