Вы наверняка видели MiroFish в ленте. Китайский студент за десять дней вайб-закодил движок мультиагентной симуляции, собрал 13K звёзд на GitHub, поднял $4M от Shanda Group и съехал из общаги. Суть: загружаешь любой документ — пресс-релиз, проект закона, финансовый отчёт — и смотришь, как тысячи ИИ-агентов симулируют реакцию публики. Посты, комментарии, споры, сдвиги мнений, час за часом. Цифровая репетиция реальности.
Это реально впечатляющая работа. Сделана для китайского рынка — китайский интерфейс, китайскоязычный бэкенд, облачный граф знаний через Zep. Для своей аудитории — полный смысл. Но если ты за пределами Китая — перед тобой мощный движок, которым ты не можешь управлять.
Что я изменил и почему
Оригинальный MiroFish был создан для китайских пользователей, и он отлично им служил. Но я хотел использовать его для своей работы — и подозреваю, что многие в этой ленте тоже. Между «крутая демка в Twitter» и «инструмент, который я реально запускаю» стояли две вещи:
Интерфейс был полностью на китайском. Каждая кнопка, каждый лейбл, каждое лог-сообщение, каждый тултип. Не баг — просто ещё не адаптировано для международной аудитории.
Слой графа знаний зависел от Zep Cloud — облачного сервиса. Твои документы уходят с твоей машины. Для конкурентной разведки, кризисных симуляций или чего-то конфиденциального — это неприемлемо.
Что я сделал
Я форкнул MiroFish и применил гибридный подход: harness engineering (как описали и Anthropic, и OpenAI — трекинг прогресса, восстановление контекста, фокус на одной фиче за сессию) + классическая дисциплина SDLC (структурированное планирование на всём жизненном цикле разработки). Чистый harness был бы оверкиллом для этого проекта, но мне нужна была дисциплина планирования. Прежде чем написать одну строчку кода, я создал четыре документа:
tech-spec.md — полная архитектурная спека. Промапил все 5 934 строки Zep-зависимого кода в 6 файлах. Описал целевой стек (Neo4j CE 5.15 + Ollama + nomic-embed-text). Специфицировал абстракцию GraphStorage с 14 методами, схему Neo4j с векторными индексами (768-dim) и полнотекстовыми индексами (BM25), гибридный поиск (0.7 вектор + 0.3 ключевые слова), контракты данных для каждого возвращаемого типа. Задокументировал trade-offs: почему Neo4j, а не FalkorDB, почему LLM-based NER, а не spaCy, sync vs async.
migration-plan.md — 20 атомарных задач в 7 фазах с графом зависимостей. Фазы 0–1: инфраструктура (Docker, Neo4j, Ollama) и базовые модули. Фазы 2–4: замена Zep-зависимых файлов, инструментов поиска, сервисного слоя. Фазы 5–6: интеграция, E2E-тестирование, конфиг CAMEL-AI, очистка. Фаза 7: публикация. У каждой задачи — статус, зависимости, конкретные изменения файлов и критерии приёмки. Оценка объёма: 2 200–2 900 строк.
progress.md — живой трекер. Каждая фаза помечалась COMPLETE/TODO по мере того, как Claude Code их проходил. Созданные файлы, удалённые файлы, модифицированные файлы — всё залогировано.
publishing-plan.md — соответствие лицензии (AGPL-3.0, обязательно от оригинального форка), настройка репозитория, скоуп брендинга, атрибуция через NOTICE-файл и чеклист из 10 пунктов перед публикацией.
После этого направил Claude Code на проект.
Мигрировал бэкенд на полностью локальный стек. Заменил Zep Cloud на Neo4j CE 5.15 и Ollama. Пайплайн графа знаний теперь работает целиком на твоей машине — Neo4j для хранения графа, локальные вызовы LLM для извлечения сущностей. Никаких облачных зависимостей. Твои документы, твоя симуляция, твоё железо. Вся миграция бэкенда прошла практически one-shot’ом — Claude Code прочитал спеку и выполнил.
Заменил все ссылки на Zep во фронтенде на Neo4j. Бэкенд уже был локальным, но интерфейс всё ещё упоминал Zep повсюду. Claude Code вычистил это по всем компонентам.
Перевёл весь интерфейс на английский. Каждый экран, каждый компонент, каждое лог-сообщение, каждый комментарий в коде. Двадцать файлов, больше тысячи уникальных строк. Claude Code прошёлся по всем — лендинг, пятишаговый воркфлоу (Graph Build → Env Setup → Simulation → Report → Interaction), визуализация графа в реальном времени, база истории, панель взаимодействия с агентами. Всё на английском. Я не перевёл вручную ни одной строки.
Единственный китайский, который остался — это регулярные выражения в парсере отчётов. Они матчат форматы ответов бэкенда, который всё ещё возвращает данные на китайском. Изменить их — сломать парсинг. Всё, что видит пользователь — на английском.
Вся локализация — сканирование 20 файлов, определение 1000+ строк, перевод с учётом контекста, сохранение regex-паттернов для бэкенда — заняла одну сессию в Claude Code. Без таблиц, без i18n-фреймворка, без подрядчика. Просто «переведи этот фронтенд на английский» и наблюдение за тем, как он обрабатывает файл за файлом.
Почему это важно
MiroFish — не игрушка. Когда ты загружаешь документ, происходит следующее:
Шаг 1 — строится граф знаний. Извлекаются все сущности (люди, компании, события, места) и все связи между ними. В граф через темпоральную модель Neo4j внедряются индивидуальная и групповая память.
Шаг 2 — генерируются персоны агентов. Сотни. Каждый с уникальной личностью, предвзятостью мнений, скоростью реакции, уровнем влияния и памятью о прошлых событиях. Это не шаблоны промптов — это полноценные поведенческие профили, производные от графа знаний.
Шаг 3 — запускается симуляция. Агенты взаимодействуют на смоделированных социальных платформах — постят, отвечают, спорят, меняют мнения. Система отслеживает эволюцию настроений, распространение тем и динамику влияния в реальном времени.
Шаг 4 — ReportAgent анализирует пост-симуляционную среду. Он проводит интервью с случайной фокус-группой агентов, ищет подтверждения в графе знаний и генерирует структурированный анализ.
Шаг 5 — ты можешь пообщаться с любым агентом из смоделированного мира. Спросить, почему он написал то, что написал. Попросить ReportAgent копнуть глубже. Полная память и личность сохраняются.
Всё это теперь работает на твоём ноутбуке, и ни один байт данных не покидает твою сеть.
Кейсы, которые уже исследуют
Тестирование PR-кризисов. Набросай пресс-релиз, просимулируй реакцию до публикации. Посмотри, какие нарративы усиливаются, какие атакуют, куда дрейфует дискуссия. Поправь черновик. Просимулируй снова.
Генерация торговых сигналов. Скорми финансовые новости системе и наблюдай, как реагируют смоделированные участники рынка. Не предсказатель цен — предсказатель настроений. Другое, и, пожалуй, более полезное.
Анализ последствий политики. Государственные команды тестируют проекты нормативных актов на смоделированную реакцию общества. Не опросы — симуляция. Разница в том, что симуляция фиксирует каскадные эффекты, которые опросы упускают.
Творческие эксперименты. Кто-то загрузил в систему классический китайский роман с утраченной концовкой. Агенты отыграли персонажей и сгенерировали нарративно последовательное завершение. Не основной юзкейс, но увлекательно.
Стек
Фронтенд: Vue 3 + Vite + D3.js для визуализации графов. Бэкенд: Python + Neo4j + любая LLM на твой выбор (работает с любым OpenAI-совместимым API). Деплой: Docker. Время настройки: минуты.
Форк называется MiroFish-Offline. На GitHub под той же лицензией, что и оригинал.
Одна вещь, которую ты можешь сделать сегодня
Склонируй репо. Подключи локальную LLM (или используй свой API-ключ для Claude/GPT). Загрузи одностраничный документ о чём-то, что происходит в твоей отрасли. Посмотри, как 200 агентов спорят об этом 30 симулированных минут.
Ощущение — когда ты наблюдаешь, как ИИ-агенты формируют мнения о твоей конкретной ситуации, в реальном времени, на твоём собственном железе — не похоже ни на что другое, что я испытывал с ИИ-инструментами. Создатель оригинала не преувеличивал, когда люди сравнивали это с первым впечатлением от ChatGPT.
Разница теперь в том, что для этого не нужно читать по-китайски или доверять облачному сервису.