Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@samfp/pi-memory) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
pi-memory
Persistent memory for pi. Learns corrections, preferences, and project patterns from sessions and injects them into future conversations.
Features
- Automatic learning — Extracts preferences, project patterns, and corrections from conversations at session end via LLM consolidation
- Context injection — Automatically adds relevant memory into every new session's system prompt
- Corrections stick — Mistakes you correct once become permanent lessons (e.g. "use sed for daily notes, not echo >>")
- Complements session-search — session-search finds what you did, pi-memory remembers what you learned
Install
pi install pi-memoryOr add to ~/.pi/agent/settings.json:
{
"packages": ["npm:pi-memory"]
}Memory Types
| Type | Key prefix | Example |
|---|---|---|
| Preferences | pref.* |
pref.commit_style → "conventional commits" |
| Project patterns | project.* |
project.rosie.di → "Dagger dependency injection" |
| Tool preferences | tool.* |
tool.sed → "use for daily note insertion" |
| User identity | user.* |
user.timezone → "US/Pacific" |
| Lessons | (table) | "DON'T: use echo >> for vault notes, use sed" |
Tools
| Tool | Description |
|---|---|
memory_search |
Search semantic memory by keyword |
memory_remember |
Manually store a fact or lesson |
memory_forget |
Delete a fact or lesson |
memory_lessons |
List learned corrections |
memory_stats |
Show memory statistics |
Commands
| Command | Description |
|---|---|
/memory-consolidate |
Manually trigger memory extraction from current session |
How It Works
session_start— Opens the SQLite store, shows memory stats briefly in the status barbefore_agent_start— Builds a<memory>context block from stored facts and lessons, appends it to the system promptagent_end— Collects conversation messages for later consolidationsession_shutdown— Runs LLM consolidation (viapi -p --print) to extract structured knowledge, then closes the store
Consolidation
At session end, if there were ≥3 user messages, the extension sends the conversation to an LLM and asks it to extract:
- Preferences — coding style, workflow habits, tool choices
- Project patterns — languages, frameworks, architecture decisions
- Corrections — things you corrected, mistakes to avoid
Only facts with confidence ≥ 0.8 are stored. Lessons are deduplicated using exact match and Jaccard similarity (≥ 0.7 threshold).
Injection
At session start, stored memory is organized into sections (preferences, project context scoped to cwd, tool preferences, lessons, user identity) and injected as a <memory> block in the system prompt. The block is capped at 8KB.
Selective lesson injection — By default, all lessons are injected into every session. When you have many lessons across different domains, this can waste context. Enable selective mode to filter lessons by relevance:
{
"memory": {
"lessonInjection": "selective"
}
}Add this to ~/.pi/agent/settings.json. In selective mode, lessons are filtered by:
- Prompt relevance — FTS search against the user's first message
- Project context — lessons matching the current working directory's project
- Category inference — keywords in the prompt trigger relevant categories (e.g. "pentest" pulls in
bug-bountylessons, "blog post" pulls inwritinglessons) - General lessons — always included regardless of prompt
The result is capped at 15 most relevant lessons instead of all of them.
| Mode | Behavior |
|---|---|
"all" (default) |
Every lesson injected into every session |
"selective" |
Only relevant lessons based on prompt, project, and category |
Storage
SQLite database at ~/.pi/memory/memory.db (WAL mode). Three tables:
semantic— key-value facts with confidence scoreslessons— learned corrections with dedupevents— audit log of all memory operations
License
MIT