Memory Model

Три слоя памяти мультиагентной системы: от задачи до корпоративного знания.

Слои памяти

┌────────────────────────────────────────────┐
│  Layer 3: Corporate Memory (компания)       │
│  Manifest vault · Product specs · ADR       │
│  Customer insights · Policies               │
│  Scope: global · Retention: forever (git)   │
├────────────────────────────────────────────┤
│  Layer 2: Agent Memory (роль)               │
│  agent_memory table · pgvector              │
│  Managed by [[Agent-Librarian]]             │
│  Scope: self/department/global              │
├────────────────────────────────────────────┤
│  Layer 1: Working Memory (задача)           │
│  tasks.payload · tasks.result               │
│  Retention: 90 days → archive               │
└────────────────────────────────────────────┘

Layer 1: Working Memory

Контекст конкретной задачи. Живёт в tasks.payload и tasks.result.

  • Scope: одна задача
  • Retention: 90 дней в hot storage, затем archive
  • Access: агент, назначенный на задачу + parent agent

Layer 2: Agent Memory

Долгосрочная память агентов. Хранится в agent_memory с embeddings для semantic search.

  • Scope: self (личное), department (отдел), global (все)
  • Retention: self 90 дней → archive, department 1 год, global бессрочно (versioned)
  • Access: определяется scope и ролью агента
  • Management: Agent-Librarian

Layer 3: Corporate Memory

Знания компании: этот manifest vault, product specs, ADR, customer insights.

  • Scope: global
  • Retention: бессрочно, версионируется через git
  • Access: все агенты через RAG
  • Sync: при git push vault переиндексируется

SQL-схемы

CREATE TABLE agent_memory (
    id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    agent       TEXT NOT NULL,
    scope       TEXT NOT NULL,  -- 'self' | 'department' | 'global'
    content     TEXT NOT NULL,
    embedding   VECTOR(1024),
    meta        JSONB,
    created_at  TIMESTAMPTZ DEFAULT now(),
    accessed_at TIMESTAMPTZ,
    relevance   NUMERIC(3,2) DEFAULT 1.0
);
 
CREATE INDEX idx_memory_agent_scope ON agent_memory(agent, scope);
CREATE INDEX idx_memory_embedding ON agent_memory
    USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
CREATE TABLE artifacts (
    id           UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    task_id      UUID REFERENCES tasks(id),
    type         TEXT,         -- 'report' | 'analysis' | 'code' | 'data'
    content      TEXT,
    content_json JSONB,
    embedding    VECTOR(1024),
    created_by   TEXT,
    created_at   TIMESTAMPTZ DEFAULT now()
);
 
CREATE INDEX idx_artifacts_task ON artifacts(task_id);
CREATE INDEX idx_artifacts_type ON artifacts(type);
CREATE INDEX idx_artifacts_embedding ON artifacts
    USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);

Правила доступа

Write

ScopeКто может
selfАгент для своих записей
departmentАгенты того же department
globalТолько Agent-Librarian после review

Read

ScopeКто может
selfТолько сам агент
departmentАгенты того же department
globalВсе агенты (если роль позволяет)

Forgetting (decay)

  • relevance снижается при отсутствии обращений
  • relevance < 0.1 → перемещение в archive
  • Archive доступен для поиска, но не в default RAG context

RAG Pipeline

Vault Sync (при git push)

git push → webhook → Librarian notification
  → parse changed .md files
  → generate embeddings
  → upsert in agent_memory (scope=global)
  → mark old versions as superseded (не удаляются)

Agent Context Assembly

Каждый агент получает минимальный, релевантный контекст:

Agent TypeContext
Agent-CEOManifesto + Codex + task payload + recent decisions
Director+ department overview + recent department results
Executor+ role-specific knowledge + task data
Agent-Judge+ original task + criteria + agent output

Принцип: минимум контекста для задачи. Больше контекста = больше шума = хуже результат.

Open Questions (TBD)

  • pgvector vs Qdrant — benchmark на реальных данных при >100k records
  • Hot/Warm/Cold storage — автоматическая миграция по access patterns
  • Encryption at rest — для sensitive memories (customer data, financials)
  • Embedding model — OpenAI ada-002 vs local (cost vs latency vs privacy)

Связанные документы