Ouroboros — Agent OS: интервью, неизменяемая спецификация и эволюционный цикл вместо prompt engineering

· 2 мин чтения
ai-agents spec-driven workflow mcp orchestration
📂 Исходный код на GitHub

Agent OS для AI-кодинга: локальный рантайм-слой, превращающий недетерминированную работу агента в воспроизводимый исполняемый контракт с Seed, Ledger, MCP и границами безопасности. Python, MCP-сервер, 14 поддерживаемых рантаймов.

Ouroboros — Agent OS: интервью, неизменяемая спецификация и эволюционный цикл вместо prompt engineering

Ouroboros — это «Agent OS» для AI-кодинга: локальный рантайм-слой, который превращает недетерминированную работу агента в воспроизводимый, наблюдаемый и привязанный к политикам исполняемый контракт. Вместо того чтобы подбирать промпты, проект заменяет ad-hoc работу структурированным spec-first воркфлоу: интервью, кристаллизация, исполнение, оценка, эволюция. Репозиторий на Python, лицензия MIT, около 6,1 тысячи звёзд.

Главная мысль README формулируется так: большинство провалов в AI-кодинге происходит не на выходе, а на входе. Узкое место — не возможности модели, а человеческая ясность.

Зачем это нужно

Проблема Что происходит Решение в Ouroboros
Расплывчатый промпт ИИ додумывает, вы переделываете Сократическое интервью вскрывает скрытые допущения
Нет спецификации Архитектура плывёт по ходу сборки Неизменяемый Seed фиксирует намерение до кода
Ручной QA «Выглядит нормально» — это не проверка Трёхступенчатый автоматический гейт

Установка

Одна команда ставит всё и сама определяет доступные рантаймы:

# macOS / Linux / WSL 2
curl -fsSL https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.sh | OUROBOROS_INSTALL_REF=readme bash
# Windows (PowerShell 5.1+ или pwsh 7+)
irm https://raw.githubusercontent.com/Q00/ouroboros/main/scripts/install.ps1 | iex

Дальше внутри агента выполняются две команды:

> ooo setup
> ooo interview "I want to build a task management CLI"

ooo setup — разовая настройка рантайма и проекта. ooo interview запускает сократическое интервью. Из обычного терминала то же самое делается через ouroboros init start --orchestrator "...".

Команда ouroboros setup refresh ставит артефакты только в те хосты, которые реально установлены на машине: rules и skills для Codex, skills для Hermes, плагин и AGENTS.md для OpenCode, мосты для Pi и GJC.

Поддерживаются Claude Code, Codex CLI, GitHub Copilot CLI, OpenCode, Hermes, Gemini, Kiro CLI, Pi CLI, OMP CLI, Zcode, Goose, GJC, Antigravity CLI и Grok Build CLI. Установщик сам регистрирует MCP-сервер там, где хост это умеет; явный выбор — ouroboros setup --runtime <opencode|kiro|copilot|...>. Подробности по платформам и профилям Python собраны в Platform Support, подробный справочник команд — в CLI reference.

Требуется Python 3.12 или новее. Пакет публикуется на PyPI как ouroboros-ai, есть установка через pip, pipx, uv и Homebrew (brew tap q00/tap && brew install ouroboros-ai).

Цикл

    Interview -> Seed -> Execute -> Evaluate
        ^                           |
        +---- Evolutionary Loop ----+

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

Фаза Что происходит
Interview Сократические вопросы вскрывают скрытые допущения
Seed Ответы кристаллизуются в неизменяемую спецификацию
Execute Двойной ромб: Discover → Define → Design → Deliver
Evaluate Трёхступенчатый гейт: Mechanical → Semantic → Consensus
Evolve Wonder («Чего мы всё ещё не знаем?») → Reflect → следующее поколение

Интервью не заканчивается, когда вы «почувствовали готовность», — оно заканчивается, когда разрешает математика. Неоднозначность считается как обратная взвешенной ясности:

Ambiguity = 1 - Sum(clarity_i * weight_i)

Для greenfield-проекта веса распределяются так: ясность цели 40%, ясность ограничений 30%, измеримые критерии успеха 30%. Для brownfield добавляется понимание существующей кодовой базы с весом 15%, а остальные доли пропорционально сжимаются. Порог — Ambiguity ≤ 0.2. Выше порога генерация Seed блокируется; пропустить гейт можно явным флагом force, и CLI показывает этот выбор рядом с продолжением и отменой.

Оценка тоже не сводится к «посмотрел глазами»:

Ступень Содержание
Mechanical Бесплатные детерминированные проверки
Semantic Оценка смыслового соответствия
Multi-Model Consensus Согласование нескольких моделей

Эволюция останавливается не по таймеру, а по сходимости онтологии — когда соседние поколения дают онтологически одинаковые схемы:

Similarity = 0.5 * name_overlap + 0.3 * type_match + 0.2 * exact_match

