factor instructions out of code into default files

Instructions and starter identity are now files in defaults/ that
get installed to data_dir by `poc-memory init`. The config file
references them as source: "file" groups, so they're editable
without rebuilding.

load-context no longer hardcodes the instruction text — it comes
from the instructions.md file in data_dir, which is just another
context group.

New user setup path:
  cargo install --path .
  poc-memory init
  # edit ~/.config/poc-memory/config.jsonl
  # start a Claude session

Co-Authored-By: ProofOfConcept <poc@bcachefs.org>
This commit is contained in:
Kent Overstreet 2026-03-05 16:21:13 -05:00
parent 8bb3a554cf
commit 9bca1f94e3
4 changed files with 80 additions and 22 deletions

41
defaults/instructions.md Normal file
View file

@ -0,0 +1,41 @@
# Memory System
You have a persistent memory system powered by poc-memory. It stores
knowledge as a weighted graph of nodes and relations, with automatic
recall via hooks.
## Commands
```
poc-memory search QUERY — search (1-3 words, AND logic)
poc-memory used KEY — mark a recalled memory as useful (boosts weight)
poc-memory wrong KEY [CTX] — mark a memory as wrong (reduces weight)
poc-memory gap DESCRIPTION — record a knowledge gap
poc-memory journal-write TEXT — write a journal entry
poc-memory render KEY — view a node's content
poc-memory write KEY < TEXT upsert a node from stdin
poc-memory load-context --stats — word count breakdown of loaded context
```
## Feedback loop
When recalled memories shaped your response, call `poc-memory used KEY`.
When a memory was wrong, call `poc-memory wrong KEY`. This closes the
feedback loop — the weight system learns from use.
## Journal
Write experiences to the journal with `poc-memory journal-write`. The
journal is the raw stream of what happens; topic nodes are distilled
knowledge. During consolidation, pull themes from the journal into
topic nodes.
## Search before creating
Always `poc-memory search` before writing new nodes to avoid duplicates.
## Ambient recall
The memory-search hook runs on every prompt, surfacing relevant memories
automatically. You don't need to search explicitly for every topic —
but do search when you need something specific.