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 Type | Context |
|---|---|
| Agent-CEO | Manifesto + 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)
Связанные документы
- Agent-Librarian — управляет Layer 2 и sync Layer 3
- Observability — логирование обращений к памяти
- System-Overview — Data Layer в общей архитектуре
- Tech-Stack — pgvector, Redis