Skip to content

[Feature]: Cognitive Memory Types - Procedural, Episodic, Semantic #86

@zircote

Description

@zircote

Problem Statement

Subcog uses namespaces to categorize memories (decisions, patterns, learnings, etc.), but does not distinguish between cognitive memory types that have different retrieval characteristics:

  • Semantic: Facts and knowledge ("PostgreSQL is a database")
  • Episodic: Past experiences ("On Jan 15, we debugged the auth issue")
  • Procedural: Skills and behaviors ("To deploy, run make release")

LangMem has implemented this taxonomy, enabling more appropriate retrieval based on query intent.

Proposed Solution

Implement memory type classification alongside namespaces:

Memory Types:

  • semantic: Facts, concepts, declarative knowledge
  • episodic: Events, experiences, temporal memories
  • procedural: Processes, how-tos, behavioral patterns

Benefits:

  • Intent-aware retrieval (how-to queries -> procedural memories)
  • Appropriate context formatting per type
  • Better memory organization
  • Aligned with cognitive science research

Proposed API:

pub enum MemoryType {
    Semantic,   // Facts: "X is Y"
    Episodic,   // Events: "On date, X happened"
    Procedural, // Processes: "To do X, follow steps..."
}

Automatic classification during capture:

subcog_capture:
  content: "To deploy to production, run 'make release' then verify in staging"
  namespace: patterns
  memory_type: procedural  # Auto-detected or explicit

Type-aware recall:

subcog_recall:
  query: "how to deploy"
  memory_types: ["procedural"]  # Prioritize how-tos

Alternatives Considered

  • Namespace-only classification (current) - misses cognitive dimension
  • Automatic type inference only - may misclassify
  • Separate stores per type - unnecessary complexity

Additional Context

Breaking Change: No
Priority: Nice to have
Contribution: Yes, with guidance

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions