Каждый разработчик, пытавшийся с помощью нейросетей создать что-то сложнее простой функции-хелпера — например, многостраничное веб-приложение, сложную 3D-сцену на Three.js или комплексную маркетинговую воронку, — сталкивался с феноменом «туннельного зрения» модели.
На первых итерациях всё выглядит превосходно. Но по мере того как контекстное окно забивается историей правок, комментариями и промежуточными версиями, модель начинает страдать когнитивной перегрузкой. Она начинает игнорировать собственные архитектурные ограничения, ломает ранее написанные стили, а на замечания пользователя отвечает поверхностными заплатками. Модель «влюбляется» в собственный сгенерированный код и в упор не замечает грубых визуальных или логических огрехов.
Чтобы преодолеть эту ловушку, исследователи Google разработали элегантный архитектурный паттерн — Elephant-Goldfish Model (EGM), построенный на дуальном разделении контекстной памяти и независимом перекрестном рецензировании.
Механика дуальной памяти: Слон и Золотые рыбки
Название архитектуры метафорично и точно отражает разделение ролей:
- Агент-«Слон» (The Elephant): Обладает колоссальной памятью. Он удерживает в контексте техническое задание проекта, архитектурные требования, историю предыдущих версий и зависимости компонентов. Задача Слона — синтезировать цельный артефакт (код, разметку, шейдеры) и вносить изменения по результатам замечаний.
- Агенты-«Золотые рыбки» (The Goldfish): Обладают предельно короткой памятью («памятью как у рыбки»). У них напрочь отсутствует доступ к истории диалога и черновикам. Они получают только свежий скомпилированный артефакт (например, скриншот отрендеренной веб-страницы или финальный бинарник) и оценивают его «с чистого листа».
Когда «рыбка» смотрит на результат, она не знает, сколько часов Слон страдал над версткой этой кнопки. Она видит, что текст не влезает в плашку или контраст шрифта не соответствует стандарту доступности WCAG, и моментально выставляет объективный штраф.
Ранее мы исследовали подходы к разделяемой памяти в экосистеме Hermes, а концепция EGM предлагает диаметрально противоположный, но поразительно эффективный ход: намеренное обнуление памяти ради кристальной чистоты рецензирования.
Пайплайн оркестрации: от генерации к независимой критике
Давай посмотрим, как устроен этот цикл на уровне рабочего кода на Python. Агент-Слон создает артефакт, после чего диспетчер параллельно запускает пулы независимых критиков:
import asyncio
from dataclasses import dataclass
from typing import List, Dict
@dataclass
class ProjectArtifact:
version: int
html_markup: str
css_styles: str
threejs_script: str
rendered_screenshot_base64: str
async def run_elephant_architect(brief: str, feedback_history: List[Dict]) -> ProjectArtifact:
# Агент-слон: удерживает глобальный контекст и генерирует обновленный артефакт
print("Elephant: синтез новой версии проекта с учетом предыдущих замечаний...")
await asyncio.sleep(0.5)
return ProjectArtifact(
version=len(feedback_history) + 1,
html_markup="<canvas id='webgl-scene'></canvas>",
css_styles="body { margin: 0; overflow: hidden; background: #0a0a0c; }",
threejs_script="// Инициализация Three.js сцены и анимации камеры...",
rendered_screenshot_base64="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
)
async def goldfish_art_director(screenshot: str) -> Dict:
# Золотая рыбка 1: оценка визуального баланса с абсолютно нулевой памятью
return {
"critic": "ArtDirector",
"score": 8.5,
"critique": "Контраст заголовка недостаточен на фоне частиц. Рекомендуется сместить источник света на (2, 5, 3)."
}
А вот так выглядит структура возвращаемого отчета рецензентов, передаваемая обратно Слону на следующую итерацию:
{
"iterationReview": {
"artifactVersion": 2,
"status": "NEEDS_REVISION",
"compositeScore": 7.8,
"critiques": [
{
"domain": "visual_design",
"issue": "Текст плашки перекрывает элемент управления камерой при разрешении 1920x1080",
"severity": "HIGH"
},
{
"domain": "code_performance",
"issue": "Инициализация геометрии происходит внутри цикла render loop вместо init phase",
"severity": "CRITICAL"
}
]
}
}
Слон получает структурированную обратную связь, вносит точечные исправления в код и отправляет версию 3 на следующий круг. Цикл повторяется до тех пор, пока интегральная оценка «рыбок» не превысит заданный порог качества (например, 9.0 из 10).
Практическая ценность для реальных проектов
Архитектура EGM наглядно доказывает: качество ИИ-генерации масштабируется не только размером контекстного окна, но и грамотной топологией критики.
Главные преимущества подхода:
- Устранение галлюцинаций соглашательства: Универсальная модель в длинном диалоге склонна соглашаться с пользователем и пропускать очевидные ошибки. «Рыбка» лишена эмпатии и оценивает только факт.
- Многоаспектный аудит: Можно запустить пять специализированных «рыбок» одновременно — по юзабилити, безопасности кода, доступности, адаптивности и скорости загрузки.
- Ограничение бесконечных правок: Четкий численный критерий остановки (
compositeScore >= 9.0) предотвращает циклы бесконечного бессмысленного переписывания кода.