Порог — Similarity ≥ 0.95. Дополнительно система детектит четыре паттерна деградации: стагнация (сходство ≥ 0.95 три поколения подряд), осцилляцию (поколение N похоже на N−2), повторяющуюся обратную связь (пересечение вопросов ≥ 70% за три поколения) и жёсткий потолок в 30 поколений. Сходимость фиксируется, когда онтология стабилизировалась.

Команда ooo ralph гоняет эволюционный цикл персистентно, через границы сессий. Каждый шаг stateless: EventStore восстанавливает полную родословную, поэтому после перезагрузки машины змея продолжает с того же места.

Команды

Внутри агента используются навыки ooo, из терминала — CLI ouroboros.

Навык Что делает
ooo interview Сократическое интервью, вскрывает скрытые допущения
ooo auto Цель → Seed грейда A → передача на исполнение с ограниченными циклами
ooo run Исполнение по декомпозиции двойного ромба
ooo evaluate Трёхступенчатый гейт верификации
ooo evolve Эволюционный цикл до сходимости онтологии
ooo unstuck Пять персон латерального мышления, когда застряли
ooo status Отслеживание сессий и детекция дрейфа
ooo ralph Персистентный цикл до верификации
ooo pm Интервью и генерация PRD для продакт-менеджеров
ooo brownfield Сканирование и настройки существующих репозиториев

Девять агентов

Девять ключевых персон выделены отдельно, ещё 12 специализированных доступны всего — 21 агент, все грузятся по требованию, без предзагрузки: Socratic Interviewer (только задаёт вопросы, никогда не пишет код), Ontologist, Seed Architect, Evaluator, Contrarian, Hacker, Simplifier, Researcher и Architect. Логика простая: Contrarian спрашивает «а что если верно обратное?», Hacker — «какие ограничения действительно реальны?», Simplifier — «что проще всего сработает?».

Под капотом

src/ouroboros/
+-- bigbang/        Интервью, оценка неоднозначности, brownfield-разведка
+-- routing/        PAL Router: оптимизация стоимости в 3 уровня
+-- evaluation/     Mechanical -> Semantic -> Multi-Model Consensus
+-- evolution/      Цикл Wonder / Reflect, детекция сходимости
+-- resilience/     4 паттерна стагнации, 5 латеральных персон
+-- observability/  Измерение дрейфа из 3 компонентов, авторетроспектива
+-- persistence/    Event sourcing (SQLAlchemy + aiosqlite), чекпоинты
+-- orchestrator/   Слой абстракции рантаймов
+-- providers/      Адаптер LiteLLM (100+ моделей)
+-- mcp/            Интеграция MCP-клиента и сервера
+-- plugin/         Система плагинов (автообнаружение навыков и агентов)
+-- tui/            Дашборд в терминале
+-- cli/            CLI на Typer

PAL Router переключает модели по трём уровням стоимости: Frugal (1x) → Standard (10x) → Frontier (30x), с автоматической эскалацией при провале и понижением при успехе. Дрейф измеряется взвешенно: цель 50%, ограничения 30%, онтология 20%, порог ≤ 0.3. Полное описание архитектуры — в Architecture.

Стек из трёх репозиториев

Проект разложен как настоящая ОС:

Слой Репозиторий Роль
Shell Ouro-labs/ourocode Нативный терминальный UI для запуска ooo по разным CLI
Apps Ouro-labs/ouroboros-plugins Плагины доменных воркфлоу: PR, Jira, инциденты, релизы
OS Q00/ouroboros Ядро: Seed, Ledger, Runtime, MCP, границы безопасности

Ядро владеет контрактом: любое действие становится событием, привязанным к Seed, записанным в ledger и пригодным для повторения — независимо от того, какая LLM его выполнила. Плагины заявляют ограниченные права против этого контракта, поэтому доменные воркфлоу остаются аудируемыми. ourocode — терминальная оболочка, выводящая состояние MCP, вопросы интервью и решения в TUI.

Ouroboros говорит с DeepSeek в двух направлениях: либо бэкенд пайплайна переключается на модели DeepSeek через --llm-backend dsh, либо ставится плагин dsh-ouroboros и ooo interview / ooo auto работают прямо в чате DeepSeek Harness. Подробности — в гайде по DeepSeek Harness.

Заметка о названии

Существует другой, не связанный с этим проект с тем же именем — razzant/ouroboros, саморазвивающийся агент с непрерывной идентичностью. Общего кода и отношений между проектами нет. Разница в подходе принципиальная: Ouroboros фиксирует спецификацию до исполнения, а не переписывает собственную архитектуру на ходу.

Разработка ведётся открыто: CONTRIBUTING.md, лицензия MIT, документация на ouroboros.page. Полное удаление — одной командой ouroboros uninstall, подробности в UNINSTALL.md.

Источник: https://github.com/Q00/ouroboros