Claude Code that learns you
Silent semantic memory injection. Every prompt gets the right context from your past — in under 200ms, local-only, no prompt engineering required.
ONNX bge-small embeddings
cosine + quality re-ranking
exp-decay citation feedback
PII redaction before disk write
fail-open on any error
Inject flow
Raw prompt (what you type)
What Claude sees (after inject)
How it works
| Hook | What shed does | Latency |
|---|---|---|
| UserPromptSubmit | Embed prompt → cosine search over memory index → quality re-rank → prepend <shed-context> |
<200ms |
| PostToolUse | Track tool approvals; when a pattern repeats N×, generate permit proposal | <10ms |
| Stop | Scan response for citation evidence → update quality scores. Detect user corrections → write proposal. Auto-write stats row. | <50ms |
| SessionStart | Render brief of pending proposals (lessons + permits) | <5ms |
Benchmarks
| Operation | Cold | Warm | p95 |
|---|---|---|---|
| embed query (hash) | 7.3ms | 0.1ms | 0.4ms |
| top-k retrieval (50 memories) | 0.1ms | 0.1ms | 13.1ms |
| top-k retrieval (200 memories) | 0.1ms | 0.2ms | 4.3ms |
| top-k retrieval (500 memories) | 0.2ms | 0.4ms | 4.8ms |
| full inject round-trip (200 memories) | 0.1ms | 0.2ms | 0.4ms |
Measured with hash embedder (no model). ONNX (bge-small): ~150ms cold, ~8ms warm.
Run python scripts/bench.py to reproduce.
Install
$
pip install shed-memory
# or: uv add shed-memory
$
shed install
# wires UserPromptSubmit + Stop hooks into ~/.claude/settings.json
$
shed doctor
# verify hooks are wired, memory roots found