Nik McFly
ENRUKZ
← Блог

Қытай студенті бүкіл популяцияның реакциясын симуляциялайтын ЖИ үшін $4M алды. Оған бұлттық API қажет еді. Мен оны толығымен локальды етіп жасадым.

MiroFish-ті форктап, Zep Cloud-ты жергілікті Neo4j-ге ауыстырып, бүкіл интерфейсті ағылшынға аударып, мультиагентті симуляция қозғалтқышын толығымен офлайн жұмыс істеуге мәжбүрледім.

#ai#open-source#mirofish#simulation#agents

MiroFish-ті лентада көрген шығарсыз. Қытай студенті он күнде мультиагентті симуляция қозғалтқышын вайб-кодтап шықты, GitHub-та 13K жұлдыз жинады, Shanda Group-тан $4M тартты және жатақханадан көшіп кетті. Идеясы: кез келген құжатты жүктейсің — баспасөз релизі, заң жобасы, қаржылық есеп — және мыңдаған ЖИ-агенттердің қоғамдық реакциясын симуляциялағанын көресің. Посттар, пікірлер, дауласулар, пікір ауысулары, сағат сайын. Шынайылықтың цифрлық репетициясы.

Бұл шынымен әсерлі жұмыс. Қытай нарығы үшін жасалған — қытай интерфейсі, қытай тілді бэкенд, Zep арқылы бұлттық білім графы. Өз аудиториясы үшін — толық мағынасы бар. Бірақ Қытайдан тыс болсаң — алдыңда қуатты қозғалтқыш, бірақ оны басқара алмайсың.

Мен нені және неге өзгерттім

Түпнұсқа MiroFish қытай пайдаланушылары үшін жасалған, және ол оларға жақсы қызмет еткен. Бірақ мен оны өз жұмысым үшін қолданғым келді — және бұл лентадағы көптеген адамдар да солай деп ойлаймын. «Twitter-дегі керемет демо» мен «мен шынымен іске қосатын құрал» арасында екі нәрсе тұрды:

Интерфейс толығымен қытай тілінде еді. Әрбір түйме, әрбір белгі, әрбір лог-хабарлама, әрбір тултип. Бұл қате емес — жай ғана халықаралық аудиторияға әлі бейімделмеген.

Білім графының қабаты Zep Cloud-қа тәуелді болды — бұлттық сервис. Құжаттарың машинаңнан кетеді. Бәсекелік барлау, дағдарыстық симуляциялар немесе кез келген құпия нәрсе үшін — бұл қабылданбайды.

Мен не істедім

MiroFish-ті форктап, гибридті тәсіл қолдандым: harness engineering (Anthropic пен OpenAI екеуі де сипаттағандай — прогресс трекингі, контекстті қалпына келтіру, бір сессияда бір фичаға фокус) + классикалық SDLC тәртібі (әзірлеудің бүкіл өмірлік циклінде құрылымдық жоспарлау). Таза harness бұл жобаға оверкилл болар еді, бірақ маған жоспарлау тәртібі қажет болды. Бір жол код жазбас бұрын, төрт құжат жасадым:

tech-spec.md — толық архитектуралық спецификация. 6 файлдағы Zep-ке тәуелді барлық 5 934 жолды картаға түсірдім. Мақсатты стекті сипаттадым (Neo4j CE 5.15 + Ollama + nomic-embed-text). 14 әдісі бар GraphStorage абстракциясын, векторлық индекстері (768-dim) мен толық мәтінді индекстері (BM25) бар Neo4j схемасын, гибридті іздеуді (0.7 вектор + 0.3 кілт сөздер), әрбір қайтарылатын тип үшін деректер контракттарын анықтадым. Trade-off-тарды құжаттадым: неге FalkorDB емес Neo4j, неге spaCy емес LLM-based NER, sync vs async.

migration-plan.md — тәуелділік графы бар 7 фазадағы 20 атомарлық тапсырма. 0–1 фазалар: инфрақұрылым (Docker, Neo4j, Ollama) және базалық модульдер. 2–4 фазалар: Zep-ке тәуелді файлдарды, іздеу құралдарын, сервис қабатын ауыстыру. 5–6 фазалар: интеграция, E2E-тестілеу, CAMEL-AI конфигі, тазалау. 7-фаза: жариялау. Әр тапсырмада — статус, тәуелділіктер, нақты файл өзгерістері және қабылдау критерийлері. Болжамды көлем: 2 200–2 900 жол.

progress.md — тірі трекер. Claude Code өткен сайын әрбір фаза COMPLETE/TODO деп белгіленді. Жасалған файлдар, жойылған файлдар, өзгертілген файлдар — бәрі жазылды.

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 қос (немесе Claude/GPT үшін өз API-кілтіңді пайдалан). Сенің салаңда болып жатқан нәрсе туралы бір беттік құжат жүкте. 200 агенттің 30 модельденген минут бойы бұл туралы дауласқанын көр.

Сезім — ЖИ-агенттердің сенің нақты жағдайың туралы пікір қалыптастырғанын, нақты уақытта, өз жабдығыңызда бақылау — ЖИ-құралдармен басқа ешнәрсеге ұқсамайтын тәжірибе. Түпнұсқа авторы асыра айтқан жоқ, адамдар мұны ChatGPT-мен алғашқы кездесу сезіміне теңегенде.

Айырмашылығы енді — бұны сезіну үшін қытай тілін білу немесе бұлттық сервиске сену қажет емес.

GitHub: MiroFish-Offline →