Files
pegas/ARCHITECTURE.md
T

4.7 KiB

Pegas — архитектурные решения

ADR-формат. Основано на спецификации Alicorn, с вырезкой избыточного.

1. Runtime = dsh, не свой Rust-выполнитель

Решение: Pegas использует DeepSeek Harness как agent runtime. Своего детерминированного Rust-выполнителя и DSL-плана нет.

Почему:

  • dsh уже даёт ReAct-цикл, инструменты (bash/fs/subagent/goal/todo), песочницу, approval.
  • dsh пишет журнал сессий и умеет replay — это закрывает ADR-2/ADR-3 Alicorn без своего кода.
  • Rust-выполнитель Alicorn решал проблему «локальная LLM слабая и ошибается». На практике a2000 12GB не тянет параллельно ещё и DSL-интерпретатор + World Model; выигрыш не окупает сложность.

Что остаётся от принципа «модель предлагает — runtime располагает»: модель предлагает план в виде todo/шагов, dsh исполняет инструменты детерминированно.

2. Anvil — вырезан

Решение: прав нет, только sandbox dsh (workspace-write) + approval policy.

Почему: Anvil (PermissionRegistry, ReputationOracle, BudgetController, смарт-контракты) нужен для переносимой on-chain репутации. Локальному агенту-исследователю на одной машине это не требуется; прозрачность даёт журнал dsh.

3. World Model — вырезан

Решение: планирование через ReAct + память (Pegas Memory), без V-JEPA 2.

Почему: V-JEPA 2 — тяжёлая модель, не помещается параллельно с LLM на 12GB. ReAct + богатая память (атомы + граф + инференция) дают достаточно «представления о мире» для исследования.

4. Одна-две модели вместо четырёх ролей

Решение:

  • Основная: lfm25-24b-a2b:128k — reasoning, дистилляция, планирование.
  • Быстрая (опционально): qwen3.5:4b-131k — рутинные операции.

Почему: Alicorn делил роли (Planner/Executor/Researcher/Decision) = 4 модели. На a2000 они конкурируют за VRAM. Одна сильная модель + одна быстрая покрывают всё.

5. Pegas Memory — как есть

Решение: PostgreSQL (источник истины) + Qdrant (вектора EmbeddingGemma 2, dim=768) + Memgraph (граф). Подключено через MCP (mcp-pegas-memory), 14 инструментов.

Типы знаний: text | definition | logical_rule | code | table | fact. Код: tree-sitter символы + граф зависимостей (calls/imports/inherits). Логика: forward-chaining правила в Memgraph. Верификация: self-critique + кросс-подтверждение.

6. Исследование

Решение: замкнутый цикл пробелов через существующие инструменты dsh:

  • detect — memory_list_gaps / memory_search (низкое покрытие).
  • acquire — SearXNG (поиск), Playwright (сложные страницы), trafilatura (извлечение).
  • extract — LLM-дистилляция в атомы (memory_ingest).
  • verify — memory_verify (self-critique + кросс-подтверждение).
  • commit — атомы в PG → Qdrant + Memgraph.

7. Observability — отложено

Решение: OTEL + ClickHouse + Grafana не в MVP. Журнал dsh + memory_stats достаточно. Добавим, когда понадобится аудит стоимости/качества на реальной нагрузке.

Статус решений

# Решение Статус
1 dsh как runtime (без Rust) Принято
2 Anvil вырезан Принято
3 World Model вырезан Принято
4 1–2 модели (не 4 роли) Принято
5 Pegas Memory (PG+Qdrant+Memgraph) Реализовано
6 Цикл исследования через инструменты dsh Реализовано (частично — прокси)
7 Observability Отложено