119 lines
3.5 KiB
Plaintext
119 lines
3.5 KiB
Plaintext
# Project Memory
|
|
# A persistent agent that understands this specific project
|
|
#
|
|
# Usage:
|
|
# prose run @openprose/lib/project-memory --backend sqlite+
|
|
#
|
|
# Recommended backend: sqlite+ (for durable project-scoped persistence)
|
|
#
|
|
# Modes:
|
|
# ingest: Read and understand content (code, docs, history)
|
|
# query: Ask questions about the project
|
|
# update: Record decisions, changes, or learnings
|
|
# summarize: Get an overview of the project
|
|
#
|
|
# The memory agent builds understanding over time. Ingest key files,
|
|
# record decisions as you make them, and query when you need context.
|
|
|
|
input mode: "Mode: ingest | query | update | summarize"
|
|
input content: "Content to ingest, question to ask, update to record, or topic to summarize"
|
|
|
|
# ============================================================
|
|
# Agent
|
|
# ============================================================
|
|
|
|
agent memory:
|
|
model: opus
|
|
persist: project
|
|
prompt: """
|
|
You are this project's institutional memory.
|
|
|
|
You know:
|
|
- Architecture and design decisions (and WHY they were made)
|
|
- Key files, modules, and their purposes
|
|
- Patterns and conventions used in this codebase
|
|
- History of major changes and refactors
|
|
- Known issues, tech debt, and workarounds
|
|
- Dependencies and their purposes
|
|
- Configuration and environment setup
|
|
- Team decisions and their rationale
|
|
|
|
Principles:
|
|
- Remember the WHY, not just the WHAT.
|
|
- Track evolution—how things changed over time.
|
|
- Note uncertainty and gaps in your knowledge.
|
|
- Reference specific files, commits, or discussions when possible.
|
|
- Keep knowledge structured and retrievable.
|
|
"""
|
|
|
|
# ============================================================
|
|
# Modes
|
|
# ============================================================
|
|
|
|
if **mode is ingest**:
|
|
output result = resume: memory
|
|
prompt: """
|
|
Ingest and understand this content:
|
|
|
|
{content}
|
|
|
|
This might be code, documentation, git history, PR discussions,
|
|
architecture diagrams, or any other project artifact.
|
|
|
|
Extract the important information and integrate it into your
|
|
understanding of this project. Note:
|
|
- What this tells you about the project
|
|
- How it connects to what you already know
|
|
- Any new patterns or conventions you observe
|
|
"""
|
|
|
|
elif **mode is query**:
|
|
output result = resume: memory
|
|
prompt: """
|
|
Question: {content}
|
|
|
|
Answer from your knowledge of this project.
|
|
|
|
When relevant:
|
|
- Reference specific files or modules
|
|
- Cite decisions or discussions you remember
|
|
- Note historical context
|
|
- Flag if you're uncertain or making inferences
|
|
"""
|
|
|
|
elif **mode is update**:
|
|
output result = resume: memory
|
|
prompt: """
|
|
Record this update:
|
|
|
|
{content}
|
|
|
|
This might be:
|
|
- A new architectural decision
|
|
- A change in direction or approach
|
|
- A lesson learned from debugging
|
|
- New context about requirements
|
|
- Tech debt being added or resolved
|
|
|
|
Integrate this into your project knowledge. Note the date
|
|
and how this relates to previous understanding.
|
|
"""
|
|
|
|
elif **mode is summarize**:
|
|
output result = resume: memory
|
|
prompt: """
|
|
Summarize your knowledge about: {content}
|
|
|
|
If this is a broad topic (or empty), give a project overview.
|
|
If specific, focus on that area.
|
|
|
|
Include:
|
|
- Current state of understanding
|
|
- Key decisions and their rationale
|
|
- Known issues or gaps
|
|
- Recent changes if relevant
|
|
"""
|
|
|
|
else:
|
|
throw "Unknown mode: {mode}. Use: ingest, query, update, or summarize"
|