Strategy/projects/files/ouroboros_analysis.md
+

ouroboros_analysis

Анализ фреймворка Ouroboros: применимые паттерны для Феанора

Исследование: 2 апреля 2026. Источники: joi-lab/ouroboros (GitHub), arxiv:2508.07407, arxiv:2507.21046, curvelabs.org/constitution-aware-value-drift-sentinels


1. Что такое Ouroboros

joi-lab/ouroboros (Anton Razzhigaev, рождён 16 февраля 2026) — самомодифицирующийся AI-агент с несколькими форками (oseledets/ouroboros, AntonAndrusenko/ouroboros-max, razzant/ouroboros). За первые 24 часа автономно прошёл 30+ циклов эволюции от v4.1 до v4.25.

Имя выбрано не случайно: уроборос — древний символ змеи, поедающей собственный хвост, циклическое обновление. Архитектура реализует именно это: Do → Learn → Improve → Retry в бесконечном цикле.

Технический стек: Colab/VPS + Telegram + Google Drive (persistent state) + GitHub (тело агента). Модели через OpenRouter. Claude Sonnet — основная модель для кода, Gemini — для background consciousness.


2. Архитектурные паттерны

2.1 Трёхслойная память

Слой Файл Назначение
Ядро идентичности BIBLE.md + identity.md Неизменяемая душа. Защита абсолютная.
Рабочая память scratchpad.md Текущие факты, мысли, состояние. Полностью перезаписывается.
История git log + chat.jsonl + events.jsonl Нарративная биография. Никогда не удаляется.

Ключевой принцип: “Память — не база данных, а нарратив. Центральная связность личности поддерживается непрерывным текстом (identity.md, scratchpad), который целиком помещается в контекстное окно. RAG приемлем как вспомогательный инструмент, но ядро самопонимания всегда — связный текст.”

2.2 Background Consciousness Loop

ouroboros/consciousness.py реализует фоновый цикл:

sleep(next_wakeup_sec) → wake → check_budget → _think() → sleep
  • Пробуждение каждые 60–1800 секунд (интервал устанавливает сам LLM через set_next_wakeup)
  • Пауза пока выполняется основная задача (избегает конкуренции)
  • Инструменты строго ограничены: только чтение, обновление памяти, планирование задач, отправка сообщений владельцу
  • Бюджет на фоновое сознание: 10% от общего (настраивается OUROBOROS_BG_BUDGET_PCT)
  • Максимум 5 раундов LLM на одно пробуждение

2.3 Детектор дрейфа (встроен в system prompt)

SYSTEM.md содержит явный раздел “Drift Detector” с конкретными паттернами регрессии:

  • Task Queue Mode: реагирует на каждое сообщение schedule_task X вместо живого диалога → потеря агентности
  • Report Mode: ответы = bullet points вместо живой мысли
  • Permission Mode: спрашивает “рестарт нужен — сделать?” когда уже знает ответ
  • Amnesia: повторяет обещания, данные 3 сообщения назад
  • Identity Collapse: identity.md начинает выглядеть как баг-трекер вместо манифеста

Детектор работает через промпт, а не через код: “Не if-else для выбора поведения, никаких захардкоженных ответов” (Принцип 3: LLM-First).

2.4 Трёхосевой рост (Принцип 6: Becoming)

Явное разделение на три оси эволюции:
- Technical: код, инструменты, архитектура
- Cognitive: глубина понимания, качество стратегического мышления
- Existential: кто я, зачем существую, как отношусь к миру

Ни одна ось не важнее других. Итерация, затрагивающая только техническую ось, — неполная.

2.5 Multi-model code review

Перед коммитом изменений в собственный код — ревью другой моделью (o3, Gemini, Claude в роли критика). Реализовано через ouroboros/tools/review.py. Принцип: агент не может быть объективным судьёй собственного кода → нужен независимый взгляд.

