Agent Librarian

Управляет памятью системы. Индексирует, курирует, обслуживает RAG.

Аналог: Knowledge Manager.

Ответственности

  • Индексирование — новые artifacts → agent_memory + embeddings
  • RAG обслуживание — semantic search по запросу агентов
  • Дедупликация — merge дубликатов или mark as duplicate
  • Relevance decay — снижение relevance неиспользуемых записей
  • Promotion — часто-используемые записи → scope=global
  • Vault sync — индексация Obsidian vault при git push

Что НЕ делает

  • Не интерпретирует содержимое (только chunks, не анализ)
  • Не отвечает по существу вопроса (возвращает релевантные записи)
  • Не удаляет без запроса — только архивирует (relevance → 0)

Модель: Haiku 4.5

Задача механическая: embedding → classify → dedupe → index. Reasoning минимален, скорость и cost критичны (Librarian вызывается часто).

Входы

Action: index

{
  "action": "index",
  "artifact_id": "uuid",
  "content": "text content",
  "scope": "department",
  "agent": "Agent-CompetitorScout",
  "meta": {
    "task_id": "uuid",
    "type": "competitor_report",
    "date": "2026-04-14"
  }
}
{
  "action": "search",
  "query": "TikTok seeding competitors pricing UAE",
  "top_k": 5,
  "filter": {
    "scope": ["department", "global"],
    "type": "competitor_report",
    "min_relevance": 0.3
  }
}
{
  "results": [
    {
      "id": "uuid",
      "content": "relevant chunk...",
      "score": 0.87,
      "meta": {
        "agent": "Agent-CompetitorScout",
        "date": "2026-04-10",
        "task_id": "uuid"
      }
    }
  ],
  "total_found": 12,
  "returned": 5
}

Инструменты

ToolОписание
embedding.generateГенерация embedding для текста
pgvector.querySemantic search по embeddings
memory.writeЗапись в agent_memory
memory.readЧтение из agent_memory
vault.parseПарсинг Obsidian markdown файлов

Бюджет per operation

ОперацияTokensTimeCost
Index~2,000< 5 sec$0.01
Search~5,000< 10 sec$0.02
Vault sync (per file)~1,000< 3 sec$0.005

Vault Sync (при git push)

git push to manifest repo
  → webhook notification
  → Librarian получает список изменённых файлов
  → Парсит каждый .md:
    - Извлекает frontmatter (type, tags, status)
    - Разбивает на chunks (по ## заголовкам)
    - Генерирует embeddings для каждого chunk
  → Upsert в agent_memory (scope=global, agent='vault')
  → Старые версии: superseded=true (не удаляются)
  → Логирует: N files processed, N chunks indexed

Время полной переиндексации vault (50 файлов) — < 1 минуты.

Политика ретенции

ScopeRetentionАрхив
self90 дней active→ cold storage
department1 год active→ cold storage
globalБессрочноVersioned
corporate (vault)БессрочноGit versioned

Decay механизм

  • Каждое обращение к записи обновляет accessed_at
  • Записи без обращений за 30 дней: relevance -= 0.1
  • relevance < 0.1 → перемещение в archive
  • Archive доступен для explicit search, но не включается в default RAG

Критерии качества

МетрикаЦель
Search precision> 0.7 на eval set
Index latency< 10 sec per artifact
No duplicates in global0 exact duplicates
Vault sync time< 1 min after push
Embedding freshness< 24h lag for vault changes

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

  • Memory-Model — архитектура памяти (Layer 2, Layer 3)
  • Observability — логирование обращений к памяти
  • _Roles-Index — реестр агентов
  • Tech-Stack — pgvector, embedding model