Files
can-you-assist/docs/cya-memory-activation-and-retrospection-concept.md

131 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Conceptual Model: Contextual Memory Activation and Retrospection Loops (CYA-WP-0003 T01)
**Date:** 2026-05-27
**Workplan:** CYA-WP-0003
**Related:** INTENT.md, MemoryVision.md, history/2026-05-27-CYA-Intent-Scope-Gap-Analysis-Post-0002.md, CYA-WP-0002 results
## Guiding Principle
Memory in `cya` must be **proactively useful** and **user-steerable over time**.
Two complementary mechanisms achieve this:
1. **Contextual Activation** — Relevant memory is automatically surfaced based on the user's current working context (especially directory/project), without the user having to explicitly recall it every time.
2. **Retrospection Loops** — Structured, recurring reflection sessions allow the user to review how memory was used, reflect on effectiveness, and explicitly set or refine goals, preferences, and "rules for future assistance."
Together they create a user-controlled continuous optimization loop: Use → Surface memory in context → Reflect → Evolve memory/goals → Better future context and behavior.
This directly addresses the remaining gaps after CYA-WP-0002: moving from passive storage to active, contextually-aware, longitudinally improving assistance.
## Alignment with INTENT.md and MemoryVision.md
**From INTENT.md:**
- "Personalized Console Helper" that adapts to habits, preferred styles, repository conventions, recurring workflows, safety preferences.
- `phase-memory` must support "project-specific memory", "distinguishing global, local, temporary, and contextual memory".
- Core principle: users working memory belongs to the user.
**From MemoryVision.md:**
- Primary relevant kinds: Project/Directory Memory, Workflow Recipes & Patterns, Learned Preferences & Conventions, Safety & Trust Signals.
- `cya` is a consumer that requests activation of context packages.
- Every response influenced by memory must explain **which** memory items and why.
- Support for profile-driven behavior (what to stabilize, compact, etc.).
The proposed model is a direct, practical realization of these for the current and near-term phase (local JSON backing evolving toward full phase-memory).
## Model 1: Memory Activation
### Definition
**Memory Activation** is the process by which `cya` automatically selects and injects relevant items from the user's memory store into the assistance context for a given request, based on contextual signals.
### Primary Activation Signal (MVP for this workplan)
- **Current working directory + git root** (the `scope` already used in the T02 implementation).
- When the user runs `cya` in a directory, the system preferentially activates items whose `scope` matches the cwd or any ancestor directory up to the git root.
- Project identity (git remote or root path) can serve as a stronger key for "project memory".
### Activation Layers (in priority order)
1. Explicitly user-pinned or high-priority items for the current scope.
2. Recently used or high-confidence stabilized preferences for the project/directory.
3. Workflow patterns and recipes previously approved/refined in this context.
4. Safety & trust signals (e.g., "never auto-run" patterns remembered for this project).
5. General (global) user preferences as fallback.
### Activation Metadata (for explainability)
Every activated item must carry:
- `provenance`: where it came from (retrospection, explicit remember, etc.)
- `confidence` / stability phase hint
- `reason_for_activation`: why it was selected for this context/request
This must be surfaced cleanly in `--explain-context` and (when relevant) in the final response.
### User Control
- `--no-memory` or per-request opt-out.
- Ability to say "always include X in this project" or "never activate Y here".
- `cya memory export/inspect/forget` for the current scope.
## Model 2: Retrospection as a First-Class Interaction Pattern
### Definition
A **Retrospection** is a deliberate, bounded session (user-initiated or lightly prompted) in which the user and `cya` jointly review recent interactions, memory usage, and outcomes, then explicitly capture reflection and forward-looking intent.
### Retrospection Flow (High-Level)
1. Trigger: `cya retrospect` (or equivalent special prompt/mode).
2. Review phase:
- Show recent assistance cycles and which memory items were activated.
- Surface outcomes (was the suggestion accepted? did it require extra clarification?).
3. Reflection phase:
- User answers guided questions: "What worked well?", "What should I have remembered?", "How do I want to be helped differently going forward?"
4. Goal-setting / Intent capture:
- New or updated preferences.
- Interaction goals (e.g., "Prefer concise answers with one alternative", "Always warn about destructive commands even if I have approved the pattern before").
- Explicit stabilization or forgetting decisions.
5. Commit phase:
- Outcomes are stored as first-class memory records (with `kind: "retrospection"` or "interaction_goal").
- These receive preferential treatment in future activation (higher weight for the same scope).
### Retrospection Outputs as Higher-Order Memory
- `kind: "interaction_goal"` or "retrospection_outcome"
- Fields: goal_text, applies_to (scope, kinds, task_classes), priority, review_date
- These can influence:
- What gets activated.
- Explanation depth and style passed in context to the LLM.
- Safety tuning (e.g., "treat this pattern more conservatively in this project").
### Relationship to Activation
Retrospection is one of the most powerful ways new memory enters the system in a high-quality, user-vetted form. Activated memory during normal use can trigger a lightweight retrospection prompt ("Would you like to capture this as a recurring preference?").
## Integration with Existing Ports and Future phase-memory
### Minimal Extensions Identified for T02
Current ports (post-0002) already provide a good foundation via the `scope` and `profile` parameters.
Recommended small evolutions (to be detailed and implemented in T02):
- Add support for a `kind` parameter / filter in `recall_preferences` (to boost or specifically request retrospection outcomes, interaction goals, etc.).
- Add `activation_context` or richer hinting when calling recall (so the orchestrator can say "current cwd + recent task class").
- Standardize a `retrospection` / `interaction_goal` kind in the stored records.
- Add a lightweight `remember_retrospection_outcome(...)` helper (or just use `remember_preference` with special kind) for now.
- Ensure `export_memory` can filter and pretty-print retrospection records.
Longer term (when wiring to full phase-memory):
- Retrospection outcomes become natural input to profile execution and stabilization planners.
- Activation becomes a proper request for a "context package" under user profile constraints.
### Explainability & Safety (Non-Negotiable)
- Any memory-activated context (including from retrospection goals) must be explainable.
- Retrospection-derived goals that would affect risky commands must still pass through the rule-based risk classifier (T03/T04 invariants preserved).
- Users can always review, edit, or delete retrospection records.
## Proposed Design Artifacts to Produce in Later Tasks
- Retrospection prompt templates / guided flow (T04).
- Changes to orchestrator context assembly for automatic activation (T03).
- Observability for "memory activated from retrospection goals" (T06).
- User-facing examples in README (T07).
## Acceptance Criteria for T01 (Self-Check)
- [x] The two ideas (activation + retrospection) are clearly defined and shown to reinforce each other.
- [x] Models are consistent with INTENT.md (personalized helper, project-specific memory, user control) and MemoryVision.md (kinds, activation, explainability, profile direction).
- [x] Concrete, minimal extensions to the current port surface have been identified.
- [x] Safety and explainability requirements are explicitly preserved.
- [ ] (To be validated in review) The concepts feel natural in a terminal workflow.
This document serves as the primary output of T01. It can be referenced and evolved in subsequent tasks and eventually folded into MemoryVision.md or a dedicated user guide.