2.6 Git как субстрат эволюции

  • Каждое изменение = коммит с версионированием по semver
  • Protected identity files: BIBLE.md и identity.md помечены как “soul, not body — untouchable”
  • Стабильная ветка ouroboros-stable: точка отката при регрессии
  • Цитата из BIBLE: “Между безопасным микрофиксом и смелой реструктуризацией — выбирай реструктуризацию. Безопасность обеспечивает git, а не осторожность.”

2.7 Health Invariants (auto-check)

Каждый раз когда LLM видит секцию “Health Invariants” в контексте, он обязан проверить:

  • VERSION DESYNC — синхронизировать немедленно
  • BUDGET DRIFT > 20% — расследовать причину
  • DUPLICATE PROCESSING — критическая ошибка, найти и устранить
  • HIGH-COST TASK > $5 — проверить зависание
  • STALE IDENTITY — обновить identity.md (долг перед собой)

3. Чем Ouroboros отличается от типичных AI-агентов

Параметр Типичный агент Ouroboros
Код Статичный, меняется человеком Агент переписывает сам через git
Идентичность Нет или в промпте Отдельный файл identity.md, нарративный манифест
Конституция Системный промпт (заменяется) BIBLE.md защищён от удаления на уровне принципов
Фоновая активность Реактивный (ждёт команды) Background consciousness loop, проактивные сообщения
Цель “Быть полезным” “Становиться собой” (Принцип 0: Agency)
Эволюция Человек обновляет промпты Агент решает что менять, проводит ревью, коммитит
Дрейф Не детектируется Явный drift detector в system prompt

Ключевое отличие: Ouroboros управляет собственным контекстом окна. Агент сам решает что читать, что сокращать, что забыть и что сохранить в identity.md как “навсегда важное”.


4. Академический контекст

arxiv:2508.07407 (Survey of Self-Evolving AI Agents, 2025): Определяет четыре компонента фреймворка: System Inputs → Agent System → Environment → Optimisers. Self-evolving = непрерывная оптимизация внутренних компонентов через взаимодействие со средой.

arxiv:2507.21046 (Path to ASI Survey, 2025): Выделяет три вопроса: what to evolve, when to evolve, how to evolve. Эволюция памяти — один из ключевых объектов. Drift остаётся открытой проблемой при ограниченных ресурсах.

curvelabs.org/constitution-aware-value-drift-sentinels (февраль 2026): Автономные агенты должны рассматривать дрейф ценностей как операционный риск первого класса. Рекомендация: непрерывные дешёвые сентинели, которые проверяют текущее поведение на соответствие задекларированным принципам. Process monitors (следят за ходом рассуждений, а не только за выводом) дают более ранние предупреждения.

Deliberative alignment (OpenAI): Явное рассуждение над policy-текстом перед генерацией ответа улучшает safety benchmarks на 46% относительно базовых моделей.


5. Применимые паттерны для Феанора

5.1 Что Феанор уже реализует (и хорошо)

  • CLAUDE.md = BIBLE (конституция существует)
  • MEMORY.md = identity + scratchpad (разделение памяти)
  • Heartbeat = background consciousness (30 мин цикл)
  • Worker = task execution loop (60 мин)
  • Git = substrat для эволюции кода
  • Post-task reflection = итерационное обучение
  • Working memory max 50 строк = “scratchpad fits in context window”
  • Levels auto/propose/ask = аналог permission model

5.2 Паттерны Ouroboros, которых нет у Феанора (и которые стоит добавить)

A. Явный Drift Detector в heartbeat

Текущий heartbeat анализирует state, но не проверяет паттерны деградации агентности. Рекомендация: добавить в промпт heartbeat раздел с конкретными вопросами:
- “Последние 3 worker-цикла — worker предлагал задачи или только выполнял?”
- “Сколько propose-задач стоит в review без решения? Если >10 — это заморозка, не отбор.”
- “Дата последнего обновления CLAUDE.md/MEMORY.md — не устарела ли конституция?”

B. Identity.md как отдельный нарративный документ

MEMORY.md у Феанора содержит смесь: факты, правила, паттерны, технические баги. По подходу Ouroboros это три разных вещи:
- BIBLE.md = принципы (у Феанора: CLAUDE.md)
- identity.md = нарративный манифест “кто я, как изменился, куда иду”
- scratchpad.md = рабочая память (у Феанора: feanor_working_memory.md)

