Назад към всички

delta

// Persistent project memory with tag-based classification. Stores decisions, preferences, workflows, conventions, architecture, issues, explorations, and auto-captured commits in a unified memories table with FTS5 search. Includes /delta-prune for intelligent memory cleanup. Triggers: remember, recall

$ git log --oneline --stat
stars:7
forks:1
updated:January 30, 2026
SKILL.mdreadonly
SKILL.md Frontmatter
namedelta
descriptionPersistent project memory with tag-based classification. Stores decisions, preferences, workflows, conventions, architecture, issues, explorations, and auto-captured commits in a unified memories table with FTS5 search. Includes /delta-prune for intelligent memory cleanup. Triggers: remember, recall, memory, delta, preference, convention, decision, workflow, gotcha, issue, pattern, exploration, architecture, approach, save knowledge, what did I decide, log discovery, prune, cleanup, stale.
licenseMIT
compatibilityRequires delta Pi extension installed (~/.pi/agent/extensions/delta)
metadata[object Object]

Delta Memory — Unified Model & Retrieval Guide

Architecture

┌─ TIER 1: MEMORY MAP (always in system prompt) ──────────────────┐
│ Shows category names + counts + keywords. NO content.            │
│ Read the map to know WHAT exists, then pull what you need.       │
├─ TIER 2: ON-DEMAND RETRIEVAL (you call tools) ──────────────────┤
│ delta_search(query)            — FTS5 full-text search           │
│ delta_search(tags=["..."])     — filter by tags                  │
│ delta_search(importance="...") — filter by importance             │
├─ TIER 3: CRITICAL AUTO-LOAD (rare exceptions) ──────────────────┤
│ HIGH/CRITICAL importance memories always visible in prompt.      │
│ Use sparingly — only for must-know project-wide knowledge.       │
└──────────────────────────────────────────────────────────────────┘

Tools

ToolPurposeKey Arguments
delta_rememberPersist knowledgecontent, tags?, importance?, context?
delta_searchFind memoriesquery?, tags?, importance?, limit?
delta_forgetDelete memoryid
delta_infoStats & diagnostics

Awareness Categories

All memories use tags for classification. No separate tables or rigid types.

1. Decisions

WhenAfter making architecture, design, or technology choices
Storedelta_remember content="Chose X over Y — reason" tags=["decision", "<domain>"]
Retrievedelta_search(tags=["decision"]) or delta_search(query="<topic>")
Examples"Chose vitest over jest — ESM support", "REST over gRPC — simpler debugging"

2. User Preferences

WhenUser corrects you, expresses preference, or establishes a pattern
Storedelta_remember content="Prefers <X>" tags=["preference", "<domain>"]
Retrievedelta_search(tags=["preference"])
Examples"Prefers ultra-concise responses", "Uses vitest for testing", "Commit style: conventional"

3. System & Environment

WhenDiscover OS, runtime versions, toolchain, infra details
Storedelta_remember content="<env detail>" tags=["environment", "<aspect>"]
Retrievedelta_search(tags=["environment"])
Examples"macOS Tahoe 26.3 arm64", "Node 22.x", "CI: GitHub Actions"

4. Workflows

WhenUser describes or demonstrates work processes
Storedelta_remember content="<workflow>" tags=["workflow", "<process>"]
Retrievedelta_search(tags=["workflow"])
Examples"Git worktree workflow", "Deploy to staging process"

5. Conventions & Approach

WhenCode patterns, methodology, or solution approaches emerge
Storedelta_remember content="<pattern>" tags=["convention"]
Retrievedelta_search(tags=["convention"]) or delta_search(tags=["approach"])
Examples"Async-first, thread-safe always", "All tools use createTool() from pi-ext-shared"

6. Explorations & Experiments

WhenAfter trying something — success or failure
Storedelta_remember content="Tried X — result" tags=["exploration", "outcome:<result>"]
Retrievedelta_search(tags=["exploration"])
Examples"Tried bun:sqlite — fails in Node.js runtime", "d2 renders ASCII diagrams well"

7. Architecture & System Design

WhenUnderstand or design system components, data flows
Storedelta_remember content="<design>" tags=["architecture", "<component>"]
Retrievedelta_search(tags=["architecture"])
Examples"Pi extension lifecycle: factory → register tools → event handlers"

8. Bugs, Issues & Gotchas

WhenEncounter bugs, pitfalls, workarounds
Storedelta_remember content="<issue>" tags=["bug", "<component>"] importance="high"
Retrievedelta_search(tags=["bug"]) or delta_search(tags=["issue"])
Examples"better-sqlite3 doesn't load under bun test", "Empty IN() causes SQLite syntax error"

9. Commits (auto-captured)

Git commits are automatically logged with tags=["commit", "auto-captured"]. No manual action needed. Retrieve: delta_search(tags=["commit"])


Retrieval Patterns

Before Starting Any Task

  1. Read the Memory Map in your system prompt
  2. Identify relevant categories
  3. delta_search(query="<relevant topic>") or delta_search(tags=["<category>"])

During Work

TriggerAction
Found a bugdelta_remember(content, tags=["bug", "<component>"])
Made a decisiondelta_remember(content, tags=["decision", "<domain>"])
Discovered a patterndelta_remember(content, tags=["convention"])
User expressed preferencedelta_remember(content, tags=["preference"])
Tried somethingdelta_remember(content, tags=["exploration", "outcome:<r>"])
Learned architecturedelta_remember(content, tags=["architecture"])
Identified workflowdelta_remember(content, tags=["workflow"])

After Task Completion

  • Log significant outcomes: delta_remember(content, tags=["milestone"])
  • For must-know knowledge: delta_remember(content, importance="high")

Importance Levels

LevelBehavior
lowStored, searchable, not auto-loaded
normalDefault — stored, searchable, appears in Memory Map
highAuto-loaded into system prompt every turn
criticalAuto-loaded into system prompt every turn (highest priority)

Only use high/critical for knowledge that is essential across ALL sessions.


Memory Maintenance: /delta-prune

TUI dashboard for intelligent memory cleanup.

What It Detects

ReasonCondition
staleNever accessed or age > 30 days
orphaned_pathReferences non-existent files
orphaned_branchReferences non-existent branches
old_sessionFrom previous session + somewhat stale
low_importanceLow importance + stale > 14 days
duplicate>80% content similarity
low_contentContent < 10 chars (likely junk)

Scoring

score = importance × recency × access_frequency (0–100) Items below threshold with prune reasons become candidates.

TUI Controls

KeyAction
j/kNavigate
spaceToggle selection
a/nSelect all / deselect all
Enter/lView details
dDelete selected
q/EscExit

When to Prune

  • After completing a major feature/milestone
  • When memory gets noisy
  • Before starting a new project phase
  • Periodically (weekly/monthly)

Tag Convention Summary

Classification:  ["decision"], ["bug"], ["convention"], ["workflow"],
                 ["exploration"], ["architecture"], ["issue"], ["preference"],
                 ["environment"], ["reminder"], ["approach"]

Qualifiers:      ["outcome:success"], ["outcome:failure"], ["auto-captured"]

Importance:      low, normal, high (auto-loaded), critical (auto-loaded)