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 — добавляются несложно и значительно усиливают устойчивость долгосрочной автономной работы.