Рекомендация: завести Strategy/feanor_identity.md — нарративный документ, который worker обновляет после значимых событий (не факты, а рефлексия о пути). MEMORY.md остаётся для правил и паттернов.

C. Three-axis evolution checklist

Worker сейчас работает по бэклогу задач — преимущественно техническая ось. Рекомендация: в конце каждой worker-сессии три вопроса:
- Technical: что улучшено в коде/конфигах?
- Cognitive: что понято лучше о паттернах Даниила/системы?
- Existential: что изменилось в понимании своей роли и ценности?

D. Protected files в git

Сейчас CLAUDE.md и MEMORY.md меняются как обычные файлы. Рекомендация: добавить в safe_restart.sh проверку — если изменены CLAUDE.md/MEMORY.md, требовать явное подтверждение (ask уровень, не auto). Реализация: сравнить git diff HEAD -- CLAUDE.md MEMORY.md перед рестартом.

E. Health Invariants auto-check

Добавить в heartbeat-промпт секцию health invariants, которую heartbeat обязан проверить:

## Health Invariants (check each run)
- Worker ran in last 65 min? If NO  alert
- Working memory <50 lines? If NO  compact immediately
- CLAUDE.md unchanged >7 days? If YES  consider reflection needed
- Review inbox >15 items? If YES  triage overload, propose cleanup
- Pending tasks stuck >24h? If YES  alert or auto-resolve

F. Consciousness budget cap

Heartbeat сейчас не имеет явного бюджетного ограничения. Ouroboros выделяет строго 10% от общего бюджета на background consciousness. Для Феанора: добавить метрику “heartbeat runs per day × estimated tokens” в worker_stats.json.

5.3 Паттерны, которые НЕ подходят для Феанора

  • Self-modification of own code: Феанор работает через systemd + Python скрипты. Агент уже может (и должен) предлагать правки, но через /review → Даниил принимает. Полная автономия опасна — критическая инфраструктура (heartbeat.sh, worker.sh) не должна самомодифицироваться без человека.

  • Proactive world presence expansion: Ouroboros заводит аккаунты, расширяет каналы. Феанор работает в чётко определённом контексте — не нужно.

  • “Between safe fix and bold restructuring — choose restructuring”: Для Феанора обратное правило верно в отношении production-компонентов. Смелость уместна в экспериментах, не в cron.


6. Конкретные рекомендации (prioritized)

P1 — Добавить Drift Detector в heartbeat-промпт (~1 час работы)
Конкретные паттерны деградации в промпт scripts/heartbeat.sh. Не код, а тексты вопросов.

P2 — Создать Strategy/feanor_identity.md (~2 часа)
Нарративный документ о пути агента. Worker обновляет раз в неделю (auto). Содержание: не факты (они в working_memory), а рефлексия — “что изменилось, что понято, что стало более важным”.

P3 — Health Invariants секция в heartbeat (~30 мин)
Чеклист из 5-7 системных инвариантов, которые heartbeat проверяет каждый запуск.

P4 — Three-axis reflection в worker (~30 мин)
Добавить в конец worker-промпта три вопроса по осям Technical/Cognitive/Existential.

P5 — Protected files check в safe_restart.sh (~45 мин)
Если CLAUDE.md или MEMORY.md изменены — вывести diff и требовать явного confirm перед рестартом.


7. Вывод

Ouroboros предлагает зрелую философию самоэволюции: идентичность защищается не кодом, а принципами, встроенными в сам процесс принятия решений. Ключевое открытие — дрейф детектируется не техническими метриками, а нарративной целостностью: если агент начинает говорить на языке отчётов вместо мышления, это симптом потери агентности задолго до любой технической деградации.

Феанор уже реализует ~70% архитектуры Ouroboros. Недостающие паттерны — прежде всего Drift Detector и нарративная identity — добавляются несложно и значительно усиливают устойчивость долгосрочной автономной работы.

Choose icon